Your first deploy¶
You have a cluster reading Provisioned in the console (install.md). This page puts an app on it and explains what the console tells you while that happens.
1. Pick an app¶
Open Catalog. Each tile is an app Mesopod packages. Click one to open its deploy form.
2. Fill in the form¶
- Name (optional) — a label for your app list. Useful when you run the same app twice ("Family photos", "Work notes"). Change it whenever.
- Subdomain — the first label of the app's address. The form shows the rest of the address as you type it.
- Deploy to — which cluster runs it. Your own clusters are listed by name
with "your server" beside them; Mesopod Cloud is the shared cluster we
run. A cluster that isn't ready is shown greyed out with the reason
(
not provisioned yet,still provisioning,provisioning failed) rather than hidden, so you know what to go fix. - Volumes — only for apps that store data; see below.
Then press the deploy button — it names the app, Deploy Memos.
3. Watch it come up¶
The console shows a Deploying panel with a live timer, then the app's own row. The status words mean:
| Status | What it means |
|---|---|
| pending, rendered, dispatched | Mesopod has the request and is sending it to your server. |
| deploying | Your server is creating the workloads. |
| running | The app is up and its services report healthy. |
| degraded | The app is up, but at least one service is unhealthy. Check its logs. |
| render failed | Mesopod couldn't turn your form into a deployable app. It never reached your server — that one is ours; tell us. |
| apply failed | Your server rejected the deploy. The reason is on the app page. |
| stopped | You stopped it, on purpose. Its data is kept. |
| destroying, removed | You uninstalled it; the tombstone stays in the ledger. |
| vanished | The workloads disappeared without anyone asking. That's drift — tell us. |
A first deploy takes as long as the app's images take to pull. Two minutes is normal; a large app on a slow connection can take longer.
If your server happens to be offline, the deploy is still accepted and queues. It runs when the server reconnects.
4. Open it¶
Apps live at:
https://<subdomain>.<cluster-slug>.mesopod.app
So photos on the cluster you named basement-nuc is
https://photos.basement-nuc.mesopod.app. The certificate is a real public one;
the address it resolves to is your server's own, so the traffic never leaves
your network.
The app page shows the URL as soon as there is one, with a link beside it.
If the name doesn't resolve at home, it is almost always your router's DNS rebind protection — the fix is in install.md. From outside the house, see remote-access-tailscale.md.
Volumes, and why your data survives¶
Apps that store data declare one disk per volume slot. On the deploy form you either create a new volume or attach one you already have, and Mesopod tracks it as its own object — not as a detail of the app.
That separation is what makes the lifecycle safe:
- Stop an app and its volumes are kept, still attached to it.
- Uninstall an app and its data is kept and reattachable to a future instance — unless you tick the box in the confirmation that deletes it.
- Restarting the machine, or the app, changes nothing about the data.
To bring in data you already have — an existing Nextcloud directory, a photo library — use a host directory volume: register the directory on the cluster (the console hands you a one-line command, and the chip beside the root flips to Verified once your server confirms it), then attach it. Mesopod mounts what is already on the disk.
Kept is not the same as backed up. Before you depend on an app, read snapshots.md.
Stopping, starting, uninstalling¶
On the app page: Stop frees the compute and keeps everything else; Start brings it back with its data; Uninstall removes the app and its services from your server, keeping the data unless you ask otherwise in the confirmation.
When it doesn't go this way¶
troubleshooting.md — keyed by the message you are looking at.