Created
July 30, 2025 23:01
-
-
Save unixbigot/404293069355264a37ee490db5e89a22 to your computer and use it in GitHub Desktop.
An example for deploying the Planka trello-inspired groupware with docker-compose
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This is just the example compose file for planka customised for my site, and then de-credentialed for your inspiration | |
| # My planka installation has run for a few years with no problems. | |
| # | |
| # Search for all cases of "example" and replace with something appropriate | |
| # | |
| # This sits behind an nginx reverse proxy that also routes to a bunch of other services | |
| # | |
| # The nginx config snipped is | |
| # upstream planka { | |
| # server internal-server.example.com:3832; | |
| # } | |
| # | |
| # # inside your 'server' block, add a directory redirect for /project/ | |
| # location /project/ { | |
| # proxy_pass http://planka/; | |
| # proxy_redirect off; | |
| # proxy_buffering off; | |
| # proxy_set_header Host $http_host; | |
| # proxy_set_header X-Real-IP $remote_addr; | |
| # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
| # proxy_http_version 1.1; | |
| # proxy_set_header Upgrade $http_upgrade; | |
| # proxy_set_header Connection "upgrade"; | |
| # proxy_ssl_session_reuse on; | |
| # } | |
| # | |
| version: '3' | |
| services: | |
| planka: | |
| image: ghcr.io/plankanban/planka:latest | |
| restart: on-failure | |
| volumes: | |
| - user-avatars:/app/public/user-avatars | |
| - project-background-images:/app/public/project-background-images | |
| - attachments:/app/private/attachments | |
| ports: | |
| - 3832:1337 | |
| environment: | |
| - BASE_URL=https://yourinternalwebsite.example.com/project | |
| - DATABASE_URL=postgresql://postgres@postgres/planka | |
| - SECRET_KEY=examplereallylonghexadecimalstring | |
| # - TRUST_PROXY=0 | |
| # - TOKEN_EXPIRES_IN=365 # In days | |
| # related: https://github.com/knex/knex/issues/2354 | |
| # As knex does not pass query parameters from the connection string we | |
| # have to use environment variables in order to pass the desired values, e.g. | |
| # - PGSSLMODE=<value> | |
| # Configure knex to accept SSL certificates | |
| # - KNEX_REJECT_UNAUTHORIZED_SSL_CERTIFICATE=false | |
| - DEFAULT_ADMIN_EMAIL=admin@yourdomainname.example.com # Do not remove if you want to prevent this user from being edited/deleted | |
| - DEFAULT_ADMIN_PASSWORD=decently-sized-password-example | |
| - DEFAULT_ADMIN_NAME=planka admin | |
| - DEFAULT_ADMIN_USERNAME=admin | |
| # - ALLOW_ALL_TO_CREATE_PROJECTS=true | |
| # - OIDC_ISSUER= | |
| # - OIDC_CLIENT_ID= | |
| # - OIDC_CLIENT_SECRET= | |
| # - OIDC_ID_TOKEN_SIGNED_RESPONSE_ALG= | |
| # - OIDC_USERINFO_SIGNED_RESPONSE_ALG= | |
| # - OIDC_SCOPES=openid email profile | |
| # - OIDC_RESPONSE_MODE=fragment | |
| # - OIDC_USE_DEFAULT_RESPONSE_MODE=true | |
| # - OIDC_ADMIN_ROLES=admin | |
| # - OIDC_EMAIL_ATTRIBUTE=email | |
| # - OIDC_NAME_ATTRIBUTE=name | |
| # - OIDC_USERNAME_ATTRIBUTE=preferred_username | |
| # - OIDC_ROLES_ATTRIBUTE=groups | |
| # - OIDC_IGNORE_USERNAME=true | |
| # - OIDC_IGNORE_ROLES=true | |
| # - OIDC_ENFORCED=true | |
| # Email Notifications (https://nodemailer.com/smtp/) | |
| # - SMTP_HOST= | |
| # - SMTP_PORT=587 | |
| # - SMTP_NAME= | |
| # - SMTP_SECURE=true | |
| # - SMTP_USER= | |
| # - SMTP_PASSWORD= | |
| # - SMTP_FROM="Demo Demo" <demo@demo.demo> | |
| # Optional fields: accessToken, events, excludedEvents | |
| # - | | |
| # WEBHOOKS=[{ | |
| # "url": "http://localhost:3001", | |
| # "accessToken": "notaccesstoken", | |
| # "events": ["cardCreate", "cardUpdate", "cardDelete"], | |
| # "excludedEvents": ["notificationCreate", "notificationUpdate"] | |
| # }] | |
| # - SLACK_BOT_TOKEN= | |
| # - SLACK_CHANNEL_ID= | |
| depends_on: | |
| postgres: | |
| condition: service_healthy | |
| postgres: | |
| image: postgres:14-alpine | |
| restart: on-failure | |
| volumes: | |
| - db-data:/var/lib/postgresql/data | |
| environment: | |
| - POSTGRES_DB=planka | |
| - POSTGRES_HOST_AUTH_METHOD=trust | |
| healthcheck: | |
| test: ["CMD-SHELL", "pg_isready -U postgres -d planka"] | |
| interval: 10s | |
| timeout: 5s | |
| retries: 5 | |
| volumes: | |
| user-avatars: | |
| project-background-images: | |
| attachments: | |
| db-data: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment