Unraid deployment
MobilityOps is deployed from a committed source archive; the server does not need Gitea
credentials. The portable compose.yaml is combined with compose.unraid.yaml; of the
MobilityOps-owned services, only the web application is reachable from the LAN. The host's
existing shared n8n remains available on its established port 5678.
Server layout
- Directory:
/mnt/user/appdata/mobilityops - Compose project:
mobilityops - Web:
http://192.168.10.150:1236(1236on the host to80inweb) - API and PostgreSQL: Compose network only
- Shared n8n:
http://192.168.10.150:5678(outside the MobilityOps Compose project)
Deploy
Create .env from .env.example, replace every placeholder secret, set
MOBILITYOPS_ENV=production, set both public URLs to
http://192.168.10.150:1236, and retain KNOWLEDGE_PROVIDER=demo while RAGcore is not
available. Keep MCP_HUB_REGISTRATION_ENABLED=false until the central Hub is ready.
cd /mnt/user/appdata/mobilityops
./deploy/unraid/configure-env.sh \
http://192.168.10.150:1236 \
http://192.168.10.150:5678/webhook/mobilityops-return
docker compose -p mobilityops -f compose.yaml -f compose.unraid.yaml up --build -d db api web
docker compose -p mobilityops -f compose.yaml -f compose.unraid.yaml exec api \
python -m app.cli seed --reset
Migrations run automatically in the API entrypoint. Import and publish the MobilityOps workflow into the existing n8n container:
./deploy/unraid/setup-existing-n8n.sh \
n8n \
http://192.168.10.150:1236/api/v1/integrations/n8n/return-callback
The callback token remains server-side and is never written to the repository. The
bundled n8n service is retained only as a standalone fallback behind the explicit
bundled-n8n Compose profile; it is not started in this deployment.
Operate
cd /mnt/user/appdata/mobilityops
docker compose -p mobilityops -f compose.yaml -f compose.unraid.yaml ps
docker compose -p mobilityops -f compose.yaml -f compose.unraid.yaml logs --tail=200
docker compose -p mobilityops -f compose.yaml -f compose.unraid.yaml exec api alembic current
docker logs --tail=200 n8n