JJServiceManagerRelay/docs/NAS설치.md

5.9 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)

  1. 관리 PC (관리자): 설정 → 관리 대상 PC → 다른 PC 관리 켜기 → 중계 서버 로그인에 https://jjsm.joynala.com, .env의 첫 관리자 아이디·비밀번호 → [로그인] → 새 비밀번호 정하기 → 확인
  2. 설정을 다시 열면 [서버 관리] 탭이 보임 → 등록 코드 → [새 코드 발급]
  3. 대상 PC: 설정 → 원격 접속 허용 → 켜기·접속 비밀번호 → 중계 서버 접속 → [등록 코드로 등록] → 코드 입력 → 확인
  4. 관리 PC 초기화면에 대상 PC 묶음(초록색)이 나타남 → 제목 줄 **[비밀번호]**에 대상 PC 접속 비밀번호 입력
  5. 다른 사람이 쓸 계정: [서버 관리] → 계정에서 추가 → 권한에서 기기별로 보기 / 서비스 제어 / 화면 보기 / 화면 제어 지정

운영

할 일 명령
상태 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에서 직접 초기화하는 방법 안내).