cairn
morgankryze/cairn:latest
https://hub.docker.com/r/morgankryze/cairn
bridge
false
https://cdn.jsdelivr.net/gh/selfhst/icons@main/png/cairn.png
http://[IP]:[PORT:8080]
cairn is the page you hand to the people you host services for: family, a club, whoever ends up using your server. It shows your services and nothing else, with no account to create, no database and no outbound requests.
The first run works with an empty config folder: cairn serves a getting-started page explaining what to do. Write a services.yaml in the folder mapped to /config and cairn picks it up within seconds, with no restart. If the file is invalid, cairn keeps the previous configuration and logs the key it did not recognise, so a typo never takes the page down.
Each service can carry a live status pill pulled from Gatus or Uptime Kuma, so a visitor sees what is up before they click. The interface speaks eight languages and picks the visitor's own, and cairn serves its own legal and privacy pages.
It ships as a single static Go binary in a scratch image, around 4 MB to pull, and it writes nothing at runtime, so the container runs read-only with every Linux capability dropped. The /config mapping is read-only for the same reason.
Full reference: https://github.com/MorganKryze/cairn/tree/main/docs
https://github.com/MorganKryze/cairn/issues
https://github.com/MorganKryze/cairn
https://raw.githubusercontent.com/MorganKryze/unraid-templates/main/templates/cairn.xml
https://raw.githubusercontent.com/MorganKryze/cairn/main/README.md
Network:Web Tools:Utilities
dashboard homepage startpage directory multilingual guest
GPL-3.0
2026-10-25
1.25.1: the hosting word folds again on a desktop, and the image rebuilds on Go 1.27.3 for a crypto/x509 fix.
https://raw.githubusercontent.com/MorganKryze/cairn/main/docs/assets/home-light.png
https://raw.githubusercontent.com/MorganKryze/cairn/main/docs/assets/home-dark.png
https://raw.githubusercontent.com/MorganKryze/cairn/main/docs/assets/detail.png
8080
/mnt/user/appdata/cairn