Schoolbord: image 0.0.6 in app-versie 0.0.7, eigen login

PROXY_AUTH_ADD false, want de app heeft een eigen login en gaat publiek op een subdomein; SCHOOLBORD_TRUST_PROXY 2 (eigen reverse proxy plus app_proxy). Beschrijving en release note bijgewerkt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
HarmenandClaude Opus 5.5 committed 2026-11-04 14:52:49 +01:00
1 parent 7130a731d1
commit bb0e28b577
2 files changed
+31 -20

No files matched your search

+14 -5
View File
@@ -5,18 +5,22 @@
# staat NIET in deze repo maar in `HomeGit/Schoolbord` (de Dockerfile in de root # staat NIET in deze repo maar in `HomeGit/Schoolbord` (de Dockerfile in de root
# daar), net als bij Atreides Assets en Atreides Services. # daar), net als bij Atreides Assets en Atreides Services.
# #
# Een web-UI zonder eigen login: hij hangt volledig achter app_proxy, zonder # Een web-UI met een EIGEN login (sinds image 0.0.6): hij hangt achter
# `ports:`. De inlog van umbrelOS is het slot. # app_proxy, zonder `ports:`, en is publiek bereikbaar via een eigen reverse
# proxy op een subdomein. De inlog van umbrelOS staat er daarom niet meer voor.
# Het beheerderswachtwoord maakt de app zelf, in /data/secrets.json.
# ═══════════════════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════════════════
services: services:
# umbrelOS genereert deze service zelf; wij vullen alleen in waar hij heen moet # 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 # wijzen. De hostnaam heeft de vorm <app-id>_<compose-service>_1.
# blijft weg, dus de inlog van umbrelOS staat ervoor. # PROXY_AUTH_ADD "false": de app heeft een eigen login, en een bezoeker via het
# subdomein heeft geen sessie bij umbrelOS.
app_proxy: app_proxy:
environment: environment:
APP_HOST: whatsnext-schoolbord_server_1 APP_HOST: whatsnext-schoolbord_server_1
APP_PORT: 8095 APP_PORT: 8095
PROXY_AUTH_ADD: "false"
server: server:
# De digest hoort erbij en niet alleen de tag: een tag kan opnieuw geduwd # De digest hoort erbij en niet alleen de tag: een tag kan opnieuw geduwd
@@ -28,7 +32,7 @@ services:
# DE TAG IS DE VERSIE VAN DE IMAGE EN NIET DIE VAN DE APP: `version` in # DE TAG IS DE VERSIE VAN DE IMAGE EN NIET DIE VAN DE APP: `version` in
# umbrel-app.yml moet bij élke wijziging omhoog, ook als alleen dit bestand # umbrel-app.yml moet bij élke wijziging omhoog, ook als alleen dit bestand
# verandert. # verandert.
image: sc.kamenier-hamer.nl/sysop/schoolbord:0.0.5@sha256:7cc2025c30e2049b55131d5e2b60e69502ca0d949684393ddceb8ab3487bf10e image: sc.kamenier-hamer.nl/sysop/schoolbord:0.0.6@sha256:b4a7b9ead85e70c557b77197ef4008b157ff01315d03991aa16692397c75ad29
restart: on-failure restart: on-failure
# Geen `user:` nodig: de image zet zelf `USER node` (uid 1000), en umbrelOS # Geen `user:` nodig: de image zet zelf `USER node` (uid 1000), en umbrelOS
# maakt de datamap aan als `umbrel`, ook uid 1000 (gemeten bij Atreides # maakt de datamap aan als `umbrel`, ook uid 1000 (gemeten bij Atreides
@@ -38,6 +42,11 @@ services:
# container is dat de loopback van de container: app_proxy komt er dan niet # container is dat de loopback van de container: app_proxy komt er dan niet
# bij. De netwerkgrens is hier de afwezigheid van `ports:` plus de proxy. # bij. De netwerkgrens is hier de afwezigheid van `ports:` plus de proxy.
SCHOOLBORD_HOST: "0.0.0.0" SCHOOLBORD_HOST: "0.0.0.0"
# Hoeveel proxy's er voor de app staan: de eigen reverse proxy en app_proxy.
# Alleen dan gelooft de app X-Forwarded-For (de rem op inlogpogingen per
# bezoeker) en X-Forwarded-Proto (Secure op het sessiecookie). Na te gaan
# met een inlog van buitenaf; via het LAN staat er één proxy voor.
SCHOOLBORD_TRUST_PROXY: "2"
volumes: volumes:
# De datamap: db.sqlite, de hele administratie. Dit is de map die in de # De datamap: db.sqlite, de hele administratie. Dit is de map die in de
# back-up van umbrelOS hoort. Met `storage: dataRoot: data` in het manifest # back-up van umbrelOS hoort. Met `storage: dataRoot: data` in het manifest
+17 -15
View File
@@ -13,24 +13,25 @@ storage:
dataRoot: data dataRoot: data
category: finance category: finance
name: Schoolbord name: Schoolbord
version: "0.0.6" version: "0.0.7"
tagline: Tenants, agreements and monthly invoices for a small venue tagline: Tenants, agreements and monthly invoices for a small venue
description: >- description: >-
Schoolbord keeps the tenants of a small venue, the agreements made with them, and what follows Schoolbord keeps the people of a small venue, the agreements made with them, and what follows
from those: every lesson, workshop and booking of a month, with cancellations, moves and extra from those: an agenda by month, week or day, with cancellations, moves and extra bookings. One
bookings. One button invoices a month: a PDF per tenant with a payment QR code (bunq.me, iDEAL), button invoices a month: a PDF per tenant with a payment QR code (bunq.me, iDEAL), ready to share,
ready to download, share or send through WhatsApp. The overview shows this month's revenue, the send through WhatsApp or put in your mailbox as a draft. Notes with attachments, a report for the
coming week, revenue per month and what is still to be paid. bookkeeping, and the agenda and rates delivered to the website.
It was made for Schooltje Boschoord and speaks Dutch. Everything stays in your app folder on your It has its own login and was made for Schooltje Boschoord; it speaks Dutch. Everything stays in your
Umbrel and goes along with your Umbrel backup. app folder on your Umbrel and goes along with your Umbrel backup.
releaseNotes: >- releaseNotes: >-
The energy surcharge is now one price per hour, set with the heating season on a new tab of the rates; Schoolbord now has its own login and no longer sits behind the umbrelOS login. The administrator is
an agreement only says whether it applies, and the invoice shows it as one item (hours times the sysop; the password is made at the first start and is in secrets.json in the app's data folder (and in
price). New: conversation reports with search and sorting, a switch per agreement for the website, a the log). Back up the app's data before updating: the database is migrated. New: People with
card per tenant with what is outstanding, an explanation on every page, and Active as a switch on the Schooldames who can log in, Notes with a rich editor and attachments, drafts in your mailbox through
tenants. Existing invoices stay as they were. IMAP, free invoices, an invoice number per tenant, the agenda by month, week or day, a report for the
bookkeeping, and the agenda and rates delivered to the website.
developer: "WhatsNext?" developer: "WhatsNext?"
website: https://sc.kamenier-hamer.nl/sysop/UmbrelApps website: https://sc.kamenier-hamer.nl/sysop/UmbrelApps
dependencies: [] dependencies: []
@@ -48,8 +49,9 @@ submission: https://sc.kamenier-hamer.nl/sysop/UmbrelApps
# ── Hieronder staat wat de voorgeschreven volgorde niet noemt ──────────────── # ── Hieronder staat wat de voorgeschreven volgorde niet noemt ────────────────
# #
# GEEN defaultPassword: de app heeft geen eigen login; de inlog van umbrelOS is # GEEN defaultPassword: de app maakt het beheerderswachtwoord zelf, bij de eerste
# het slot. # start, in /data/secrets.json. Een wachtwoord uit umbrelOS zou dat scherm
# overrulen (de les van Atreides Assets 0.1.0).
# Het icoon hoort bij een eigen store en moet bij inlevering in de officiele # Het icoon hoort bij een eigen store en moet bij inlevering in de officiele
# store juist weg: die host iconen apart. Daarom staat het als laatste. De boom # store juist weg: die host iconen apart. Daarom staat het als laatste. De boom