Files
TK-FB-Project/deploy/README.md
Hyungi Ahn 2b1c7bfb88 feat: 다수 기능 개선 - 순찰, 출근, 작업분석, 모바일 UI 등
- 순찰/점검 기능 개선 (zone-detail 페이지 추가)
- 출근/근태 시스템 개선 (연차 조회, 근무현황)
- 작업분석 대분류 그룹화 및 마이그레이션 스크립트
- 모바일 네비게이션 UI 추가
- NAS 배포 도구 및 문서 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 14:41:01 +09:00

138 lines
3.1 KiB
Markdown

# 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
```