Watchdog: Installation
Watchdog per Docker Compose installieren: lokal, Stage und Live. Passwort-Hash erzeugen, Container starten, Migrationen, Update, Datensicherung und Deinstallation.
Watchdog: Installation
Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.
Watchdog läuft als Docker-Compose-Stack. Das Repository enthält je eine Compose-Datei für lokale Entwicklung, Stage und Live. Eine Installation ohne Docker beschreibt das Repository nicht.
Voraussetzungen
| Komponente | Hinweis |
|---|---|
| Docker mit Compose-Plugin | Alle Container werden aus dem mitgelieferten Dockerfile gebaut (Basis dunglas/frankenphp:1-php8.4-alpine) |
git und make |
Das Makefile kapselt alle Compose-Aufrufe |
| Reverse Proxy mit HTTPS | Nur bei Stage/Live nötig. Die App lauscht dort ausschließlich auf 127.0.0.1 |
PHP 8.4 und Symfony 8.1 sind im Image enthalten, auf dem Host wird nichts davon installiert.
Installation
Lokal (Entwicklung)
- Repository klonen und auf das neueste Release wechseln:
git clone https://github.com/markus-michalski/watchdog.git watchdog
cd watchdog
git checkout $(git tag --sort=-version:refname | head -1)
cp .env.example .env.local
- In
.env.localmindestensAPP_SECRET,APP_ADMIN_USERundAPP_ADMIN_PASSWORD_HASHsetzen (siehe Konfiguration). Der Hash gehört hier in einfache Anführungszeichen, damit Symfony das$nicht als Variable auswertet. - Image bauen, Container starten und Migrationen ausführen:
make local-build
- Aufrufen: App unter
http://localhost:8087, Mailpit (Mail-Fänger) unterhttp://localhost:8128.
Im Entwicklungs-Stack ist der Code per Volume eingebunden. Danach genügt make local-up zum Starten und make local-down zum Stoppen.
Stage
- Repository nach
/opt/watchdogklonen, auf das neueste Release wechseln und die Env-Datei anlegen:
git clone https://github.com/markus-michalski/watchdog.git /opt/watchdog
cd /opt/watchdog
git checkout $(git tag --sort=-version:refname | head -1)
cp .env.stage.example .env.stage
.env.stageausfüllen:APP_SECRET,APP_ADMIN_USER,APP_ADMIN_PASSWORD_HASH(mit$$statt$),DEFAULT_URI,MAILER_DSN,MAILER_FROM.- Bauen und starten:
make stage-build
make stage-up
make stage-up startet die Container und führt ausstehende Datenbank-Migrationen aus. App: 127.0.0.1:8087, Mailpit: 127.0.0.1:8128 auf dem Server.
Live
- Repository klonen und Env-Datei anlegen:
git clone https://github.com/markus-michalski/watchdog.git /opt/watchdog
cd /opt/watchdog
git checkout $(git tag --sort=-version:refname | head -1)
cp .env.live.example .env.live
.env.liveausfüllen (APP_SECRET, Admin-Zugang,DEFAULT_URI, echter SMTP-Server inMAILER_DSN,MAILER_FROM).- Bauen und starten:
make live-build
make live-up
Die App lauscht auf 127.0.0.1:8086. Für den Zugriff über HTTPS ist ein Reverse Proxy nötig, eine Proxy-Konfiguration liefert das Repository nicht mit.
Passwort-Hash erzeugen
Der Zugang besteht aus genau einem Admin-Benutzer, dessen Hash in der Env-Datei steht. Den Hash erzeugst Du so:
docker run --rm dunglas/frankenphp:1-php8.4-alpine php -r "echo password_hash('deinpasswort', PASSWORD_BCRYPT) . PHP_EOL;"
Alternativ, wenn der Stack schon läuft: docker compose -f compose.stage.yml exec app php bin/console security:hash-password.
Bcrypt-Hashes enthalten
$. In.env.stageund.env.liveliest Docker Compose die Datei, daher muss jedes$zu$$verdoppelt werden, also$$2y$$13$$.... In.env.local(lokal) liest Symfony die Datei, dort setzt Du den Hash stattdessen in einfache Anführungszeichen.
Erster Start
- Die App im Browser öffnen. Es erscheint der HTTP-Basic-Auth-Dialog (Realm
Watchdog), melde Dich mitAPP_ADMIN_USERund dem Passwort zum Hash an. - Einen Client, Kontakte und Checks anlegen, siehe Konfiguration.
- Für Checks auf dem Host (Festplatte, Prozesse, Dateien) einen Agenten registrieren, siehe Agenten.
Update
cd /opt/watchdog
git fetch --tags
git checkout $(git tag --sort=-version:refname | head -1)
make stage-update
Auf Live nimmst Du make live-update. Beide Ziele bauen das Image neu, starten die Container neu, leeren den Cache und führen die Migrationen aus. make live-update startet zuerst app neu und danach Worker, Scheduler und Agent.
Zusätzliche Mounts (compose.override.yml)
Das Makefile bindet automatisch eine lokale compose.override.yml ein, falls sie existiert. Die Datei ist per .gitignore ausgeschlossen und übersteht Updates. Eine Vorlage liegt als compose.override.yml.example bei.
cp compose.override.yml.example compose.override.yml
Datensicherung
Alle Daten liegen in der SQLite-Datei /app/var/data.db im benannten Volume (watchdog_stage_data bei Stage, watchdog_data bei Live und lokal). Für eine konsistente Kopie stoppst Du vorher Worker und Scheduler.
docker compose -f compose.live.yml stop worker scheduler
docker compose -f compose.live.yml cp app:/app/var/data.db ./data.db.bak
docker compose -f compose.live.yml start worker scheduler
Deinstallation
| Ziel | Befehl |
|---|---|
| Container stoppen, Daten behalten | make stage-down bzw. make live-down |
| Container und Datenbank-Volume löschen | docker compose -f compose.stage.yml down -v (Live: compose.live.yml) |
| Images entfernen | docker rmi watchdog-stage watchdog-stage-agent (Live: watchdog-live watchdog-live-agent) |
| Remote-Agent entfernen | docker compose -f docker-compose.agent.yml down auf dem überwachten Server |
Anschließend kannst Du das Verzeichnis /opt/watchdog samt .env.stage bzw. .env.live löschen. Den Agenten-Eintrag und die Tokens entfernst Du vorher in der Oberfläche unter Agents.