rmesh-reticulum/docker-compose.yml

55 lines
1.5 KiB
YAML

services:
rmesh-reticulum:
container_name: rmesh-reticulum
build:
context: .
dockerfile: Dockerfile
restart: unless-stopped
ports:
- "4242:4242" # Reticulum TCP Server Interface (for Internet backbone peers)
volumes:
- reticulum_data:/data/reticulum
- lxmf_data:/data/lxmf
- meshcore_data:/data/meshcore
# Hardware: uncomment for USB serial to MeshCore/RNode device
# devices:
# - /dev/ttyUSB0:/dev/ttyUSB0
environment:
- BRIDGE_API_KEY=${BRIDGE_API_KEY}
# Reticulum (Internet backbone)
- RNS_CONFIG_DIR=/data/reticulum
- LXMF_STORAGE_DIR=/data/lxmf
- RNS_LOG_LEVEL=4
# MeshCore (LoRa mesh) — set MESHCORE_ENABLED=true when companion node is ready
- MESHCORE_ENABLED=${MESHCORE_ENABLED:-false}
- MESHCORE_HOST=${MESHCORE_HOST:-}
- MESHCORE_PORT=${MESHCORE_PORT:-5000}
- MESHCORE_SERIAL=${MESHCORE_SERIAL:-}
- MESHCORE_DATA_DIR=/data/meshcore
networks:
- traefik-public
- rmesh-internal
cap_drop:
- ALL
cap_add:
- NET_BIND_SERVICE
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
volumes:
reticulum_data:
lxmf_data:
meshcore_data:
networks:
traefik-public:
external: true
rmesh-internal:
driver: bridge