-
Notifications
You must be signed in to change notification settings - Fork 9
Docker Setup
- Docker und docker-compose installieren
- pve-dockerized
- Pensionsverwaltung initialisieren
- Updates
- Datenbank Backups
Mit pve-dockerized steht ein vorkunfiguriertes docker-compose setup bereit, was alles beinhaltet, um die Pensionsverwaltung in der aktuell stabilen Version laufen zu lassen. Dies beinhaltet einen Webserver, Datenbankserver, PHP und das Tool selbst.
Auf dieser seite wird beschrieben, wie die Pensionsverwaltung mithilfe von Docker und docker-compose verwendet werden kann.
Im folgenden wird exemplarisch gezeigt, wie Docker und docker-compose unter Debian 10 (buster) auf einem Odroid C2 (arm64) installiert werden. Für andere Plattformen bitte die Docker Dokumentation konsultieren.
-
Sicherstellen, dass alle Abhängigkeiten verfügbar sind
sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
-
Dockers GPG Schlüssel hinzufügen
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
-
Dockers repository für die arm64 Architektur hinzufügen
sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
-
Docker installieren
sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io
-
docker-compose installieren
sudo apt install python3-pip python3-dev libffi-dev pip3 install setuptools wheel pip3 install docker-compose
-
In das Zielverzeichnis wechseln (empfohlen
/opt/
) und docker-compose setup herunterladencd /opt git clone https://github.com/developeregrem/pve-dockerized.git cd pve-dockerized
Falls noch nicht vorhanden, muss git installiert werden:
apt install git
-
die Datei
.env.dist
kopieren und in.env
umbenennencp .env.dist .env
-
.env
mit einem Texteditor öffnen und anpassen-
passe den Hostnamen (
HOST_NAME
) an (z.B. pve, localhost oder mydomain.tld).Unter dem Hostnamen wird später die Anwendung erreichbar sein. Wird die Anwendung im lokalen Netz installiert, kann als Hostname
pve
beibehalten werden. Später ist die Anwendung dann unter https://pve/ mit dem Webbrowser erreichbar.Der Hostname muss ebenfalls in den Dateien
/etc/hostname
und/etc/hosts
eingetragen sein, sofern die Anwendung im lokalen Netzwerk installiert wird. Wer Armbian als Betriebssystem einsetzt kann dies mit dem build-in toolarmbian-config
machen. -
erzeuge und setze zufällige Passwörter für MySQL:
MYSQL_ROOT_PASSWORD
,MYSQL_PASSWORD
,MYSQL_BACKUP_PASSWORD
Passwort generieren z.B. mit
openssl rand -base64 32
-
für den verschlüsselten Zugriff mit dem Browser mittels https stehen zwei Möglichkeiten Bereit:
-
Selbst signiertes Zertifikat, falls die Anwendung nicht über eine öffentliche IP Adresse aufgerufen werden kann.
setze:
LETSENCRYPT=false
undSELF_SIGNED=true
-
Letsencrypt Zertifikat, falls die Anwendung über eine öffentliche IP aufgerufen werden kann.
setze:
LETSENCRYPT=true
undSELF_SIGNED=false
-
-
Pensionsverwaltungs spezifische Einstellungen
-
erzeuge und setze einen zufälligen Wert für
APP_SECRET
z.B. mittels
openssl rand 23 | sha1sum
-
unter
DATABASE_URL
hier den Wertdb_password
mit dem Wert des ParametersMYSQL_PASSWORD
ersetzen. -
Um aus der Anwendung heraus Mails senden zu können, muss ein externer Mail Anbieter existieren. Die Zugangsdaten hierfür werden in den Parameter MAILER_URL eingetragen.
z.B.:
MAILER_URL=smtp://domain.tld:587?encryption=tls&auth_mode=login&username=<username>&password=<password>
-
die restlichen Mail Parameter entsprechend der Beispiele in der Datei anpassen
-
-
-
im Ordner von pve-dockerized (
/opt/pve-dockerized/
) die Anwendung startendocker-compose up -d
mit
-d
wird auch sichergestellt, dass die Anwendung bei einem Neustart des Betriebssystems automatisch mitgestartet wird. -
SSL Zertifikat für den verschlüsselten Zugriff mit https erzeugen lassen
docker-compose exec acme /bin/sh -c "./run.sh"
Abhängig von der eingesetzten Hardware kann dies (einmalig) sehr lange dauern.
-
prüfen, ob alle Dienste laufen
docker ps
Die Ausgabe sollte ähnlich der im Bild sein. Unter Status müssen alle als "Up" gelistet sein
Falls einer der Dienste nicht korrekt gestartet ist kann man z.B. mittels
docker-compose logs web
auf Logs des Containers zugreifen und sehen wo das Problem liegt. (gültige Containernamen hierbei sind: web, php, db, acme, redis)
-
mittels
docker-compose exec --user www-data php /bin/sh -c "php pve/bin/console app:first-run"
-
Zuletzt mit einem Webbrowser auf die Anwendung zugreifen (hier im Beispiel mit)
Wenn in der .env Datei SELF_SIGNED=true gewählt wurde, wird beim ersten Besuch eine Sicherheitswarnung des Browsers angezeigt. Diese muss akzeptiert werden, anschließend gelangt man zum Login.
-
Um die Anwendung zu nutzen, bitte die Anleitung Erste Schritte beachten.
In dem Ordner pve-dockerized
existiert ein Script, mit dem die Anwendung vollautomatisch aktualisiert werden kann. Hierfür die folgenden Befehle ausführen:
chmod +x update-docker.sh
./update-docker.sh
Der letzte Befehl aktualisiert alle eingesetzten Images und lädt die neueste (stabile) Version der Pensionsverwaltung herunter.
In dem Ordner pve-dockerized
existiert ein Script, mit dem eine vollautomatische Sicherung der Datenbank angelegt werden kann.
-
Hierfür empfiehlt es sich einen separaten Datenbank Nutzer anzulegen.
Der Name und das Passwort wurden initial bereits bei der Konfiguration der
.env
Datei definiert:MYSQL_BACKUP_USER
undMYSQL_BACKUP_PASSWORD
docker-compose exec db /bin/sh mysql -uroot -p
gib das MySQL root-Passwort aus der
.env
Datei ein (MYSQL_ROOT_PASSWORD
) und führe den folgenden SQL Befehl aus.GRANT LOCK TABLES, SELECT ON *.* TO '<backupuser>'@'%' IDENTIFIED BY '<pw>';
Die Werte für
<backupuser>
und<pw>
müssen durch die Werte aus der.env
Datei ersetzt werden (MYSQL_BACKUP_USER
undMYSQL_BACKUP_PASSWORD
). -
Anschließend zweimal
Strg + D
drücken, um sich aus der Datenbank abzumelden und wieder zurück in denpve-dockerized
Ordner zu gelangen. -
Anschließend das Backupscript ausführen
chmod +x backup-db.sh ./backup-db.sh
Die Datanbank-Backups sind im Ordner
../dbbackup
zu finden.
- Über die Anwendung
- Funktionen
- Impressionen / Bilder
- Installation
- Verwendung
- Für Entwickler
- Technologie Stack