SyntroSprint - agile project management (Scrum/Kanban) with story points, epics and sprints
825
Self-hosted agile project management: Scrum/Kanban boards with story points, epics, sprints, velocity/burndown/CFD reports and full task history. Backend: Rust + Actix-web + PostgreSQL. Frontend: Alpine.js + Bootstrap 5 (es/en/de).
Zero build steps - the image is already published. Save the file below as docker-compose.yml:
services:
app:
build: .
image: syntronet/sprints:latest
ports:
- "${APP_PORT:-80}:80"
- "${MCP_PORT:-8100}:8100"
environment:
- DATABASE_URL=postgresql://${DB_USER:-syntro}:${DB_PASSWORD:-syntro_pass}@db:5432/${DB_NAME:-syntrosprint}
- JWT_SECRET=${JWT_SECRET}
- BACKUP_ENCRYPTION_KEY=${BACKUP_ENCRYPTION_KEY:-}
- BACKUP_LINK_SIGNING_KEY=${BACKUP_LINK_SIGNING_KEY:-}
- BACKUP_INSTANCE_ID=${BACKUP_INSTANCE_ID:-syntrosprint-local}
- BACKUP_LINK_TTL_SECS=${BACKUP_LINK_TTL_SECS:-3600}
- BACKUP_DIR=${BACKUP_DIR:-/app/backups}
- BACKUP_SCHEDULE_HOUR=${BACKUP_SCHEDULE_HOUR:-3}
- BACKUP_MAINTENANCE_MAX_SECS=${BACKUP_MAINTENANCE_MAX_SECS:-7200}
- BACKUP_MAINTENANCE_IDLE_SECS=${BACKUP_MAINTENANCE_IDLE_SECS:-1800}
- BACKUP_ZIP_MAX_ENTRY_MB=${BACKUP_ZIP_MAX_ENTRY_MB:-50}
- BACKUP_ZIP_MAX_ENTRIES=${BACKUP_ZIP_MAX_ENTRIES:-10000}
- BACKUP_MANUAL_CAP=${BACKUP_MANUAL_CAP:-10}
- BACKUP_DISK_ALERT_PCT=${BACKUP_DISK_ALERT_PCT:-85}
- SYNTROSPRINT_LOG_LEVEL=${SYNTROSPRINT_LOG_LEVEL:-info}
- BASE_URL=${BASE_URL:-http://localhost}
- ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-Admin2026!}
- ADMIN_EMAIL=${ADMIN_EMAIL:[email protected]}
# Gmail SMTP (get an app password from https://myaccount.google.com/apppasswords)
# Leave empty to disable email sending
- GMAIL_USER=${GMAIL_USER:-}
- GMAIL_APP_PASSWORD=${GMAIL_APP_PASSWORD:-}
depends_on:
db:
condition: service_healthy
volumes:
- uploads:/app/uploads
- backups:/app/backups
networks:
- syntrosprint-net
restart: unless-stopped
db:
image: postgres:16-alpine
ports:
- "5432:5432"
environment:
POSTGRES_USER: ${DB_USER:-syntro}
POSTGRES_PASSWORD: ${DB_PASSWORD:-syntro_pass}
POSTGRES_DB: ${DB_NAME:-syntrosprint}
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-syntro}"]
interval: 5s
timeout: 5s
retries: 5
networks:
- syntrosprint-net
restart: unless-stopped
volumes:
pgdata:
uploads:
backups:
networks:
syntrosprint-net:
driver: bridge
Then run:
docker compose up -d
open http://localhost
Log in with the admin user you configured. The database migrates automatically on first start.
Set BASE_URL to your public URL (e.g. https://sprints.example.com) before going live so email links point to the right domain.
| Variable | Req. | Default | Description |
|---|---|---|---|
JWT_SECRET | yes | - | Session token secret. Generate: openssl rand -hex 32 |
DATABASE_URL | yes | - | Postgres URL (see compose above) |
BASE_URL | no | http://localhost | Public URL used in email links |
ADMIN_USERNAME | no | admin | First admin login (DB empty only) |
ADMIN_PASSWORD | yes* | - | First admin password (first install only) |
ADMIN_EMAIL | no | [email protected] | First admin email |
GMAIL_USER / GMAIL_APP_PASSWORD | no | empty | Enable email via Gmail SMTP (app password). Empty = disabled |
SYNTROSPRINT_LOG_LEVEL | no | info | debug / info / warn / error |
docker compose pull && docker compose up -d
docker exec -i $(docker compose ps -q db) pg_dump -U syntro syntrosprint > backup.sql
Data (pgdata, uploads) lives in Docker volumes.
SyntroSprint - Copyright (C) 2026 SyntroNet
SyntroSprint is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
SyntroSprint is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
This project is dual-licensed: the AGPL-3.0 open source license, plus a commercial license from SyntroNet for commercial use/production that does not comply with the AGPL Copyleft (Section 13 - Remote Network Interaction). Commercial licenses include support and updates.
The full license text (AGPL-3.0) is distributed in the source repository: LICENSE and LICENSING.md, as required by section 13 of the license for network-interacting software.
For commercial licenses or managed hosting: [email protected] - https://syntronet.com
Please donate on about section, thk!
Content type
Image
Digest
sha256:2c1f851a8…
Size
13.6 MB
Last updated
about 1 month ago
docker pull syntronet/sprints