-
Notifications
You must be signed in to change notification settings - Fork 0
Deployment DE
🌐 English · Deutsch
Für Produktion baust du die SvelteKit-App mit adapter-node und startest sie mit node build statt npm run dev. Der schnellste Weg ist der fertige systemd-Installer; Docker und ein manueller Build werden ebenfalls unterstützt. Diese Seite behandelt den Produktions-Build, den Installer, die systemd-Unit, Docker, einen nginx-Reverse-Proxy und die fünf Stolpersteine, die in echten Deployments zubeißen. Konfiguriere zuerst deine .env (Konfiguration).
npm ci
npm run build
node -r dotenv/config build # startet adapter-node (Default Port 3000)
node buildliest die.envNICHT. adapter-node nutzt nur echte Umgebungsvariablen. Lade sie mitnode -r dotenv/config build(brauchtnpm i dotenv),set -a; . ./.env; set +aoder einer systemd-EnvironmentFile=(unten). Das ist der häufigste Produktionsfehler.
Im Projektordner auf dem Server:
cp .env.example .env && nano .env # einmalig konfigurieren
sudo bash deploy/install-service.sh # baut + richtet systemd-Service ein + startetDas Skript ist idempotent: legt bei Bedarf den System-User dks an, führt npm ci && npm run build aus, schreibt die systemd-Unit, aktiviert und startet sie. Konfigurierbar über Umgebungsvariablen:
APP_DIR=/opt/dks/redbot-dks-dashboard SERVICE_USER=dks SERVICE_NAME=dks-dashboard \
sudo -E bash deploy/install-service.shDanach:
journalctl -u dks-dashboard -f # Live-Logs
sudo systemctl restart dks-dashboard # Neustart
sudo bash deploy/update.sh # Update: fetch + build + restartDer Installer schreibt eine Unit wie diese. Beachte die Zeile EnvironmentFile= – so erreicht die .env in Produktion das node build:
# /etc/systemd/system/dks-dashboard.service
[Unit]
Description=PDC Redbot Webapp (SvelteKit/adapter-node)
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/dks/redbot-dks-dashboard
EnvironmentFile=/opt/dks/redbot-dks-dashboard/.env
ExecStart=/usr/bin/node build
Restart=on-failure
RestartSec=5
User=dks
Group=dks
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload && sudo systemctl enable --now dks-dashboardDas systemd-
.env-Format ist eineKEY=value-Zeile – ohneexport, ohne Anführungszeichen.
cp .env.example .env
docker compose up -d --build # http://localhost:3000Läuft der Bot auf dem Host, während die App im Container läuft, zeige das Gateway auf den Host:
GATEWAY_URL=http://host.docker.internal:6970Die Compose-Datei mappt host.docker.internal per extra_hosts, das funktioniert also auch unter Linux.
Die docker-compose.yml ist ein kompletter Stack: Sie startet Red-DiscordBot (offizielles Image) und die Webapp zusammen — nach dem ersten Start installierst und bindest du das Cog pdc_webdashboard in Red ([p]pdcdashboard bind 0.0.0.0 6970), damit der Webapp-Container das Gateway erreicht. Die komplette Anleitung — Discord-App-Setup, Red + Cogs, Compose, Reverse Proxy, Troubleshooting — steht in docs/SELF-HOSTING.md im Repo (englisch).
Eine einzige Catch-all-location / zum Node-Port genügt. Kein root/try_files, das /_app/… abfängt.
server {
server_name deine-domain;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
}
}Hinter HTTPS zusätzlich die Reverse-Proxy-Variablen in der .env setzen (sonst z. B. 403 beim Logout):
ORIGIN=https://deine-domain
PROTOCOL_HEADER=x-forwarded-proto
HOST_HEADER=x-forwarded-host-
node buildliest die.envnicht. Nutzenode -r dotenv/config build,set -a; . ./.env; set +aoder systemdEnvironmentFile=. -
Hinter HTTPS-Reverse-Proxy
ORIGIN,PROTOCOL_HEADERundHOST_HEADERsetzen, sonst scheitern Aktionen wie der Logout mit 403. -
Eine Tailwind-Config muss existieren. Ohne
tailwind.config.(cjs|js)baut Tailwind nur das Base-Layer und die Seite ist (fast) ungestylt. Nie löschen; ins Git committen. Bei"type":"module"isttailwind.config.cjs(CommonJS) am robustesten. -
Der Proxy muss
/_app/durchreichen. Eine einzige Catch-all-location /zum Node-Port genügt; keinroot/try_files, das/_app/...abfängt. -
CDN-Cache (z. B. Cloudflare): Assets sind
immutablegecacht. Beim Iterieren nach Rebuilds ggf. Cache purgen oder „Development Mode" nutzen.
- Konfiguration – Env-Laden und Reverse-Proxy-Variablen
- Self-Update – das laufende Deployment aus GitHub aktualisieren
- Erste Schritte – lokales Entwicklungs-Setup
🇬🇧 English
Users
- Getting Started
- Configuration
- Authentication
- Web UI
- Feature Catalog
- Embed Builder
- Public Pages
- Cog Management
- Statistics
- Logs
- Custom Pages
- Deployment
- Self-Update
Developers
