1 Oct The panel works on a phone

The control plane for servers you already own

Run one command on a stock Ubuntu box. Shipways provisions it, deploys to it and backs it up, and every number it shows you says how old it is.

One machine is free for as long as you like. No card.

The Shipways overview for an organization: seven servers, seven sites, the most recent deployments and an activity feed. The Shipways overview for an organization: seven servers, seven sites, the most recent deployments and an activity feed.

What it needs, and what it runs

ubuntu 22.04 · 24.04 A stock image, nothing preinstalled
amd64 · arm64 One static agent binary
outbound 443 No inbound rule for the agent
16 site kinds Laravel to a static folder
import from forge One site at a time
01 How a machine joins

From a fresh box to a deployed site, with one command

Every step is a named run with its own clock and the machine's own output beside it. You watch what happens rather than reading about it afterwards.

Run one command

Name the machine and say what it is for. Shipways prints one install command for it, signed and valid for two hours. Run it as root on Ubuntu 22.04 or 24.04.

  • After that, the agent reports outward on its own
  • Works behind NAT and inside a private network
  • Any VPS or bare-metal box you can be root on
The add-server form: a name, an IP address, the machine type and PHP version, and what the box needs. The add-server form: a name, an IP address, the machine type and PHP version, and what the box needs.

It provisions itself

Provisioning starts when the agent first reports in. A deploy user, hardened SSH, ufw and fail2ban, security-only unattended upgrades, then what the machine is for: Nginx, PHP, Node, Supervisor, Redis, MySQL or PostgreSQL.

  • Every step named and timed, with the machine's own output
  • Nothing about the machine can be changed mid-run
  • Application, web, worker, database, cache, load balancer, search or mail
A server mid-provision: completed steps ticked, Install PHP 8.4 running, and apt's output streaming on the right. A server mid-provision: completed steps ticked, Install PHP 8.4 running, and apt's output streaming on the right.

Deploy

Point a site at a repository on GitHub, GitLab or Bitbucket. Every deploy builds a release beside the live one, checks it can boot, and only then switches over.

  • A release that cannot boot never goes live
  • Migrations that rewrite a table are flagged before they run
  • On push, from a hook, the API or your assistant
A succeeded deployment: thirteen named steps on the left, the release's own output on the right. A succeeded deployment: thirteen named steps on the left, the release's own output on the right.
02 The agent

A small agent that only ever calls out

One static binary on each machine. It asks the control plane for work over HTTPS and streams the output back, so day-to-day work needs no inbound rule for us at all.

Outbound only

The agent long-polls for jobs and checks in every 60 seconds with its facts and metrics. There is no inbound firewall rule to add, and nothing breaks when the machine's address changes.

  • Behind NAT or in a private VPC
  • TLS verification cannot be turned off
  • The control plane's address is fixed at enrolment
edge-fra-01 shipways-agentnginx · php-fpm 8.4
https · 443 · outbound
Shipways jobs, heartbeats,
streamed output
your firewall
no inbound rule for the agent
no inbound connection

One token per machine

Every machine enrols with a bearer token of its own, kept on the machine. A compromised box can only ever speak for itself, never for the rest of the fleet.

  • Tokens are per server and never shared
  • SSH stays as the fallback, with a repair command if the agent is ever locked out
edge-fra-01 token ····a41f
speaks for edge-fra-01
Shipways
app-ash-02 token ····9c07
speaks for app-ash-02
Shipways
db-ash-01 token ····3be2
speaks for db-ash-01
Shipways

Leave any time

Shipways configures standard software in standard places. Remove a server from Shipways and the agent is uninstalled; every site, database, worker and cron entry it set up keeps running.

  • Plain Nginx vhosts, PHP-FPM pools and Supervisor programs
  • Nothing on the machine waits on the control plane to serve
edge-fra-01 nginx — 3 sites php8.4-fpm — 3 pools supervisor — queue-default ×3 cron — schedule:run
agent removed
Shipways

still serving

03 One panel

Everything the machine runs, not just the deploy

A deploy tool that stops at the git checkout leaves you in ssh for the rest. Here every one of these has its own state, its own history and its own alerts.

Also in the panel

Domains, redirects and certificates Mail servers Queue workers and daemons Scheduled jobs and heartbeats Firewall rules PHP versions and extensions Environment history File browser Logs Recipes across machines Activity log Roles from owner to viewer
04 What it knows

The panel never pretends to know

The agent reports outward on a schedule, so the panel knows what it was last told, not what is true this second. It draws the difference instead of hiding it behind a green dot.

Grey is fine

Heard from on schedule, and nothing is wrong. There is no success colour on a resting screen, so the first colour you see is a problem.

edge-fra-01 · last heard 22s ago
Colour is a problem

Something told us it failed. Shape carries severity before hue does, so every state still reads in greyscale.

harbourfinch.com · check the release can boot · exit 1
Hatched is unknown

A machine that stops checking in is drawn as unknown, not as broken: silence is not a failure report. Its last numbers stay on screen, on the hatch, because the last thing we were told is usually what you came for.

db-ash-01 · has not checked in for 14 minutes
The server list during an incident: a band saying db-ash-01 has not checked in for 14 minutes, that one row hatched as unreachable, and the rest still grey. The server list during an incident: a band saying db-ash-01 has not checked in for 14 minutes, that one row hatched as unreachable, and the rest still grey.

One machine, free, for as long as you like

No card and no end date. Connect a spare box and watch it provision; everything it builds carries into whichever plan you move to.