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:
- Your admin email + a password (≥10 chars)
- Site name and public URL
- (Optional) SMTP server details — you can skip this and configure later under Settings → Mail
After submitting, you're logged in and at /dash. You're done.
What's next
- Configure mail so you can actually send packages
- Add a domain & TLS for production use
- Switch storage to S3 if you want object-storage-backed
- Hit the REST API to automate package creation
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).