# JJServiceManagerRelay JJServiceManagerEnt 중계 서버 — Synology NAS Docker + PostgreSQL, `https://jjsm.joynala.com` 모든 PC가 NAS로 바깥 방향 접속만 하면 서로 연결됩니다 (먼저 직접 연결, 안 되면 NAS 중계). 서버는 통신 내용을 볼 수 없고(종단 간 TLS), 대상 PC 접속 비밀번호도 모릅니다. | 문서 | 내용 | |---|---| | [docs/설계서.md](docs/설계서.md) | 구조, 보안, 권한, DB, 메시지 | | [docs/NAS설치.md](docs/NAS설치.md) | NAS에 설치·운영·업데이트 | ## 구성 | 경로 | 내용 | |---|---| | `server/` | 중계 서버 (C# .NET 8, ASP.NET Core WebSocket, Npgsql) | | `server/Schema/` | DB 스키마 (서버가 시작할 때 자동 적용) | | `Dockerfile` | NAS에서 직접 빌드 (`dotnet/sdk:8.0` → `dotnet/aspnet:8.0`) | | `docker-compose.yml` | `jjsm-db` (PostgreSQL 16), `jjsm-server`, `jjsm-backup` | | `backup/backup.sh` | 매일 pg_dump, 최근 30개 보관 | | `.env.example` | 비밀번호·설정 예시 (`.env`로 복사해서 사용) | ## 주소 | 경로 | 용도 | |---|---| | `GET /health` | 상태 확인 | | `wss://…/ws/agent` | 대상 PC (등록·온라인 상태·연결 요청 받기·감사 로그 보고) | | `wss://…/ws/manager` | 관리 PC (로그인·기기 목록·연결 요청·[서버 관리]) | | `wss://…/relay/{세션}` | 중계 통로 | ## 개발 환경에서 실행 ```sh cd server JJSM_DB="Host=127.0.0.1;Port=5432;Database=jjsm;Username=jjsm;Password=..." \ JJSM_ADMIN_USER=admin JJSM_ADMIN_PASSWORD=처음비밀번호 dotnet run ```