- 순찰/점검 기능 개선 (zone-detail 페이지 추가) - 출근/근태 시스템 개선 (연차 조회, 근무현황) - 작업분석 대분류 그룹화 및 마이그레이션 스크립트 - 모바일 네비게이션 UI 추가 - NAS 배포 도구 및 문서 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
138 lines
3.1 KiB
Markdown
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
|
|
```
|