# ═══════════════════════════════════════════════════════════════════════════════ # Atreides Assets - je eigen vermogensoverzicht (crypto en edelmetaal), lokaal. # # Eén container: de Node-backend serveert de SPA én bezit de database. Het recept # staat NIET in deze repo maar in `HomeGit/AtreidesAssets` (de Dockerfile in de root # daar); deze store draagt alleen de app-definitie. Zie het plan Distributie, # PLAN.md §5a: de scheiding loopt tussen repo's en niet tussen mappen. # # Geen `ports:` hier, en dat is het verschil met de andere twee apps in deze # store. Die publiceren een eigen poort omdat een cliënt zónder browsersessie # erbij moet (een wallet, een sync-cliënt). Dit is een web-UI en niets anders, # dus hij hangt volledig achter app_proxy en umbrelOS bepaalt de poort. # ═══════════════════════════════════════════════════════════════════════════════ 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. Dat is hier # de bedoeling: dit is een administratie en niet een dienst voor een cliënt. app_proxy: environment: APP_HOST: whatsnext-atreides-assets_server_1 APP_PORT: 8080 server: # De digest hoort erbij en niet alleen de tag: een tag kan opnieuw geduwd # worden en dan draait er iets anders dan hier staat. Staan ze allebei, dan # bepaalt de digest wat er gehaald wordt en is de tag alleen leesbaarheid. # Geduwd op 14-09-2026. # # DE TAG IS DE VERSIE VAN DE IMAGE EN NIET DIE VAN DE APP. `version` in # umbrel-app.yml loopt erop vooruit, want dat moet bij élke wijziging omhoog, # ook als alleen dit bestand verandert; de tag alleen als er een nieuwe image # is. Vandaar 0.1.1 in het manifest naast 0.1.0 hier. # # Er hoort geen build.sh bij deze app, want het recept woont in de # AssetApp-repo; de toets in tests/test_appstore_vorm.py slaat de # tag-vergelijking daarom over. # # Bij een verhoging: eerst de digest hier wéghalen, dan bouwen en duwen, dan # de nieuwe erin. Een OUDE digest onder een NIEUWE tag levert stilzwijgend de # oude image. image: sc.kamenier-hamer.nl/sysop/atreides-assets:0.3.1@sha256:20cae28ba15206d3f60635f04e9881275feac7b9e7772f0e0023e390f29d1e36 restart: on-failure # Geen `user:` nodig: de image zet zelf `USER node`. Dat is anders dan bij # Evolu Relay, waar de image er geen heeft en de compose het per container # regelt. environment: # ZONDER DIT IS DE APP ONBEREIKBAAR. De server bindt op 127.0.0.1 zolang TLS # én inloggegevens ontbreken, 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 een `ports:`-regel plus de proxy, en niet de app zelf. ASSETAPP_HOST: "0.0.0.0" # HIER STAAT MET OPZET GEEN `ASSETAPP_PASSWORD`, en dat is een correctie op # 0.1.0 (14-09-2026). Daar stond `${APP_PASSWORD}`, en dat gaf twee # problemen tegelijk: # # 1. umbrelOS vult die variabele alleen aan een app die er in zijn # manifest om vraagt, dus hij kwam leeg binnen en de app draaide # zónder eigen slot; # 2. en gevuld was ook niet goed geweest. De app leest de omgeving vóór # het geheimenbestand, dus verbergt hij op Systeem -> Portefeuilles de # knop om het wachtwoord te wijzigen. Het is dan alleen te veranderen # door dit bestand aan te passen, en dat is voor een Umbrel-app de # verkeerde plek. # # Het wachtwoord hoort dus in de portefeuille zelf, te zetten op # Systeem -> Portefeuilles. Daar is het te wijzigen en het gaat mee in de # back-up van umbrelOS. Tot je het zet, is de inlog van umbrelOS het enige # slot, en dat beschermt niet tegen een andere app op hetzelfde # Docker-netwerk. volumes: # De INSTALLATIEMAP van de app: active.json, tls/ en één map per # portefeuille. Alles wat de gebruiker bezit staat hieronder, dus dit is de # map die in de back-up van umbrelOS hoort. - ${APP_DATA_DIR}/data/app:/data