Blog → Task trackers and processes

How to Self-Host Plane with Docker in Kazakhstan: Production Guide

How to install Plane with Docker on a server in Kazakhstan: requirements, Community and Commercial install commands, plane.env variables, first login, PostgreSQL and file backups, upgrades and common issues.

In short, in plain words
  • You can install Plane on your own server in Kazakhstan in one evening, but running it long-term takes a few more steps: change the default passwords, connect a domain and email, and set up backups and updates.
  • A guide for engineers and team leads deploying Plane with a local hosting provider or on the company's internal network.
  • The key thing is data: database and file backups must run on a schedule and be stored at another location; otherwise a server failure will wipe out everything, backups included.
  • First step: decide which edition to install: the free Community Edition, or Commercial if you will soon need single sign-on and advanced permissions.

New to the topic? Start with the basics: What Is a Task Tracker and How to Choose One for Your Team

Plane installs on your own server with Docker in one evening: the setup.sh script for Community Edition or the prime-cli installer for Commercial. A production installation needs a few more steps, without which the system will not survive its first incident: replace the default passwords in plane.env, set up a domain and SMTP, automate database and file backups, and rehearse an upgrade.

This guide is for DevOps engineers, system administrators and team leads in Kazakhstan who are deploying Plane on a virtual machine with a local hosting provider or inside their own perimeter. All commands are taken from Plane’s official documentation as of October 2026. Check the current version of the documentation before installing: scripts and menu options change from release to release.

Community or Commercial: which to install

Plane has three self-hosted editions. Community Edition is open source under AGPL-3.0, free, and matches the Free cloud plan in features. Commercial is a closed-source edition with full feature parity with the cloud: it starts on a free plan with 12 seats per workspace, and paid features are enabled with a license key. Airgapped is a version of Commercial for networks without internet access.

An important detail: to move to a paid plan, you first need to switch to Commercial Edition. If you are fairly sure you will need SSO or advanced permissions within six months, it makes sense to install Commercial from the start. A detailed comparison of editions and a cost calculation are in our article on which Plane edition to choose.

Plane can also be installed on Kubernetes. That makes sense if the company already has a cluster and a team that maintains it. This guide covers Docker Compose on a single virtual machine: such an installation is enough for most small and mid-sized teams, and one engineer can maintain it.

Server requirements and preparation

Parameter Documented minimum What we recommend for production
CPU 2 cores, x64 or ARM64 4 cores for teams of 25+ people
RAM 4 GB 8 GB, as Plane recommends
OS Ubuntu, Debian, CentOS, Amazon Linux, macOS, Windows with WSL2 An LTS version of Ubuntu or Debian
Docker A recent version of Docker Compose Docker Engine from the official script
Network Ports 80 and 443 Domain, TLS, unnecessary ports closed
Disk — Headroom for attachments and local backups, a separate volume for data

Before installing, prepare:

  1. A virtual machine with a hosting provider in Kazakhstan or in your own data center.
  2. A domain or subdomain, for example tasks.company.kz, with an A record pointing to the server.
  3. SSH access as root or as a user with sudo.
  4. SMTP for notifications: corporate email or an email service.
  5. A place to store backup copies outside this server.

Kazakhstan context. On a server with a Kazakhstani hosting provider, data is stored in the country, and you pay in tenge under a contract. Keep in mind that installation and upgrades download scripts from GitHub and images from Docker registries. If the security team blocks the server’s internet access, the standard installation will not work: you need the Airgapped edition with updates from your own registry.

Installation

Community Edition via setup.sh

Install Docker if you do not have it yet:

curl -fsSL https://get.docker.com | sh -

Create an installation folder and download the script:

mkdir plane-selfhost
cd plane-selfhost
curl -fsSL -o setup.sh https://github.com/makeplane/plane/releases/latest/download/setup.sh
chmod +x setup.sh
./setup.sh

The script shows a menu: Install, Start, Stop, Restart, Upgrade, View Logs, Backup Data, Exit. Choose 1 (Install). The script creates a plane-app folder and downloads docker-compose.yaml and plane.env into it. Then exit the menu, edit plane.env (see the next section), run ./setup.sh again and choose 2 (Start).

Commercial Edition via prime-cli

Connect to the server as root or a sudo user and run the installer:

curl -fsSL https://prime.plane.so/install/ | sh -

The installer asks for a domain in domain.tld or subdomain.domain.tld format and offers a mode. Express installs the default configuration. Advanced lets you specify an external database, Redis and file storage, and the documentation strongly recommends it for production. After the successful installation message, activate your license key if you bought a paid plan.

Configuring plane.env

In Community Edition, you need to go through plane.env before the first launch. Stop the services before each change to the file.

