AWS
Run and operate Grovs Community: aws.
The CloudFormation template creates a dedicated VPC, public subnet, security group, static IPv4 address and one Ubuntu 24.04 EC2 instance. Grovs runs on that instance using Docker Compose. PostgreSQL, Redis, ClickHouse and uploads use persistent Docker volumes on its encrypted EBS disk. This is a single-server deployment, not an HA cluster.
You pay AWS for the instance, EBS storage and public IPv4. The default is a
t3.xlarge with 100 GiB of gp3 storage. Review regional pricing before creating it.
Launch from the AWS console
- Download
deploy/aws/cloudformation.yamlfrom this repository. - Open CloudFormation → Create stack → With new resources in your chosen region. Select Upload a template file and upload it.
- Fill in
AppDomain,AdminEmailandGrovsVersion. Use the version shown on the latest completed release forGrovsVersion, replacing any older template default. This selects matching backend and dashboard images from GHCR. - Keep
StackRef=mainor pin a reviewed commit containing the deployment files. Application release tags can predate the cloud scripts;StackRefselects deployment files independently of the image version. - Review the resources and acknowledge IAM creation. The instance role grants Session Manager connectivity; no SSH port is open publicly.
- Create the stack. Copy
IpAddressandInstanceIdfrom Outputs.
Your AWS identity needs permissions for the resources in the template, IAM role creation/pass-role, and reading the public Ubuntu AMI parameter from SSM.
CloudFormation completion means the VM has been created. Application setup continues inside it; allow time for package installation, image pulls and migrations before expecting a dashboard.
DNS, credentials and readiness
Point the Grovs DNS records at the static IP. In EC2 → Instances → Connect → Session Manager, open the instance and run:
sudo systemctl status grovs --no-pager
sudo tail -100 /var/log/cloud-init-output.log
sudo cat /opt/grovs/.envUse BOOTSTRAP_ADMIN_EMAIL and BOOTSTRAP_ADMIN_PASSWORD to sign in at
https://dashboard.<AppDomain>. Setup writes secrets to root-readable files;
they are not stored in CloudFormation parameters or Outputs.
If Session Manager is unavailable, verify the instance profile, outbound network access and SSM agent status. The operator also needs permission to start an SSM session. AWS Session Manager prerequisites
Finish the checks in First successful deployment.
Operate and remove
The checkout and .env live in /opt/grovs. grovs.service starts the stack on
boot. Use sudo -i, then cd /opt/grovs for the usual Compose commands.
Back up PostgreSQL, ClickHouse, uploads and .env before upgrades. Updating the
CloudFormation parameters is not a supported in-place application upgrade;
follow the application upgrade procedure.
Deleting the CloudFormation stack terminates the VM and releases its public IP.
The root EBS volume is retained (DeleteOnTermination: false) so its data is
not erased with the instance. It continues to incur storage charges. Identify
and snapshot that volume before deletion; deleting retained volumes is a
separate, irreversible operation. A retained disk is not a database backup.