CloudZH documentation
Everything you need to install CloudZH, set up your media apps, invite friends and keep the server healthy.
What CloudZH is
CloudZH turns a Linux machine at home (Ubuntu, Debian or Raspberry Pi OS) into a managed server. It brings a web dashboard, an App Store with 30+ apps, a media library for your friends, a WireGuard VPN, health checks with safe repairs, and the zh command on the server.
How it is built
| Part | What it does |
|---|---|
| Caddy | The only entry point. HTTPS for every subdomain with one wildcard certificate. Admin apps are only reachable after the dashboard login. |
| Dashboard | The web interface. Runs without privileges in a hardened container. |
| Agent | A small root service with a fixed list of commands, reached over a Unix socket. Installs apps, runs repairs, reads logs. |
| Apps | Docker Compose, one folder per app under /opt/cloudzh/apps, data under /srv/data. |
| Native parts | WireGuard and UniFi OS Server run outside Docker. They are installed with zh on the server only. |
What CloudZH does not include
No media, no indexers and no torrent clients. You bring a Usenet provider and indexers of your choice, and use the apps with content you have the right to use.
Placeholders
Commands and addresses in this documentation use placeholders. Replace them, angle brackets included, with your own values.
| Placeholder | Stands for | Example |
|---|---|---|
<user> | The Linux user you created while installing Ubuntu | anna |
<server-ip> | The address of the server in your home network. On the server, ip -4 -br addr shows it in the line of the network adapter, before the /. Your router lists it among its devices too. | 192.168.1.200 |
example.com | Your own domain. app.example.com means app. followed by your domain. | app.example.com |
So ssh <user>@<server-ip> becomes, for example, ssh anna@192.168.1.200.