Variable Default What to set
WEB_URL http://localhost The full address, for example https://tasks.company.kz
CORS_ALLOWED_ORIGINS http://localhost The same address as in WEB_URL
APP_DOMAIN localhost Your domain without the protocol
LISTEN_HTTP_PORT, LISTEN_HTTPS_PORT 80, 443 Keep or change if the ports are taken
POSTGRES_PASSWORD plane A long random password
RabbitMQ password (RABBITMQ_*) plane A long random password; check the variable name against your plane.env
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY access-key, secret-key Your own keys for MinIO
SECRET_KEY not set A random string, stored together with backups
FILE_SIZE_LIMIT 5242880 (5 MB) Increase if large files are attached to tasks
DATABASE_URL, REDIS_URL empty Fill in if the database and Redis are external

Two rules. Do not keep the default passwords: they are published in the documentation. And store plane.env in a secrets manager: without it, restoring a database backup is harder.

First login and instance setup

Open the address from WEB_URL. On the “Let’s secure your instance” screen, enter an email and password: according to Plane’s documentation, whoever brings up the instance first becomes its administrator. After that, the /god-mode panel opens.

In the admin panel, do the following in order:

  • Set the instance name and decide whether to keep telemetry.
  • Configure SMTP. The documentation recommends doing this in the interface rather than through the environment file.
  • In the authentication section, disable sign-up without an invitation and enable the login methods you need, including SSO if it is available in your edition.
  • Restrict workspace creation to the administrator only.

Then create a workspace and the first project, and invite the pilot team. If you are moving from Jira, Plane’s importer will transfer tasks, comments, attachments, sprints and users. The migration plan is covered in our article on migrating from Jira to Plane.

PostgreSQL and file backups

Plane consists of several containers. Not all of them need backups, but losing any of the three data stores is painful.

Component Responsible for What to back up
plane-db (PostgreSQL) Tasks, projects, users, comments, pages Mandatory, daily
plane-minio (file storage) Attachments, images, files in descriptions Mandatory, together with the database
plane-redis Cache and service data Included in the built-in backup, lower criticality
plane-mq (RabbitMQ) Background job queue Not required
api, worker, beat-worker Backend and scheduled background jobs Not required, restored from images
web, space, admin, live Interface, public pages, admin panel, real-time collaboration Not required
proxy Incoming requests and TLS Not required, but store certificates separately if you use your own TLS setup
plane.env Configuration and secrets Mandatory, manually

In Community Edition, run ./setup.sh and choose 7 (Backup Data). The script saves pgdata.tar.gz, redisdata.tar.gz and uploads.tar.gz to the plane-app/backup/<timestamp> folder. For restoring, the documentation provides a separate script:

curl -fsSL -o restore.sh https://raw.githubusercontent.com/makeplane/plane/refs/heads/preview/deployments/cli/community/restore.sh
chmod +x restore.sh
./restore.sh <folder with *.tar.gz archives>
./setup.sh start

Before restoring, Plane must be installed, started and then stopped.

In Commercial, backups are made with sudo prime-cli backup, and archives are stored in /opt/plane/backups by default. To restore, use sudo prime-cli restore; it overwrites the current data, so first make sure you have selected the right archive. In both editions, copy the plane.env file (in Commercial it is in /opt/plane) manually.

Remember that a backup on the same server does not protect against losing the server itself. If the hosting provider’s disk fails or the virtual machine is deleted by mistake, the local archive folder will disappear along with the data.

What the built-in scripts lack and you need to add yourself: scheduled runs via cron, copying archives to another location, and testing a restore on a separate machine at least once a quarter.

Upgrades and monitoring

The Community Edition upgrade procedure:

  1. Make a backup.
  2. Download the latest setup.sh with the same command used for installation.
  3. Run ./setup.sh and choose 5 (Upgrade).
  4. Compare variables-upgrade.env with your plane.env and move over any new variables. The script does not overwrite plane.env itself.
  5. Start the services with option 2 (Start) and check login, task creation and file upload.

These instructions apply to versions 0.14.0 and later. Older versions first need a separate upgrade to 0.14.0. In Commercial, upgrades take two commands: sudo prime-cli update-cli and sudo prime-cli upgrade.

A simple set is enough for monitoring: an external availability check of the address from WEB_URL, an alert on disk and memory usage, and a daily check that a fresh backup has appeared. View service logs with option 6 (View Logs) in the setup.sh menu.

Common issues

  • Login does not work or requests fail with CORS errors. Check that WEB_URL, CORS_ALLOWED_ORIGINS and APP_DOMAIN point to the same address with the correct protocol.
  • Services do not start. Often ports 80 or 443 are already taken by another web server. Free them up or change LISTEN_HTTP_PORT and LISTEN_HTTPS_PORT.
  • Emails do not arrive. SMTP is not configured in /god-mode, or the hosting provider blocks outgoing mail ports.
  • Attachments do not upload. The file is larger than FILE_SIZE_LIMIT, or the MinIO keys are set incorrectly.
  • Something broke after an upgrade. New variables from variables-upgrade.env were not moved over. Compare the files and restart.
  • The system is slow. There is less than the recommended 8 GB of RAM, and the team has grown. Add resources or move the database to a separate server.

