No description
- Jinja 58.3%
- Shell 41.7%
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 |
||
|---|---|---|
| .forgejo/workflows | ||
| .vibe | ||
| files | ||
| handlers | ||
| tasks | ||
| templates | ||
| tests | ||
| .clinerules | ||
| .cursorrules | ||
| .windsurfrules | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| GEMINI.md | ||
| iac.json | ||
| README.md | ||
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, danachsystemctl restart homepage./etc/homepage/homepage.envverwaltet 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/currentzeigt 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