From 7e5ba5cae5c46af16d72facd7242bac07b0468f7 Mon Sep 17 00:00:00 2001 From: diadmin Date: Tue, 27 Oct 2026 08:15:02 +0000 Subject: [PATCH] =?UTF-8?q?NAS=20=EC=84=A4=EC=B9=98=20=EC=95=88=EB=82=B4:?= =?UTF-8?q?=20DSM=20=EB=B0=A9=ED=99=94=EB=B2=BD(Docker=20=EB=8C=80?= =?UTF-8?q?=EC=97=AD),=20=EC=9D=B8=EC=A6=9D=EC=84=9C=20=EB=B0=9C=EA=B8=89?= =?UTF-8?q?=20=EC=A0=9C=ED=95=9C=C2=B7=EC=B2=A0=EC=9E=90,=20404=20?= =?UTF-8?q?=ED=99=95=EC=9D=B8=20=EB=B0=A9=EB=B2=95=20/=20Dockerfile:=20HTT?= =?UTF-8?q?P=5FPORTS=20=EA=B2=BD=EA=B3=A0=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_013U497kUNL8ArhV7jkzCpKa --- Dockerfile | 1 + docs/NAS설치.md | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c4ef4ed..7d70cb7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,7 @@ FROM mcr.microsoft.com/dotnet/aspnet:8.0 ENV TZ=Asia/Seoul \ DOTNET_gcServer=0 \ JJSM_PORT=21900 \ + ASPNETCORE_HTTP_PORTS= \ JJSM_LOG_DIR=/app/logs RUN apt-get update \ && apt-get install -y --no-install-recommends tzdata curl \ diff --git a/docs/NAS설치.md b/docs/NAS설치.md index ebeafeb..acb3392 100644 --- a/docs/NAS설치.md +++ b/docs/NAS설치.md @@ -10,6 +10,7 @@ | 포트 포워딩 | Synology Router | 443, 80 → NAS (gitea 때문에 이미 되어 있으면 그대로) | | SSH | DSM 제어판 → 터미널 및 SNMP | SSH 서비스 활성화 | | Docker | DSM 패키지 센터 | Docker 설치되어 있어야 함 | +| 방화벽 | DSM 제어판 → 보안 → 방화벽 | 방화벽을 켜 두었다면 **Docker 대역 허용 규칙** 필요 (아래 3번의 "DB 연결 대기 중이 계속될 때") | ## 1. 폴더 만들기 + 소스 받기 @@ -67,11 +68,27 @@ curl -s http://127.0.0.1:21900/health # {"status":"ok","version":"1.0.0","db":true,...} ``` +### DB 연결 대기 중이 계속될 때 (DSM 방화벽) +`docker logs jjsm-server`에 `DB 연결 대기 중 (N/60): Failed to connect to 172.x.x.x:5432`가 계속 나오면 +DSM 방화벽이 컨테이너끼리의 통신을 막는 것입니다. + +```sh +docker exec jjsm-server bash -c "timeout 3 bash -c ' Let's Encrypt는 발급 횟수를 제한합니다 (실패는 1시간에 5번, 같은 이름 조합은 1주에 5번). +> "최대 인증 요청 수에 도달" 메시지가 나오면 1시간 기다리거나, 주체 대체 이름에 NAS로 오는 다른 이름을 더해 조합을 바꿉니다 +> (예: `jjsm.joynala.com;gitea.joynala.com`). ## 5. 리버스 프록시 @@ -80,7 +97,7 @@ DSM 제어판 → 로그인 포털 → 고급 → 역방향 프록시 → 생성 | 항목 | 값 | |---|---| | 설명 | jjsm | -| 소스 프로토콜 / 호스트 이름 / 포트 | HTTPS / `jjsm.joynala.com` / 443 | +| 소스 프로토콜 / 호스트 이름 / 포트 | HTTPS / `jjsm.joynala.com` / 443 (철자 확인 — 틀리면 Synology 404) | | 대상 프로토콜 / 호스트 이름 / 포트 | HTTP / `localhost` / 21900 | | **사용자 지정 머리글** | **생성 → WebSocket** (Upgrade, Connection 두 줄이 자동으로 들어감) — 빠지면 연결 안 됨 | | 고급 설정 | 프록시 연결 시간 초과 / 전송 / 읽기 시간 초과: **3600**초 권장 | @@ -89,6 +106,10 @@ DSM 제어판 → 로그인 포털 → 고급 → 역방향 프록시 → 생성 확인 (밖에서, 예: 휴대폰 LTE): 브라우저로 `https://jjsm.joynala.com/health` → `{"status":"ok",...}` +- Synology 404 페이지가 나오면: 규칙의 호스트 이름이 다른 것 → NAS에서 `grep -rn "server_name jjsm" /usr/local/etc/nginx/sites-available/`로 확인 +- 인증서 경고(`ERR_CERT_COMMON_NAME_INVALID`)가 나오면: 인증서 [설정]에서 `jjsm.joynala.com` 항목에 인증서가 지정되지 않은 것 +- NAS 안에서 공유기 없이 시험: `curl -sk --resolve jjsm.joynala.com:443:127.0.0.1 https://jjsm.joynala.com/health` + ## 6. 프로그램에서 연결 (JJServiceManagerEnt) 1. **관리 PC (관리자)**: 설정 → 관리 대상 PC → 다른 PC 관리 켜기 → **중계 서버 로그인**에 `https://jjsm.joynala.com`, `.env`의 첫 관리자 아이디·비밀번호 → [로그인] → 새 비밀번호 정하기 → 확인