How we do it

We do not start with installation. First comes a diagnostic: how many people will use Plane, which edition is needed, where the server will be and who will own it. Then we install Plane on a server in Kazakhstan, replace the secrets, and set up TLS, SMTP, SSO, scheduled backups with a copy at another location, and monitoring. We run a pilot with one team and only after it move the others over.

Details are on our Jira and Plane task tracker implementation page. You can also order server maintenance there if you do not have your own DevOps engineer.


Sources. Official Plane documentation (Docker Compose installation, environment variables, backup and restore, upgrades, admin panel, editions) and the project repository on GitHub. Data as of October 2026.

Terms in plain words

Docker and Docker Compose
A way to run software in ready-made isolated 'containers'. Compose brings up all parts of Plane with one command on one server, so a single engineer can maintain the installation.
Self-hosted
Software that a company installs on its own server instead of using the vendor's cloud. The data stays with you, but installation, backups and updates are also on you.
AGPL-3.0
The open source license under which Community Edition is released. It allows you to install and use Plane yourself for free; if you modify the code and provide network access to it, you must publish the changes.
Airgapped
A Plane edition for networks completely cut off from the internet. It is needed when the security team forbids the server from reaching outside; updates then come from the company's own image registry.
SMTP
The protocol for sending email. Plane uses it to send notifications and invitations; without SMTP configured, employees will not receive emails.
SSO (Single Sign-On)
Single sign-on: an employee logs into Plane with the same account they use for other corporate systems. In Plane, this feature is available in the paid Commercial plans.
plane.env
Plane's settings file: site address, database and storage passwords, secret key. It must be filled in before launch and stored separately; otherwise restoring a backup is harder.
PostgreSQL backup
A backup copy of Plane's main database, which holds tasks, projects, users and comments. It is made daily together with a copy of attachments and verified with a test restore.

FAQ

Quick answers

What are Plane's server requirements?

According to Plane's documentation, the minimum is 2 CPU cores (x64 or ARM64) and 4 GB of RAM, with 8 GB recommended for production. Supported systems include Ubuntu, Debian, CentOS, Amazon Linux, macOS and Windows via WSL2. You need a recent version of Docker Compose.

How do I install Plane Community Edition with Docker?

Install Docker, download the setup.sh script from Plane's GitHub releases, run it and choose option 1 (Install). The script creates a plane-app folder with docker-compose.yaml and plane.env. Edit plane.env, run setup.sh again and choose option 2 (Start).

How is installing Commercial different from Community?

Commercial is installed with a single command via the prime.plane.so installer and managed with the prime-cli utility. The installer offers an Express mode with default settings and an Advanced mode with an external database, Redis and storage. Commercial starts on a free plan with 12 seats per workspace, and paid features are enabled with a license key.

How do I back up Plane?

In Community Edition, run setup.sh and choose option 7 (Backup Data): the script saves PostgreSQL, Redis and uploaded file archives to a timestamped backup folder. Commercial uses the sudo prime-cli backup command. In both editions, copy the plane.env file manually.

How do I upgrade Plane installed with Docker?

Make a backup, download the latest setup.sh and choose option 5 (Upgrade). The plane.env file is not overwritten, but new variables will appear in variables-upgrade.env, and you need to move them over manually. In Commercial, upgrades are done with sudo prime-cli update-cli and sudo prime-cli upgrade.

Where is the Plane admin panel after installation?

The instance admin panel is available at /god-mode. Whoever completes the instance security step first becomes the administrator. That is where you configure SMTP, login methods, disabling self-registration and workspace creation.

Can Plane be installed on a server in Kazakhstan?

Yes, Plane runs on any virtual machine with Docker, including those from Kazakhstani hosting providers. This keeps data in the country. For networks without internet access, there is a separate Airgapped edition.

Related services

How Gotomarket helps with this

01

Jira and Plane task tracker implementation in Kazakhstan

Jira, Plane and other task tracker implementation in Kazakhstan: process audit, workflow design, Jira-to-Plane migration, self-hosting on local servers, team training.

About the service
02

Twenty CRM and amoCRM implementation in Kazakhstan

Twenty CRM and amoCRM implementation for IT and B2B companies in Kazakhstan: pipeline, import, self-hosting on local servers, integrations, Plane, Jira and AI.

About the service
03

Business automation and AI in Kazakhstan

Business automation in Kazakhstan: Jira and Plane task trackers, CRM implementation, integrations, AI website bots, employee assistants, Chat with Data and support automation.

About the service

More on the topic

All posts in this section

Bug Tracking: Workflow, Priorities and Fix SLAs

How to set up bug tracking in Plane or Jira: a Bug type with required fields, a short workflow, a severity and priority matrix, fix SLAs, intake from support and Sentry, and team metrics.