코딩/시놀로지

[시놀로지] Nas 자동화 설정

카슈밀 2025. 4. 17. 23:01
반응형

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 외부 접근 차단 유지

 

 
728x90