# ═══════════════════════════════════════════════════════════════════════════════ # Atreides Services - een eigen koersdienst: legt dag en nacht koersen vast en # levert ze straks via een API aan Atreides Assets. De verzamelaar staat # standaard aan en haalt dus vanaf de eerste start koersen van buiten op. # # Eén container: de Node-server serveert de beheer-app én bezit de database. Het # recept staat NIET in deze repo maar in `HomeGit/AtreidesServices` (de Dockerfile # in de root daar), net als bij Atreides Assets; deze store draagt alleen de # app-definitie. # # Geen `ports:` hier. De beheer-app is een web-UI en hangt volledig achter # app_proxy. De API voor afnemers krijgt later een eigen poort, en pas DIE wordt # eventueel gepubliceerd; daar staat nu nog niets voor. # ═══════════════════════════════════════════════════════════════════════════════ services: # umbrelOS genereert deze service zelf; wij vullen alleen in waar hij heen moet # wijzen. De hostnaam heeft de vorm __1. # # PROXY_AUTH_ADD blijft weg, dus de inlog van umbrelOS staat ervoor: dit is de # beheer-app en geen dienst voor een cliënt zonder browsersessie. app_proxy: environment: APP_HOST: whatsnext-atreides-services_server_1 APP_PORT: 8090 server: # De digest hoort erbij en niet alleen de tag: een tag kan opnieuw geduwd # worden. Eerste release op 09-10-2026. Bij een volgende zet # `node tools/release-bump.mjs whatsnext-atreides-services ` # 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, net als bij Atreides # Assets: `version` in umbrel-app.yml moet bij élke wijziging omhoog, ook als # alleen dit bestand verandert. image: sc.kamenier-hamer.nl/sysop/atreides-services:0.0.3@sha256:022cd900d70a9f896872f86eec4a7bf9a1fdebf57bfe2373b5ecb5adfb76e47d restart: on-failure # Geen `user:` nodig: de image zet zelf `USER node` (uid 1000). umbrelOS # maakt de datamap aan als `umbrel`, ook uid 1000, dus node mag erin # schrijven; gemeten op 09-10-2026. # # Geen healthcheck hier: die zit in de image (GET /api/health, ook zonder # login bereikbaar). environment: # ZONDER DIT IS DE APP ONBEREIKBAAR. De server bindt op 127.0.0.1 zolang TLS # én wachtwoord ontbreken, en in een container is dat de loopback van de # container: app_proxy komt er dan niet bij. De waarschuwing over TLS bij het # opstarten is daardoor verwacht. De netwerkgrens is hier de afwezigheid van # een `ports:`-regel plus de proxy. ATREIDES_SERVICES_HOST: "0.0.0.0" # HIER STAAT MET OPZET GEEN `ATREIDES_SERVICES_PASSWORD`. De login is # optioneel en wordt in de app zelf gezet, op de pagina Systeem. Een # wachtwoord uit de omgeving wint van dat scherm, en dan is het alleen nog # via dit bestand te veranderen: de les van Atreides Assets 0.1.0. volumes: # De datamap: db.sqlite, de minuutbestanden per maand en secrets.json. Een # koersreeks per moment is niet opnieuw op te halen, dus dit is de map die # in de back-up van umbrelOS hoort. # # Sinds `storage: dataRoot: data` in het manifest (0.0.3) herschrijft # umbrelOS 2.0 deze bron naar de plek die de gebruiker kiest, en zet hij # er `create_host_path: false` bij. Daarom moet data/app in de repo staan # (.gitkeep), en mag hier geen mount-optie bij die umbreld niet kent. # Staat de map op een USB-schijf, dan gaat hij NIET mee in de back-up. - ${APP_DATA_DIR}/data/app:/data # De standaard van het folderAccess-slot "backups" (umbrel-app.yml): zelfde # service en zelfde doelpad, en precies de map die de app zonder deze regel # ook zou gebruiken. Wijst de gebruiker het slot naar een NAS-map, dan # vervangt umbreld alleen deze mount; de rest van /data blijft lokaal. # Gemeten in het plan Netwerkopslag: een mount binnen /data verbergt de rest # niet. - ${APP_DATA_DIR}/data/app/backups:/data/backups # De standaard van het slot "price-history": de afgesloten maanden. Zonder # gekozen map dezelfde plek als zonder deze regel; de app schrijft eronder in # een eigen submap history/ met merkbestand. - ${APP_DATA_DIR}/data/app/history:/data/history