No description
  • Jinja 58.3%
  • Shell 41.7%
Find a file
root 08c9295636
All checks were successful
/ image (push) Successful in 17m55s
/ lint (push) Successful in 7m28s
/ publish (push) Successful in 10s
Add Homepage app
Homepage (Next.js) built from the source of the GitHub release: upstream
ships no build, so the tag is cloned and checked against the commit
GitHub reports for it, then built with pnpm (version and SHA-256 pinned)
in /var/tmp. Runtime is Node.js 24 from nodejs.org (SHASUMS256), pinned
in the tasks – Debian's Node.js 20 fails the build (its undici lacks
markAsUncloneable). One sandboxed unit on port 3000, private networks
only, as Homepage has no login. The YAML configuration in /etc/homepage
is seeded once from the release skeleton and stays read-only for the
service; the log goes to /var/log/homepage. Allowed hosts come from the
setting homepage_allowed_hosts (default *), 127.0.0.1:3000 always stays
allowed for the health check.

Tested: check-app.sh green (lint, template files, dev container twice,
second run changed=1); smoke test green from /root; allowed hosts
restricted to home.example.org: that host and 127.0.0.1:3000 get 200,
another host 400; update path 2.5.0 -> 2.6.0 keeps a changed
services.yaml, smoke test green afterwards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtgjuBCL7QGuUvdpXm41EC
2026-10-18 13:54:45 +02:00
.forgejo/workflows Add Homepage app 2026-10-18 13:54:45 +02:00
.vibe Add Homepage app 2026-10-18 13:54:45 +02:00
files Add Homepage app 2026-10-18 13:54:45 +02:00
handlers Add Homepage app 2026-10-18 13:54:45 +02:00
tasks Add Homepage app 2026-10-18 13:54:45 +02:00
templates Add Homepage app 2026-10-18 13:54:45 +02:00
tests Add Homepage app 2026-10-18 13:54:45 +02:00
.clinerules Add Homepage app 2026-10-18 13:54:45 +02:00
.cursorrules Add Homepage app 2026-10-18 13:54:45 +02:00
.windsurfrules Add Homepage app 2026-10-18 13:54:45 +02:00
AGENTS.md Add Homepage app 2026-10-18 13:54:45 +02:00
CHANGELOG.md Add Homepage app 2026-10-18 13:54:45 +02:00
CLAUDE.md Add Homepage app 2026-10-18 13:54:45 +02:00
GEMINI.md Add Homepage app 2026-10-18 13:54:45 +02:00
iac.json Add Homepage app 2026-10-18 13:54:45 +02:00
README.md Add Homepage app 2026-10-18 13:54:45 +02:00

iac-homepage

Homepage ist ein Dashboard für die eigenen Dienste, Lesezeichen und Widgets, konfiguriert über YAML-Dateien. Nativ auf Debian 13 als LXC oder VM auf Proxmox VE. Teil von iac.

Installation (auf der Proxmox-Node)

bash -c "$(curl -fsSL https://iac.heyer.systems/homepage/ct.sh)"   # LXC
bash -c "$(curl -fsSL https://iac.heyer.systems/homepage/vm.sh)"   # VM

Ohne Dialog: IAC_NONINTERACTIVE=1 und var_*-Variablen – am einfachsten mit dem Generator auf https://iac.heyer.systems/apps/homepage/.

Zugriff

  • Dashboard: http://<ip>:3000/, nur aus privaten Netzen (10/8, 172.16/12, 192.168/16, fc00::/7) erreichbar. Homepage hat keine Anmeldung – wer den Port erreicht, sieht das Dashboard und die Daten der Widgets. Für den Zugriff von außen gehört ein Reverse Proxy mit Anmeldung davor.
  • Einstellung homepage_allowed_hosts: Hostnamen (mit Port, wenn nicht 80/443), unter denen das Dashboard aufgerufen wird, kommagetrennt, z. B. home.example.org,192.168.1.10:3000. Ohne Angabe ist jeder Host erlaubt (*). Homepage lehnt Anfragen an andere Hosts ab.

Konfiguration

  • /etc/homepage/*.yaml (services.yaml, widgets.yaml, bookmarks.yaml, settings.yaml, …): bei der ersten Installation aus der Vorlage des Releases angelegt, danach gehören sie dir – update überschreibt sie nicht. Änderungen liest Homepage ohne Neustart. Doku: https://gethomepage.dev/configs/
  • Geheimnisse für die YAML-Dateien ({{HOMEPAGE_VAR_NAME}}) und eigene Umgebungsvariablen in /etc/homepage/local.env, danach systemctl restart homepage. /etc/homepage/homepage.env verwaltet iac.
  • Homepage hat nur Lesezugriff auf /etc/homepage; das Log liegt in /var/log/homepage.
  • Docker- und Kubernetes-Integration sind nicht eingerichtet (kein Docker-Socket im Gast).

Aufbau

  • Upstream veröffentlicht keine fertigen Builds. Die Installation holt den Quellcode des GitHub-Release-Tags, prüft ihn gegen den Commit, den GitHub für den Tag meldet, und baut ihn mit pnpm (fest gepinnte Version, SHA-256-geprüft). Die npm-Pakete kommen beim Build von registry.npmjs.org und werden gegen die Prüfsummen im Lockfile von Homepage geprüft.
  • Laufzeit ist Node.js 24 (LTS) von nodejs.org in /opt/homepage/node, SHA-256-geprüft. Das Node.js von Debian 13 (Version 20) kann Homepage nicht bauen. Die Node.js-Version ist in iac-homepage festgelegt; neue Node.js-Versionen kommen mit einem Update von iac-homepage.
  • Jede Version liegt in /opt/homepage/releases/homepage-<version>, /opt/homepage/current zeigt auf die aktive. Alte Versionen bleiben für ein Zurückwechseln liegen und können gelöscht werden.

Update (im Gast)

update

Eine neue Version wird aus dem Quellcode gebaut (einige Minuten, rund 2 GB RAM und 2 GB freier Platz in /var/tmp).

Selbsttest (im Gast)

bash /var/lib/iac/src/core/bin/iac-smoke