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.
| 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.
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
.env.local mindestens APP_SECRET, APP_ADMIN_USER und APP_ADMIN_PASSWORD_HASH setzen (siehe Konfiguration). Der Hash gehört hier in einfache Anführungszeichen, damit Symfony das $ nicht als Variable auswertet.make local-build
http://localhost:8087, Mailpit (Mail-Fänger) unter http://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.
/opt/watchdog klonen, 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.stage ausfüllen: APP_SECRET, APP_ADMIN_USER, APP_ADMIN_PASSWORD_HASH (mit $$ statt $), DEFAULT_URI, MAILER_DSN, MAILER_FROM.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.
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.live ausfüllen (APP_SECRET, Admin-Zugang, DEFAULT_URI, echter SMTP-Server in MAILER_DSN, MAILER_FROM).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.
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.
Watchdog), melde Dich mit APP_ADMIN_USER und dem Passwort zum Hash an.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.
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
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
| 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.