Quick Start

PicFast ships with a production-ready Docker Compose file — no source cloning required. Download the file, edit a few variables, and you're online.

1. Download the Compose file

mkdir picfast && cd picfast

# Download the Compose file and environment template
wget https://raw.githubusercontent.com/atbeta/picfast/main/docker/docker-compose.yml
wget https://raw.githubusercontent.com/atbeta/picfast/main/docker/.env.example -O .env

2. Configure

Edit .env with your settings. At minimum:

# Domain and access
PICFAST_DOMAIN=picfast.example.com
PICFAST_SERVER_BASE_URL=https://picfast.example.com

# Security
PICFAST_JWT_SECRET=your-strong-random-secret
POSTGRES_PASSWORD=your-db-password

# Optional: skip setup wizard (headless)
PICFAST_APP_ADMIN_EMAIL=admin@example.com
PICFAST_APP_ADMIN_PASSWORD=your-admin-password

3. Start

docker compose up -d

This launches PostgreSQL and PicFast. Open http://localhost:18080 and follow the guided setup wizard to create your admin account.

Data is stored in the current directory: ./data/postgres, ./data/uploads, ./data/thumbnails.

4. Upload your first image

Log into the web UI and drag-drop a file, or use the API:

curl -X POST http://localhost:18080/api/v1/images \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -F "file=@image.png"

Reverse proxy

The default compose binds PicFast to 127.0.0.1:18080. Place Nginx, Caddy, or NPM in front for HTTPS. Set PICFAST_HTTP_BIND=0.0.0.0 in .env to expose directly on your network.

Full reverse proxy configs — Nginx, Caddy, Traefik — are on the Deployment page.

Next steps

Development setup

For building from source or contributing:

  • Prerequisites: Go 1.26+, Node 20+, pnpm, Docker
  • Start services: make docker-up (or docker compose -f docker/docker-compose.dev.yml up --build -d)
  • Run backend: go run ./cmd/picfast (after running cp .env.example .env)
  • Run frontend: cd web && pnpm install && pnpm dev

Migrations run automatically at startup. See the README for full instructions.