if one person can't run it, it won't last
Selfhosted Cloud
shc install nextcloudsupported platforms
-
-
Hundreds of great apps, locked away
-
An app is not a container
It is a container plus a hostname, a certificate, a database, an identity provider, a backup schedule, and a restore that has actually been tested.
DNS + TLS--runtime docker|podman|incus|apple -
Connect two apps, never touch a credential
files hold references, values stay encrypted in the vault
-
Sign in once
someone revoked nextcloud when they left. the leftover eight still take the old password.
without · a login per app -
NO KUBERNETES Skip the control plane. One person is enough.
Kubernetes solved a problem most people don't have
migrate from
wire apps together
anatomy of an app
--stack only names it. The leader renders each replica's spec once, at install or update, and stores it. Nodes materialise the stored spec. Each vars value is a colored thread into its compose {{ }} marker, the same color on the value, the marker, and the resolved fill. Activate any pair; the others stay lit. Click empty space to reset.
name: gitlab vars: rootPassword@secret! postgres: database@string! images: gitlab@string!
rootPassword: postgres: database: images: gitlab:
services:
gitlab:
image: ""
environment:
GITLAB_OMNIBUS_CONFIG: |
db_database = ''
root_password = ''
valkey:
image: "{{ vars.images.valkey }}"
shc install gitlabAn app is the authored compose plus app.yaml. A deployment is that app installed for one tenant and one environment. It owns its network. --stack names it. The leader renders each replica once, at install or update, and stores the spec. Nodes materialise the stored spec. apps/gitlab/{app,vars,compose}.yaml
highly available
survives node failure
two ways in
your data, your choice
backendsdisk on the nodenfs · cephfshcloud · awsebs · gcepd · +6 more
rwo
attach
attached · node-2 · rwo
The bytes sit on that node's disk. Lose the node and you restore from backup.
Every node mounts the same filesystem (RWX), so a move is never needed, and never possible.
No auto-failover by default (auto_failover: false): a block volume reattaches only after you move the app.
Drag the volume onto a node to attach it there, or use the left and right arrow keys to aim and Enter to drop.
Drag nextcloud onto a node to run it there, or use the left and right arrow keys to aim and Enter to drop.
backups without downtime
A backup you haven't restored is a hope. Snapshots that were never replayed are the most common way a self-hosted estate dies. Backups here are scheduled, encrypted, and restorable with one command.
shc backup export writes a backup out to a local archive.shc backup create -s nextcloudthe runbook
shc node token; the next runs shc node join. Placement is --where. A published route is --expose (--host is a hidden gone flag). --scale is <name>=<n>.
boot sound “CRT turn on” by Coolshows101sound · CC BY 4.0 · trimmed