Deployment guide
Deploy Nona on Azure, AWS, and Google Cloud
Nona deploys best to a Linux VM with durable disk and Docker. Choose the provider guide below for the cloud-specific setup, then use the common Docker commands to get the app running.
Choose your cloud
Azure
Deploy Nona on Azure Virtual Machines with Ubuntu, Docker, and an Azure disk.
Open guide →AWS
Deploy Nona on Amazon EC2 with Ubuntu, Docker, and EBS-backed persistent storage.
Open guide →Google Cloud
Deploy Nona on Google Compute Engine and avoid the non-persistent filesystem tradeoff of Cloud Run.
Open guide →Recommended starting point
- Nona is a stateful application. Treat its local data directory as durable application state, not disposable cache.
- Start with one Ubuntu VM per environment.
- Keep Nona data on the VM disk or on an attached persistent disk.
- Expose port
18080only for the initial smoke test. - Add TLS, DNS, and replicas later when the operational need is real.
Why the guides use VMs
Nona is a stateful application and keeps state locally under /var/lib/nona. A Linux VM maps cleanly to that storage model on all three clouds. You get durable disk, a stable place to run Docker, and an operational model that is easy to understand.
That is why the default recommendation is Azure Virtual Machines, Amazon EC2, or Google Compute Engine, not the most abstract container product each cloud offers.
Common Docker setup
The provider pages explain how to create the VM. After that, the Docker setup is the same.
1. Install Docker
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable --now docker2. Run Nona
sudo docker run -d \
--name nona \
--restart unless-stopped \
-p 18080:8080 \
-v nona-data:/var/lib/nona \
rywaredev/nona:latestOptional: bind to a mounted disk
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:latestAfter the first deployment
- Put TLS in front of the app before using it in a serious environment.
- Back up the disk or the mounted
/var/lib/nonapath. - Restrict public access to management surfaces as needed.
- Set up monitoring and alerting before calling the deployment production-ready.