Add complete Jaryo File Manager with Synology NAS deployment support
This commit is contained in:
248
synology-setup.md
Normal file
248
synology-setup.md
Normal file
@@ -0,0 +1,248 @@
|
||||
# 시놀로지 NAS에서 Jaryo File Manager 서비스 실행 가이드
|
||||
|
||||
## 1. 사전 준비사항
|
||||
|
||||
### 1.1 DSM 패키지 설치
|
||||
1. **DSM 제어판** → **패키지 센터** 접속
|
||||
2. 다음 패키지들을 설치:
|
||||
- **Node.js** (최신 LTS 버전 권장)
|
||||
- **Git Server** (선택사항, 소스코드 관리용)
|
||||
- **Web Station** (선택사항, 웹 서버 프록시용)
|
||||
|
||||
### 1.2 SSH 활성화
|
||||
1. **DSM 제어판** → **터미널 및 SNMP** → **SSH 서비스 활성화**
|
||||
2. 포트 번호 확인 (기본: 22)
|
||||
|
||||
## 2. 프로젝트 배포
|
||||
|
||||
### 2.1 방법 1: 직접 파일 업로드 (간단한 방법)
|
||||
|
||||
1. **File Station**에서 `/volume1/web/` 폴더 생성
|
||||
2. 프로젝트 파일들을 `jaryo` 폴더에 업로드
|
||||
3. SSH로 접속하여 설정
|
||||
|
||||
### 2.2 방법 2: Git을 통한 배포 (권장)
|
||||
|
||||
```bash
|
||||
# NAS에 SSH 접속
|
||||
ssh admin@your-nas-ip
|
||||
|
||||
# 프로젝트 디렉토리 생성
|
||||
mkdir -p /volume1/web/jaryo
|
||||
cd /volume1/web/jaryo
|
||||
|
||||
# Git 저장소 클론 (로컬에서 push한 경우)
|
||||
git clone [your-repository-url] .
|
||||
|
||||
# 또는 로컬에서 직접 파일 복사
|
||||
# scp -r ./jaryo/* admin@your-nas-ip:/volume1/web/jaryo/
|
||||
```
|
||||
|
||||
## 3. 서비스 설정 및 실행
|
||||
|
||||
### 3.1 스크립트 권한 설정
|
||||
|
||||
```bash
|
||||
# SSH로 NAS 접속
|
||||
ssh admin@your-nas-ip
|
||||
|
||||
# 프로젝트 디렉토리로 이동
|
||||
cd /volume1/web/jaryo
|
||||
|
||||
# 스크립트 실행 권한 부여
|
||||
chmod +x start-service.sh
|
||||
chmod +x stop-service.sh
|
||||
```
|
||||
|
||||
### 3.2 서비스 시작
|
||||
|
||||
```bash
|
||||
# 서비스 시작
|
||||
./start-service.sh
|
||||
|
||||
# 로그 확인
|
||||
tail -f logs/app.log
|
||||
|
||||
# 프로세스 상태 확인
|
||||
ps aux | grep "node server.js"
|
||||
```
|
||||
|
||||
### 3.3 서비스 중지
|
||||
|
||||
```bash
|
||||
# 서비스 중지
|
||||
./stop-service.sh
|
||||
```
|
||||
|
||||
## 4. 자동 시작 설정 (선택사항)
|
||||
|
||||
### 4.1 Task Scheduler 사용
|
||||
|
||||
1. **DSM 제어판** → **작업 스케줄러**
|
||||
2. **작업 생성** → **사용자 정의 스크립트**
|
||||
3. 설정:
|
||||
- **작업 이름**: Jaryo Service Start
|
||||
- **사용자**: root
|
||||
- **스케줄**: 시스템 부팅 시
|
||||
- **작업 설정**: `/volume1/web/jaryo/start-service.sh`
|
||||
|
||||
### 4.2 rc.local 사용 (고급 사용자)
|
||||
|
||||
```bash
|
||||
# /etc/rc.local 파일 편집
|
||||
sudo vi /etc/rc.local
|
||||
|
||||
# 다음 라인 추가
|
||||
/volume1/web/jaryo/start-service.sh &
|
||||
|
||||
# 파일 저장 후 권한 설정
|
||||
chmod +x /etc/rc.local
|
||||
```
|
||||
|
||||
## 5. 방화벽 및 포트 설정
|
||||
|
||||
### 5.1 DSM 방화벽 설정
|
||||
|
||||
1. **DSM 제어판** → **보안** → **방화벽**
|
||||
2. **방화벽 규칙 편집** → **규칙 생성**
|
||||
3. 설정:
|
||||
- **포트**: 3005 (애플리케이션 포트)
|
||||
- **프로토콜**: TCP
|
||||
- **소스**: 허용할 IP 범위
|
||||
|
||||
### 5.2 라우터 포트 포워딩 (외부 접속용)
|
||||
|
||||
라우터에서 포트 3005를 NAS의 IP로 포워딩 설정
|
||||
|
||||
## 6. 웹 서버 프록시 설정 (Web Station 사용)
|
||||
|
||||
### 6.1 Web Station 설정
|
||||
|
||||
1. **Web Station** → **가상 호스트** → **생성**
|
||||
2. 설정:
|
||||
- **도메인 이름**: your-domain.com (또는 IP)
|
||||
- **포트**: 80 (또는 443 for HTTPS)
|
||||
- **문서 루트**: `/volume1/web/jaryo`
|
||||
- **HTTP 백엔드 서버**: `http://localhost:3005`
|
||||
|
||||
### 6.2 Apache 설정 (고급)
|
||||
|
||||
```apache
|
||||
# /volume1/web/apache/conf/vhost/VirtualHost.conf
|
||||
<VirtualHost *:80>
|
||||
ServerName your-domain.com
|
||||
DocumentRoot /volume1/web/jaryo
|
||||
|
||||
ProxyPreserveHost On
|
||||
ProxyPass / http://localhost:3005/
|
||||
ProxyPassReverse / http://localhost:3005/
|
||||
|
||||
<Directory /volume1/web/jaryo>
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
## 7. 모니터링 및 유지보수
|
||||
|
||||
### 7.1 로그 모니터링
|
||||
|
||||
```bash
|
||||
# 실시간 로그 확인
|
||||
tail -f /volume1/web/jaryo/logs/app.log
|
||||
|
||||
# 로그 파일 크기 확인
|
||||
du -h /volume1/web/jaryo/logs/app.log
|
||||
|
||||
# 로그 로테이션 설정 (logrotate 사용)
|
||||
```
|
||||
|
||||
### 7.2 서비스 상태 확인
|
||||
|
||||
```bash
|
||||
# 프로세스 확인
|
||||
ps aux | grep "node server.js"
|
||||
|
||||
# 포트 사용 확인
|
||||
netstat -tlnp | grep :3005
|
||||
|
||||
# 메모리 사용량 확인
|
||||
top -p $(cat /volume1/web/jaryo/app.pid)
|
||||
```
|
||||
|
||||
### 7.3 백업 설정
|
||||
|
||||
1. **Hyper Backup** 패키지 설치
|
||||
2. `/volume1/web/jaryo` 폴더 백업 스케줄 설정
|
||||
3. 데이터베이스 파일 (`jaryo.db`) 별도 백업 권장
|
||||
|
||||
## 8. 문제 해결
|
||||
|
||||
### 8.1 일반적인 문제들
|
||||
|
||||
**서비스가 시작되지 않는 경우:**
|
||||
```bash
|
||||
# Node.js 설치 확인
|
||||
which node
|
||||
node --version
|
||||
|
||||
# 의존성 재설치
|
||||
cd /volume1/web/jaryo
|
||||
rm -rf node_modules package-lock.json
|
||||
npm install
|
||||
|
||||
# 권한 문제 확인
|
||||
ls -la /volume1/web/jaryo/
|
||||
chown -R admin:users /volume1/web/jaryo/
|
||||
```
|
||||
|
||||
**포트 충돌 문제:**
|
||||
```bash
|
||||
# 포트 사용 확인
|
||||
netstat -tlnp | grep :3005
|
||||
|
||||
# 다른 포트로 변경 (server.js 수정)
|
||||
# const PORT = process.env.PORT || 3006;
|
||||
```
|
||||
|
||||
**메모리 부족 문제:**
|
||||
```bash
|
||||
# 메모리 사용량 확인
|
||||
free -h
|
||||
|
||||
# Node.js 메모리 제한 설정
|
||||
# node --max-old-space-size=512 server.js
|
||||
```
|
||||
|
||||
### 8.2 로그 분석
|
||||
|
||||
```bash
|
||||
# 에러 로그만 확인
|
||||
grep -i error /volume1/web/jaryo/logs/app.log
|
||||
|
||||
# 최근 100줄 확인
|
||||
tail -100 /volume1/web/jaryo/logs/app.log
|
||||
|
||||
# 특정 시간대 로그 확인
|
||||
grep "2024-01-15" /volume1/web/jaryo/logs/app.log
|
||||
```
|
||||
|
||||
## 9. 보안 고려사항
|
||||
|
||||
1. **HTTPS 설정**: Let's Encrypt 인증서 사용
|
||||
2. **방화벽 강화**: 필요한 포트만 개방
|
||||
3. **정기 업데이트**: Node.js 및 패키지 업데이트
|
||||
4. **백업**: 정기적인 데이터 백업
|
||||
5. **모니터링**: 로그 모니터링 및 알림 설정
|
||||
|
||||
## 10. 성능 최적화
|
||||
|
||||
1. **PM2 사용**: 프로세스 관리자로 PM2 사용 고려
|
||||
2. **캐싱**: 정적 파일 캐싱 설정
|
||||
3. **압축**: gzip 압축 활성화
|
||||
4. **CDN**: 정적 파일 CDN 사용 고려
|
||||
|
||||
---
|
||||
|
||||
**참고**: 이 가이드는 시놀로지 DSM 7.x 기준으로 작성되었습니다. 버전에 따라 일부 설정이 다를 수 있습니다.
|
Reference in New Issue
Block a user