Skip to content

Server Setup

This guide covers setting up a Pogo server for your team or organization.

  • PostgreSQL 17+ database
  • Server with at least 2GB RAM
  • Storage space for repositories
  • Network access on port 8080 or whatever you choose for HTTP and gRPC

On the first run, Pogo server will create a Root user with one random personal access token and print it to stdout. Use this token to log in to the server. After the first run, the token will never be shown again.

The easiest way to run a Pogo server is with Docker Compose:

services:
pogo:
image: ghcr.io/pogo-vcs/pogo:alpine
depends_on:
- db
ports:
- 80:8080
environment:
- PORT=8080
- DATABASE_URL=postgres://pogo:pogo@db:5432/pogo
- PUBLIC_ADDRESS=https://pogo.example.com
volumes:
- ./pogo_data/:/data/
db:
image: postgres:17-alpine
volumes:
- ./pogo_db:/var/lib/postgresql/data
environment:
- POSTGRES_USER=pogo
- POSTGRES_PASSWORD=pogo
- POSTGRES_DB=pogo
healthcheck:
test: ["CMD-SHELL", "pg_isready -U pogo"]
interval: 10s
timeout: 5s
retries: 5

Download and run the Pogo binary directly:

Download from GitHub releases.

Terminal window
# Run server
DATABASE_URL=postgres://pogo:password@localhost/pogo \
pogo serve

Build and run from source:

Terminal window
# Clone and build
git clone https://github.com/pogo-vcs/pogo.git
cd pogo
just build
# Run server
./pogo serve

See Installation guide for more details.

Configure your Pogo server with these environment variables:

VariableDescriptionDefault
DATABASE_URLPostgreSQL connection stringRequired
PORTPort8080
HOSTBind address0.0.0.0:8080
GC_MEMORY_THRESHOLDFile count threshold for GC strategy10000000
ROOT_TOKENPersonal access token for root userRandom
PUBLIC_ADDRESSPublic address for HTTP serverRequired

Pogo server automatically creates tables on first run and runs migrations if needed.

Pogo server stores files in ./data/.