Vikunja – установка и настройка таск-менеджера

Организация времени и задач – актуальный вопрос, когда необходимо следить за огромным количеством вещей. И уж тем более в бизнесе, при ведении проектов, как совместных, так и собственных, ведь важно не упускать из виду необходимые задачи и отслеживать использованные для этого ресурсы.

В обоих случаях помогают таск-менеджеры наподобие Redmine, Bitrix 24, Trello, Jira и аналогов, как платных, так и бесплатных. Но далеко не всем компаниям необходим их полный функционал. Тут на сцену и выходит Vikunja – легковесное приложение для отслеживания задач с простым и удобным интерфейсом и возможностью интеграции с n8n. Vikunja можно использовать на различных устройствах, включая Android.

В данной статье мы рассмотрим, как установить Vikunja на собственный облачный сервер Beget и начать работу с ним.

Установка Vikunja

В рамках данной статьи мы рассмотрим процесс установки на готовом решении Docker, а также разберем, как настроить работу на собственном домене с Caddy в качестве реверс-прокси для работы по https. При установке будет использоваться база данных PostgreSQL, установка с SQLite и MySQL описана в документации приложения. Команды в статье будут выполняться от имени пользователя root.

Для установки Vikunja подключитесь к серверу по ssh и создайте директорию под конфигурационные файлы и поддиректории данных.

mkdir -p /opt/vikunja/{files,db}

Перейдите в созданную директорию:

cd /opt/vikunja

Создайте файл compose.yml со следующим содержимым:

services:
  vikunja:
    image: vikunja/vikunja
    environment:
      VIKUNJA_SERVICE_PUBLICURL: "${VIKUNJA_SERVICE_PUBLICURL}"
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: "${POSTGRES_PASSWORD}"
      VIKUNJA_DATABASE_TYPE: postgres
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: "${VIKUNJA_SERVICE_JWTSECRET}"
      VIKUNJA_SERVICE_ALLOWICONCHANGES: false
    ports:
      - 3456:3456
    volumes:
      - ./files:/app/vikunja/files
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

  db:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
      POSTGRES_USER: vikunja

    volumes:
      - ./db:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U $$POSTGRES_USER"]
      interval: 2s
      start_period: 30s

После чего создайте файл переменных окружения, поочередно выполнив следующие команды, подставив соответствующие значения:

echo "VIKUNJA_SERVICE_PUBLICURL=http://45.12.18.73" >> .env
echo "POSTGRES_PASSWORD=$(openssl rand -hex 64)" >> .env
echo "VIKUNJA_SERVICE_JWTSECRET=$(openssl rand -hex 64)" >> .env

В результате выполнения команд должен получиться файл с тремя переменными:

cat .env
VIKUNJA_SERVICE_PUBLICURL=http://45.12.18.73
POSTGRES_PASSWORD=a458371ce0de950e757e7f26b37d8caf3dc39601bd1cb9d2010e8fe173da4bfec8a333307f39db2299500a1596cb00dc3fe58ee549298316059adf9276969c5b
VIKUNJA_SERVICE_JWTSECRET=6dcfdbe30f340a5ffb74ef2c978f5cf06574184168e3ea5c705508cf2e27fb1b60f5523164271a209e46735db02092adc339f59c86b1e8cdf8d39dc7c57a9e31

Для загрузки образов контейнеров выполните команду:

docker compose pull

По завершении загрузки запустите контейнеры командой:

docker compose up -d

Сервис будет доступен по адресу http://ip_сервера:3456:

vikunja вход

Первичная настройка

Для начала работы потребуется зарегистрировать аккаунт – нажмите “Create account”, заполните форму и подтвердите создание аккаунта:

vikunja регистрация

После успешной регистрации откроется главная страница приложения:

vikunja главная страница

Отключение самостоятельной регистрации

После регистрации рекомендуется отключить самостоятельную регистрацию на сервере во избежание нежелательных пользователей сервиса. Для этого откройте в удобном вам текстовом редакторе файл compose.yml и добавьте в блок environment сервиса vikunja строку VIKUNJA_SERVICE_ENABLEREGISTRATION: false следующим образом:

services:
  vikunja:
    image: vikunja/vikunja
    environment:
      VIKUNJA_SERVICE_PUBLICURL: "${VIKUNJA_SERVICE_PUBLICURL}"
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: "${POSTGRES_PASSWORD}"
      VIKUNJA_DATABASE_TYPE: postgres
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: "${VIKUNJA_SERVICE_JWTSECRET}"
      VIKUNJA_SERVICE_ALLOWICONCHANGES: false
      VIKUNJA_SERVICE_ENABLEREGISTRATION: false

Затем сохраните файл и пересоздайте контейнеры, последовательно выполнив команды:

docker compose down
docker compose up -d

После отключения регистрации при попытке перехода к странице создания аккаунта будет показано соответствующее сообщение:

vikunja регистрация отключена

Работа с приложением

