Favicon of Plane

Plane

Plan and execute work with flexible views, built-in documentation, and AI agents. Manage projects securely with cloud, self-hosted, or air-gapped deployments.

Bring clarity and structure to your organization with a comprehensive project management platform designed for fast execution. This workspace combines task tracking, knowledge management, and artificial intelligence to help teams focus on shipping rather than configuring. The built-in AI reads across your entire workspace to answer questions, triage requests, and automate busywork directly from your communication tools.

Enjoy flexible features tailored to your workflow:

  • Multiple Views: Switch instantly between Board, Spreadsheet, List, and Gantt layouts.
  • Cycles and Sprints: Time-box your work with built-in velocity tracking and burndown charts.
  • Rich Documentation: Maintain wikis and project docs alongside your tasks.
  • Real-time Dashboards: Track workload, blockers, and scope changes automatically.
  • Flexible Deployment: Choose between cloud, self-hosted, or fully air-gapped environments.

Migrate easily from legacy tools and manage your projects as code.

Directory Structure

plane
data
.env
docker-compose.yml

docker-compose.yml

services:
  web:
    container_name: plane-web
    image: makeplane/plane-frontend:latest
    restart: always
    command: /usr/local/bin/start.sh
    environment:
      NEXT_PUBLIC_API_BASE_URL: ${NEXT_PUBLIC_API_BASE_URL}
      NEXT_PUBLIC_GOOGLE_CLIENTID: "0"
      NEXT_PUBLIC_GITHUB_ID: "0"
      NEXT_PUBLIC_GITLAB_APP_ID: "0"
      NEXT_PUBLIC_SENTRY_DSN: ""
      NEXT_PUBLIC_ENABLE_SENTRY: "0"
    depends_on:
      - api
      - worker

  api:
    container_name: plane-api
    image: makeplane/plane-backend:latest
    restart: always
    command: ./bin/takeoff
    environment:
      DATABASE_URL: postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:5432/${PGDATABASE}
      REDIS_URL: redis://${REDIS_HOST}:6379/
      SECRET_KEY: ${SECRET_KEY}
      AWS_REGION: ${AWS_REGION}
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_S3_ENDPOINT_URL: ${AWS_S3_ENDPOINT_URL}
      AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME}
      FILE_SIZE_LIMIT: 5242880
      WEB_URL: ${WEB_URL}
      GITHUB_CLIENT_SECRET: ""
      DISABLE_COLLECTSTATIC: 1
      DOCKERIZED: 1
    depends_on:
      - db
      - redis
      - minio

  worker:
    container_name: plane-worker
    image: makeplane/plane-backend:latest
    restart: always
    command: ./bin/worker
    environment:
      DATABASE_URL: postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:5432/${PGDATABASE}
      REDIS_URL: redis://${REDIS_HOST}:6379/
      SECRET_KEY: ${SECRET_KEY}
      AWS_REGION: ${AWS_REGION}
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_S3_ENDPOINT_URL: ${AWS_S3_ENDPOINT_URL}
      AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME}
      FILE_SIZE_LIMIT: 5242880
      WEB_URL: ${WEB_URL}
      DOCKERIZED: 1
    depends_on:
      - api
      - db
      - redis
      - minio

  beat:
    container_name: plane-beat
    image: makeplane/plane-backend:latest
    restart: always
    command: ./bin/beat
    environment:
      DATABASE_URL: postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:5432/${PGDATABASE}
      REDIS_URL: redis://${REDIS_HOST}:6379/
      SECRET_KEY: ${SECRET_KEY}
      AWS_REGION: ${AWS_REGION}
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_S3_ENDPOINT_URL: ${AWS_S3_ENDPOINT_URL}
      AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME}
      FILE_SIZE_LIMIT: 5242880
      WEB_URL: ${WEB_URL}
      DOCKERIZED: 1
    depends_on:
      - api
      - db
      - redis
      - minio

  migrator:
    container_name: plane-migrator
    image: makeplane/plane-backend:latest
    restart: no
    command: ./bin/migrate
    environment:
      DATABASE_URL: postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:5432/${PGDATABASE}
      REDIS_URL: redis://${REDIS_HOST}:6379/
      SECRET_KEY: ${SECRET_KEY}
      AWS_REGION: ${AWS_REGION}
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_S3_ENDPOINT_URL: ${AWS_S3_ENDPOINT_URL}
      AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME}
      DOCKERIZED: 1
    depends_on:
      - db
      - redis
      - minio

  proxy:
    container_name: plane-proxy
    image: makeplane/plane-proxy:latest
    restart: always
    ports:
      - ${APP_PORT:-80}:80
    environment:
      FILE_SIZE_LIMIT: 5242880
      BUCKET_NAME: ${AWS_S3_BUCKET_NAME}
    depends_on:
      - web
      - api

  db:
    container_name: plane-db
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_USER: ${PGUSER}
      POSTGRES_DB: ${PGDATABASE}
      POSTGRES_PASSWORD: ${PGPASSWORD}
      PGDATA: /var/lib/postgresql/data
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

  redis:
    container_name: plane-redis
    image: redis:7-alpine
    restart: always
    volumes:
      - ./data/redis:/data

  minio:
    container_name: plane-minio
    image: minio/minio
    restart: always
    command: server /data --console-address ":9090"
    environment:
      MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID}
      MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY}
    volumes:
      - ./data/minio:/data

.env

# General Configuration
WEB_URL=http://localhost
NEXT_PUBLIC_API_BASE_URL=http://localhost/api
APP_PORT=80

# Database Configuration
PGHOST=db
PGDATABASE=plane
PGUSER=plane
PGPASSWORD=your_secure_postgres_password

# Redis Configuration
REDIS_HOST=redis

# Application Secrets
SECRET_KEY=your_generated_64_char_secret_key

# MinIO / AWS S3 Configuration
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=minio_access_key
AWS_SECRET_ACCESS_KEY=minio_secret_key
AWS_S3_ENDPOINT_URL=http://minio:9000
AWS_S3_BUCKET_NAME=uploads

Share:

Ad
Favicon

 

  
 

Similar to Plane

Favicon

 

  
  
Favicon

 

  
  
Favicon