Files
UmbrelApps/whatsnext-atreides-services/docker-compose.yml
T
HarmenandClaude Opus 5.5 10a68ad561 Atreides Services 0.0.9: image 0.0.6
Image 0.0.6 gepind op zijn digest (door release-bump bij het register
gecontroleerd): import van de koershistorie, gaten opvullen met candles, reeks
toevoegen, Bronnen bewerkbaar, POST in de API (schemaversie 9).
test_appstore_vorm: 91 goed, 0 fout.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 11:53:29 +02:00

94 lines
5.7 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.
#
# De beheer-app is een web-UI en hangt volledig achter app_proxy, zonder eigen
# poort. Alleen de API voor afnemers (host 3855) wordt gepubliceerd: die bedient een
# cliënt zonder browsersessie, net als Gate en de Relay.
# ═══════════════════════════════════════════════════════════════════════════════
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.6@sha256:06b1a11755a92a9c49591b79accf354ad0fe16064791623fb07ce85f6b50c809
restart: on-failure
# De API voor afnemers, zoals Atreides Assets op de laptop of de Mac. Elke
# aanroep behalve /v1/health vraagt een token, dat je op de pagina Systeem van
# de beheer-app aanmaakt. Zonder certificaat is het http, dus het token gaat
# onversleuteld over het LAN; publiek hoort er een reverse proxy met TLS voor.
# De beheer-app (8090) staat hier met opzet niet bij.
#
# 3855 op de host en niet 8091: dat laatste is een veelgebruikte poort en een
# botsing merk je pas als de app niet start (dezelfde les als 3852 bij de Relay
# en 50022 bij Gate). umbrelOS deelt hiervoor geen poort uit; `port` in het
# manifest is de web-UI achter app_proxy. Binnen de container blijft het 8091.
ports:
- "3855:8091"
# 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"
# Alleen om op de pagina Systeem het adres te tonen dat een afnemer invult,
# zoals RELAY_PUBLIC_PORT bij de Relay. Moet gelijk zijn aan de hostpoort
# bij `ports:` hierboven. Image 0.0.3 leest hem nog niet; dat doet pas de
# eerste image na commit cff6bf4 in AtreidesServices. Tot dan doet hij niets.
ATREIDES_SERVICES_API_PUBLIC_PORT: "3855"
# 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.
- ${APP_DATA_DIR}/data/app/history:/data/history