проект-менеджер vikunja
Встала тут задача - забабахать проект-менеджер.
Чтобы для нескольких пользователей. Уточнение - для сильно мобильных пользователей)
Сформулируем условия выбора:
- Бесплатное (оно же - свободное; желательно, open-source)
- Возможность устанавливать на свой сервер ( self-hosted )
- Наличие мобильных приложений - обязательно! ( android, ios )
- Наличие web-клиента (желательно)
Немного погуглив были выбраны два варианта - vikunja и OpenProject.
Прочитав внимательнее технические подробности было решено остановиться на vikunja - в силу бОльшей развитости как раз мобильных приложений: в vikunja мобильное приложение является полноценным инструментом - можно полноценно управлять проектами (создавать, добавлять и т.д.) Тогда как мобильные приложения в OpenProject - больше для просмотра (судя по описанию, как минимум)
А поводом написания статьи явилось отсутвие вменяемой статьи по установке серверной части vikunja. Вроде и для докера есть, и так, и сяк.. Но за три дня по инструкциям "на скорую руку" не получилось установить! Даже докер-вариант!!
Итак, погнали.
ОС - Ubuntu 22.04
Soft - vikunja v 2.2.0 ( self-hosted ) оф.сайт: vikunja.io
Шаг 0: Подготовка сервера
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget unzip gpg openssl curl
Создайте пользователя для сервиса (рекомендуется для безопасности):
sudo useradd -r -s /bin/false vikunja
sudo mkdir -p /opt/vikunja /var/lib/vikunja
sudo chown vikunja:vikunja /opt/vikunja /var/lib/vikunja
Шаг 1: Скачивание и проверка подписи
Перейдите на страницу скачивания:
https://dl.vikunja.io/vikunja/v2.2.0/
Скачайте два файла:
vikunja-v2.2.0-linux-amd64-full.zip
vikunja-v2.2.0-linux-amd64-full.zip.sig
cd /tmp
wget https://dl.vikunja.io/vikunja/v2.2.0/vikunja-v2.2.0-linux-amd64-full.zip
wget https://dl.vikunja.io/vikunja/v2.2.0/vikunja-v2.2.0-linux-amd64-full.zip.sig
Проверка GPG-подписи (обязательно!):
gpg --keyserver keyserver.ubuntu.com --recv FF054DACD908493A
gpg --verify vikunja-v2.2.0-linux-amd64-full.zip.sig vikunja-v2.2.0-linux-amd64-full.zip
Должно быть: Good signature from "Kolaente
Шаг 2: Установка бинарника
sudo mkdir -p /opt/vikunja
sudo unzip vikunja-v2.2.0-linux-amd64-full.zip -d /opt/vikunja
sudo chmod +x /opt/vikunja/vikunja-v2.2.0-linux-amd64
sudo ln -s /opt/vikunja/vikunja-v2.2.0-linux-amd64 /usr/bin/vikunja
sudo chown -R vikunja:vikunja /opt/vikunja
Шаг 3: Создание конфигурации /etc/vikunja/config.yml
sudo mkdir -p /etc/vikunja
sudo nano /etc/vikunja/config.yml
Минимальный рабочий конфиг (SQLite — для начала идеально):
service:
publicurl: http://ВАШ_IP:3456 # ← ОБЯЗАТЕЛЬНО измените! (или https://domain.com)
rootpath: /var/lib/vikunja
interface: ":3456"
enableregistration: true # false — если не хотите открытую регистрацию
JWTSecret: "ВАШ_СЛУЧАЙНЫЙ_СЕКРЕТ" # минимум 32 символа!
database:
type: sqlite
path: /var/lib/vikunja/vikunja.db
cors:
enable: true
origins:
- http://ВАШ_IP:3456
- https://ВАШ_ДОМЕН.com
Генерация JWTSecret:
openssl rand -hex 32
Вставьте результат вместо ВАШ_СЛУЧАЙНЫЙ_СЕКРЕТ.
Для PostgreSQL (рекомендуется в продакшене):
Сначала установите БД:
sudo apt install -y postgresql
sudo -u postgres psql -c "CREATE USER vikunja WITH PASSWORD 'СИЛЬНЫЙ_ПАРОЛЬ';"
sudo -u postgres psql -c "CREATE DATABASE vikunja OWNER vikunja;"
Затем в config.yml замените блок database:
database:
type: postgres
host: localhost
port: 5432
database: vikunja
user: vikunja
password: СИЛЬНЫЙ_ПАРОЛЬ
sslmode: disable
Права:
sudo chown vikunja:vikunja /etc/vikunja/config.yml
sudo chmod 600 /etc/vikunja/config.yml
Шаг 4: systemd-сервис
sudo nano /etc/systemd/system/vikunja.service
Вставляем туда:
[Unit]
Description=Vikunja
After=network.target
[Service]
Type=simple
User=vikunja
Group=vikunja
WorkingDirectory=/opt/vikunja
ExecStart=/usr/bin/vikunja
Restart=always
RestartSec=2s
Environment=VIKUNJA_CONFIG=/etc/vikunja/config.yml
[Install]
WantedBy=multi-user.target
Активируем:
sudo systemctl daemon-reload
sudo systemctl enable vikunja
sudo systemctl start vikunja
sudo systemctl status vikunja # должно быть active (running)
Посмотреть логи можно командой: journalctl -u vikunja -f
Шаг 5: Открываем порты и проверяем
sudo ufw allow 3456/tcp # по умолчанию порт - 3456
sudo ufw reload
Откройте в браузере: http://ВАШ_IP:3456
Вы должны увидеть страницу регистрации. Создайте первого пользователя.
Шаг 6: Продакшен-режим (рекомендуется) — Nginx + HTTPS (Let’s Encrypt)
Ремарка: настройка домена, DNS и т.д. - не описана. Предположим, что все есть;)
sudo apt install -y nginx
sudo apt install -y python3-certbot-nginx # или snap install certbot
Создайте конфиг для nginx:
sudo nano /etc/nginx/sites-available/vikunja
и вставляем туда:
server {
listen 80;
server_name vikunja.ваш-домен.ru; # ← ваш домен!
location / {
proxy_pass http://127.0.0.1:3456;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Делаем ссылку и проверяем конфигурацию nginx:
sudo ln -s /etc/nginx/sites-available/vikunja /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Получаем SSL:
Примечание: к этому моменту домен/поддомен, dns и остальные настройки уже должны быть! сертификат делается на домен, поэтому, если домен не будет настроен сертификат установить не получится.
sudo certbot --nginx -d vikunja.ваш-домен.ru
В config.yml поменяйте publicurl: https://vikunja.ваш-домен.ru и перезапустите сервис:
sudo systemctl restart vikunja
Дополнительные советы
Обновление: скачайте новую версию → замените бинарник → sudo systemctl restart vikunja.
Бэкапы: /var/lib/vikunja/ + /etc/vikunja/config.yml (см. официальные инструкции по бэкапу).
Отключить регистрацию после первого пользователя: enableregistration: false.
Почта (для сброса пароля): добавьте блок mailer: в config.yml. https://freeserver.su/it/mailer-dlya-vikunja.html
Docker-альтернатива: если хотите проще — используйте официальный compose с https://vikunja.io/install/.
Если что-то не работает — вывод journalctl -u vikunja -n 100 и содержимое config.yml.
Плюхи:
service:
enableemailreminders: true # напоминания о задачах по email
# Если хотите, чтобы новые пользователи подтверждали email
service:
enableregistration: true
requireemailconfirmation: true # ← добавьте эту строку

