Installing Pyo
Run Pyo on a laptop, VPS, dedicated server or homelab.
Requirements
- System: Linux on x86-64The 64-bit processor type of most servers and PCs, also called amd64., with root or
sudoaccess. - Resources: at least 2 CPU cores, 2 GB of memory and 40 GB of disk. See Memory for how much to choose.
- Ports: 8000 and 5005 free, plus 80, 443 and 6443 if k3s isn't installed yet. The installer stops if one of these is taken. Only 80 and 443 need to be reachable from the internet, for your services.
- Remote access: Tailscale on the machine, with MagicDNS and HTTPS Certificates turned on in the Tailscale admin console, under DNS. Without it, Pyo works only at
http://localhost:8000, on the machine itself.
Let's EncryptA free service that issues the certificates browsers need for HTTPS. Pyo requests and renews them for you. certificates need a machine that's reachable from the internet. On a private network, like most laptops, free domains get a self-signed certificateA certificate Pyo makes itself. The connection is still encrypted, but browsers show a warning because no public authority vouches for it. instead.
Memory
| Memory | Good for |
|---|---|
| 2 GB | The minimum. Enough to try Pyo or run a few small services. Builds are slower and there's little room for databases. |
| 4 GB | Recommended for real use with databases. |
| 8 GB or more | Many services, builds on the same server and several databases. |
A build server or more servers in the cluster spread the load. On machines with less than 3.5 GiB, the installer tunes k3s for low memory. See k3s.
On a 2 GB server, about 570 MiB is left for your services and databases: 512 MiB is set aside for k3s and the system, and Pyo's own parts, with k3s's DNS and metrics, ask for about 890 MiB. A small database takes 128 MiB of that, and a static site served by Caddy around 15 MiB. When a deploy doesn't fit, it fails with what it needs, what's free and the biggest requests on the server.
On machines under 3.5 GB, observability starts off. You can turn it on when you have the memory to spare.
Pyo sizes k3s and its own database by the machine's memory each time they start. After you give a machine more or less memory, restart it and they follow. See Memory tiers.
Install
Run this on your machine:
curl -fsSL https://pyo.dev/install.sh | bashIt asks for sudo if it needs root. It installs k3s if it isn't there yet, then the latest release of Pyo. The first install takes a few minutes.
It installs the k3s version this release of Pyo was tested with, and checks k3s's checksums before running anything. See k3s for the version and how to use another.
When it finishes, the installer prints where Pyo is:
https://<machine>.<tailnet>.ts.net:8443, from any device on your tailnetYour private Tailscale network. Only devices you've added to it can reach addresses on it., with the registry on<machine>.<tailnet>.ts.net:5443. See Reaching Pyo over HTTPS.http://localhost:8000, on the machine itself.
Without Tailscale, it prints only the second address, and how to turn on remote access. To turn it on, set up Tailscale and run the install command again.
It also prints a one-time login: the email admin@pyo.local and a password. Open the dashboard, sign in, and choose your own email and password. The printed login stops working once you do.
Pyo connects its own server as your first cluster, named after its hostname, and sets up a builder on it. Both are ready to use, so the dashboard takes you straight to deploying your first service.
If you lose the printed password before signing in, read it back on the server:
sudo k3s kubectl -n pyo-system get secret pyo-admin -o jsonpath='{.data.password}' | base64 -dInstall a particular release
The installer uses the latest release. To choose one, add --version, or set PYO_VERSION:
curl -fsSL https://pyo.dev/install.sh | bash -s -- --version 0.1.0To update later, run the install command again. See Updating Pyo. To remove Pyo, see Uninstalling Pyo.
Securing Pyo
Pyo's dashboard is only on the machine itself and your tailnet, never on its public address. If your server is on the internet, still follow Securing Pyo before you put anything real on it.