# ═══════════════════════════════════════════════════════════════════════════════ # Schoolbord - huurders, afspraken en maandfacturen voor Schooltje Boschoord. # # Eén container: de Node-server serveert de app én bezit de database. Het recept # staat NIET in deze repo maar in `HomeGit/Schoolbord` (de Dockerfile in de root # daar), net als bij Atreides Assets en Atreides Services. # # Een web-UI met een EIGEN login (sinds image 0.0.6): hij hangt achter # app_proxy, zonder `ports:`, en is publiek bereikbaar via een eigen reverse # proxy op een subdomein. De inlog van umbrelOS staat er daarom niet meer voor. # Het beheerderswachtwoord maakt de app zelf, in /data/secrets.json. # ═══════════════════════════════════════════════════════════════════════════════ services: # umbrelOS genereert deze service zelf; wij vullen alleen in waar hij heen moet # wijzen. De hostnaam heeft de vorm __1. # PROXY_AUTH_ADD "false": de app heeft een eigen login, en een bezoeker via het # subdomein heeft geen sessie bij umbrelOS. app_proxy: environment: APP_HOST: whatsnext-schoolbord_server_1 APP_PORT: 8095 PROXY_AUTH_ADD: "false" server: # De digest hoort erbij en niet alleen de tag: een tag kan opnieuw geduwd # worden. Eerste release op 03-11-2026. Bij een volgende zet # `node tools/release-bump.mjs whatsnext-schoolbord ` de tag # en de digest hier neer; dat script vervangt de hele regel en controleert # anoniem bij het register dat de digest onder die tag hangt. # # DE TAG IS DE VERSIE VAN DE IMAGE EN NIET DIE VAN DE APP: `version` in # umbrel-app.yml moet bij élke wijziging omhoog, ook als alleen dit bestand # verandert. image: sc.kamenier-hamer.nl/sysop/schoolbord:0.0.6@sha256:b4a7b9ead85e70c557b77197ef4008b157ff01315d03991aa16692397c75ad29 restart: on-failure # Geen `user:` nodig: de image zet zelf `USER node` (uid 1000), en umbrelOS # maakt de datamap aan als `umbrel`, ook uid 1000 (gemeten bij Atreides # Services op 09-10-2026). Geen healthcheck hier: die zit in de image. environment: # ZONDER DIT IS DE APP ONBEREIKBAAR. De server bindt op 127.0.0.1, en in een # container is dat de loopback van de container: app_proxy komt er dan niet # bij. De netwerkgrens is hier de afwezigheid van `ports:` plus de proxy. SCHOOLBORD_HOST: "0.0.0.0" # Hoeveel proxy's er voor de app staan: de eigen reverse proxy en app_proxy. # Alleen dan gelooft de app X-Forwarded-For (de rem op inlogpogingen per # bezoeker) en X-Forwarded-Proto (Secure op het sessiecookie). Na te gaan # met een inlog van buitenaf; via het LAN staat er één proxy voor. SCHOOLBORD_TRUST_PROXY: "2" volumes: # De datamap: db.sqlite, de hele administratie. Dit is de map die in de # back-up van umbrelOS hoort. Met `storage: dataRoot: data` in het manifest # kan umbrelOS 2.0 hem naar een USB-schijf verplaatsen; daarom staat # data/app in de repo (.gitkeep) en staat hier geen mount-optie bij. - ${APP_DATA_DIR}/data/app:/data