During replacement
The current app stays up.
Caddy retries its loopback upstream for up to 20 seconds. If startup or health fails, Shibumi restores the previous image.
Self-hosted deploys
Build on your computer. Run that exact image on your VPS.
Scope todayVPS deployment only
Connect over SSH. Caddy handles public traffic while each app listens on loopback.
| Workload | Current | With rollback | Image contents |
|---|---|---|---|
| Static site | ~6.2 MB | ~12.4 MB | BusyBox and built site files. About 3 MB compressed. |
| Small Bun service | ~80–150 MB | ~160–300 MB | Bun Alpine, production packages, and app source. |
| Full-stack app | ~200–350 MB | ~400–700 MB | Runtime, packages, built assets, and migrations. |
Estimates include the current image and one similar rollback image. Shared layers may use less space. Leave room for the operating system, logs, databases, uploads, and the 4 GiB deployment floor.
| Provider | Starter plan | vCPU | RAM | Disk | From / month |
|---|---|---|---|---|---|
| HetznerEurope first | CX23 | 2 | 4 GB | 40 GB | €3.49 |
| OVHcloudEurope + global | VPS-1 | 2 | 4 GB | 40 GB | $4.54 |
| VultrGlobal | Cloud Compute | 1 | 1 GB | 25 GB | $5 |
| Akamai LinodeGlobal | Nanode | 1 | 1 GB | 25 GB | $5 |
| DigitalOceanGlobal | Basic Droplet | 1 | 1 GiB | 25 GiB | $6 |
Hetzner's entry plan has room for several small apps. A 1 GB server can run a light prebuilt service, but check its memory use first. Prices vary by location, tax, processor, and billing. Check the final price before ordering.
How it works
bun ship builds committed HEAD for your server, uploads the image, then pushes Git.
The image must belong to the commit you pushed. Config and optional tests must pass too. A failure leaves the current app running.
Run bun ship --rollback to restore the previous image. No fetch or rebuild.
During replacement
Caddy retries its loopback upstream for up to 20 seconds. If startup or health fails, Shibumi restores the previous image.
On disk
One runtime/<app>:current tag and one rollback tag. The rollback expires after 12 hours, even if the service restarts.
Linux server
* shis = shibumi-server.
You need Bun, Git, rootless Podman, Caddy, and systemd. The installer checks each one and helps with anything missing. Updates keep your settings and secrets.
curl -fsSL https://server.shibumistack.dev/install | bash
Next, connect a project with Shibumi Ship. Server operators can register one directly with shis add example.com.