# TK-FB-Project Synology NAS 배포 가이드 ## 사전 준비 ### 1. Synology NAS 요구사항 - DSM 7.0 이상 - Docker 패키지 설치 - 최소 4GB RAM 권장 - 10GB 이상 저장공간 ### 2. Cloudflare Tunnel 설정 1. **Cloudflare 대시보드 접속** - https://dash.cloudflare.com 로그인 - Zero Trust > Access > Tunnels 이동 2. **터널 생성** - "Create a tunnel" 클릭 - 이름 입력 (예: tkfb-nas) - 환경: Docker 선택 - 표시되는 토큰을 `.env` 파일의 `CLOUDFLARE_TUNNEL_TOKEN`에 입력 3. **Public hostname 설정** - 터널 설정에서 "Public Hostnames" 추가 | Subdomain | Domain | Service | |-----------|--------|---------| | tkfb | yourdomain.com | http://web:80 | | api.tkfb | yourdomain.com | http://api:3005 | ## 배포 순서 ### 1. 파일 전송 Synology NAS의 docker 폴더에 다음 파일들을 업로드: ``` /volume1/docker/tkfb/ ├── docker-compose.synology.yml (→ docker-compose.yml로 이름 변경) ├── .env (→ .env.synology 복사 후 수정) ├── backup_YYYYMMDD_HHMMSS.sql ├── api.hyungi.net/ ├── web-ui/ └── fastapi-bridge/ ``` ### 2. 환경 변수 설정 ```bash cd /volume1/docker/tkfb cp .env.synology .env # .env 파일 편집하여 비밀번호, 토큰 등 수정 ``` ### 3. Docker Compose 실행 ```bash # SSH로 NAS 접속 후 cd /volume1/docker/tkfb # 이미지 빌드 및 시작 docker-compose up -d --build # 로그 확인 docker-compose logs -f ``` ### 4. 데이터베이스 복원 ```bash # DB 컨테이너가 시작된 후 (약 30초 대기) docker exec -i tkfb_db mysql -u root -p'비밀번호' < backup_YYYYMMDD_HHMMSS.sql ``` ## 포트 설정 | 서비스 | 내부포트 | 외부포트 | 설명 | |--------|----------|----------|------| | web | 80 | 80 | Web UI | | api | 3005 | 3005 | Node.js API | | fastapi | 8000 | 8000 | FastAPI Bridge | | db | 3306 | 3306 | MariaDB | | phpmyadmin | 80 | 8080 | DB 관리도구 | ## Cloudflare Tunnel 사용 시 Cloudflare Tunnel을 사용하면 포트 포워딩 없이 외부 접속이 가능합니다: - 방화벽 포트 개방 불필요 - 자동 HTTPS 인증서 - DDoS 보호 ### web-ui의 API 주소 변경 `web-ui/js/config.js` 또는 관련 설정 파일에서 API URL을 변경: ```javascript // 로컬 테스트 const API_URL = 'http://localhost:3005'; // Cloudflare Tunnel 사용 시 const API_URL = 'https://api.tkfb.yourdomain.com'; ``` ## 문제 해결 ### 1. 컨테이너 상태 확인 ```bash docker-compose ps docker-compose logs api # API 로그 docker-compose logs db # DB 로그 ``` ### 2. 데이터베이스 연결 오류 ```bash # DB 컨테이너 재시작 docker-compose restart db # DB 상태 확인 docker exec tkfb_db mysqladmin -u root -p ping ``` ### 3. 권한 오류 ```bash # 볼륨 권한 설정 chmod -R 755 /volume1/docker/tkfb chown -R 1000:1000 /volume1/docker/tkfb/api.hyungi.net/uploads ``` ## 업데이트 ```bash cd /volume1/docker/tkfb # 최신 코드 다운로드 후 docker-compose down docker-compose up -d --build # 캐시 포함 전체 재빌드 docker-compose build --no-cache docker-compose up -d ```