Pick one
Prices are list prices from 2026-10-14. Check the provider before you buy.
A Linux server is cheapest and is the path we test. Render and Railway bill per service, so the same 8 GB costs several times more.
Linux server
1
Create the server
Use 4 vCPU and 8 GB RAM. Allow ports 80 and 443 (or 3000 without a domain).
2
Follow the walkthrough
Run the steps in the walkthrough over SSH.
3
Add a domain (optional)
Point the domain’s DNS A record at the server, then:
DigitalOcean Marketplace
Once listed, create a Droplet from the GAIA listing (8 GB / 4 vCPU or bigger), wait for first boot, then openhttp://<Droplet IP>/setup.
The image comes with Docker and the CLI, makes its own secrets, and only allows SSH, HTTP and HTTPS.
Maintainers: building and submitting the image
Maintainers: building and submitting the image
The Packer template lives in
deploy/digitalocean/, in the format of DigitalOcean’s marketplace-partners repository. It runs their 03-force-ssh-logout.sh, 90-cleanup.sh and 99-img-check.sh at a pinned commit.- Install Packer and the plugin:
packer plugins install github.com/digitalocean/digitalocean. - Create a DigitalOcean API token and export it:
export DIGITALOCEAN_TOKEN=.... - From
deploy/digitalocean/, runpacker build marketplace-image.json. The build ends with99-img-check.sh; fix every[FAIL]before submitting. - Create one Droplet from the snapshot and check that
http://<IP>/setuploads andsudo -iu gaia gaia doctorpasses. - Submit the snapshot in the Vendor Portal with the listing copy, the quick-start text from
files/etc/update-motd.d/99-one-click, and links to these docs. If you have no Vendor Portal login, apply at marketplace.digitalocean.com/vendors.
Coolify
Usesdeploy/coolify/gaia.yaml.
1
Create the resource
In your Coolify project choose New → Docker Compose Empty, paste the contents of the file, and save. Use a server with at least 4 vCPU and 8 GB of RAM.
2
Set the domain
Under Domains, set the domain for the
proxy service. Coolify issues the certificate and generates the passwords.3
Add your AI key and deploy
Optionally set
OPENAI_API_KEY in Environment Variables, or add a provider at /setup later. Deploy, then open the domain and go to /setup.Render
Uses the Blueprintrender.yaml. It needs a Cloudinary account, because a Render disk cannot be shared between services (BLOB_STORE=cloudinary).
1
Create the Blueprint
Click the button below, or in the Render Dashboard choose New → Blueprint and connect the GAIA repository (or your fork), then apply it.
Render asks for the values marked
sync: false. Enter your CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY and CLOUDINARY_API_SECRET, your OPENAI_API_KEY (or leave it empty), and pending for the other three for now.2
Fill in the private addresses
Render gives every private service a hostname with a random suffix, and a Blueprint cannot build a URL from it. Once the services exist, copy each internal address from its Connect panel and set these on
gaia-backend (the worker reads them from there) and gaia-web:Each address looks like
gaia-mongo-a1b2:27017. Save, and Render redeploys.3
Open GAIA
Open the
gaia service’s onrender.com URL (or add your domain to it) and go to /setup.:latest images. To pin one, put a tag like v0.7.0 in each image URL.
Railway
There is no template yet, so you create the services yourself. You also need a Cloudinary account, because a Railway volume belongs to one service (BLOB_STORE=cloudinary).
Service list and variables
Service list and variables
Create these in one project (New, Docker Image, or GitHub Repo for the proxy). Then add a public domain to
gaia on port 8080.Shared variables for
gaia-backend and gaia-worker (Project Settings → Shared Variables, then reference them):After you deploy
1
Open /setup
Go to your address followed by
/setup: http://<server IP>:3000/setup for gaia up without a domain, http://<Droplet IP>/setup, or your Render, Railway or own domain.2
Create the admin account
The first account is the admin. Use a password of at least 8 characters.
3
Pick an AI provider
Paste a key for OpenAI, OpenRouter or Gemini, or use a local Ollama. Skip it if you set the key during deploy.

