diff --git a/whatsnext-schoolbord/docker-compose.yml b/whatsnext-schoolbord/docker-compose.yml index 643cf74..6fe326b 100644 --- a/whatsnext-schoolbord/docker-compose.yml +++ b/whatsnext-schoolbord/docker-compose.yml @@ -5,18 +5,22 @@ # staat NIET in deze repo maar in `HomeGit/Schoolbord` (de Dockerfile in de root # daar), net als bij Atreides Assets en Atreides Services. # -# Een web-UI zonder eigen login: hij hangt volledig achter app_proxy, zonder -# `ports:`. De inlog van umbrelOS is het slot. +# Een web-UI met een EIGEN login (sinds image 0.0.6): hij hangt achter +# 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: # 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. + # wijzen. De hostnaam heeft de vorm __1. + # PROXY_AUTH_ADD "false": de app heeft een eigen login, en een bezoeker via het + # subdomein heeft geen sessie bij umbrelOS. app_proxy: environment: APP_HOST: whatsnext-schoolbord_server_1 APP_PORT: 8095 + PROXY_AUTH_ADD: "false" server: # 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 # umbrel-app.yml moet bij élke wijziging omhoog, ook als alleen dit bestand # 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 # 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 @@ -38,6 +42,11 @@ services: # 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. 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: # 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 diff --git a/whatsnext-schoolbord/umbrel-app.yml b/whatsnext-schoolbord/umbrel-app.yml index f325225..a7450dd 100644 --- a/whatsnext-schoolbord/umbrel-app.yml +++ b/whatsnext-schoolbord/umbrel-app.yml @@ -13,24 +13,25 @@ storage: dataRoot: data category: finance name: Schoolbord -version: "0.0.6" +version: "0.0.7" tagline: Tenants, agreements and monthly invoices for a small venue description: >- - Schoolbord keeps the tenants 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 - bookings. One button invoices a month: a PDF per tenant with a payment QR code (bunq.me, iDEAL), - ready to download, share or send through WhatsApp. The overview shows this month's revenue, the - coming week, revenue per month and what is still to be paid. + Schoolbord keeps the people of a small venue, the agreements made with them, and what follows + from those: an agenda by month, week or day, with cancellations, moves and extra bookings. One + button invoices a month: a PDF per tenant with a payment QR code (bunq.me, iDEAL), ready to share, + send through WhatsApp or put in your mailbox as a draft. Notes with attachments, a report for the + 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 - Umbrel and goes along with your Umbrel backup. + It has its own login and was made for Schooltje Boschoord; it speaks Dutch. Everything stays in your + app folder on your Umbrel and goes along with your Umbrel backup. releaseNotes: >- - The energy surcharge is now one price per hour, set with the heating season on a new tab of the rates; - an agreement only says whether it applies, and the invoice shows it as one item (hours times the - price). New: conversation reports with search and sorting, a switch per agreement for the website, a - card per tenant with what is outstanding, an explanation on every page, and Active as a switch on the - tenants. Existing invoices stay as they were. + Schoolbord now has its own login and no longer sits behind the umbrelOS login. The administrator is + sysop; the password is made at the first start and is in secrets.json in the app's data folder (and in + the log). Back up the app's data before updating: the database is migrated. New: People with + Schooldames who can log in, Notes with a rich editor and attachments, drafts in your mailbox through + 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?" website: https://sc.kamenier-hamer.nl/sysop/UmbrelApps dependencies: [] @@ -48,8 +49,9 @@ submission: https://sc.kamenier-hamer.nl/sysop/UmbrelApps # ── Hieronder staat wat de voorgeschreven volgorde niet noemt ──────────────── # -# GEEN defaultPassword: de app heeft geen eigen login; de inlog van umbrelOS is -# het slot. +# GEEN defaultPassword: de app maakt het beheerderswachtwoord zelf, bij de eerste +# 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 # store juist weg: die host iconen apart. Daarom staat het als laatste. De boom