Dokploy

Windshift

Self-hosted work management platform with projects, tasks, sprints, and team collaboration.

Windshift logo

Configuration

version: "3.8"

services:
  windshift:
    image: ghcr.io/windshiftapp/windshift:v0.5.3
    restart: unless-stopped
    environment:
      - BASE_URL=https://${DOMAIN}
      - PORT=8080
      - USE_PROXY=true
      - SSO_SECRET=${SSO_SECRET}
      - ATTACHMENT_PATH=/data/attachments
      - DB_TYPE=postgres
      - POSTGRES_HOST=db
      - POSTGRES_PORT=5432
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
      - LOG_LEVEL=info
      - LOG_FORMAT=json
    volumes:
      - windshift-data:/data
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:17.4
    restart: unless-stopped
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    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

volumes:
  windshift-data: {}
  postgres-data: {}
[variables]
main_domain = "${domain}"
sso_secret = "${hash:64}"
db_password = "${password:32}"

[config]
env = [
  "DOMAIN=${main_domain}",
  "SSO_SECRET=${sso_secret}",
  "POSTGRES_USER=windshift",
  "POSTGRES_PASSWORD=${db_password}",
  "POSTGRES_DB=windshift",
]
mounts = []

[[config.domains]]
serviceName = "windshift"
port = 8080
host = "${main_domain}"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIHdpbmRzaGlmdDpcbiAgICBpbWFnZTogZ2hjci5pby93aW5kc2hpZnRhcHAvd2luZHNoaWZ0OnYwLjUuM1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIEJBU0VfVVJMPWh0dHBzOi8vJHtET01BSU59XG4gICAgICAtIFBPUlQ9ODA4MFxuICAgICAgLSBVU0VfUFJPWFk9dHJ1ZVxuICAgICAgLSBTU09fU0VDUkVUPSR7U1NPX1NFQ1JFVH1cbiAgICAgIC0gQVRUQUNITUVOVF9QQVRIPS9kYXRhL2F0dGFjaG1lbnRzXG4gICAgICAtIERCX1RZUEU9cG9zdGdyZXNcbiAgICAgIC0gUE9TVEdSRVNfSE9TVD1kYlxuICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzJcbiAgICAgIC0gUE9TVEdSRVNfVVNFUj0ke1BPU1RHUkVTX1VTRVJ9XG4gICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICAtIFBPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREJ9XG4gICAgICAtIExPR19MRVZFTD1pbmZvXG4gICAgICAtIExPR19GT1JNQVQ9anNvblxuICAgIHZvbHVtZXM6XG4gICAgICAtIHdpbmRzaGlmdC1kYXRhOi9kYXRhXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGRiOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuXG4gIGRiOlxuICAgIGltYWdlOiBwb3N0Z3JlczoxNy40XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gUE9TVEdSRVNfVVNFUj0ke1BPU1RHUkVTX1VTRVJ9XG4gICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICAtIFBPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREJ9XG4gICAgdm9sdW1lczpcbiAgICAgIC0gcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcInBnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9XCJdXG4gICAgICBpbnRlcnZhbDogNXNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiA1XG5cbnZvbHVtZXM6XG4gIHdpbmRzaGlmdC1kYXRhOiB7fVxuICBwb3N0Z3Jlcy1kYXRhOiB7fVxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnNzb19zZWNyZXQgPSBcIiR7aGFzaDo2NH1cIlxuZGJfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbiAgXCJET01BSU49JHttYWluX2RvbWFpbn1cIixcbiAgXCJTU09fU0VDUkVUPSR7c3NvX3NlY3JldH1cIixcbiAgXCJQT1NUR1JFU19VU0VSPXdpbmRzaGlmdFwiLFxuICBcIlBPU1RHUkVTX1BBU1NXT1JEPSR7ZGJfcGFzc3dvcmR9XCIsXG4gIFwiUE9TVEdSRVNfREI9d2luZHNoaWZ0XCIsXG5dXG5tb3VudHMgPSBbXVxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJ3aW5kc2hpZnRcIlxucG9ydCA9IDgwODBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcbiIKfQ==

Tags

project-management, collaboration, productivity, self-hosted


Version: v0.5.0

On this page