version: '3.7' x-logging: &default-logging driver: journald options: tag: "{{.Name}}" services: tor: container_name: tor image: getumbrel/tor:v0.4.1.9 user: toruser restart: on-failure logging: *default-logging volumes: - ${PWD}/tor/torrc:/etc/tor/torrc - ${PWD}/tor/data:/var/lib/tor/ - ${PWD}/tor/run:/var/run/tor/ ports: - "127.0.0.1:$TOR_PROXY_PORT:$TOR_PROXY_PORT" networks: default: ipv4_address: $TOR_PROXY_IP nginx: container_name: nginx image: nginx:1.17.8 logging: *default-logging depends_on: [ dashboard, manager ] volumes: - ${PWD}/nginx:/etc/nginx restart: on-failure stop_grace_period: 30s ports: - "80:80" networks: default: ipv4_address: $NGINX_IP bitcoin: container_name: bitcoin image: lncm/bitcoind:v0.20.1 logging: *default-logging depends_on: [ tor, manager ] volumes: - ${PWD}/bitcoin:/data/.bitcoin restart: on-failure stop_grace_period: 15m30s ports: - "$BITCOIN_P2P_PORT:$BITCOIN_P2P_PORT" networks: default: ipv4_address: $BITCOIN_IP lnd: container_name: lnd image: lncm/lnd:v0.11.1 logging: *default-logging depends_on: [ tor, manager ] volumes: - ${PWD}/lnd:/data/.lnd restart: on-failure stop_grace_period: 5m30s ports: - "9735:9735" - "$LND_REST_PORT:$LND_REST_PORT" - "$LND_GRPC_PORT:$LND_GRPC_PORT" networks: default: ipv4_address: $LND_IP dashboard: container_name: dashboard image: getumbrel/dashboard:v0.3.13 logging: *default-logging restart: on-failure stop_grace_period: 1m30s networks: default: ipv4_address: $DASHBOARD_IP manager: container_name: manager image: getumbrel/manager:v0.2.7 logging: *default-logging depends_on: [ tor ] restart: on-failure stop_grace_period: 5m30s volumes: - ${PWD}:${PWD} - ${PWD}/info.json:/info.json - ${PWD}/db:/db - ${PWD}/events/signals:/signals - ${PWD}/apps:/apps - ${PWD}/lnd:/lnd:ro - ${PWD}/statuses:/statuses - ${PWD}/tor/data:/var/lib/tor/ - /var/run/docker.sock:/var/run/docker.sock - ${DOCKER_BINARY:-/usr/bin/docker}:/usr/bin/docker - jwt-public-key:/jwt-public-key - jwt-private-key:/jwt-private-key environment: PORT: "3006" USER_PASSWORD_FILE: "/db/user.json" JWT_PUBLIC_KEY_FILE: "/jwt-public-key/jwt.pem" JWT_PRIVATE_KEY_FILE: "/jwt-private-key/jwt.key" JWT_EXPIRATION: "3600" DOCKER_COMPOSE_DIRECTORY: $PWD DEVICE_HOSTS: ${DEVICE_HOSTS:-"http://umbrel.local"} DEVICE_HOSTNAME: ${DEVICE_HOSTNAME:-""} MIDDLEWARE_API_URL: "http://$MIDDLEWARE_IP" UMBREL_SEED_FILE: "/db/umbrel-seed/seed" UMBREL_DASHBOARD_HIDDEN_SERVICE_FILE: "/var/lib/tor/web/hostname" BITCOIN_P2P_HIDDEN_SERVICE_FILE: "/var/lib/tor/bitcoin-p2p/hostname" BITCOIN_P2P_PORT: $BITCOIN_P2P_PORT BITCOIN_RPC_HIDDEN_SERVICE_FILE: "/var/lib/tor/bitcoin-rpc/hostname" BITCOIN_RPC_PORT: $BITCOIN_RPC_PORT BITCOIN_RPC_USER: $BITCOIN_RPC_USER BITCOIN_RPC_PASSWORD: $BITCOIN_RPC_PASS LND_REST_HIDDEN_SERVICE_FILE: "/var/lib/tor/lnd-rest/hostname" LND_GRPC_HIDDEN_SERVICE_FILE: "/var/lib/tor/lnd-grpc/hostname" LND_CERT_FILE: "/lnd/tls.cert" LND_ADMIN_MACAROON_FILE: "/lnd/data/chain/bitcoin/${BITCOIN_NETWORK}/admin.macaroon" SHUTDOWN_SIGNAL_FILE: "/signals/shutdown" REBOOT_SIGNAL_FILE: "/signals/reboot" GITHUB_REPO: "getumbrel/umbrel" UMBREL_VERSION_FILE: "/info.json" UPDATE_STATUS_FILE: "/statuses/update-status.json" UPDATE_SIGNAL_FILE: "/signals/update" UPDATE_LOCK_FILE: "/statuses/update-in-progress" BACKUP_STATUS_FILE: "/statuses/backup-status.json" TOR_PROXY_IP: "${TOR_PROXY_IP}" TOR_PROXY_PORT: "${TOR_PROXY_PORT}" TOR_HIDDEN_SERVICE_DIR: "/var/lib/tor" networks: default: ipv4_address: $MANAGER_IP middleware: container_name: middleware image: getumbrel/middleware:v0.1.7 logging: *default-logging depends_on: [ manager, bitcoin, lnd ] command: ["./wait-for-node-manager.sh", $MANAGER_IP, "npm", "start"] restart: on-failure depends_on: [ manager ] volumes: - ${PWD}/lnd:/lnd - jwt-public-key:/jwt-public-key environment: PORT: "3005" BITCOIN_HOST: $BITCOIN_IP RPC_PORT: $BITCOIN_RPC_PORT RPC_USER: $BITCOIN_RPC_USER RPC_PASSWORD: $BITCOIN_RPC_PASS LND_NETWORK: $BITCOIN_NETWORK LND_HOST: "${LND_IP}" JWT_PUBLIC_KEY_FILE: "/jwt-public-key/jwt.pem" DEVICE_HOSTS: ${DEVICE_HOSTS:-"http://umbrel.local"} networks: default: ipv4_address: $MIDDLEWARE_IP neutrino-switcher: container_name: neutrino-switcher image: getumbrel/neutrino-switcher:v1.0.3 logging: *default-logging depends_on: [ bitcoin, lnd ] restart: on-failure volumes: - ${PWD}/lnd:/lnd - ${PWD}/statuses:/statuses - /var/run/docker.sock:/var/run/docker.sock environment: JSONRPCURL: "http://${BITCOIN_IP}:${BITCOIN_RPC_PORT}" RPCUSER: $BITCOIN_RPC_USER RPCPASS: $BITCOIN_RPC_PASS LND_CONTAINER_NAME: lnd SLEEPTIME: 3600 networks: default: ipv4_address: $NEUTRINO_SWITCHER_IP frontail: container_name: frontail image: getumbrel/frontail:v4.9.1 logging: *default-logging restart: on-failure command: "/var/log/syslog --url-path /logs --number 100 --disable-usage-stats" volumes: - /var/log/syslog:/var/log/syslog:ro networks: default: ipv4_address: $FRONTAIL_IP electrs: container_name: electrs image: getumbrel/electrs:v0.8.6 logging: *default-logging depends_on: [ bitcoin ] volumes: - ${PWD}/bitcoin:/data/.bitcoin:ro - ${PWD}/electrs:/data restart: on-failure stop_grace_period: 5m ports: - "$ELECTRUM_PORT:$ELECTRUM_PORT" networks: default: ipv4_address: $ELECTRUM_IP networks: default: name: umbrel_main_network ipam: driver: default config: - subnet: "${GATEWAY_IP}/16" volumes: jwt-public-key: jwt-private-key: