Selbst hosten
Coolify und Reverse Proxy
Flowplan braucht vor sich nur einen HTTPS-Proxy. WebSockets sind nicht nötig: Zusammenarbeit läuft über normale HTTP-Anfragen und Server-Sent Events.
Coolify
- Neue Ressource → Docker Image (oder Dockerfile aus dem Git-Repository) wählen.
- Ports Exposes:
3000. - Domain eintragen, z. B.
https://flowplan.example.com. Coolify holt das Zertifikat über Traefik. - Persistent Storage: Volume, Ziel
/app/data. - Umgebungsvariablen aus der Konfiguration setzen.
- Bereitstellen. Nach etwa 20 Sekunden meldet der Healthcheck den Container als gesund.
Healthcheck
Das Image bringt einen eigenen Healthcheck mit. Wird er in Coolify eingestellt:
| Feld | Wert |
|---|---|
| Check type | HTTP request |
| Method / Scheme / Host | GET / HTTP / localhost |
| Port | 3000 – leer bedeutet 80, dort lauscht nichts |
| Path | /api/health |
| Expected code | 200 |
| Start period | 30 Sekunden (mit S3 stellt Litestream beim ersten Start die Datenbank her) |
Volume-Rechte
Der Container läuft als UID 1000. Ein neues Docker-Volume bekommt die Rechte automatisch. Ein eingebundener Host-Ordner muss dieser UID gehören:
sudo chown -R 1000:1000 /pfad/zu/flowplan-dataAutomatisch ausrollen
Eine CI-Pipeline kann nach dem Image-Build ein Deployment über die Coolify-API auslösen (POST /api/v1/deploy mit der UUID der Anwendung und einem API-Token mit Deploy-Recht). In Coolify muss dafür unter Settings → API der Zugriff eingeschaltet und die Adresse des CI-Servers erlaubt sein.
Pangolin, Traefik und andere Proxys
APP_URLmuss exakt der Adresse entsprechen, unter der Flowplan im Browser erscheint.- Endet TLS am vorderen Proxy (etwa Pangolin) und reicht er an Traefik weiter, dort TLS zum Ziel ausschalten und einen eigenen Host-Header mit der Flowplan-Domain setzen – sonst findet Traefik keine Route und antwortet mit 404.
- Großes Hochladen: Inhaltsarchive können bis zu 2 GB groß sein. Traefik begrenzt die Anfragegröße nicht; nginx braucht
client_max_body_size, Cloudflare hat eigene Grenzen. - Zeitlimits: Export und Import großer Archive können Minuten dauern; Proxy-Timeouts ggf. erhöhen.
- Server-Sent Events (Live-Bearbeitung in Dokumenten, Live-Cursor auf Whiteboards) dürfen nicht gepuffert werden; nginx:
proxy_buffering off(siehe Beispiel unten). Flowplan sendet dafür zusätzlichX-Accel-Buffering: no.
nginx
server {
server_name flowplan.example.com;
client_max_body_size 2g;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 600s;
}
}Caddy
flowplan.example.com {
reverse_proxy 127.0.0.1:3000
}Den internen Port 3000 nie zusätzlich öffentlich freigeben.