Vikunja позволяет управлять задачами в различных форматах, самый простой – обычный todo-список. Для добавления задачи введите ее название в поле на главной странице и нажмите “add”:

добавление задачи

После добавления задачи она отобразится в списке с указанием проекта, в который она добавлена:

задача добавлена

Для редактирования задачи нажмите на нее – откроется страница управления задачей:

редактирование задачи

Здесь можно добавить описание задачи, назначить ее на определенного пользователя, добавить теги для сортировки, управлять прогрессом и временем выполнения.

Проекты

Vikunja позволяет организовывать задачи по проектам, упрощая управление ими. По умолчанию создается один проект Inbox, он же назначается для задач по умолчанию. Для перехода к проекту нажмите на его название в левом меню либо перейдите в раздел Projects и нажмите на карточку проекта.

kanban

На странице проекта можно просматривать и добавлять задачи в различных форматах – списком, в виде диаграммы Ганта, в виде таблицы и на Kanban-доске.

В разделе Kanban можно создавать дополнительные бакеты для отслеживания статуса задач – например, создать бакеты для статусов “В работе” и “Готово”:

бакеты задач

Также можно задать лимиты для определенных статусов, к примеру, не больше 3 задач в In Progress, и назначить бакет для выполненных задач (Done bucket).

done bucket

Для создания нового проекта перейдите в раздел Projects и нажмите New Project, в появившемся окне введите желаемое название и, при необходимости, родительский проект, после чего подтвердите создание.

Новый проект

Созданный проект отобразится в списке слева:

список проектов

Добавление реверс-прокси с автоматическим SSL-сертификатом

Для удобства использования Vikunja и защиты передаваемых данных рекомендуется настроить работу на собственном домене на HTTPS-протоколе. Для этого потребуется добавить в существующую конфигурацию реверс-прокси. В рамках данной статьи мы воспользуемся Caddy для решения этой задачи.

Обратите внимание!
Данная статья предполагает, что на сервере нет других реверс-прокси, использующих порты 80/443. Если у вас настроен другой реверс-прокси сервер, поднимать Caddy необязательно – достаточно добавить адрес Vikunja в существующую конфигурацию в соответствии с документацией используемого ПО.

Для настройки реверс-прокси подключитесь к серверу по ssh и перейдите в директорию с конфигурационными файлами.

cd /opt/vikunja

Создайте директорию под конфигурацию Caddy.

mkdir caddyconf

В созданной директории создайте файл с названием Caddyfile со следующим содержимым, заменив todo.betutorial.ru на ваш домен:

todo.betutorial.ru {
    reverse_proxy vikunja:3456
}

В файл compose.yml добавьте блок конфигурации контейнера caddy:

 caddy:
    image: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - vikunja
    volumes:
      - ./caddyconf:/etc/caddy:ro

Итоговый compose.yml будет выглядеть так:

services:
  vikunja:
    image: vikunja/vikunja
    environment:
      VIKUNJA_SERVICE_PUBLICURL: "${VIKUNJA_SERVICE_PUBLICURL}"
      VIKUNJA_DATABASE_HOST: db
      VIKUNJA_DATABASE_PASSWORD: "${POSTGRES_PASSWORD}"
      VIKUNJA_DATABASE_TYPE: postgres
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: "${VIKUNJA_SERVICE_JWTSECRET}"
      VIKUNJA_SERVICE_ALLOWICONCHANGES: false
      VIKUNJA_SERVICE_ENABLEREGISTRATION: false
    ports:
      - 3456:3456
    volumes:
      - ./files:/app/vikunja/files
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

  db:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
      POSTGRES_USER: vikunja

    volumes:
      - ./db:/var/lib/postgresql/data
    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h localhost -U $$POSTGRES_USER"]
      interval: 2s
      start_period: 30s

  caddy:
    image: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - vikunja
    volumes:
      - ./caddyconf:/etc/caddy:ro

Измените значение переменной VIKUNJA_SERVICE_PUBLICURL в .env на https://ваш_домен. Например, для домена todo.betutorial.ru это будет выглядеть так:

VIKUNJA_SERVICE_PUBLICURL=https://todo.betutorial.ru
Обратите внимание!
Перед перезапуском контейнеров убедитесь, что в А-записи выбранного домена указан IP VPS/VDS-сервера. Также, если на сервере установлен firewall (например, ufw), потребуется добавить правила, разрешающие трафик на портах 80 и 443.

Для пересоздания контейнеров последовательно выполните команды:

docker compose down
docker compose up -d

В случае успешной настройки приложение Vikunja будет доступно по указанному в конфигурации caddy домену по протоколу HTTPS.

vikunja страница входа

Если вы ранее открывали порт 3456 для внешнего доступа в настройках firewall, порт можно закрыть.

Заключение

В данной статье мы рассмотрели процесс установки, первичной настройки и начала работы с альтернативой Redmine и Jira – таск-менеджером Vikunja.

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.

0
1196