Installing AgentPort
AgentPort self-hosts as two containers: a Caddy reverse proxy that handles TLS automatically, and the AgentPort server (FastAPI + the built UI, backed by SQLite on disk). Everything runs under Docker Compose.
Requirements
- A Linux host with a public IP (any cloud VM is fine — 1 vCPU / 1 GB RAM is plenty to start).
- A domain name you can edit DNS for.
- Ports 80 and 443 open to the internet (Let's Encrypt needs 80 for HTTP-01 challenges).
- Docker Engine with the Compose v2 plugin.
gitandcurl.
One-line install
SSH into the host and run:
curl -fsSL https://raw.githubusercontent.com/yakkomajuri/agent-port/main/install.sh | sh
The script will:
- Clone the repo into
./agentport. - Print this host's public IP and ask you to point your domain's A record at it.
- Prompt for the domain and an email address for Let's Encrypt.
- Poll DNS (via Cloudflare DoH, so it bypasses your local resolver's cache) until the domain resolves to this host.
- Generate a
JWT_SECRET_KEY, write.env, and bring up the stack withdocker compose -f docker-compose.prod.yml up -d --build.
Caddy provisions the TLS certificate on the first HTTPS request — usually within a minute of the containers starting.
Manual install
If you'd rather do it yourself:
git clone https://github.com/yakkomajuri/agent-port.git
cd agent-port
cat > .env <<EOF
DOMAIN=agentport.example.com
LETSENCRYPT_EMAIL=you@example.com
JWT_SECRET_KEY=$(openssl rand -hex 32)
EOF
chmod 600 .env
docker compose -f docker-compose.prod.yml up -d --build
Before this will work, the DNS A record for DOMAIN must already resolve to the host's public IP — otherwise Let's Encrypt's HTTP-01 challenge fails.
Verifying it's up
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs -f
curl -sSf https://agentport.example.com/health
Then open the domain in a browser and create your first account. Once you've done that, set BLOCK_SIGNUPS=true in .env and re-run docker compose -f docker-compose.prod.yml up -d to lock down new registrations (see Configuration).
Updating
cd agentport
git pull
docker compose -f docker-compose.prod.yml up -d --build
Migrations run automatically on container start.
Uninstalling
docker compose -f docker-compose.prod.yml down
Data lives in the agentport_data and caddy_data Docker volumes — back them up first if you want to keep anything. See Configuration → Backups.
Next steps
- Configuration — environment variables, Postgres, backups, email, log rotation, resource limits.
- Google OAuth setup — required to enable the Gmail and Google Calendar integrations.