Deployment¶
Standard-Deployment¶
Einzelnen Service deployen¶
# 1. Code aendern
# 2. Rebuilden + Neustarten
sudo docker compose -f /etc/xynap/stack/docker-compose.yml up -d --build <service>
Platform API deployen¶
# Backend rebuilden
sudo docker compose build platform-api
sudo docker compose up -d platform-api
# Migration ausfuehren (falls noetig)
sudo docker compose exec \
-e DATABASE_URL="mysql+asyncmy://platform:platform2024@mariadb:3306/xynap_platform" \
platform-api alembic upgrade head
Platform UI deployen¶
# Frontend builden (lokal, nicht im Container)
cd /usr/local/xynap/platform/frontend
npm run build
# nginx liest aus dist/ — Container-Restart reicht
sudo docker compose restart platform-ui
Alembic Migrationen¶
# Neue Migration erstellen
cd /usr/local/xynap/platform/backend
# Migration-Datei manuell in alembic/versions/ erstellen
# Migration ausfuehren (im Container)
sudo docker compose exec \
-e DATABASE_URL="mysql+asyncmy://platform:platform2024@mariadb:3306/xynap_platform" \
platform-api alembic upgrade head
# Status pruefen
sudo docker compose exec \
-e DATABASE_URL="..." \
platform-api alembic current
DATABASE_URL
Alembic im Container braucht die DB-URL als Environment-Variable,
da die backend.env als Volume gemountet wird aber nicht als env_file.
Remote-Deployment¶
Via Telegram¶
Via E-Mail¶
Hosting-Routen¶
Kunden-Domain-Routen werden von der Platform API generiert:
# Im platform-api Container (oder via Workflow)
# Generiert /etc/xynap/traefik/conf.d/hosting-routes.yml
Traefik erkennt Aenderungen automatisch (File-Provider Watch).