NAS 설치 안내: DSM 방화벽(Docker 대역), 인증서 발급 제한·철자, 404 확인 방법 / Dockerfile: HTTP_PORTS 경고 제거
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013U497kUNL8ArhV7jkzCpKamain
parent
819e8e7c48
commit
7e5ba5cae5
|
|
@ -12,6 +12,7 @@ FROM mcr.microsoft.com/dotnet/aspnet:8.0
|
||||||
ENV TZ=Asia/Seoul \
|
ENV TZ=Asia/Seoul \
|
||||||
DOTNET_gcServer=0 \
|
DOTNET_gcServer=0 \
|
||||||
JJSM_PORT=21900 \
|
JJSM_PORT=21900 \
|
||||||
|
ASPNETCORE_HTTP_PORTS= \
|
||||||
JJSM_LOG_DIR=/app/logs
|
JJSM_LOG_DIR=/app/logs
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends tzdata curl \
|
&& apt-get install -y --no-install-recommends tzdata curl \
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
| 포트 포워딩 | Synology Router | 443, 80 → NAS (gitea 때문에 이미 되어 있으면 그대로) |
|
| 포트 포워딩 | Synology Router | 443, 80 → NAS (gitea 때문에 이미 되어 있으면 그대로) |
|
||||||
| SSH | DSM 제어판 → 터미널 및 SNMP | SSH 서비스 활성화 |
|
| SSH | DSM 제어판 → 터미널 및 SNMP | SSH 서비스 활성화 |
|
||||||
| Docker | DSM 패키지 센터 | Docker 설치되어 있어야 함 |
|
| Docker | DSM 패키지 센터 | Docker 설치되어 있어야 함 |
|
||||||
|
| 방화벽 | DSM 제어판 → 보안 → 방화벽 | 방화벽을 켜 두었다면 **Docker 대역 허용 규칙** 필요 (아래 3번의 "DB 연결 대기 중이 계속될 때") |
|
||||||
|
|
||||||
## 1. 폴더 만들기 + 소스 받기
|
## 1. 폴더 만들기 + 소스 받기
|
||||||
|
|
||||||
|
|
@ -67,11 +68,27 @@ curl -s http://127.0.0.1:21900/health
|
||||||
# {"status":"ok","version":"1.0.0","db":true,...}
|
# {"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 '</dev/tcp/db/5432' && echo 연결됨 || echo 막힘"
|
||||||
|
```
|
||||||
|
`막힘`이면: 제어판 → 보안 → 방화벽 → [규칙 편집] → [생성]
|
||||||
|
- 포트: 모두 / 소스 IP: 서브넷 `172.16.0.0` / `255.240.0.0` / 작업: 허용 → **맨 위로** 올리고 [적용]
|
||||||
|
- 그다음 `docker-compose restart server`
|
||||||
|
|
||||||
## 4. 인증서 (Let's Encrypt)
|
## 4. 인증서 (Let's Encrypt)
|
||||||
|
|
||||||
DSM 제어판 → 보안 → 인증서 → 추가 → 새 인증서 추가 → Let's Encrypt에서 인증서 얻기
|
DSM 제어판 → 보안 → 인증서 → 추가 → 새 인증서 추가 → Let's Encrypt에서 인증서 얻기
|
||||||
- 도메인 이름: `jjsm.joynala.com`
|
- 도메인 이름: `jjsm.joynala.com`
|
||||||
- 이메일: 관리자 이메일
|
- 이메일: 관리자 이메일
|
||||||
|
- 주체 대체 이름: 자동으로 들어간 값의 **철자를 꼭 확인** (예: `.comm` 오타)
|
||||||
|
|
||||||
|
> Let's Encrypt는 발급 횟수를 제한합니다 (실패는 1시간에 5번, 같은 이름 조합은 1주에 5번).
|
||||||
|
> "최대 인증 요청 수에 도달" 메시지가 나오면 1시간 기다리거나, 주체 대체 이름에 NAS로 오는 다른 이름을 더해 조합을 바꿉니다
|
||||||
|
> (예: `jjsm.joynala.com;gitea.joynala.com`).
|
||||||
|
|
||||||
## 5. 리버스 프록시
|
## 5. 리버스 프록시
|
||||||
|
|
||||||
|
|
@ -80,7 +97,7 @@ DSM 제어판 → 로그인 포털 → 고급 → 역방향 프록시 → 생성
|
||||||
| 항목 | 값 |
|
| 항목 | 값 |
|
||||||
|---|---|
|
|---|---|
|
||||||
| 설명 | jjsm |
|
| 설명 | jjsm |
|
||||||
| 소스 프로토콜 / 호스트 이름 / 포트 | HTTPS / `jjsm.joynala.com` / 443 |
|
| 소스 프로토콜 / 호스트 이름 / 포트 | HTTPS / `jjsm.joynala.com` / 443 (철자 확인 — 틀리면 Synology 404) |
|
||||||
| 대상 프로토콜 / 호스트 이름 / 포트 | HTTP / `localhost` / 21900 |
|
| 대상 프로토콜 / 호스트 이름 / 포트 | HTTP / `localhost` / 21900 |
|
||||||
| **사용자 지정 머리글** | **생성 → WebSocket** (Upgrade, Connection 두 줄이 자동으로 들어감) — 빠지면 연결 안 됨 |
|
| **사용자 지정 머리글** | **생성 → WebSocket** (Upgrade, Connection 두 줄이 자동으로 들어감) — 빠지면 연결 안 됨 |
|
||||||
| 고급 설정 | 프록시 연결 시간 초과 / 전송 / 읽기 시간 초과: **3600**초 권장 |
|
| 고급 설정 | 프록시 연결 시간 초과 / 전송 / 읽기 시간 초과: **3600**초 권장 |
|
||||||
|
|
@ -89,6 +106,10 @@ DSM 제어판 → 로그인 포털 → 고급 → 역방향 프록시 → 생성
|
||||||
|
|
||||||
확인 (밖에서, 예: 휴대폰 LTE): 브라우저로 `https://jjsm.joynala.com/health` → `{"status":"ok",...}`
|
확인 (밖에서, 예: 휴대폰 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)
|
## 6. 프로그램에서 연결 (JJServiceManagerEnt)
|
||||||
|
|
||||||
1. **관리 PC (관리자)**: 설정 → 관리 대상 PC → 다른 PC 관리 켜기 → **중계 서버 로그인**에 `https://jjsm.joynala.com`, `.env`의 첫 관리자 아이디·비밀번호 → [로그인] → 새 비밀번호 정하기 → 확인
|
1. **관리 PC (관리자)**: 설정 → 관리 대상 PC → 다른 PC 관리 켜기 → **중계 서버 로그인**에 `https://jjsm.joynala.com`, `.env`의 첫 관리자 아이디·비밀번호 → [로그인] → 새 비밀번호 정하기 → 확인
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue