CLOUDMORROW

Resources / Operations handbook

Running and reaching it

Your own machine, and how people reach it.

Your own machine

The README. One command, six questions. This is the shape everything else is measured against: whatever the tenant does for you, it must not need anything this one does not have.

Reaching your cloud

A cloud is reached at its server's address, and that is all Cloudmorrow does about the network. It ships no relay, no VPN and no name service, and a cloud never talks to cloudmorrow.com.

  • At home, the box announces itself with multicast DNS as <name>.local (the cloud's name made into a hostname: larsens.local) and as a service, _cloudmorrow._tcp, whose TXT record carries name, version and url: the address to open, which is public_url when the config has one and http://<name>.local:<port> otherwise. cm login with no server lists the clouds it finds. access_lan = false turns the announcement off.
  • From outside, it is the owner's own setup: a domain and a reverse proxy in front, with public_url saying what the address is, or a VPN such as Tailscale, where the cloud is simply the box's address on it.
  • A hosted tenant is reached at the subdomain the platform gives it (above).

What the server does for whichever way is chosen:

  • TLS is required once public_url is https; a plain request is answered only straight to the port from the box itself, the local network or a VPN's addresses (ENCRYPTION.md).
  • Sign-in is limited. Failed sign-ins are counted per visitor address (10 in 15 minutes) and per account (20 in an hour); past either, sign-in answers 429 with Retry-After until the window has passed.
  • No cookies. A sign-in is a bearer token the page keeps in its own origin's storage.

Me → Add a device, in the web app and the terminal, is the one place for putting the cloud on another device, at the address the person is signed in to: curl -fsSL <address>/install.sh | sh for a computer (the desktop app, cm and the TUI), <address>/app and a QR code of it for a phone, <address>/mcp for an assistant. Every one signs in with the person's own name and password.

From docs/HOSTING.md in the Cloudmorrow repository. Something wrong? A pull request there fixes it here.