All templates

Planka

v1.0.0

Collaborative Kanban boards for organizing projects and tasks.

tasksproductivity by getarcaneapp
x-arcane:
  icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/planka.svg"
  urls:
    - "https://docs.planka.cloud/docs/installation/docker/production-version/"
services:
  planka:
    image: "ghcr.io/plankanban/planka:latest"
    restart: "unless-stopped"
    ports:
      - "${PORT:-3000}:1337"
    environment:
      BASE_URL: "${BASE_URL:-http://localhost:3000}"
      DATABASE_URL: "postgresql://planka:${DB_PASSWORD:?Set DB_PASSWORD in .env}@db:5432/planka"
      SECRET_KEY: "${SECRET_KEY:?Set SECRET_KEY in .env}"
      DEFAULT_ADMIN_EMAIL: "${ADMIN_EMAIL:-admin@example.com}"
      DEFAULT_ADMIN_PASSWORD: "${ADMIN_PASSWORD:?Set ADMIN_PASSWORD in .env}"
      DEFAULT_ADMIN_NAME: "${ADMIN_NAME:-Administrator}"
      OUTGOING_BLOCKED_HOSTS: "localhost,db"
      DEFAULT_ADMIN_USERNAME: "${ADMIN_USERNAME:-admin}"
    volumes:
      - "data:/app/data"
    depends_on:
      db:
        condition: "service_healthy"
    labels:
      com.getarcaneapp.arcane.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/planka.svg"
  db:
    image: "postgres:16-alpine"
    restart: "unless-stopped"
    environment:
      POSTGRES_DB: "planka"
      POSTGRES_USER: "planka"
      POSTGRES_PASSWORD: "${DB_PASSWORD:?Set DB_PASSWORD in .env}"
    volumes:
      - "db-data:/var/lib/postgresql/data"
    healthcheck:
      test:
        - "CMD-SHELL"
        - "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
      interval: "10s"
      timeout: "5s"
      retries: 10
      start_period: "30s"
    labels:
      com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/postgresql.svg
volumes:
  data: {}
  db-data: {}

README

Collaborative Kanban boards for organizing projects and tasks.

Copy .env.example to .env, review the settings, then run docker compose up -d. In Arcane, import the template and supply the same environment variables. Replace every change-me value before starting. Generate independent secrets with openssl rand -hex 32; use hexadecimal database passwords so connection URLs need no escaping. Use docker compose ps and docker compose logs to check startup.

Sign in at BASE_URL with ADMIN_EMAIL and ADMIN_PASSWORD. Admin settings provision the initial account; leaving them configured also prevents editing or deleting that account. Uploaded files live in the data volume and boards in PostgreSQL.

Named volumes preserve server data across container recreation. Back up these volumes before upgrades; docker compose down -v deletes them. Set PORT to an unused host port. For remote browser access, put HTTPS in front of the application and update its public URL setting where provided.

Upstream documentation: Planka deployment.