Install¶
Needs: a domain, a Linux host with Docker ≥ 28 and Compose ≥ 2.35, sops,
age, morzer ≥ 0.14.0, an upstream proxy. example.com is your domain.
- DNS:
example.com A <server IP>. - Firewall: open 80/tcp and 443/tcp in the cloud provider's firewall (on Google Cloud, a VPC firewall rule). Docker's ports bypass ufw and firewalld; allow SSH keys only.
-
Host: on fresh Debian or Ubuntu,
bootstrap.shinstalls Docker, sops, age and morzer, turns on security updates, and sets SSH to keys only:curl -fsSLO https://morzecrew.github.io/dotdash/bootstrap.sh less bootstrap.sh && sudo bash bootstrap.shInstalling morzer by hand:
install.sh --dir /usr/local/bin.sudoand morzer's timers do not look in~/.local/bin. -
Deploy:
morzer secret recipients generate-recovery-key ~/dotdash-recovery.key # keep it off the machine sudo morzer init --release oci://ghcr.io/morzecrew/dotdash:stable \ --require-signature --signing-key "$MINISIGN_RELEASE_PUBKEY" \ --domain example.com --recovery-recipient age1… # add --set upstream_protocol=http and/or --set upstream_tls=true if the proxy needs them sudo morzer secret set upstream # user:pass@host:port sudo morzer applyMINISIGN_RELEASE_PUBKEY:gh variable get MINISIGN_RELEASE_PUBKEY -R morzecrew/dotdash.upstreamisuser:pass@host:port, orhost:portwith no login. The password may contain:and@; an IPv6 host goes in brackets; nosocks5://prefix. Changing proxy is onesecret set, one restart.applysucceeds once Xray reaches the internet through the upstream and 443 serves the site with a trusted certificate.
Next: connect devices.