시놀로지 NAS에서 Obsidian을 외부 접속으로 사용하는 설정 절차를 정리했습니다.
흐름 한 장 요약
flowchart LR A[컨테이너 배포] --> B[리버스 프록시 연결] B --> C[Obsidian 자동 실행 설정] C --> D[원격 접속/성능 점검] D --> E[로그 확인 및 보안 점검]
🧠 칠판 치트시트
- 도메인/계정/비밀번호는 문서에 직접 쓰지 말고 변수로 관리.
- 외부 접속은 리버스 프록시 + HTTPS + WebSocket 확인이 핵심.
- 데스크톱 자동실행(autostart/openbox/xsession) 3단을 맞춰야 안정적.
- 배포 후
docker logs로 초기 에러를 먼저 잡는다.
1) docker-compose (공유용 표준 템플릿)
services:
obsidian:
image: ghcr.io/linuxserver/obsidian:latest
container_name: Obsidian
security_opt:
- no-new-privileges:false
- seccomp:unconfined
healthcheck:
test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/3000' || exit 1
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
ports:
- "${OB_HTTP_PORT:-3421}:3000"
- "${OB_HTTPS_PORT:-3427}:3001"
shm_size: "5gb"
volumes:
- ${OB_CONFIG_PATH:-/volume1/docker/obsidian}:/config:rw
- ${OB_VAULT_PATH:-/volume1/desktop/<VAULT_NAME>}:/config/<VAULT_NAME>:rw
environment:
CUSTOM_USER: ${OBSIDIAN_USER}
PASSWORD: ${OBSIDIAN_PASSWORD}
PUID: ${PUID:-1026}
PGID: ${PGID:-100}
TZ: ${TZ:-Asia/Seoul}
restart: unless-stopped실행:
cd /volume1/docker/obsidian
docker compose up -d공식 참고: LinuxServer Obsidian
2) 시놀로지 리버스 프록시 표준값
- 소스:
HTTPS / <YOUR_DOMAIN> / 443 - 대상:
HTTPS / localhost / ${OB_HTTPS_PORT} - WebSocket: 가능하면 체크박스 ON, 없으면 아래 헤더 수동 추가
Upgrade: $http_upgradeConnection: $connection_upgrade
실무에서 리다이렉트 루프가 나면 대부분 대상 프로토콜/포트 불일치가 원인입니다.
3) Obsidian 자동실행 3단 구성
(a) autostart
docker exec Obsidian bash -c 'mkdir -p /config/.config/autostart && cat > /config/.config/autostart/obsidian.desktop << EOF
[Desktop Entry]
Type=Application
Name=Obsidian
Exec=/usr/bin/obsidian --no-sandbox %U
Terminal=false
Categories=Office;
X-GNOME-Autostart-enabled=true
EOF'(b) openbox autostart
docker exec Obsidian bash -c 'mkdir -p /config/.config/openbox && cat > /config/.config/openbox/autostart << EOF
#!/bin/bash
sleep 5
/usr/bin/obsidian --no-sandbox &
EOF'(c) X session
docker exec Obsidian bash -c 'cat > /defaults/.xsession << EOF
#!/bin/bash
/usr/bin/openbox-session &
sleep 5
/usr/bin/obsidian --no-sandbox &
EOF'마지막 적용:
docker restart Obsidian4) 접속 체크 (표준)
https://<YOUR_DOMAIN>접속- 로그인:
${OBSIDIAN_USER}/${OBSIDIAN_PASSWORD} Open folder as vault→config/<VAULT_NAME>선택
5) 자주 발생하는 문제
- 검은 화면: 빈 화면 더블클릭 → 데스크톱 진입 후 Obsidian 재실행
- 리다이렉트 루프: 리버스 프록시 대상 프로토콜 HTTPS, 대상 포트
${OB_HTTPS_PORT}재확인 - 느림: Selkies에서 FPS 60→30, CRF 25→28 조정
참고: Selkies 프로젝트
미니 사례 2개
사례 1) 민감정보가 문서에 남는 문제
- Before: 사용자명/비밀번호를 문서에 평문 기재
- After:
${OBSIDIAN_USER},${OBSIDIAN_PASSWORD}변수 치환 +.env분리
사례 2) 루프 오류 반복
- Before: 소스 HTTPS인데 대상을 HTTP로 두어 302 반복
- After: 대상도 HTTPS:3427로 고정해 즉시 정상화
20분 도입 루틴
- 5분:
.env작성(도메인/계정/비밀번호/포트) - 5분:
docker compose up -d실행 - 5분: 리버스 프록시 + WebSocket 설정
- 5분: 재시작 후 접속/로그 확인
빠른 체크리스트
- 문서/레포에 실제 비밀번호가 남아있지 않다.
- 리버스 프록시 소스/대상이 모두 HTTPS로 맞다.
-
docker logs Obsidian에 치명 에러가 없다. - 볼트 경로가
${OB_VAULT_PATH}와 일치한다.