diff --git a/tests/test_appstore_vorm.py b/tests/test_appstore_vorm.py index ebdd909..07f6e9e 100644 --- a/tests/test_appstore_vorm.py +++ b/tests/test_appstore_vorm.py @@ -270,6 +270,52 @@ def test_data_onder_data(u, app): not ontbreekt, "ontbreekt: %r" % ontbreekt) +def test_containernamen_zijn_volledig(u, app): + """Verwijzingen tussen containers gebruiken de volledige naam. + + Alle apps van umbrelOS delen één Docker-netwerk, dus een servicenaam als + 'agent' of 'server' is daar niet uniek. Heeft een tweede app dezelfde naam, + dan verdeelt Docker de naam over beide containers en komt ongeveer de helft + van het verkeer bij de verkeerde app uit. + + Dat is geen theorie: op 28-08-2026 gaf de statuspagina van Evolu Relay + afwisselend goede gegevens en een 404, omdat Electrum Gate óók een 'agent' op + poort 8000 heeft. Van tien verzoeken kwamen er vijf verkeerd uit. Het maakte + bovendien de pagina van Electrum Gate kapot, een app die tot dat moment werkte. + + De vorm __1 is wél uniek. Deze toets kijkt naar de plekken + waar een naam als hostnaam wordt gebruikt: proxy_pass in een nginx-config, en + de omgevingsvariabelen die een hostnaam dragen. + """ + fout = [] + + for bestandsnaam in sorted(os.listdir(os.path.join(REPO, app))): + if not bestandsnaam.endswith(".template") and bestandsnaam != "docker-compose.yml": + continue + tekst = lees(os.path.join(REPO, app, bestandsnaam)) + for regel in tekst.splitlines(): + kaal = regel.strip() + if kaal.startswith("#"): + continue + + naam = None + if kaal.startswith("proxy_pass http://"): + naam = kaal[len("proxy_pass http://"):].split(":", 1)[0].split("/", 1)[0] + elif "_HOST:" in kaal and not kaal.startswith("- "): + waarde = kaal.split(":", 1)[1].strip().strip('"') + # Een variabele van umbrelOS of een IP-adres is geen containernaam. + if waarde and not waarde.startswith("${") and not waarde[0].isdigit(): + naam = waarde + + if naam is None or naam in ("localhost", "127.0.0.1"): + continue + if not naam.startswith(app + "_"): + fout.append("%s: %s" % (bestandsnaam, naam)) + + u.check("%s: verwijzingen naar containers gebruiken de volledige naam" % app, + not fout, "korte namen: %r" % fout) + + def rapporteer_pinstatus(apps): """Afdrukken, niet toetsen. Zie de uitleg bovenaan dit bestand.""" print() @@ -299,6 +345,7 @@ def main(): test_manifest_volgorde(u, app) test_compose_bestaat_en_hangt_samen(u, app) test_data_onder_data(u, app) + test_containernamen_zijn_volledig(u, app) rapporteer_pinstatus(apps) return u.rapport() diff --git a/tools/evolu-relay/build.sh b/tools/evolu-relay/build.sh index 983e629..8e0ae7b 100644 --- a/tools/evolu-relay/build.sh +++ b/tools/evolu-relay/build.sh @@ -27,10 +27,15 @@ set -eu # De versies van `@evolu/common` en `@evolu/nodejs` staan exact in package.json en # zijn dáár de pin. Hier staat alleen het etiket op de uitkomst. # -# Houd VERSION gelijk aan `version` in whatsnext-evolu-relay/umbrel-app.yml. Twee -# redenen: je kunt op het apparaat zien wat er draait, en umbrelOS rolt een -# wijziging niet uit als dat nummer niet omhoog gaat. Dat laatste heeft hier een -# keer een dag gekost. +# Dit is het etiket op de IMAGE. Verhoog het als de image verandert, dus als er +# iets in src/, package.json of de Dockerfile wijzigt, en zet dan dezelfde waarde +# achter `image:` in de compose. +# +# `version` in umbrel-app.yml is een ander nummer en mag hierop vooruitlopen: dat +# moet bij élke wijziging aan de app omhoog, ook als alleen een template +# verandert, want anders rolt umbrelOS hem niet uit. Dat heeft hier een keer een +# dag gekost. Ze zijn dus gelijk zolang alleen de image wijzigt, en lopen uiteen +# zodra er een reparatie in de app-map zit. VERSION="0.2.0" # Het register staat er expres in en dit is geen smaakkwestie: umbreld haalt élke diff --git a/whatsnext-electrum-gate/nginx.conf.template b/whatsnext-electrum-gate/nginx.conf.template index 9220aa1..51f39bd 100644 --- a/whatsnext-electrum-gate/nginx.conf.template +++ b/whatsnext-electrum-gate/nginx.conf.template @@ -56,8 +56,17 @@ http { # Geen proxy_set_header hier, en dat is geen vergetelheid: die zouden een # nginx-variabele vragen, en die haalt de template-invulling weg. De # agent heeft ze niet nodig. + # + # De volledige containernaam en niet de servicenaam 'agent'. Dat stond er + # tot 0.0.23 wel, en het werkte zolang deze app de enige was met een + # service van die naam. Sinds Evolu Relay er is, is dat niet meer waar: + # beide apps zitten op hetzelfde Docker-netwerk, allebei met een 'agent' + # op poort 8000, en Docker verdeelt de naam dan over de twee. Op + # 28-08-2026 gemeten op het apparaat: van tien verzoeken kwamen er vijf + # bij de verkeerde app uit. De vorm __1 is uniek per app; + # het is dezelfde les die in de compose al stond over de naam 'server'. location /api/ { - proxy_pass http://agent:8000; + proxy_pass http://whatsnext-electrum-gate_agent_1:8000; client_max_body_size 1k; } @@ -67,7 +76,7 @@ http { # limiet geldt nergens anders. De agent kapt zelf ook af, op 96k; deze # limiet is de eerste zeef en niet de enige. location = /api/certificate/upload { - proxy_pass http://agent:8000; + proxy_pass http://whatsnext-electrum-gate_agent_1:8000; client_max_body_size 96k; } } diff --git a/whatsnext-electrum-gate/umbrel-app.yml b/whatsnext-electrum-gate/umbrel-app.yml index 6856c88..59b9485 100644 --- a/whatsnext-electrum-gate/umbrel-app.yml +++ b/whatsnext-electrum-gate/umbrel-app.yml @@ -9,7 +9,7 @@ manifestVersion: 1 id: whatsnext-electrum-gate category: bitcoin name: Electrum Gate -version: "0.0.22" +version: "0.0.23" tagline: Your own node from anywhere, without waiting for Tor description: >- The privacy win is already yours: you run the Electrum server. A public one gets asked for @@ -56,13 +56,19 @@ description: >- # staan. In 0.0.9 stond er daardoor drie keer "Earlier releases" en twee keer # dezelfde 0.0.4-regel. De toets let er nu op. releaseNotes: >- - In light mode the panels now have an outline as well as a shadow. A soft shadow on white gives depth but - no edge, so where a panel ended was a matter of looking closely. Dark mode is unchanged. + Fixes a page that could go blank or show stale values once another app from the same store was + installed. The page reached its helper by a short name that a second app happened to use as well, so + roughly half of its requests ended up at the wrong one. It now uses a name that is unique to this app. + If your page has been behaving oddly, this is why. Earlier releases: + 0.0.22 gave panels in light mode an outline as well as a shadow. A soft shadow on white gives depth but + no edge, so where a panel ended was a matter of looking closely. Dark mode was unchanged. + + 0.0.21 put every tile value at the same size, so a block height no longer looked more important than a server name beside it, and gave the dialog a cross to close instead of the word "Close". diff --git a/whatsnext-evolu-relay/nginx.conf.template b/whatsnext-evolu-relay/nginx.conf.template index bce0cd9..cbd29fc 100644 --- a/whatsnext-evolu-relay/nginx.conf.template +++ b/whatsnext-evolu-relay/nginx.conf.template @@ -48,8 +48,15 @@ http { # Geen proxy_set_header, en dat is geen vergetelheid: die zouden een # nginx-variabele vragen en die haalt de template-invulling weg. De agent # heeft ze niet nodig. + # De volledige containernaam en niet de servicenaam 'agent'. Dat stond er + # eerst, en op het apparaat gaf het een 404 bij ongeveer elke tweede + # aanroep (28-08-2026): Electrum Gate heeft óók een service 'agent' op + # poort 8000, beide apps zitten op hetzelfde Docker-netwerk, en de korte + # naam kan dus naar de verkeerde container wijzen. De vorm + # __1 is uniek per app. Dezelfde les stond al in de + # compose van Electrum Gate, over de servicenaam 'server'. location /api/ { - proxy_pass http://agent:8000; + proxy_pass http://whatsnext-evolu-relay_agent_1:8000; # Een opdracht is een handvol bytes. De agent kapt zelf ook af, op # 4k; dit is de eerste zeef en niet de enige. client_max_body_size 4k; diff --git a/whatsnext-evolu-relay/umbrel-app.yml b/whatsnext-evolu-relay/umbrel-app.yml index 329d891..6cc0bca 100644 --- a/whatsnext-evolu-relay/umbrel-app.yml +++ b/whatsnext-evolu-relay/umbrel-app.yml @@ -11,7 +11,7 @@ manifestVersion: 1 id: whatsnext-evolu-relay category: bitcoin name: Evolu Relay -version: "0.2.0" +version: "0.2.1" tagline: Sync your Trezor Suite labels through your own machine description: >- Trezor Suite can sync the labels and account names you give your addresses across your @@ -39,7 +39,15 @@ description: >- Point Trezor Suite at this Umbrel to use it. Away from home you will need a way in, such as Tailscale or a reverse proxy with your own domain. releaseNotes: >- - A different relay, and a much smaller app. 0.0.2 packaged the relay Trezor runs for their own + Fixes a status page that alternated between working and showing an error. It reached its helper by a + short name that another app in this store uses as well, so about half of its requests ended up at the + wrong app. It now uses a name that is unique to this one. + + + Earlier releases: + + + 0.2.0 was a different relay, and a much smaller app. 0.0.2 packaged the relay Trezor runs for their own hosted service, with a quota manager and a PostgreSQL database beside it. That combination cannot work on your own machine: Suite skips the quota manager as soon as you point it at a relay of your own, while that relay refuses every owner the quota manager never registered.