Files
UmbrelApps/whatsnext-atreides-services/docker-compose.yml
T
HarmenandClaude Opus 5.5 7f0a16e58e Atreides Services 0.0.7: image 0.0.4, eigen map per slot
De app schrijft sinds image 0.0.4 rechtstreeks in de gekozen map en weigert
twee slots op dezelfde map. Commentaar in manifest en compose daarop
aangepast; slots, doelpaden en standaardmounts ongewijzigd. Releasenotes
bijgewerkt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:41:07 +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.4@sha256:8b5a502151c91bc2ffbf9337322ee2c628dfbd3fe42fe7d347bc7a30948c037a
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