[시놀로지] Nas 자동화 설정
Synology NAS + Express API 서버 구축 및 자동 배포 문서
1. 시스템 구성 개요
- NAS: Synology DSM 7.x 이상
- Node.js 앱 위치: /volume1/web/api
- 웹 도메인: api.kasumil.co.kr
- DB: MariaDB 10 (NAS 내부 설치, 외부 비공개)
- 자동 배포: GitHub Actions + SSH Key 기반
2. 기본 설치 및 준비
✅ Node.js & Git 설치
- Node.js / npm: SSH로 접속 후 `node -v`, `npm -v` 확인
- Git: DSM 패키지 센터 → Git 설치
3. Express API 프로젝트 구조
/volume1/web/api
├── index.js # Express 앱 진입점
├── routes/ # 라우트 모듈
├── middleware/ # 미들웨어 (JWT 등)
├── db/ # DB 연결 설정
├── .env # 환경 변수
└── package.json
4. MariaDB 내부 전용 설정
파일: /var/packages/MariaDB10/etc/my.cnf
[mysqld]
bind-address = 127.0.0.1
skip_networking = 0
5. PM2를 활용한 서버 실행
pm2 start index.js --name api
pm2 save
pm2 startup
6. 리버스 프록시 설정 (DSM 웹 UI)
- DSM → 제어판 → 응용 프로그램 포털 → 역방향 프록시
- 도메인: 도메인주소 → 내부 주소: 127.0.0.1:4000
- HTTP(80) → HTTPS(443) 리디렉션 설정
- SSL 인증서: Let's Encrypt 발급 및 적용
7. GitHub Actions 자동 배포 설정
1) SSH 키 구성
- ssh-keygen 으로 키 생성
- NAS: ~/.ssh/authorized_keys에 공개 키 등록
- GitHub Secrets 등록:
- NAS_HOST, NAS_USER, NAS_SSH_KEY
2) deploy.yml 예시:
on:
push:
branches: [main]
...
script: |
cd /volume1/web/api
git pull origin main
pm2 restart api
8. 테스트 방법
1. GitHub에 커밋 푸시
2. Actions → 워크플로우 실행 확인
3. NAS 접속하여 `git log`, `pm2 logs`로 배포 여부 확인
9. 기타 팁
- CORS 문제 방지를 위해 cors() 사용
- PM2 로그 확인: pm2 logs api
- DB 외부 접근 차단 유지