5-minute quickstart

Goal: a running SpeedyFiles instance with the admin dashboard reachable in your browser. We'll skip TLS & real mail for now — those are in the full install guide.

Heads-up: you'll need Docker + Docker Compose. If you don't have them, install them first — takes 2 minutes on most distros.

1. Create a working directory

mkdir speedyfiles && cd speedyfiles

2. Drop in a docker-compose.yml

cat > docker-compose.yml <<'EOF'
services:
  speedyfiles:
    image: ghcr.io/speedyfiles/speedyfiles:latest
    container_name: speedyfiles
    ports:
      - "5300:5300"
    volumes:
      - ./data:/data         # SQLite DB + logs
      - ./files:/srv/files   # bulk file storage
    environment:
      SESSION_SECRET: ${SESSION_SECRET}
      PUBLIC_BASE_URL: http://localhost:5300
      LOCAL_STORAGE_ROOT: /srv/files
      DATABASE_URL: sqlite+aiosqlite:////data/app.db
    restart: unless-stopped
EOF

3. Generate a session secret

echo "SESSION_SECRET=$(openssl rand -hex 32)" > .env

4. Start it

docker compose up -d
docker compose logs -f speedyfiles   # watch startup, Ctrl-C when ready

5. Open the first-run wizard

Visit http://localhost:5300/setup.

The wizard asks for:

After submitting, you're logged in and at /dash. You're done.

What's next

Production note: running on localhost:5300 with HTTP is fine for evaluation but unsuitable for real use. At minimum, put a reverse proxy with TLS in front before sending magic links to real recipients (the session cookie is set HttpOnly; Secure, and external links won't work over plain HTTP).