Zum Inhalt

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

/deploy <service-name>

Via E-Mail

An: webmaster@isn-systems.com
Betreff: CMD:DEPLOY+<service-name>

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).

DNS-Records

# Via domain-ctl (xynap.tech Zone)
/home/admin/domain-ctl/domain-ctl create sub A 46.4.96.105
/home/admin/domain-ctl/domain-ctl list xynap.tech
/home/admin/domain-ctl/domain-ctl delete sub A

# Via Platform API (fuer Kunden-Domains mit Provider-Credentials)
POST /api/v1/domains/{id}/records