End-to-end VM test today (2026-04-15) validated the resource manager golden path but exposed four things blocking "dein-Vater-tauglich": no way to configure an app without SSH+editor, no openssh, no nano, keyboard stuck on US, and a samba healthcheck that cried wolf. Resource-manager side: - Manifest schema gains optional `settings` list (name/label/ description/type/required/default) and `description_long`. - Bundled-app install opens a form rendered from the manifest; submit carries values to `POST /api/apps/install` which writes them into the new app's `.env` before the placeholder check runs. - Installed apps grow an "Einstellungen" button that merges a partial settings dict into the existing `.env` (unsubmitted password fields = keep current), then reconciles to restart. - New endpoints: `GET/POST /api/apps/<name>/settings`. Passwords are never returned to the client. - Fileshare manifest declares its SMB_USER/SMB_PASSWORD settings in German with help text. ISO side (so the next build is actually usable on the TTY): - Add `openssh` to the package list + `sshd` to enabled services. `archinstall: true` in 4.x did not install openssh-server. - Add `nano` — `vim` was the only editor pitched at users, which is brutal for first-timers (and was missing anyway). - Keyboard layout follows the installer language (`de→de`, `pl→pl`, `en→us`) instead of hardcoded `us`. A German user couldn't type `/` or `-` at the console, making even `sudo nano` painful. - Disable the dperson/samba healthcheck in the compose override — it timed out on every probe while the share itself worked fine. 19 new tests (manifest parsing + settings-merge + two new API endpoints over live HTTP); 94 total, format + lint clean. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5.2 KiB
5.2 KiB
Changelog
All notable changes to Furtka will be documented in this file.
The format is based on Keep a Changelog.
This project uses calendar versioning: YY.N-stage (e.g. 26.0-alpha = 2026, release 0, alpha stage).
Unreleased
Added
- In-browser app settings, so users no longer need SSH +
vimto configure an app before first install. Manifest gains optionalsettings(name/label/description/type/required/default) anddescription_longfields. Installing a bundled app opens a form rendered from the manifest; installed apps grow an "Einstellungen" button that edits merged values (password fields blank = keep current). API:POST /api/apps/installnow accepts asettingsobject in the JSON body; newGET/POST /api/apps/<name>/settingsfor inspecting and updating an installed app. Password values never leave the server. nanoadded to the installer package list so users have a beginner-friendly editor at the console/SSH (wasvim-only, whichcommand not found'd under Arch 4.x because it was actually missing from the package set too).opensshadded explicitly to the installer package list andsshdadded to enabled services.archinstall: truein archinstall 4.x did not actually install openssh-server, so the documented recovery path (SSH → edit.env) silently failed.
Changed
- Keyboard layout at the TTY now follows the chosen installer language (
de→de,pl→pl,en→us) instead of hardcodingus. Previously German users couldn't type/,-, or=at the recovery console. fileshareapp:description_long+settings(SMB_USER, SMB_PASSWORD) for the new settings form. Docker-level healthcheck fromdperson/sambais disabled in the compose override — it timed out under normal operation and marked a working share "unhealthy" indocker ps.- Project name finalized: Furtka. Working title "Homebase" retired. Domain
furtka.orgregistered via Strato 2026-04-13. - Managed gateway NS hostnames updated from
ns1.homebase.cloud/ns2.homebase.cloudtons1.furtka.org/ns2.furtka.org. - Python package renamed from
homebase→furtkainpyproject.toml.
Added
- Forgejo Actions runner live on Proxmox VM (
forge-runner-01, Ubuntu 24.04) with DinD sidecar — CI green end-to-end. Setup scripts inops/forgejo-runner/. - Walking-skeleton live ISO (
iso/build.sh). Overlays an Archrelengprofile with Flask + the webinstaller, bakes a systemd unit that auto-starts the wizard on boot, produces a hybrid BIOS/UEFI ISO viamkarchisoin a privilegedarchlinux:latestcontainer. Tested booting under OVMF in Proxmox — wizard screens 1–3 respond athttp://<vm-ip>:5000. - Public website at furtka.org (
website/). Hugo static site, English + German, served from/var/www/furtka.orgonforge-runner-01via nginx. Upstream openresty proxy handles TLS. Intentionally minimal single-page copy while the project is pre-alpha. Deploy is./website/deploy.sh(rsync + remote Hugo build); one-time VM setup inops/nginx/setup-vm.sh.
26.0-alpha - 2026-04-13
First tagged snapshot. Pre-alpha — the installer does not yet boot, but the design is locked and the prototype components are shaped.
Added
- Installer webapp prototype (
webinstaller/) — Flask app with 3-step wizard (hostname → drive → overview), serves drive list viadrives.py::list_scored_devices(). - Drive scoring module (
webinstaller/drives.py) — scores attached disks by type (NVMe/SSD/HDD), SMART health (smartctl -H), and size. Consumed by the installer and usable as a CLI. - Base archinstall configuration (
archinstall/user_configuration.json) — systemd-boot, ext4, Docker + Compose preinstalled, server profile, SSH. Credentials template atarchinstall/user_credentials.example.json(real credentials gitignored). - Installer wireframes (
docs/installer-wireframes.md) — Robert's hand-drawn 4-screen UX sketches. - Competitor analysis (
docs/competitors.md) — CasaOS, Umbrel, YunoHost reviewed across install flow, hardware detection, app store UX, reverse proxy/SSL, user complaints. Key finding: device-aware wizard + managed gateway are uncontested differentiators. - Wizard flow spec (
docs/wizard-flow.md) — 8-screen first-boot flow extending Robert's wireframe with YunoHost-style domain/SSL/diagnostic/confirm screens. Locked tech picks with rejected alternatives. - Project README — vision, principles, architecture, key decisions, landscape, roadmap.
Decisions locked
- Reverse proxy: Caddy (auto Let's Encrypt, simplest config)
- Identity provider: Authentik (bundled SSO, every app auto-wired at install)
- Managed gateway DNS: NS delegation to
ns1.furtka.org/ns2.furtka.org(wildcard cert via Let's Encrypt DNS-01) - Local HTTPS: Local CA installed by user once (no browser warnings on
*.proksi.local) - Base OS: Arch (rolling, Debian remains fallback)
- Containers: Docker + Compose
- License: AGPL-3.0