5.2 KiB
5.2 KiB
Synology NAS 설치 안내 (DS1515+, DSM 7.1.1, Docker 패키지)
중계 서버를 https://jjsm.joynala.com으로 띄우는 순서입니다. 처음 한 번만 하면 되고, 업데이트는 맨 아래 "업데이트"를 보세요.
0. 준비 (한 번만)
| 할 일 | 어디서 | 내용 |
|---|---|---|
| DNS | 도메인 관리 | jjsm.joynala.com → gitea와 같은 외부 IP (A 레코드) 또는 CNAME gitea.joynala.com |
| 포트 포워딩 | Synology Router | 443, 80 → NAS (gitea 때문에 이미 되어 있으면 그대로) |
| SSH | DSM 제어판 → 터미널 및 SNMP | SSH 서비스 활성화 |
| Docker | DSM 패키지 센터 | Docker 설치되어 있어야 함 |
1. 폴더 만들기 + 소스 받기
NAS에 SSH로 접속합니다 (Windows: ssh 관리자계정@NAS내부IP).
sudo mkdir -p /volume1/docker/jjsm
cd /volume1/docker/jjsm
sudo mkdir -p db server/logs backup
# 소스 받기 (Gitea 압축 파일)
sudo curl -fL -o src.tar.gz https://gitea.joynala.com/diadmin/JJServiceManagerRelay/archive/main.tar.gz
sudo tar xzf src.tar.gz # → jjservicemanagerrelay 폴더가 생김
sudo mv jjservicemanagerrelay src
sudo rm src.tar.gz
폴더 구성:
/volume1/docker/jjsm/
├─ src/ ← 소스 + docker-compose.yml + .env
├─ db/ ← PostgreSQL 데이터 (지우지 마세요)
├─ server/logs ← 서버 로그 (날짜별, 지우지 않음)
└─ backup/ ← 매일 DB 백업 (최근 30개)
2. 비밀번호 파일 (.env)
cd /volume1/docker/jjsm/src
sudo cp .env.example .env
sudo vi .env
| 항목 | 넣을 값 |
|---|---|
POSTGRES_PASSWORD |
DB 비밀번호 — 길고 무작위로. 처음 실행 뒤에는 바꾸지 마세요 (DB에 이미 저장됨) |
JJSM_ADMIN_USER |
첫 관리자 아이디 (기본 admin) |
JJSM_ADMIN_PASSWORD |
첫 관리자 비밀번호 (8자 이상). 첫 로그인 때 바꾸게 됩니다 |
| 나머지 | 기본값 그대로 (포트 21900, 등록 코드 7일, 백업 매일 3시 30개) |
sudo chmod 600 .env
3. 빌드 + 실행
cd /volume1/docker/jjsm/src
sudo docker-compose build # 처음엔 수 분~10분 (.NET SDK 이미지를 받아 빌드)
sudo docker-compose up -d
sudo docker-compose ps # jjsm-db, jjsm-server, jjsm-backup 모두 Up
sudo docker logs jjsm-server # "첫 관리자 계정을 만들었습니다: admin" 확인
curl -s http://127.0.0.1:21900/health
# {"status":"ok","version":"1.0.0","db":true,...}
4. 인증서 (Let's Encrypt)
DSM 제어판 → 보안 → 인증서 → 추가 → 새 인증서 추가 → Let's Encrypt에서 인증서 얻기
- 도메인 이름:
jjsm.joynala.com - 이메일: 관리자 이메일
5. 리버스 프록시
DSM 제어판 → 로그인 포털 → 고급 → 역방향 프록시 → 생성
| 항목 | 값 |
|---|---|
| 설명 | jjsm |
| 소스 프로토콜 / 호스트 이름 / 포트 | HTTPS / jjsm.joynala.com / 443 |
| 대상 프로토콜 / 호스트 이름 / 포트 | HTTP / localhost / 21900 |
| 사용자 지정 머리글 | 생성 → WebSocket (Upgrade, Connection 두 줄이 자동으로 들어감) — 빠지면 연결 안 됨 |
| 고급 설정 | 프록시 연결 시간 초과 / 전송 / 읽기 시간 초과: 3600초 권장 |
그다음 제어판 → 보안 → 인증서 → 설정 → jjsm.joynala.com 항목에 4번 인증서를 지정합니다.
확인 (밖에서, 예: 휴대폰 LTE): 브라우저로 https://jjsm.joynala.com/health → {"status":"ok",...}
6. 프로그램에서 연결
JJServiceManagerEnt 쪽 기능이 준비되면 안내합니다 (관리 PC: 서버 주소 + 아이디/비밀번호, 대상 PC: 등록 코드).
운영
| 할 일 | 명령 |
|---|---|
| 상태 | cd /volume1/docker/jjsm/src && sudo docker-compose ps |
| 서버 로그 | sudo docker logs --tail 100 jjsm-server 또는 /volume1/docker/jjsm/server/logs/날짜.log |
| 지금 바로 DB 백업 | sudo docker exec jjsm-backup /bin/sh /backup.sh now |
| 다시 시작 | sudo docker-compose restart server |
| 멈춤 | sudo docker-compose stop |
업데이트
cd /volume1/docker/jjsm
sudo docker exec jjsm-backup /bin/sh /backup.sh now # 먼저 백업
sudo mv src src.old
sudo curl -fL -o src.tar.gz https://gitea.joynala.com/diadmin/JJServiceManagerRelay/archive/main.tar.gz
sudo tar xzf src.tar.gz && sudo mv jjservicemanagerrelay src && sudo rm src.tar.gz
sudo cp src.old/.env src/.env
cd src && sudo docker-compose build && sudo docker-compose up -d
DB 구조가 바뀌면 서버가 시작할 때 자동으로 고칩니다 (기존 데이터 유지).
백업에서 되돌리기
cd /volume1/docker/jjsm/src
sudo docker-compose stop server
sudo docker exec jjsm-db createdb -U jjsm jjsm_restore_test
gunzip -c ../backup/jjsm-YYYYMMDD-HHMMSS.sql.gz | sudo docker exec -i jjsm-db psql -U jjsm -d jjsm_restore_test # 먼저 시험용 DB에
# 시험이 괜찮으면 원래 DB를 바꾸는 방법은 그때 따로 안내합니다.
관리자 비밀번호를 잊었을 때
다른 관리자 계정으로 [서버 관리] → 계정 → 비밀번호 초기화. 관리자가 한 명뿐이면 문의하세요 (DB에서 직접 초기화하는 방법 안내).