# DigitalOcean

> Run the full Grovs stack on a DigitalOcean Droplet, installed by cloud-init on first boot.

Source: https://docs.grovs.io/docs/self-hosting/clouds/digitalocean

[Open DigitalOcean Console](https://cloud.digitalocean.com/droplets/new)

## When to use

You want one Droplet running the whole stack. Use a Droplet for this full-stack installation.

## Prerequisites

The [shared VM prerequisites](https://docs.grovs.io/docs/self-hosting/clouds/cloud-vm#prerequisites): fresh Ubuntu 24.04 x86_64, 4 vCPU, 8 GB RAM, 80 GB SSD, public IPv4, SSH key, domain. DigitalOcean bills you for the server, storage and traffic.

## 1. Prepare DNS and firewall

Create a **Cloud Firewall** that allows inbound TCP 80/443 from the internet and TCP 22 only from your public IP. Allow outbound traffic. Plan the [DNS records](https://docs.grovs.io/docs/self-hosting/clouds/cloud-vm#1-prepare-dns-and-firewall); you point them at the Droplet's IPv4 once it exists.

## 2. Create the server

1. [Generate the cloud-init file](https://docs.grovs.io/docs/self-hosting/clouds/cloud-vm#with-cloud-init-at-first-boot) on your workstation.
2. Create a Droplet with the plain Ubuntu 24.04 image and the resources above.
3. Add your SSH public key. Under **Additional Options → Startup scripts**, paste the complete generated file, including `#cloud-config`.
4. Create the Droplet and attach the Cloud Firewall.

See DigitalOcean's [user-data instructions](https://docs.digitalocean.com/products/droplets/how-to/provide-user-data/).

## 3. Install Grovs

Cloud-init installs Docker and the stack on first boot. Connect as `root` to the Droplet's public IPv4 and point the DNS records at it.

## 4. Deploy and verify

Follow the [shared verify steps](https://docs.grovs.io/docs/self-hosting/clouds/cloud-vm#4-deploy-and-verify).

## Upgrades

See the [shared VM upgrade notes](https://docs.grovs.io/docs/self-hosting/clouds/cloud-vm#upgrades).

## Gotchas

If startup fails, read `/var/log/cloud-init-output.log`, fix the error, then run `sudo bash /root/grovs-bootstrap.sh` again. More in the [shared gotchas](https://docs.grovs.io/docs/self-hosting/clouds/cloud-vm#gotchas).
