확인된 경로
- 폴더:
/mnt/dsm/Plex/pill_new - 마운트:
192.168.0.8:/volume1/Plex - 방식: NFS v3
- 디스크: 5.3T 중 4.0T 사용, 1.3T 여유, 사용률 76%
pill_new는 단순 소스 폴더가 아니라 Payload CMS + Next.js 앱을 중심으로 MongoDB, Redis, Meilisearch, Caddy, n8n, Grafana/Prometheus/Loki, 백업 스크립트까지 묶은 Docker Compose 운영 스택입니다.
/mnt/dsm/Plex/pill_new192.168.0.8:/volume1/PlexVM101에서 이 폴더는 RayNAS NFS 공유로 접근 가능했습니다. 다만 로컬 Docker에서 이 Compose 스택이 현재 떠 있는 상태는 아니었고, 관련 이름의 컨테이너도 잡히지 않았습니다.
파일 기준 핵심 구성: docker-compose.yml, Caddyfile, Dockerfile, monitoring/*, scripts/backup/*.
Payload CMS Admin과 Next.js 프론트엔드를 실행하는 웹앱 본체입니다. 외부 포트는 3001:3000이고 MongoDB, Redis, Meilisearch, SMTP, OAuth 환경변수에 연결됩니다.
MongoDB는 TLS/auth 기반 주 데이터베이스, Redis는 캐시와 임시 상태, Meilisearch는 사이트 검색 전용 엔진입니다. 실제 데이터는 storage/do-not-backup 아래에 있습니다.
pss.rayp.shop은 Payload와 모니터링 경로를, 8n8.rayp.shop은 n8n을 프록시합니다. 접근 로그는 GoAccess/Promtail의 입력이 됩니다.
외부 API, 알림, 반복 작업 자동화용 워크플로 서버입니다. 데이터는 ../n8n_data를 사용하므로 pill_new 내부에 완전히 갇힌 구조는 아닙니다.
Prometheus가 메트릭을 수집하고 Alertmanager가 알림을 라우팅합니다. Promtail은 Docker/Caddy 로그를 Loki에 보내며 Grafana가 대시보드로 보여줍니다.
Mongo, Redis, Meilisearch를 정식 백업 파일로 덤프하고 storage/backup에 저장합니다. 매월 1일 Mongo restore 검증도 설계되어 있습니다.
Caddy ├─ serves → payload:3000 ├─ serves → n8n:5678 ├─ serves → grafana:3000 ├─ serves → dozzle:8080 ├─ serves → goaccess:7890/static ├─ serves → alertmanager:9093 └─ serves → loki:3100 payload ├─ depends_on → mongo ├─ depends_on → redis ├─ depends_on → meilisearch ├─ reads/writes → storage/media └─ uses → SMTP/OAuth/Admin env mongo ├─ stores → storage/do-not-backup/mongo └─ uses_tls → storage/mongo-tls redis └─ stores → storage/do-not-backup/redis meilisearch └─ stores → storage/do-not-backup/meili promtail ├─ reads → Docker logs ├─ reads → Caddy access.log └─ writes_to → Loki prometheus ├─ scrapes → node-exporter / cadvisor / loki / promtail / grafana / alertmanager └─ alerts_to → alertmanager backup scripts ├─ dumps → mongo / redis / meilisearch └─ writes_to → storage/backup
/는 Payload/Next.js, /monitor/grafana*는 Grafana, /monitor/dozzle/*는 Dozzle, /monitor/goaccess/*는 GoAccess, /monitor/loki/*는 Loki, /monitor/alertmanager*는 Alertmanager로 연결됩니다.n8n:5678로 프록시됩니다.192.168.0.9, 127.0.0.1, localhost, 100.80.214.64, pill.tail070b5c.ts.net가 모니터링 접근용 호스트로 잡혀 있습니다.scripts/backupstorage/backupstorage/do-not-backupmongo-payload-20260618-043001.archive.gzredis-20260618-043002.rdbmeili-20260617-193007579-20260618-043007.dump.env 부재.env는 없고 .env.generated, .env.example만 확인됐습니다. 그래서 compose 확인 시 운영 환경변수들이 다수 unset으로 나왔습니다.
.env.generated, mongo.pem, mongo.key 등이 -rwxrwxrwx로 보였습니다. 백업 문서 기준으로는 private key와 운영 env는 600이 맞습니다.
dev/recovery compose에는 depends_on이 있지만 운영 payload에는 없습니다. 재기동 시 DB보다 앱이 먼저 떠 초기 연결 실패가 날 수 있습니다.
현재 구성은 rayp.shop 도메인 중심입니다. 앞으로 정리한다면 현재 선호 기준인 rayp.store로 DNS/프록시까지 함께 검토해야 합니다.
pill_new는 운영 가능한 풀스택 서비스 묶음입니다. 핵심은 Payload CMS + Next.js 웹앱이고, MongoDB/Redis/Meilisearch가 데이터 계층, Caddy가 프록시 계층, n8n이 자동화 계층, Prometheus/Grafana/Loki/GoAccess/Dozzle/Alertmanager가 관측 계층, scripts/backup이 백업 계층을 담당합니다.
다만 VM101에서 본 현재 상태 기준으로는 폴더는 RayNAS NFS로 접근 가능하지만 이 스택 자체가 여기서 실행 중인 것은 아닙니다. 운영 전에는 .env 위치, 민감 파일 권한, 백업 최신성, 실제 실행 호스트를 먼저 확인하는 편이 안전합니다.