Zum Inhalt

Manuelle Installation

Für alle, die jeden Befehl selbst ausführen wollen — z. B. weil der Server keine Skripte aus dem Internet ausführen darf.

Alle Schritte als root (oder mit sudo).

1. Voraussetzungen

sudo apt update
sudo apt install -y curl openssl ca-certificates

2. Docker installieren

curl -fsSL https://get.docker.com | sh
sudo systemctl enable --now docker

Verifizieren:

docker --version && docker compose version

3. Verzeichnis anlegen

sudo mkdir -p /opt/vesana
cd /opt/vesana

4. Compose-Datei und Beispiel-Env vom Lizenzportal laden

sudo curl -sSL https://license.vesana.org/api/v1/install/compose      -o docker-compose.prod.yml
sudo curl -sSL https://license.vesana.org/api/v1/install/env-example  -o .env.example
sudo cp .env.example .env

5. Secrets generieren

SECRET_KEY=$(openssl rand -hex 32)
FIELD_ENCRYPTION_KEY=$(openssl rand -base64 32 | tr '+/' '-_' | tr -d '=')
POSTGRES_PASSWORD=$(openssl rand -hex 16)
REDIS_PASSWORD=$(openssl rand -hex 16)

echo "FIELD_ENCRYPTION_KEY: $FIELD_ENCRYPTION_KEY"

FIELD_ENCRYPTION_KEY sofort sichern

Der Schlüssel ist genau ein Mal sichtbar. Verlust = verschlüsselte Felder dauerhaft unleserlich. In Passwort-Manager kopieren, bevor du das Terminal schließt.

6. .env befüllen

sudo sed -i "s|^BASE_URL=.*|BASE_URL=https://deine-domain.tld|"                           .env
sudo sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=${POSTGRES_PASSWORD}|"              .env
sudo sed -i "s|^REDIS_PASSWORD=.*|REDIS_PASSWORD=${REDIS_PASSWORD}|"                       .env
sudo sed -i "s|^SECRET_KEY=.*|SECRET_KEY=${SECRET_KEY}|"                                   .env
sudo sed -i "s|^FIELD_ENCRYPTION_KEY=.*|FIELD_ENCRYPTION_KEY=${FIELD_ENCRYPTION_KEY}|"     .env
sudo sed -i "s|^# REGISTRY_URL=.*|REGISTRY_URL=ghcr.io/lukas5001|"                         .env

BASE_URL ersetzen durch deine echte URL (z. B. https://monitoring.example.com oder https://192.168.1.50).

Optional, wenn du einen Lizenzschlüssel hast:

sudo sed -i "s|^# LICENSE_KEY=.*|LICENSE_KEY=DEIN-KEY|" .env

7. Secrets-Dateien erzeugen

sudo mkdir -p secrets
echo "$POSTGRES_PASSWORD"    | sudo tee secrets/pg_password           > /dev/null
echo "$REDIS_PASSWORD"       | sudo tee secrets/redis_password        > /dev/null
echo "$SECRET_KEY"           | sudo tee secrets/secret_key            > /dev/null
echo "$FIELD_ENCRYPTION_KEY" | sudo tee secrets/field_encryption_key  > /dev/null
sudo chmod 600 secrets/*

8. Images pullen und Stack starten

sudo docker compose -f docker-compose.prod.yml pull
sudo docker compose -f docker-compose.prod.yml up -d

9. Status prüfen

sudo docker compose -f docker-compose.prod.yml ps
sudo docker compose -f docker-compose.prod.yml logs -f api

Wenn alle Container Up (healthy) sind, weiter zum Setup-Wizard.

Wenn ein Container nicht startet

# Welche Container laufen / hängen?
docker compose -f docker-compose.prod.yml ps

# Logs vom problematischen Container
docker compose -f docker-compose.prod.yml logs <service-name> --tail 100

Häufige Ursachen siehe Troubleshooting.

Anschluss