From 7c5fd5afe6570354a8065049fe204ddaf3ce4c9d Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Fri, 19 Sep 2025 08:53:56 +0900 Subject: [PATCH] Add Synology NAS installation guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - πŸ“‹ μ™„μ „ν•œ μ„€μΉ˜ κ°€μ΄λ“œ: SSH 및 Container Manager GUI 방법 - πŸ”§ ν™˜κ²½ μ„€μ •: .env 파일 및 포트 μ„€μ • κ°€μ΄λ“œ - πŸ”’ λ³΄μ•ˆ μ„€μ •: HTTPS, λ°©ν™”λ²½, μ‚¬μš©μž κΆŒν•œ μ„€μ • - πŸ“Š λͺ¨λ‹ˆν„°λ§: 둜그 확인, μƒνƒœ 점검, λ°±μ—… 방법 - πŸ”§ 문제 ν•΄κ²°: 일반적인 문제 및 ν•΄κ²° 방법 - πŸ“± PWA μ„€μ •: λͺ¨λ°”일 ν™ˆν™”λ©΄ μΆ”κ°€ κ°€μ΄λ“œ - 🎯 μ„±λŠ₯ μ΅œμ ν™”: Nginx 캐싱, DB 인덱슀, 이미지 μ΅œμ ν™” - πŸš€ λΉ λ₯Έ μ‹œμž‘: 원라인 μ„€μΉ˜ λͺ…λ Ήμ–΄ --- SYNOLOGY_INSTALL.md | 283 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 283 insertions(+) create mode 100644 SYNOLOGY_INSTALL.md diff --git a/SYNOLOGY_INSTALL.md b/SYNOLOGY_INSTALL.md new file mode 100644 index 0000000..bb2e8a8 --- /dev/null +++ b/SYNOLOGY_INSTALL.md @@ -0,0 +1,283 @@ +# 🏠 μ‹œλ†€λ‘œμ§€ NAS μ„€μΉ˜ κ°€μ΄λ“œ + +## πŸ“‹ 사전 쀀비사항 + +### 1. μ‹œλ†€λ‘œμ§€ NAS μš”κ΅¬μ‚¬ν•­ +- **DSM 7.0 이상** +- **Container Manager** νŒ¨ν‚€μ§€ μ„€μΉ˜ +- **Git Server** νŒ¨ν‚€μ§€ μ„€μΉ˜ (선택사항) +- **μ΅œμ†Œ 2GB RAM** ꢌμž₯ + +### 2. ν•„μš”ν•œ 포트 +- **4000**: ν”„λ‘ νŠΈμ—”λ“œ (Nginx) +- **8000**: λ°±μ—”λ“œ API (FastAPI) +- **5432**: PostgreSQL (λ‚΄λΆ€ 톡신) + +## πŸš€ μ„€μΉ˜ 방법 + +### 방법 1: SSHλ₯Ό ν†΅ν•œ μ„€μΉ˜ (ꢌμž₯) + +#### 1단계: SSH 접속 +```bash +ssh admin@[μ‹œλ†€λ‘œμ§€_IPμ£Όμ†Œ] +``` + +#### 2단계: ν”„λ‘œμ νŠΈ 디렉토리 생성 +```bash +sudo mkdir -p /volume1/docker/todo-project +cd /volume1/docker/todo-project +``` + +#### 3단계: Git 클둠 +```bash +sudo git clone https://git.hyungi.net/hyungi/Todo-Project.git . +``` + +#### 4단계: ν™˜κ²½ μ„€μ • +```bash +# ν™˜κ²½ λ³€μˆ˜ 파일 생성 +sudo cp .env.example .env + +# ν™˜κ²½ λ³€μˆ˜ νŽΈμ§‘ (ν•„μš”μ‹œ) +sudo nano .env +``` + +#### 5단계: Docker μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ +```bash +sudo docker-compose up -d +``` + +#### 6단계: μ„€μΉ˜ 확인 +```bash +# μ»¨ν…Œμ΄λ„ˆ μƒνƒœ 확인 +sudo docker-compose ps + +# 둜그 확인 +sudo docker-compose logs -f +``` + +### 방법 2: Container Manager GUI μ‚¬μš© + +#### 1단계: Container Manager μ—΄κΈ° +- DSM β†’ **Package Center** β†’ **Container Manager** μ„€μΉ˜/μ‹€ν–‰ + +#### 2단계: ν”„λ‘œμ νŠΈ 생성 +- **Project** β†’ **Create** +- **Project name**: `todo-project` +- **Path**: `/docker/todo-project` + +#### 3단계: μ†ŒμŠ€ μ„€μ • +- **Source**: `Git Repository` +- **Repository URL**: `https://git.hyungi.net/hyungi/Todo-Project.git` +- **Branch**: `main` + +#### 4단계: μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ +- **Build and run** 클릭 +- μžλ™μœΌλ‘œ `docker-compose.yml` νŒŒμΌμ„ μ½μ–΄μ„œ μ‹€ν–‰ + +## πŸ”§ μ„€μ • 및 μ΅œμ ν™” + +### 1. ν™˜κ²½ λ³€μˆ˜ μ„€μ • (.env) +```bash +# λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ • +POSTGRES_DB=todo_project +POSTGRES_USER=todo_user +POSTGRES_PASSWORD=your_secure_password_here + +# JWT μ„€μ • +SECRET_KEY=your_jwt_secret_key_here +ACCESS_TOKEN_EXPIRE_MINUTES=30 + +# μ‹œλ†€λ‘œμ§€ 연동 μ„€μ • +SYNOLOGY_DSM_HOST=localhost +SYNOLOGY_DSM_PORT=5000 +SYNOLOGY_DSM_USERNAME=your_username +SYNOLOGY_DSM_PASSWORD=your_password + +# 메일 μ„€μ • (MailPlus μ—°λ™μš©) +MAIL_SERVER=localhost +MAIL_PORT=587 +MAIL_USERNAME=your_mail_username +MAIL_PASSWORD=your_mail_password +MAIL_FROM=noreply@yourdomain.com +``` + +### 2. λ³Όλ₯¨ λ§€ν•‘ 확인 +```yaml +volumes: + - /volume1/docker/todo-project/data:/data + - todo_uploads:/data/uploads +``` + +### 3. 포트 ν¬μ›Œλ”© μ„€μ • +- **μ œμ–΄νŒ** β†’ **μ™ΈλΆ€ μ•‘μ„ΈμŠ€** β†’ **λΌμš°ν„° ꡬ성** +- 포트 4000을 μ™ΈλΆ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•˜λ„λ‘ μ„€μ • + +## 🌐 접속 방법 + +### λ‚΄λΆ€ λ„€νŠΈμ›Œν¬ +``` +http://[μ‹œλ†€λ‘œμ§€_IP]:4000 +``` + +### μ™ΈλΆ€ 접속 (DDNS μ„€μ • μ‹œ) +``` +http://[your-synology-ddns].synology.me:4000 +``` + +## πŸ”’ λ³΄μ•ˆ μ„€μ • + +### 1. HTTPS μ„€μ • (Let's Encrypt) +```bash +# μΈμ¦μ„œ 디렉토리 생성 +sudo mkdir -p /volume1/docker/todo-project/ssl + +# docker-compose.yml에 SSL λ³Όλ₯¨ μΆ”κ°€ +volumes: + - /volume1/ssl:/etc/ssl/certs +``` + +### 2. λ°©ν™”λ²½ μ„€μ • +- **μ œμ–΄νŒ** β†’ **λ³΄μ•ˆ** β†’ **λ°©ν™”λ²½** +- ν•„μš”ν•œ 포트만 μ—΄κΈ°: 4000, 8000 + +### 3. μ‚¬μš©μž κΆŒν•œ μ„€μ • +```bash +# Docker 그룹에 μ‚¬μš©μž μΆ”κ°€ +sudo usermod -aG docker $USER +``` + +## πŸ“Š λͺ¨λ‹ˆν„°λ§ 및 μœ μ§€λ³΄μˆ˜ + +### 1. 둜그 확인 +```bash +# 전체 둜그 +sudo docker-compose logs + +# νŠΉμ • μ„œλΉ„μŠ€ 둜그 +sudo docker-compose logs frontend +sudo docker-compose logs backend +sudo docker-compose logs db +``` + +### 2. μ»¨ν…Œμ΄λ„ˆ μƒνƒœ 확인 +```bash +# μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆ +sudo docker-compose ps + +# λ¦¬μ†ŒμŠ€ μ‚¬μš©λŸ‰ +sudo docker stats +``` + +### 3. μ—…λ°μ΄νŠΈ +```bash +# μ΅œμ‹  μ½”λ“œ κ°€μ Έμ˜€κΈ° +sudo git pull origin main + +# μ»¨ν…Œμ΄λ„ˆ μž¬λΉŒλ“œ +sudo docker-compose down +sudo docker-compose up -d --build +``` + +### 4. λ°±μ—… +```bash +# λ°μ΄ν„°λ² μ΄μŠ€ λ°±μ—… +sudo docker-compose exec db pg_dump -U todo_user todo_project > backup.sql + +# μ—…λ‘œλ“œ 파일 λ°±μ—… +sudo tar -czf uploads_backup.tar.gz /volume1/docker/todo-project/data/uploads +``` + +## πŸ”§ 문제 ν•΄κ²° + +### 1. μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘λ˜μ§€ μ•ŠλŠ” 경우 +```bash +# 둜그 확인 +sudo docker-compose logs + +# 포트 좩돌 확인 +sudo netstat -tulpn | grep :4000 +``` + +### 2. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²° 였λ₯˜ +```bash +# PostgreSQL μ»¨ν…Œμ΄λ„ˆ μƒνƒœ 확인 +sudo docker-compose exec db psql -U todo_user -d todo_project -c "SELECT 1;" +``` + +### 3. κΆŒν•œ 문제 +```bash +# 파일 κΆŒν•œ μˆ˜μ • +sudo chown -R 1000:1000 /volume1/docker/todo-project/data +``` + +### 4. λ©”λͺ¨λ¦¬ λΆ€μ‘± +```bash +# λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ 확인 +free -h + +# Docker λ©”λͺ¨λ¦¬ μ œν•œ μ„€μ • (docker-compose.yml) +services: + backend: + mem_limit: 512m +``` + +## πŸ“± PWA μ„€μ • + +### 1. HTTPS ν•„μˆ˜ +- PWA κΈ°λŠ₯을 μœ„ν•΄μ„œλŠ” HTTPS 연결이 ν•„μš”ν•©λ‹ˆλ‹€ +- Let's Encrypt μΈμ¦μ„œ μ„€μ • ꢌμž₯ + +### 2. ν™ˆν™”λ©΄ μΆ”κ°€ +- λͺ¨λ°”μΌμ—μ„œ Safari/Chrome으둜 접속 +- "ν™ˆν™”λ©΄μ— μΆ”κ°€" 선택 +- λ„€μ΄ν‹°λΈŒ μ•±μ²˜λŸΌ μ‚¬μš© κ°€λŠ₯ + +## 🎯 μ„±λŠ₯ μ΅œμ ν™” + +### 1. Nginx 캐싱 μ„€μ • +```nginx +location /static/ { + expires 1y; + add_header Cache-Control "public, immutable"; +} +``` + +### 2. λ°μ΄ν„°λ² μ΄μŠ€ μ΅œμ ν™” +```sql +-- 인덱슀 생성 +CREATE INDEX idx_todos_created_at ON todos(created_at); +CREATE INDEX idx_todos_status ON todos(status); +``` + +### 3. 이미지 μ΅œμ ν™” +- μ—…λ‘œλ“œλœ μ΄λ―Έμ§€λŠ” μžλ™μœΌλ‘œ μ••μΆ•λ©λ‹ˆλ‹€ +- μ΅œλŒ€ 1920x1920 ν•΄μƒλ„λ‘œ λ¦¬μ‚¬μ΄μ¦ˆ +- JPEG ν’ˆμ§ˆ 85%둜 μ΅œμ ν™” + +## πŸ“ž 지원 + +λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ λ‹€μŒμ„ ν™•μΈν•΄μ£Όμ„Έμš”: +1. **둜그 파일**: `sudo docker-compose logs` +2. **μ‹œμŠ€ν…œ λ¦¬μ†ŒμŠ€**: `htop` λ˜λŠ” DSM λ¦¬μ†ŒμŠ€ λͺ¨λ‹ˆν„° +3. **λ„€νŠΈμ›Œν¬ μ—°κ²°**: 포트 μ ‘κ·Ό κ°€λŠ₯ μ—¬λΆ€ +4. **κΆŒν•œ μ„€μ •**: 파일 및 디렉토리 κΆŒν•œ + +--- + +## πŸš€ λΉ λ₯Έ μ‹œμž‘ λͺ…λ Ήμ–΄ + +```bash +# 전체 μ„€μΉ˜ (ν•œ λ²ˆμ— μ‹€ν–‰) +ssh admin@[μ‹œλ†€λ‘œμ§€_IP] +sudo mkdir -p /volume1/docker/todo-project +cd /volume1/docker/todo-project +sudo git clone https://git.hyungi.net/hyungi/Todo-Project.git . +sudo cp .env.example .env +sudo docker-compose up -d + +# 접속 확인 +curl http://localhost:4000 +``` + +μ„€μΉ˜ μ™„λ£Œ ν›„ `http://[μ‹œλ†€λ‘œμ§€_IP]:4000`으둜 μ ‘μ†ν•˜μ—¬ Todo Projectλ₯Ό μ‚¬μš©ν•˜μ„Έμš”! πŸŽ‰