From 7fd49cc3911cbcd92ff8cedbff99006ad7a1b3d7 Mon Sep 17 00:00:00 2001 From: Theo Weijmer Date: Fri, 11 Sep 2026 15:13:01 +0200 Subject: [PATCH] docs: deploy via Ansible on pensare-server Co-Authored-By: Claude Fable 5.1 --- README.md | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d02d79a..f977816 100644 --- a/README.md +++ b/README.md @@ -92,25 +92,41 @@ De bestanden staan in `orbstack/divers/weerscherm/` (Dockerfile, compose) en `or ## Deploy (productie) -Productie-URL: `https://homedisplay.bahne-drei.de/` +Productie-URL: `https://homedisplay.bahne-drei.de/` op `pensare-server`, beheerd met Ansible +(`infra-ansible-pensare`, app `weerscherm` in `inventories/production/host_vars/pensare-server.yml`). -- Git op de self-hosted Gitea, squash-and-merge naar `main`, deploy via DeployPad. -- Document root is `public/`. `src/`, `storage/`, `config.php` en `bin/` zijn dan niet via HTTP bereikbaar. -- `storage/` moet deploys overleven: maak er in DeployPad een gedeelde map van (shared folder) of zet - `storage_path` in `config.php` naar een map buiten de release-map, bijvoorbeeld `/var/www/weerscherm-storage`. - De map moet schrijfbaar zijn voor de webserver-gebruiker (`www-data`). -- `config.php` is per omgeving en staat niet in git; zet hem ook in de gedeelde map en symlink, of maak hem - eenmalig aan in de release-root. -- `composer install` is op de server niet nodig: `src/autoload.php` laadt de klassen zelf als `vendor/` ontbreekt. -- HTTPS is vereist voor de service worker en "Zet op beginscherm". -- Na de eerste deploy: `php bin/netatmo-init.php ''` op de server, en controleer - `https://homedisplay.bahne-drei.de/api/data.php` op `"errors": []`. -- De app staat bewust zonder login. Kies een niet-voor-de-hand-liggend (sub)domein; `robots.txt` en - `X-Robots-Tag: noindex` houden zoekmachines buiten de deur. +- Code komt uit de publieke Gitea-repo `https://git.pensare.nl/theo/weerscherm.git` (branch `main`); + de role cloont of pullt als Linux-user `weerscherm`. +- `config.php` wordt gerenderd uit `roles/webapp/templates/weerscherm.config.php.j2` met de Netatmo-gegevens + uit de vault (`vault_weerscherm_netatmo_client_id`, `vault_weerscherm_netatmo_client_secret`). +- `storage_path` is `/var/www/weerscherm-storage` (www-data, 0770), buiten de release-map, zodat de token + en de cache deploys overleven. +- Document root is `public/`; `src/`, `bin/` en `config.php` zijn niet via HTTP bereikbaar. +- `composer install` is op de server niet nodig: `src/autoload.php` laadt de klassen zelf. +- SSL via certbot in dezelfde playbook-run. -Nieuwe versie van de frontend? Verhoog `VERSION` in `public/sw.js`; de app herlaadt zichzelf bij `controllerchange` +Nieuwe versie uitrollen: + +```bash +git push origin main +cd /Volumes/development/sites/pensare/infra-ansible-pensare +ansible-playbook playbooks/deploy-app.yml -e app=weerscherm +``` + +Verhoog bij frontend-wijzigingen `VERSION` in `public/sw.js`; de app herlaadt zichzelf bij `controllerchange` en in elk geval dagelijks rond 04:00. +Token opnieuw koppelen (melding "Netatmo-koppeling verlopen"): + +```bash +ssh weerscherm@65.108.40.86 'cd /var/www/weerscherm && sudo -u www-data php8.3 bin/netatmo-init.php ""' +``` + +Lukt `sudo -u www-data` niet als `weerscherm`, doe het dan als `deploy` met `sudo`. Controleer daarna +`https://homedisplay.bahne-drei.de/api/data.php` op `"errors": []`. + +- De app staat bewust zonder login. `robots.txt` en `X-Robots-Tag: noindex` houden zoekmachines buiten de deur. + ## iPad-instellingen 1. Open de URL in Safari, tik op Delen → **Zet op beginscherm**. Start de app daarna altijd vanaf het beginscherm