Windshift
v1.0.0Self-hosted work management for projects, workflows, collaboration, and delivery.
x-arcane:
icon: https://windshift.sh/favicon-32x32.png
urls:
- https://windshift.sh/
- https://github.com/Windshiftapp/core
services:
windshift:
image: ghcr.io/windshiftapp/windshift:v${WINDSHIFT_VERSION:-0.8.3}
restart: unless-stopped
ports:
- "${APP_PORT:-8080}:8080"
environment:
BASE_URL: ${BASE_URL:-http://localhost:${APP_PORT:-8080}}
PORT: 8080
SSO_SECRET: ${SSO_SECRET}
ATTACHMENT_PATH: /data/attachments
DB_TYPE: postgres
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_USER: ${POSTGRES_USER:-windshift}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-windshift}
LOG_LEVEL: info
LOG_FORMAT: json
volumes:
- windshift-data:/data
tmpfs:
- /tmp:exec,size=64M
ulimits:
nofile:
soft: 65536
hard: 65536
depends_on:
db:
condition: service_healthy
labels:
com.getarcaneapp.arcane.icon: https://windshift.sh/favicon-32x32.png
db:
image: postgres:17
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-windshift}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-windshift}
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 5s
timeout: 5s
retries: 5
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/postgresql.svg
volumes:
windshift-data:
postgres-data:
# Windshift
# Leave BASE_URL empty to derive http://localhost:<APP_PORT>. For production,
# set it to the HTTPS URL served by your reverse proxy.
APP_PORT=8080
BASE_URL=
WINDSHIFT_VERSION=0.8.3
# Generate with: openssl rand -hex 32
SSO_SECRET=change-this-to-a-random-64-character-hex-secret
# PostgreSQL
POSTGRES_USER=windshift
POSTGRES_PASSWORD=change-this-to-a-strong-database-password
POSTGRES_DB=windshift
README
Windshift is a self-hosted work management platform for planning projects, shaping workflows, and collaborating while keeping control of your data.
Before deploying
Review the template environment variables:
- Leave
BASE_URLempty to usehttp://localhost:<APP_PORT>, or set it to the complete public URL you will use to access Windshift. - Replace
SSO_SECRETwith the output ofopenssl rand -hex 32. - Replace
POSTGRES_PASSWORDwith a strong, unique password.
For a production deployment, put Windshift behind an HTTPS reverse proxy and set BASE_URL to its public HTTPS URL. Windshift automatically detects proxy mode when BASE_URL uses HTTPS and the container does not have a TLS certificate.
First run
Deploy the project, open the configured BASE_URL, and follow the setup wizard to create the first administrator and workspace.
The windshift-data volume stores attachments, plugins, and other application data. The postgres-data volume stores the database. Back up both volumes.
See the Windshift documentation for configuration, integrations, and upgrades.