Files
UmbrelApps/whatsnext-atreides-services/docker-compose.yml
T
HarmenandClaude Opus 5.5 519002902c Atreides Services 0.0.4: image 0.0.2 en het slot Backups
- image 0.0.2 met digest, via tools/release-bump.mjs; de digest komt
  overeen met wat het register anoniem onder die tag heeft.
- folderAccess-slot backups (Backups) op server:/data/backups, met als
  standaard ${APP_DATA_DIR}/data/app/backups en een .gitkeep. Zonder
  gekozen map verandert er niets: dezelfde plek als zonder het slot.
- test_appstore_vorm.py toetst elk folderAccess-slot: geldig en uniek id,
  een naam, een service die bestaat en een standaardmount op hetzelfde
  doelpad. Mutatie op id, doelpad en service valt elk op de juiste toets.

Het slot Price history volgt met fase 2c van het plan Netwerkopslag.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:16:33 +02:00

74 lines
4.4 KiB
YAML

# ═══════════════════════════════════════════════════════════════════════════════
# 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 <app-id>_<compose-service>_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 <versie> <digest>`
# 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.2@sha256:f46330027f8289ba263dcbca15bda5ea00de8c2f64bcb17b71974ab7497c60ad
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