Введение
Planka — это self-hosted решение для управления проектами с открытым исходным кодом. Приложение позволяет легко управлять проектами, досками, списками, карточками, метками и задачами. Вы можете добавлять участников, отслеживать время, устанавливать срок, добавлять вложения и писать комментарии. Платформа также поддерживает использование markdown формата записей в описаниях карт и комментариях. Некоторым это может напомнить Trello, и это, по сути, и есть Planka!
![](https://i0.wp.com/raw.githubusercontent.com/plankanban/planka/master/demo.gif?w=900&ssl=1)
Planka позволяет сортировать данные по участникам и меткам, что может быть очень полезно при управлении сложными проектами. Внешний вид можно настроить, выбрав предпочитаемый фон проекта, что добавит индивидуальности вашим проектам.
![](https://i0.wp.com/iamninja.ru/wp-content/uploads/2023/10/planka1.png?resize=900%2C510&ssl=1)
Установка
Если вы хотите начать использовать Planka, вам необходимо использовать удобный метод установки, указанный на сайте. Я использую вариант — docker-compose.
Создаём каталог для хранения compose файла:
mkdir /opt/planka
Скачиваем docker-compose.yml файл:
curl -L https://raw.githubusercontent.com/plankanban/planka/master/docker-compose.yml -o /opt/planka/docker-compose.yml
Генерируем секретный ключ:
openssl rand -hex 64
Переходим в каталог, редактируем compose файл, вставляем секретный ключ, изменяем BASE_URL на реальный адрес сайта с доской и раскомментируем поля DEFAULTADMIN:
cd /opt/planka
nano docker-compose.yml
Примерное содержимое вашего compopse файла:
version: '3'
services:
planka:
image: ghcr.io/plankanban/planka:latest
command: >
bash -c
"for i in `seq 1 30`; do
./start.sh &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 seconds...\";
sleep 5;
done; (exit $$s)"
restart: unless-stopped
volumes:
- user-avatars:/app/public/user-avatars
- project-background-images:/app/public/project-background-images
- attachments:/app/private/attachments
ports:
- 3005:1337
environment:
- BASE_URL=https://todo.iamninja.ru
- DATABASE_URL=postgresql://postgres@postgres/planka
- SECRET_KEY=3ba713382e5135014b3d9ccb661a1a5492c9946fd807af83377c31a942f121d23f6a8917eda0803b7a1eb735d944434aaa7b5ce9849bcb9f1d582a50d5715193
- 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=demo@demo.demo # Do not remove if you want to prevent this user from being edited/deleted
- DEFAULT_ADMIN_PASSWORD=demo
- DEFAULT_ADMIN_NAME=Demo Demo
- DEFAULT_ADMIN_USERNAME=demo
# - OIDC_ISSUER=
# - OIDC_CLIENT_ID=
# - OIDC_CLIENT_SECRET=
# - OIDC_SCOPES=openid email profile
# - OIDC_ADMIN_ROLES=admin
# - OIDC_ROLES_ATTRIBUTE=groups
depends_on:
- postgres
postgres:
image: postgres:14-alpine
restart: unless-stopped
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=planka
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
user-avatars:
project-background-images:
attachments:
db-data:
Пуллим образ и запускаем сервис:
docker-compose up -d
Настроить проксирование:
nano /etc/apache2/site-available/todo.iamninja.ru.conf
<VirtualHost *:80>
ServerName todo.iamninja.ru
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:3005/$1 [P,L]
SSLProxyEngine on
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /.well-known !
ProxyPassReverse /.well-known !
ProxyPass /robots.txt !
ProxyPassReverse /robots.txt !
ProxyPass / http://localhost:3005/
ProxyPassReverse / http://localhost:3005/
</VirtualHost>
Включаем сайт и перезапускаем Apache:
a2ensite /etc/apache2/site-available/todo.iamninja.ru.conf
systemctl reload apache2.service
Далее нужно получить сертификат SSL через Let’s encrypt, я использую Apache2:
certbot --apache
Certbot сгенерирует сертификат SSL, создаст конфиг файл для https соединения — todo.iamninja.ru-le-ssl.conf и внесёт необходимые правила для редиректа с http на https в файл — todo.iamninja.ru.conf.
Результат
![](https://i0.wp.com/iamninja.ru/wp-content/uploads/2023/10/planka2.png?resize=900%2C535&ssl=1)
Можно заходить под демо учётными данными, сразу создаём нового пользователя, перелогиниваемся, убираем пользователю demo, админ права и отключаем его в compose файле. Перезапускаем контейнер. Радуемся новой упорядоченной и легко управляемой раблочей атмосфере!
good!!!