Deployment guide

Deploy Nona on Google Cloud

The simplest Google Cloud deployment for Nona is a Compute Engine VM with Docker and a persistent disk. That fits Nona's local storage model better than Cloud Run.

Recommended GCP shape

  • Use Google Compute Engine as the starting point.
  • Choose Ubuntu and use the boot disk or an attached persistent disk for /var/lib/nona.
  • Expose ports 22 and 18080 for the initial smoke test.
  • Add TLS and DNS after the first deployment is working.

Why not start with Cloud Run

Nona keeps state locally under /var/lib/nona. Google documents that Cloud Run's writable container file system is in-memory and that data written there does not persist when the instance stops, which makes it the wrong default for a stateful primary Nona node.

Cloud Run file system behavior: Cloud Run container runtime contract

GCP steps

  1. Create a new Compute Engine VM instance.
  2. Select Ubuntu and a small general-purpose machine type.
  3. Allow inbound ports 22 and 18080 for the first smoke test.
  4. Use the boot disk to start or attach a larger persistent disk if you want separate data storage.
  5. SSH into the VM and run the Docker setup below.

Official Compute Engine guide: Create and start a Compute Engine instance

Install Docker and run Nona

1. Install Docker

sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable --now docker

2. Run Nona

sudo docker run -d \
  --name nona \
  --restart unless-stopped \
  -p 18080:8080 \
  -v nona-data:/var/lib/nona \
  rywaredev/nona:latest

Optional: use a mounted persistent disk

If you mount a separate persistent disk, bind that path into /var/lib/nona.

sudo mkdir -p /mnt/nona

sudo docker run -d \
  --name nona \
  --restart unless-stopped \
  -p 18080:8080 \
  -v /mnt/nona:/var/lib/nona \
  rywaredev/nona:latest

After the GCP deployment works

  • Put TLS in front of the VM before using it seriously.
  • Back up the boot disk or mounted persistent disk path.
  • Keep Cloud Run in mind for future stateless edges or helpers, not as the default stateful primary.

Need the overview? Go back to the deploy hub.