On-Premise Installation
ContextDecay kann als Docker-Container auf Ihrem eigenen Server betrieben werden. Diese Anleitung beschreibt die Installation auf Ubuntu Server 22.04+ mit Docker.
Voraussetzungen
- Ubuntu Server 22.04 LTS oder neuer
- Mindestens 2 GB RAM, 2 CPU-Kerne, 20 GB Speicher
- Docker und Docker Compose installiert
- Eine Domain mit DNS-Eintrag auf den Server (z.B.
decisions.ihrefirma.de) - Port 80 und 443 offen (für HTTPS)
1. Docker installieren
Falls Docker noch nicht installiert ist:
# Docker installieren curl -fsSL https://get.docker.com | sh # Docker Compose Plugin (in aktuellen Docker-Versionen enthalten) docker compose version # Aktuellen Benutzer zur Docker-Gruppe hinzufügen sudo usermod -aG docker $USER
2. Verzeichnis anlegen
sudo mkdir -p /opt/contextdecay cd /opt/contextdecay
3. Docker Compose Konfiguration
Erstellen Sie die Datei docker-compose.yml:
version: "3.8"
services:
app:
image: ghcr.io/net-evolution/contextdecay:latest
container_name: contextdecay-app
ports:
- "127.0.0.1:3000:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=postgresql://contextdecay:${DB_PASSWORD}@db:5432/contextdecay
- CG_JWT_SECRET=${JWT_SECRET}
- CG_AUTH_MODE=builtin
- CG_BASE_URL=https://decisions.ihrefirma.de
env_file:
- .env
depends_on:
db:
condition: service_healthy
restart: unless-stopped
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:3000"]
interval: 30s
timeout: 5s
retries: 3
db:
image: postgres:16-alpine
container_name: contextdecay-db
environment:
- POSTGRES_USER=contextdecay
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=contextdecay
volumes:
- pgdata:/var/lib/postgresql/data
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "pg_isready -U contextdecay"]
interval: 10s
timeout: 5s
retries: 5
volumes:
pgdata:4. Umgebungsvariablen
Erstellen Sie die Datei .env:
# Datenbank-Passwort (bitte ändern) DB_PASSWORD=ein-sicheres-passwort-hier # JWT Secret (mindestens 64 Zeichen, zufällig generieren) JWT_SECRET=$(openssl rand -base64 64 | tr -d '\n') # Optional: SMTP für E-Mail-Benachrichtigungen CG_SMTP_HOST=mail.ihrefirma.de CG_SMTP_PORT=587 CG_SMTP_SECURE=false CG_SMTP_USER=noreply@ihrefirma.de CG_SMTP_PASSWORD=smtp-passwort CG_SMTP_FROM=ContextDecay <noreply@ihrefirma.de>
Generieren Sie ein sicheres JWT-Secret:
openssl rand -base64 64 | tr -d '\n' > /dev/null # Ausgabe in .env eintragen
5. Container starten
cd /opt/contextdecay docker compose up -d # Status prüfen docker compose ps # Logs ansehen docker compose logs -f app
Nach ca. 10 Sekunden sollten beide Container als healthy angezeigt werden. Die App ist unter http://127.0.0.1:3000 erreichbar.
6. Reverse Proxy mit Nginx
Installieren Sie Nginx und Certbot für HTTPS:
sudo apt install nginx certbot python3-certbot-nginx -y
Erstellen Sie die Nginx-Konfiguration unter /etc/nginx/sites-available/contextdecay:
server {
server_name decisions.ihrefirma.de;
listen 80;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Aktivieren und SSL einrichten:
sudo ln -s /etc/nginx/sites-available/contextdecay /etc/nginx/sites-enabled/ sudo nginx -t && sudo nginx -s reload # SSL-Zertifikat holen sudo certbot --nginx -d decisions.ihrefirma.de
7. Ersten Admin-Benutzer anlegen
Nach dem Start müssen Sie den ersten Benutzer über die Datenbank anlegen:
# Passwort-Hash generieren
HASH=$(docker exec contextdecay-app node -e "
import('bcryptjs').then(b => b.hash('IhrPasswort', 12).then(h => console.log(h)))
")
# Benutzer anlegen
docker exec contextdecay-db psql -U contextdecay -d contextdecay -c "
INSERT INTO users (email, name, password, auth_type, role_id, is_active)
VALUES ('admin@ihrefirma.de', 'Admin', '$HASH', 'builtin', 'role-default-0', true);
"Danach können Sie sich unter https://decisions.ihrefirma.de anmelden und weitere Benutzer über die Nutzerverwaltung einladen.
8. Updates
cd /opt/contextdecay # Neues Image laden docker compose pull # Container mit neuem Image starten docker compose up -d # Alte Images aufräumen docker image prune -f
9. Backup
Tägliches Datenbank-Backup einrichten:
# Backup-Script erstellen cat > /opt/contextdecay/backup.sh << 'EOF' #!/bin/bash BACKUP_DIR=/opt/contextdecay/backups mkdir -p $BACKUP_DIR docker exec contextdecay-db pg_dump -U contextdecay contextdecay | gzip > $BACKUP_DIR/$(date +%Y-%m-%d).sql.gz # Backups älter als 14 Tage löschen find $BACKUP_DIR -name "*.sql.gz" -mtime +14 -delete EOF chmod +x /opt/contextdecay/backup.sh # Cron-Job: täglich um 3:00 Uhr (crontab -l 2>/dev/null; echo "0 3 * * * /opt/contextdecay/backup.sh") | crontab -
10. LDAP / EntraID konfigurieren (optional)
Für SSO fügen Sie die entsprechenden Variablen in die .env ein:
LDAP
CG_AUTH_MODE=ldap
CG_LDAP_URL=ldap://ldap.ihrefirma.de:389
CG_LDAP_BASE_DN=dc=ihrefirma,dc=de
CG_LDAP_BIND_DN=cn=readonly,dc=ihrefirma,dc=de
CG_LDAP_BIND_PASSWORD=ldap-passwort
CG_LDAP_USER_FILTER=(sAMAccountName={{username}})Microsoft EntraID
CG_AUTH_MODE=entraid CG_ENTRAID_CLIENT_ID=ihre-client-id CG_ENTRAID_CLIENT_SECRET=ihr-client-secret CG_ENTRAID_TENANT_ID=ihre-tenant-id
Nach Änderungen Container neu starten:
docker compose up -d
Systemanforderungen
| Komponente | Minimum | Empfohlen |
|---|---|---|
| CPU | 2 Kerne | 4 Kerne |
| RAM | 2 GB | 4 GB |
| Speicher | 20 GB | 50 GB |
| OS | Ubuntu 22.04 | Ubuntu 24.04 |
| Docker | 24.0+ | 27.0+ |
| PostgreSQL | 15 | 16 (enthalten) |
Fehlerbehebung
Container startet nicht
# Logs prüfen docker compose logs app # Häufige Ursache: DATABASE_URL falsch # Prüfen ob DB erreichbar ist: docker exec contextdecay-app wget -q -O- http://127.0.0.1:3000/api/ai-status
502 Bad Gateway
Nginx kann die App nicht erreichen. Prüfen Sie:
- Läuft der Container?
docker compose ps - Ist Port 3000 belegt?
ss -tlnp | grep 3000 - Nginx-Config korrekt?
nginx -t
Datenbank-Verbindungsfehler
- Passwort in
.envunddocker-compose.ymlstimmen überein? - DB-Container healthy?
docker compose ps db - Manuell verbinden:
docker exec -it contextdecay-db psql -U contextdecay