Self-Hosting
Diese Anleitung behandelt die Produktivbereitstellung von Gäld auf Ihrem eigenen Server. Für die lokale Entwicklung siehe Erste Schritte.
Serveranforderungen
| Komponente | Mindestversion |
|---|---|
| PHP | 8.2 |
| PostgreSQL | 15 |
| Redis | 7 |
| Nginx (oder Caddy) | — |
| Node.js (nur Build) | 20 |
Ein einzelner VPS mit 2 vCPU, 2 GB RAM und 20 GB SSD reicht für die meisten kleinen Organisationen aus.
Installation
git clone https://github.com/Scanix/Gaeld.git /var/www/gaeld
cd /var/www/gaeld
composer install --no-dev --optimize-autoloader
npm install && npm run build
cp .env.example .env
php artisan key:generate
Bearbeiten Sie .env mit Ihren Produktionswerten (siehe Umgebungsvariablen unten).
php artisan gaeld:install
Nginx-Konfiguration
server {
listen 80;
server_name app.example.com;
root /var/www/gaeld/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Fügen Sie ein SSL-Zertifikat hinzu (z. B. über Certbot) und leiten Sie Port 80 auf 443 um, bevor Sie live gehen.
PHP-FPM-Pool
Erstellen oder bearbeiten Sie /etc/php/8.2/fpm/pool.d/gaeld.conf:
[gaeld]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Neustart: systemctl restart php8.2-fpm
Queue-Worker (systemd)
Gäld verwendet Laravel-Queues für Hintergrundjobs (Bankimporte, Benachrichtigungen). Führen Sie einen dauerhaften Worker aus:
# /etc/systemd/system/gaeld-worker.service
[Unit]
Description=Gäld Queue Worker
After=network.target
[Service]
User=www-data
WorkingDirectory=/var/www/gaeld
ExecStart=/usr/bin/php artisan queue:work --sleep=3 --tries=3 --max-time=3600
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
Aktivieren und starten:
systemctl enable gaeld-worker
systemctl start gaeld-worker
Geplante Aufgaben (Cron)
Fügen Sie zum www-data Crontab hinzu:
* * * * * /usr/bin/php /var/www/gaeld/artisan schedule:run >> /dev/null 2>&1
Dateispeicherung und Berechtigungen
chown -R www-data:www-data /var/www/gaeld/storage /var/www/gaeld/bootstrap/cache
chmod -R 775 /var/www/gaeld/storage /var/www/gaeld/bootstrap/cache
Generierte Dateien (Rechnungs-PDFs, Bankimporte) werden in storage/app/ gespeichert. Binden Sie dieses Verzeichnis bei Container-Einsatz in persistenten Speicher ein.
Umgebungsvariablen
| Variable | Beschreibung | Beispiel |
|---|---|---|
APP_ENV | Umgebung | production |
APP_URL | Öffentliche URL | https://app.example.com |
DB_HOST | PostgreSQL-Host | 127.0.0.1 |
DB_DATABASE | Datenbankname | gaeld |
DB_USERNAME | DB-Benutzer | gaeld |
DB_PASSWORD | DB-Passwort | … |
REDIS_HOST | Redis-Host | 127.0.0.1 |
CACHE_DRIVER | Cache-Backend | redis |
QUEUE_CONNECTION | Queue-Backend | redis |
MAIL_MAILER | Mail-Treiber | smtp oder mailgun |
MAIL_FROM_ADDRESS | Absenderadresse | noreply@example.com |
FEATURE_BANK_SYNC | Bankimport aktivieren | true |
FEATURE_AUTOMATION | Regelwerk aktivieren | true |
PLUGINS_ENABLED | Plugin-System aktivieren | true |
Aktualisieren
Nach dem Abrufen einer neuen Version:
cd /var/www/gaeld
git pull
composer install --no-dev --optimize-autoloader
npm install && npm run build
php artisan gaeld:update
systemctl restart gaeld-worker
gaeld:update führt ausstehende Migrationen durch, leert Caches und startet Queues sicher neu.
Backups
Sichern Sie:
- PostgreSQL-Datenbank:
pg_dump gaeld > gaeld_$(date +%F).sql - Storage-Verzeichnis:
storage/app/(enthält generierte PDFs und Uploads) .env-Datei: Sicher ausserhalb des Web-Root aufbewahren
Empfehlen Sie einen täglichen Cron-Job und eine Off-Site-Replikation für Produktionsumgebungen.