Skip to content

Deployment

Deploy Dango to the cloud for team access, scheduled syncs, and always-on dashboards.


Deployment Paths

Dango offers two deployment paths. Both result in the same server setup — the difference is who provisions the infrastructure.

DigitalOcean Bring Your Own Server
What it does Provisions a droplet, configures everything Installs Dango on your existing server
Prerequisites DO account + API token Ubuntu 22.04+ server with SSH access
Cloud firewall Managed by Dango (dango remote firewall) You manage (UFW installed automatically)
Automated backups DO Spaces (optional, ~$5/mo) Not included (manual snapshots)
Server destruction dango deploy destroy removes everything Your responsibility
Cost \(24–\)48/mo (droplet) + optional backups Your server costs
Best for Quick setup, no existing infrastructure AWS, GCP, Hetzner, on-premise, etc.

Quick Start

dango deploy

The interactive wizard walks you through region, server size, admin account, and cost confirmation. See the DigitalOcean guide for the full walkthrough.

dango deploy --byos

Connects to your server via SSH and installs everything. See the BYOS guide for server requirements and the full walkthrough.

What Gets Deployed

Both paths set up the same server environment: Python venv, DuckDB warehouse, dbt project, Metabase (Docker), Caddy (reverse proxy + auto-TLS), fail2ban, systemd service, and unattended security upgrades. See the detailed server layout for the full directory structure.

Deployment Commands

Command Description
dango deploy Deploy to DigitalOcean (interactive wizard)
dango deploy --byos Deploy to an existing server
dango deploy --reconnect --ip <IP> Reconnect to an existing deployment
dango remote push Push config and dbt files to the server
dango remote status Check server health and service status
dango remote logs View server logs
dango remote ssh Open an SSH session to the server
dango deploy destroy Destroy DigitalOcean droplet (irreversible)

After Deployment

Once your server is running, you'll typically want to:

  1. Verify the deployment is healthy — dango remote status
  2. Configure a domain for HTTPS — dango remote domain set <domain>
  3. Set up firewall rules to restrict access — dango remote firewall (DO) or UFW (BYOS)
  4. Re-authenticate OAuth sources with the new redirect URI
  5. Configure scheduled syncs via the web UI or dango schedule

See Post-Deploy Setup for the complete walkthrough.

The Push Model

Dango uses a push model for deployments. Your local machine is the source of truth for configuration and dbt files:

# Edit locally
vim .dango/sources.yml
vim dbt_project/models/staging/stg_orders.sql

# Push changes to server
dango remote push

dango remote push syncs configuration files and dbt project files. It does not sync credentials — manage those separately via the web UI secrets page or dango remote env set.

Credentials are never pushed

.env, .dlt/secrets.toml, and the DuckDB warehouse file are excluded from push. Credentials on the server are managed independently to prevent accidental overwrites.