Skip to main content

Deployment Overview

ProjectAchilles supports seven deployment targets. Choose based on your requirements for database, storage, agent build capability, and budget.

Comparison Matrix

TargetBackendDatabaseFile StorageAgent BuildsCostBest For
Docker Composebackend/SQLite (volume)Filesystem (volume)YesFreeLocal dev, self-hosted, air-gapped
Public serverbackend/SQLite (volume)Filesystem (volume)YesVPS costPublic single-server install with auto-TLS
On-prem serverbackend/SQLite (volume)Filesystem (volume)YesYour hardwarePrivate/internal networks, own PKI
Railwaybackend/SQLite (volume)Filesystem (volume)Partial~$10-13/moSimplicity, auto-deploy from GitHub
Renderbackend/SQLite (persistent disk)Filesystem (disk)Partial~$14/moFlat-rate pricing, Blueprint deploy
Fly.iobackend/SQLite (volume)Filesystem (volume)Yes~$8/moCheapest always-on, custom domains
Vercelbackend-serverless/Turso (libSQL)Vercel BlobNo~$20/moScalability, edge performance

Key Differences

Docker Compose (Self-Hosted)

  • Full feature set including Go cross-compilation and code signing
  • Optional local Elasticsearch with synthetic seed data
  • Best for development, testing, and on-premises deployment
  • Requires managing your own infrastructure

Public Server (VPS/Droplet)

  • Single-server install behind a Caddy reverse proxy with one public origin
  • Automatic Let's Encrypt TLS; UI, API, and agents share the same domain
  • One-command DigitalOcean provisioning (deploy-do.sh) or install on any Ubuntu host
  • Self-hosted or Elastic Cloud Elasticsearch; full Go build support

On-Prem Server

  • Install over SSH onto a server you provide, on a private/internal network
  • Selectable TLS that needs no inbound internet: internal CA, Let's Encrypt DNS-01, or bring-your-own cert
  • Agent trust wired via the agent's ca_cert for internal CAs
  • Same automation as the public server, driven by deploy-remote.sh

Railway

  • GitHub-based auto-deploy with watch patterns for selective rebuilds
  • Private networking between services (no public backend exposure needed)
  • Limited Go cross-compilation (no CGO, constrained memory)
  • Volume storage for SQLite and settings

Render

  • Blueprint deploy (render.yaml) for one-click setup
  • Persistent disk storage (1 GB) for SQLite and certificates
  • Starter plan offers flat-rate pricing
  • Custom domains with CNAME records

Fly.io

  • Docker Machine-based deployment with persistent volumes
  • Cheapest always-on option at ~$8/month
  • Full Go build support (Docker-based builds)
  • Custom domains with A/AAAA records (not CNAME)
  • No auto-deploy from GitHub (requires flyctl deploy or CI/CD)

Vercel (Serverless)

  • Purpose-built serverless fork (backend-serverless/)
  • Replaces SQLite with Turso, filesystem with Vercel Blob
  • No Go build support (returns 503 for build endpoints)
  • Test library cloned at build time, not runtime
  • Vercel Cron for scheduling and key rotation
Which Should I Choose?
  • Just evaluating? Use Docker Compose or Local Dev
  • Want your own public server with a domain? Use Public Server (Caddy auto-TLS, DigitalOcean or any VPS)
  • Running on a private/internal network? Use On-Prem Server (internal CA, DNS-01, or your own cert)
  • Need the cheapest managed always-on? Use Fly.io (~$8/mo)
  • Want the simplest managed deploy? Use Railway (GitHub auto-deploy)
  • Need serverless scale? Use Vercel (requires Turso + Blob)

What's Next?

  1. Review Prerequisites for your chosen target
  2. Follow the target-specific guide
  3. Complete the Production Checklist
  4. Reference the Environment Variables guide