Hardware Setups Overview
Portoser is built for clusters in the 2–20 machine range. This page sketches the six shapes that come up most often. Each links to a dedicated walkthrough.
Solo Laptop or Mac mini
- 1 machine, macOS or Linux, 8–32 GB RAM
- Best for: side projects, learning the tool, the demo
- Run via
docker compose upfrom the repo root - All three deployment types (
docker,local,native) work on a single host
Raspberry Pi Home Lab
- 3–6 Pis, arm64 Linux, often Pi 4 / Pi 5
- Optional: one x86 box for image builds (
buildxhost) - Best for: home automation, self-hosted tools, learning multi-host
- Pin services to specific Pis by role (e.g.
pi-1runs DNS + Caddy;pi-2runs the database;pi-3..6run app services)
→ Raspberry Pi Cluster walkthrough
Mac mini Lab
- 2–4 Mac minis, mixed M-series, sometimes one Intel
- Best for: small studios, ML inference + APIs, anyone who already invested in Apple Silicon
nativedeployment type vialaunchctlworks first-class on macOS- Bash 5.x is required (Homebrew); Apple's Bash 3.2 is too old
Mixed-Architecture Cluster
- Mac minis + Raspberry Pis + maybe one x86 box
- Cross-arch (arm64 + amd64), cross-OS (macOS + Linux)
- The same
registry.ymldescribes all of them lib/cluster/buildx.shbuilds the right image variant for each target machine
→ Mixed Architecture walkthrough
GPU + CPU Split
- One GPU host (often a desktop with NVIDIA or Apple Silicon GPU) for inference / training
- A handful of CPU hosts for APIs, queues, databases
- The GPU host is just another machine in
registry.yml; services declarecurrent_host: gpu-host
Home + VPS Hybrid
- Local cluster for development and private services
- A remote VPS for the public-facing surface (often behind Cloudflare Tunnel or WireGuard / Tailscale mesh)
- mTLS between local and VPS using Portoser's built-in CA
- One registry, two networks
→ VPS + Home Hybrid walkthrough
Sizing guidance
| Cluster size | RAM per host | Notes |
|---|---|---|
| 1 host | 8 GB minimum | Plenty for the demo and 5–10 small services |
| 3–6 hosts | 4 GB on Pis, 8 GB+ on x86/Mac | Caddy + DNS on one, database on another, apps on the rest |
| 7–15 hosts | 8 GB+ on hosts running stateful services | Consider one host as the dedicated "control plane" running Vault, Caddy, and the Portoser web UI |
| 15–20 hosts | Same as above | This is the upper end Portoser is built for; beyond ~20 hosts, a real scheduler is probably the right call |
What's the same across every setup
- One
registry.ymlis the source of truth - SSH key auth, no agents installed on workers
- Self-healing loop on every deploy
- Web UI, CLI, and (preview) MCP server all work identically
- mTLS between services if you opt in