Quick Start
2 min read
Get your first app deployed in under 5 minutes using the teploy CLI.
Prerequisites
- A server with SSH access (any VPS or bare metal running Linux)
- A domain name pointing to your server's IP
1. Install the CLI
brew install useteploy/tap/teploy
Or download the binary directly from GitHub releases.
2. Prepare your server
Point the CLI at a fresh server and it will install Docker, configure the firewall, and start Caddy:
teploy setup 203.0.113.10 --name production
This adds the server to ~/.teploy/servers.yml and provisions it for deployments.
3. Initialize your project
From your project directory:
teploy init
This generates a teploy.yml config file. For a typical web app, it looks like this:
app: myapp
domain: myapp.com
server: production
That is the minimum config. Three lines.
4. Deploy
teploy deploy
Teploy detects your Dockerfile (or uses Nixpacks if none exists), builds the image, ships it to your server, starts the container with health checking, routes traffic through Caddy with auto-HTTPS, and stops the old container. Zero downtime.
5. Verify
teploy status
Your app is live at https://myapp.com with an auto-provisioned SSL certificate.
Add a database
Define accessories in teploy.yml:
app: myapp
domain: myapp.com
server: production
accessories:
postgres:
image: postgres:16
port: 5432
env:
POSTGRES_PASSWORD: "${SECRET_DB_PASSWORD}"
volumes:
data: /var/lib/postgresql/data
The next deploy automatically starts Postgres and injects DATABASE_URL into your app's environment.
Set environment variables
teploy env set NODE_ENV=production API_KEY=sk_live_xxx
Set up auto-deploy
teploy autodeploy setup --branch main
This installs a webhook listener on your server. Add the webhook URL to your GitHub repo settings, and every push to main triggers a deploy.
Next steps
- Core Concepts — state files, accessories, and how it all works
- Docker deploys — Dockerfile, local vs server builds
- Databases — PostgreSQL, MySQL, Redis as accessories
- Environment variables — Managing config per app
- Custom domains — Point your domain to your app