Cloud-Init: Automate Your VPS Setup on First Boot
Instead of SSHing into every new server and running the same commands, cloud-init does it for you automatically on first boot. It's the standard way to make servers reproducible. Here's a quick primer.
What cloud-init does
At deploy time you supply a small user-data script. On first boot the server reads it and can:
- Install packages
- Create users and add SSH keys
- Write config files
- Run any commands you specify
No manual setup, and every server comes up identically.
A simple example
This installs nginx and writes a page:
#cloud-config
package_update: true
packages:
- nginx
runcmd:
- echo "Hello from cloud-init" > /var/www/html/index.html
- systemctl enable --now nginx
Paste that into the Cloud-Init User Data field when you deploy, and the server is a working web host the moment it boots.
Why it's worth it
- Reproducible — the same script builds the same server every time.
- Fast — no manual steps after deploy.
- Scriptable — combine it with the API to spin up preconfigured servers programmatically.
Pairs perfectly with an API
If you deploy via the REST API, pass your cloud-init as user-data and you get a fully configured server from a single call — ideal for CI, autoscaling or disposable environments.
Get started
Deploy with cloud-init — crypto only, configured on first boot, live in ~60 seconds.