Setup gate on 28 more apps; signup_block on 11 (decision 47); claper R-713 base64; FIRST-ADMIN current
gates / gates (push) Successful in 2s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-29 11:08:56 +02:00
parent d0e7e2eb51
commit 6faf432e22
37 changed files with 287 additions and 55 deletions
+9
View File
@@ -40,6 +40,15 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# measured on 9202 2026-09-29: data.bootstrapped false -> true once the server password is set.
setup_done_probe:
url: http://actualbudget:5006/account/needs-bootstrap
field: data.bootstrapped
done: "true"
# --- App info (info page content) ---
app_info:
tagline: 'Költségvetés tervező - pénzügyeid kézben tartása egyszerűen'
+8
View File
@@ -52,9 +52,16 @@ deploy_fields:
generate: "password:24"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's sign-up succeeded after the setup).
signup_block: "Path(`/signup`) || PathPrefix(`/auth/browser/v1/auth/signup`) || PathPrefix(`/_allauth/browser/v1/auth/signup`) || PathPrefix(`/accounts/signup`)"
# --- App info (info page content) ---
app_info:
tagline: "Utazási napló - utazások dokumentálása térképpel és fotókkal"
add_people: "Nyisd meg a regisztrációt 15 percre, és a családtagod a saját címével regisztrál."
docs_url: "https://adventurelog.app/docs/"
use_cases:
@@ -88,6 +95,7 @@ i18n:
description: 'Travel journal and trip planner'
app_info:
tagline: 'Travel journal - keep your trips with a map and photos'
add_people: "Open sign-up for 15 minutes, and your family member signs up with their own address."
use_cases:
- 'Keep your trips with pictures and notes'
- 'See everywhere you have been on a map'
+8
View File
@@ -53,9 +53,16 @@ deploy_fields:
generate: "password:24"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's POST /api/auth/signup created an account (201) after the setup).
signup_block: "Path(`/signup`) || PathPrefix(`/auth/signup`) || PathPrefix(`/api/auth/signup`)"
# --- App info (info page content) ---
app_info:
tagline: "Időpontfoglaló - Calendly alternatíva saját szerveren"
add_people: "Beállítások → Adminisztráció → Felhasználók → Új felhasználó."
docs_url: "https://cal.com/docs/"
use_cases:
@@ -108,6 +115,7 @@ i18n:
description: 'Open source appointment booking (a Calendly alternative)'
app_info:
tagline: 'Appointment booking - a Calendly alternative on your own server'
add_people: "Settings → Admin → Users → Add user."
use_cases:
- 'Give people a page where they can book time with you'
- 'Calendar sync (Google Calendar, Outlook)'
+3 -1
View File
@@ -80,13 +80,15 @@ app_info:
# --- After a fresh install (controller >= 0.279.0, decision 45) ---
# claper's OWN release CLI, in the running node: the seeded default admin's password becomes ADMIN_PASSWORD.
# Measured on 9202 2026-09-28: afterwards `admin@claper.co / claper` no longer authenticates.
# R-713 (controller >= 0.281.0): the password reaches the Elixir code base64-encoded (${ADMIN_PASSWORD|base64}) and is
# decoded there — a quote or #{ in a household-typed password can no longer end the string or run code.
after_install:
service: claper
env: [ADMIN_PASSWORD]
command:
- /app/bin/claper
- rpc
- 'u = Claper.Accounts.get_user_by_email("admin@claper.co"); r = if u, do: Claper.Accounts.update_user_password(u, "claper", %{password: "${ADMIN_PASSWORD}", password_confirmation: "${ADMIN_PASSWORD}"}), else: :no_default_admin; case r do {:ok, _} -> IO.puts("FELHOM_AFTER_INSTALL_OK"); other -> IO.puts("FELHOM_AFTER_INSTALL_FAILED #{inspect(other, limit: 3)}") end'
- 'pw = Base.decode64!("${ADMIN_PASSWORD|base64}"); u = Claper.Accounts.get_user_by_email("admin@claper.co"); r = if u, do: Claper.Accounts.update_user_password(u, "claper", %{password: pw, password_confirmation: pw}), else: :no_default_admin; case r do {:ok, _} -> IO.puts("FELHOM_AFTER_INSTALL_OK"); other -> IO.puts("FELHOM_AFTER_INSTALL_FAILED #{inspect(other, limit: 3)}") end'
success: FELHOM_AFTER_INSTALL_OK
# --- Controller-side health probe ---
+4
View File
@@ -52,6 +52,10 @@ deploy_fields:
generate: "password:24"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: 'Modern wiki és dokumentáció platform Notion-szerű szerkesztővel'
+4
View File
@@ -49,6 +49,10 @@ deploy_fields:
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Személyes média szerver élő TV és DVR támogatással"
+4
View File
@@ -37,6 +37,10 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Professzionális blog és hírlevél platform"
+8
View File
@@ -35,9 +35,16 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: /user/sign_up served the registration form after the setup).
signup_block: "PathPrefix(`/user/sign_up`)"
# --- App info (info page content) ---
app_info:
tagline: "Saját Git szerver - GitHub-szerű felület, privát repók"
add_people: "Webhely adminisztráció → Felhasználói fiókok → Új felhasználói fiók létrehozása."
docs_url: "https://docs.gitea.com/"
use_cases:
@@ -88,6 +95,7 @@ i18n:
description: 'A light Git server of your own, with a web interface'
app_info:
tagline: 'Your own Git server - a GitHub-like interface and private repositories'
add_people: "Site Administration → User Accounts → Create User Account."
use_cases:
- 'Private Git repositories on your own server'
- 'A GitHub-like interface: pull requests, issues, a wiki'
+8
View File
@@ -41,9 +41,16 @@ deploy_fields:
generate: "hex:32"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: the self-registration address answered (500 here); closed to be safe).
signup_block: "PathRegexp(`^/api/users/[^/]+/register/`)"
# --- App info (info page content) ---
app_info:
tagline: "Családfa készítő - genealógiai adatbázis webes felületen"
add_people: "Adminként: Beállítások → Felhasználók kezelése → Új felhasználó."
docs_url: "https://gramps-project.github.io/web/"
use_cases:
@@ -74,6 +81,7 @@ i18n:
description: 'Family tree and genealogy software'
app_info:
tagline: 'A family tree - a genealogy database with a web interface'
add_people: "As the admin: Settings → Manage users → New user."
use_cases:
- 'Build a family tree and see it drawn'
- 'Record people, events, places and how they connect'
+4
View File
@@ -35,6 +35,10 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Okos otthon központ - automatizálás és vezérlés egy helyről"
+8
View File
@@ -50,9 +50,16 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's sign-up succeeded after the setup).
signup_block: "PathPrefix(`/api/v1/users/register`)"
# --- App info (info page content) ---
app_info:
tagline: 'Otthoni leltár kezelő - tartsd számon a tárgyaidat'
add_people: "Nyisd meg a regisztrációt 15 percre, és küldd el a családtagodnak a Homebox csoport meghívó linkjét (Beállítások → Csoport → Meghívó)."
docs_url: 'https://homebox.software/en/'
use_cases:
@@ -85,6 +92,7 @@ i18n:
description: 'A home inventory for your things'
app_info:
tagline: 'A home inventory - keep track of what you own'
add_people: "Open sign-up for 15 minutes and send your family member Homebox's group invite link (Settings → Group → Invite)."
use_cases:
- 'List and keep track of the things in your home'
- 'Sort by location, tag and category'
+9
View File
@@ -49,6 +49,15 @@ deploy_fields:
description: "A külső merevlemez elérési útja, ahol a filmek, sorozatok és zenék tárolódnak"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# measured on 9202 2026-09-29: StartupWizardCompleted false -> true after the startup wizard.
setup_done_probe:
url: http://jellyfin:8096/System/Info/Public
field: StartupWizardCompleted
done: "true"
# --- App info (info page content) ---
app_info:
tagline: "Ingyenes média szerver - filmek, sorozatok és zene streamelése"
+9
View File
@@ -49,6 +49,15 @@ deploy_fields:
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# measured on 9202 2026-09-29: isClaimed false -> true once the admin claimed it.
setup_done_probe:
url: http://komga:25600/api/v1/claim
field: isClaimed
done: "true"
# --- App info (info page content) ---
app_info:
tagline: "Képregény, manga és könyv szerver webes olvasóval"
+4
View File
@@ -49,6 +49,10 @@ deploy_fields:
description: "A külső merevlemez elérési útja, ahol a zenefájlok tárolódnak"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Könnyű zene szerver - streameld a saját zenegyűjteményedet"
+8
View File
@@ -35,9 +35,16 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's sign-up succeeded after the setup).
signup_block: "PathPrefix(`/-/register`)"
# --- App info (info page content) ---
app_info:
tagline: "Kód snippetek megosztása - privát GitHub Gist alternatíva"
add_people: "Nyisd meg a regisztrációt 15 percre, és a családtagod regisztrál."
docs_url: "https://github.com/thomiceli/opengist"
use_cases:
@@ -71,6 +78,7 @@ i18n:
description: 'Share code snippets (a GitHub Gist alternative)'
app_info:
tagline: 'Share code snippets - a private GitHub Gist alternative'
add_people: "Open sign-up for 15 minutes, and your family member signs up."
use_cases:
- 'Share code snippets and pieces of text'
- 'Syntax highlighting for many languages'
+4
View File
@@ -53,6 +53,10 @@ deploy_fields:
generate: "password:24"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Modern tudásbázis - Markdown, valós idejű együttműködés, keresés"
+8
View File
@@ -46,9 +46,16 @@ deploy_fields:
data_key: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's sign-up succeeded after the setup).
signup_block: "PathPrefix(`/api/auth/sign-up`)"
# --- App info (info page content) ---
app_info:
tagline: "Minimalista dokumentumtár - egyszerű rendszerezés és keresés"
add_people: "Nyisd meg a regisztrációt 15 percre; a családtagod regisztrál, aztán meghívod a szervezetedbe (Szervezet → Tagok → Meghívás)."
docs_url: "https://docs.papra.app/"
use_cases:
@@ -77,6 +84,7 @@ i18n:
description: 'A minimalist document store and organiser'
app_info:
tagline: 'A minimalist document store - simple sorting and search'
add_people: "Open sign-up for 15 minutes; your family member signs up, then you invite them into your organization (Organization → Members → Invite)."
use_cases:
- 'Upload and sort documents without fuss'
- 'Search across your documents quickly'
+4
View File
@@ -54,6 +54,10 @@ deploy_fields:
generate: "hex:32"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Növénynapló - emlékeztetők öntözésre, trágyázásra és fotónapló"
+4
View File
@@ -51,6 +51,10 @@ deploy_fields:
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Automatikus film letöltő és rendszerező"
+4
View File
@@ -47,6 +47,10 @@ deploy_fields:
generate: "password:24"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Időpont szavazás - Doodle alternatíva a saját szerveren"
+4
View File
@@ -47,6 +47,10 @@ deploy_fields:
locked_after_deploy: true
description: "Flask munkamenet titkos kulcs (automatikusan generált)"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: 'Magyar receptoldalak importálása egyszerűen — egyedi és tömeges import Mealie-be és Tandoor-ba'
+9
View File
@@ -77,6 +77,15 @@ deploy_fields:
description: "A külső merevlemez elérési útja, ahol a ROM-ok és borítóképek tárolódnak"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# measured on 9202 2026-09-29: SYSTEM.SHOW_SETUP_WIZARD true -> false once the first user exists.
setup_done_probe:
url: http://romm:8080/api/heartbeat
field: SYSTEM.SHOW_SETUP_WIZARD
done: "false"
# --- App info (info page content) ---
app_info:
tagline: "Retró játékgyűjtemény kezelő, böngésző és lejátszó"
+4
View File
@@ -35,6 +35,10 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Film és sorozat igénylő a háztartás tagjai számára"
+4
View File
@@ -51,6 +51,10 @@ deploy_fields:
description: "A külső merevlemez elérési útja"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Automatikus sorozat letöltő és rendszerező"
+8
View File
@@ -64,8 +64,15 @@ deploy_fields:
# boot — changing it locks out any user who enabled two-factor auth.
data_key: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's sign-up succeeded after the setup).
signup_block: "PathPrefix(`/api/auth/sign-up`)"
app_info:
tagline: "Táplálkozási napló, kalóriaszámláló és edzéskövető – önállóan üzemeltetve"
add_people: "Nyisd meg a regisztrációt 15 percre, és a családtagod regisztrál."
docs_url: "https://github.com/CodeWithCJ/SparkyFitness"
use_cases:
@@ -98,6 +105,7 @@ i18n:
description: 'A food and exercise tracker'
app_info:
tagline: 'A food diary, calorie counter and exercise tracker - on your own server'
add_people: "Open sign-up for 15 minutes, and your family member signs up."
use_cases:
- 'Log what you eat and how many calories it comes to'
- 'Track your weight and measurements on a graph'
+4
View File
@@ -47,6 +47,10 @@ deploy_fields:
generate: "password:24"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# --- App info (info page content) ---
app_info:
tagline: "Receptkezelő és étkezés tervező a családnak"
+13
View File
@@ -35,9 +35,21 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# measured on 9202 2026-09-29: setup_required true -> false once the first user exists.
setup_done_probe:
url: http://termix:8080/users/setup-required
field: setup_required
done: "false"
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's sign-up succeeded after the setup).
signup_block: "PathPrefix(`/users/create`)"
# --- App info (info page content) ---
app_info:
tagline: "Webes SSH terminál - szerver hozzáférés a böngészőből"
add_people: "Nyisd meg a regisztrációt 15 percre, és a családtagod regisztrál."
docs_url: "https://github.com/Termix-SSH/Termix"
use_cases:
@@ -64,6 +76,7 @@ i18n:
description: 'SSH and server management in a browser'
app_info:
tagline: 'An SSH terminal in your browser - reach a server from anywhere'
add_people: "Open sign-up for 15 minutes, and your family member signs up."
use_cases:
- 'Reach your server over SSH from a browser'
- 'No SSH client needed on the computer you are sitting at'
+8
View File
@@ -41,9 +41,16 @@ deploy_fields:
generate: "hex:32"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's sign-up succeeded after the setup).
signup_block: "PathPrefix(`/api/v1/register`)"
# --- App info (info page content) ---
app_info:
tagline: "Feladatkezelő - listák, Kanban táblák és Gantt diagramok"
add_people: "Nyisd meg a regisztrációt 15 percre, és a családtagod regisztrál; utána megoszthatod vele a projektjeidet."
docs_url: "https://vikunja.io/docs/"
use_cases:
@@ -78,6 +85,7 @@ i18n:
description: 'Task lists and boards (a Todoist/Trello alternative)'
app_info:
tagline: 'Task management - lists, Kanban boards and Gantt charts'
add_people: "Open sign-up for 15 minutes, and your family member signs up; then share your projects with them."
use_cases:
- 'Keep your task lists and to-dos'
- 'A Kanban board view (Trello-like)'
+8
View File
@@ -35,9 +35,16 @@ deploy_fields:
locked_after_deploy: true
description: "Az alkalmazás aldomainje"
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# Decision 47: the app's own sign-up address is closed once the gate opens (measured on 9202 2026-09-29: a stranger's sign-up succeeded after the setup).
signup_block: "Path(`/signup`)"
# --- App info (info page content) ---
app_info:
tagline: "Családi kívánságlista - karácsonyra, születésnapokra"
add_people: "Nyisd meg a regisztrációt 15 percre, és a családtagod regisztrál (a Wishlist meghívó linkje is ebben az időben működik)."
docs_url: "https://github.com/cmintey/wishlist"
use_cases:
@@ -68,6 +75,7 @@ i18n:
description: 'Wish lists shared across the household'
app_info:
tagline: 'A family wish list - for Christmas and birthdays'
add_people: "Open sign-up for 15 minutes, and your family member signs up (Wishlist's invite link works in that time too)."
use_cases:
- 'Make wish lists for Christmas and birthdays'
- 'Invite the household so each keeps their own list'
+9
View File
@@ -47,6 +47,15 @@ deploy_fields:
generate: "password:24"
locked_after_deploy: true
# --- The setup gate (controller >= 0.281.0, `09` §3 decisions 46-47) ---
# The first visitor would create the admin; a fresh install is closed to everyone but the household until the first setup is done.
setup_gate: true
# measured on 9202 2026-09-29: firstSetup true -> false once the first user exists (/api/setup itself answers 403 after the setup, so it cannot be the check).
setup_done_probe:
url: http://zipline:3000/api/server/public
field: firstSetup
done: "false"
# --- App info (info page content) ---
app_info:
tagline: "Screenshot és fájlmegosztó szerver ShareX/Flameshot integrációval"