# ============================================================================== # docker/.env.example — 원격 브로커 서버 측 환경변수 템플릿 # # 이 파일은 git 에 커밋됩니다 (.gitignore:23 의 `!.env.example`). # 복사본 docker/.env 는 git 에서 제외됩니다 (.gitignore:21 의 `.env`). # # cd docker && cp .env.example .env && chmod 600 .env # # ⚠ 아래 시크릿 4종은 의도적으로 **빈 값**입니다. 채우지 않고 그대로 복사하면 # `docker compose up` 이 컨테이너를 만들기 전에 실패합니다 (fail-closed). # 플레이스홀더 문자열을 넣지 마십시오 — '알려진 암호로 가동'이 최악입니다. # ============================================================================== # ── 시크릿 (필수) ──────────────────────────────────────────────────────── # 생성: openssl rand -base64 32 # # ⚠ 반드시 위 명령을 사용하십시오. NATS 는 환경변수 값을 설정 렉서로 재파싱하므로 # 암호에 [공백 ; , ] } # ' " $] 가 포함되면 설정이 깨지거나 다르게 해석됩니다. # base64 알파벳(A-Za-z0-9+/=)은 이 문자들과 교집합이 없어 안전합니다. # MAM 에이전트 발행/구독 계정 (.mam.env 의 MQTT_PASSWORD 와 동일 값) MAM_BROKER_PASS= # 관측 전용 계정 (구독 allow: python.mqtt.jobs.>, 발행 전면 deny) MAM_OBSERVER_PASS= # MAM 과 무관한 홈랩 서비스용 별도 계정 HOME_BROKER_PASS= # 시스템 계정 ($SYS). 운영 이벤트/모니터링 전용 SYS_BROKER_PASS= # ── 리스너 바인드 주소 (선택 — 미설정 시 전부 127.0.0.1) ────────────────── # ⚠ Docker 의 published 포트는 UFW 를 우회합니다. 아래 값이 실질적인 노출 통제입니다. # 모델 T(Tailscale) 권장 설정: MQTT_BIND=$(tailscale ip -4) # # MQTT 1883 리스너 바인드 주소 # MQTT_BIND=127.0.0.1 # # NATS 4222 네이티브 리스너 바인드 주소 # NATS_BIND=127.0.0.1 # # WebSocket 8080 바인드 주소. # 참고: 이 포트는 NATS WebSocket 과 MQTT-over-WebSocket(/mqtt)을 함께 서빙합니다. # WS_BIND=127.0.0.1 # # HTTP 모니터 8222 는 무인증이므로 바인드 주소를 변수화하지 않습니다 (loopback 고정).