Projects

Pail

A home for the things you host at home. Toss in a static site, a PWA, or a small server app, and it's live.

Visit pail.chrisdmacrae.com

Pail is where you toss the things you host at home: static sites, PWAs, and small server apps, each with one name, one URL, and one status. Toss it in the pail. It’s live.

What it does

  • Deploys what you hand it: a folder, a zip, or a repo. Pail works out what’s inside, builds it if it needs building, and puts it live.

  • Functions: small programs that run once for each request. There’s no server to write and no Dockerfile, and they cost nothing while nobody is asking.

  • Containers: give Pail a Dockerfile, or the name of an image, and a port. It keeps the container running and sends requests to it.

  • Deploys on push: connect GitHub, GitLab, Bitbucket, Gitea, or Forgejo, and a pail redeploys every time you push

  • Custom domains: put Pail on a domain you own, with certificates every device already trusts

  • Reachable from anywhere: open a Pail on your home network to the internet through a Cloudflare Tunnel, with no ports forwarded

  • An Astro adapter: prerendered pages are served as files, and on-demand pages and API routes are answered by a function

How it runs

Pail runs on a server of your own. On Proxmox, one script makes a container with everything in it, and each build, function, and container you deploy gets a small virtual machine of its own. To try it out, it also runs as a single container on Docker or Podman.

From there, pail-cli puts a folder live with one command:

pail up

Where to get it

Pail is open source. Read the quickstart, or browse the code on GitHub.