Введение
Planka — это self-hosted решение для управления проектами с открытым исходным кодом. Приложение позволяет легко управлять проектами, досками, списками, карточками, метками и задачами. Вы можете добавлять участников, отслеживать время, устанавливать срок, добавлять вложения и писать комментарии. Платформа также поддерживает использование markdown формата записей в описаниях карт и комментариях. Некоторым это может напомнить Trello, и это, по сути, и есть Planka!
Planka позволяет сортировать данные по участникам и меткам, что может быть очень полезно при управлении сложными проектами. Внешний вид можно настроить, выбрав предпочитаемый фон проекта, что добавит индивидуальности вашим проектам.
Установка
Если вы хотите начать использовать 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.
Результат
Можно заходить под демо учётными данными, сразу создаём нового пользователя, перелогиниваемся, убираем пользователю demo, админ права и отключаем его в compose файле. Перезапускаем контейнер. Радуемся новой упорядоченной и легко управляемой раблочей атмосфере!
good!!!