diff --git a/CHANGELOG.md b/CHANGELOG.md index 9343502..5cc6c47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,8 +7,16 @@ This project uses calendar versioning: `YY.N-stage` (e.g. `26.0-alpha` = 2026, r ## [Unreleased] +### Added + +- **In-browser app settings**, so users no longer need SSH + `vim` to configure an app before first install. Manifest gains optional `settings` (name/label/description/type/required/default) and `description_long` fields. 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/install` now accepts a `settings` object in the JSON body; new `GET`/`POST /api/apps//settings` for inspecting and updating an installed app. Password values never leave the server. +- `nano` added to the installer package list so users have a beginner-friendly editor at the console/SSH (was `vim`-only, which `command not found`'d under Arch 4.x because it was actually missing from the package set too). +- `openssh` added explicitly to the installer package list and `sshd` added to enabled services. `archinstall: true` in 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 hardcoding `us`. Previously German users couldn't type `/`, `-`, or `=` at the recovery console. +- `fileshare` app: `description_long` + `settings` (SMB_USER, SMB_PASSWORD) for the new settings form. Docker-level healthcheck from `dperson/samba` is disabled in the compose override — it timed out under normal operation and marked a working share "unhealthy" in `docker ps`. - **Project name finalized: Furtka.** Working title "Homebase" retired. Domain `furtka.org` registered via Strato 2026-04-13. - Managed gateway NS hostnames updated from `ns1.homebase.cloud` / `ns2.homebase.cloud` to `ns1.furtka.org` / `ns2.furtka.org`. - Python package renamed from `homebase` → `furtka` in `pyproject.toml`. diff --git a/apps/fileshare/docker-compose.yaml b/apps/fileshare/docker-compose.yaml index 4485083..ff72716 100644 --- a/apps/fileshare/docker-compose.yaml +++ b/apps/fileshare/docker-compose.yaml @@ -17,6 +17,12 @@ services: image: dperson/samba:latest restart: unless-stopped network_mode: host + # The upstream image's HEALTHCHECK times out under normal operation on + # our setup (2026-04-15 VM test — all 6 probes failed while the share + # was reachable from clients). Disable to avoid a permanently-"unhealthy" + # container that scares users reading `docker ps`. + healthcheck: + disable: true environment: - USERID=1000 - GROUPID=1000 diff --git a/apps/fileshare/manifest.json b/apps/fileshare/manifest.json index ae37601..3fc0c70 100644 --- a/apps/fileshare/manifest.json +++ b/apps/fileshare/manifest.json @@ -3,7 +3,25 @@ "display_name": "Network Files", "version": "0.1.0", "description": "SMB share for Mac, Windows, Linux and Android devices on the LAN.", + "description_long": "Alle Geräte im WLAN sehen einen gemeinsamen Ordner. Funktioniert mit Windows, Mac, Linux und Android. Verbinden zu smb://furtka.local — Anmeldung mit dem hier gesetzten Benutzernamen und Passwort.", "volumes": ["files"], "ports": [445, 139], - "icon": "icon.svg" + "icon": "icon.svg", + "settings": [ + { + "name": "SMB_USER", + "label": "Benutzername", + "description": "Der Name, mit dem sich Geräte am Share anmelden.", + "type": "text", + "default": "furtka", + "required": true + }, + { + "name": "SMB_PASSWORD", + "label": "Passwort", + "description": "Mindestens 8 Zeichen. Wird nie angezeigt — auch dir nicht.", + "type": "password", + "required": true + } + ] } diff --git a/archinstall/user_configuration.json b/archinstall/user_configuration.json index b70a688..a0bf5ef 100644 --- a/archinstall/user_configuration.json +++ b/archinstall/user_configuration.json @@ -18,10 +18,12 @@ "packages": [ "docker", "docker-compose", + "nano", "vim", "git", "htop", - "curl" + "curl", + "openssh" ], "profile": { @@ -29,7 +31,8 @@ }, "services": [ - "docker" + "docker", + "sshd" ], "network_config": { @@ -52,4 +55,4 @@ "locale": "en_US.UTF-8", "keyboard_layout": "us" } -} \ No newline at end of file +} diff --git a/furtka/api.py b/furtka/api.py index 304d5dc..a283efb 100644 --- a/furtka/api.py +++ b/furtka/api.py @@ -26,7 +26,7 @@ _HTML = """ Furtka Apps @@ -59,6 +76,19 @@ _HTML = """

Last action

(none yet)
+ +