Add Unraid deployment via the Portainer API

ops/deploy.py ships each service's build context to the remote Docker
daemon's /build endpoint and pushes docker-compose.prod.yml as a Portainer
stack — there is no docker CLI in WSL and Unraid's SSH is closed.

The prod compose file drops the dev bind mounts and uvicorn --reload,
publishes only the frontend port (8000 is taken by Portainer's Edge
tunnel), and pins bms_net to 172.31.42.0/24 because the host's default
address pools are fully subnetted. Mosquitto's config is baked into an
image since the repo is not checked out on the host.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
megaproxy 2026-08-04 17:43:00 +01:00
parent d4a104be9d
commit de9b8c51bd
5 changed files with 510 additions and 22 deletions

View file

@ -0,0 +1,11 @@
# Mosquitto with the broker config baked in.
#
# The compose file bind-mounts ./infra/mosquitto/mosquitto.conf, which only works
# when the repo is checked out on the Docker host. The Unraid deploy builds images
# remotely via the Portainer Docker API and has no repo on the host, so the config
# travels inside the image instead.
FROM eclipse-mosquitto:2
COPY mosquitto.conf /mosquitto/config/mosquitto.conf
EXPOSE 1883