Установка Wekan (Trello-подобный Kanban) на Ubuntu 16.04
Wekan — открытая реализация Kanban-панели, похожая на Trello. В статье показана пошаговая установка Wekan на Ubuntu 16.04 с MongoDB 3.2, запуском как системного сервиса и настройкой Nginx как обратного прокси. Также приведены контрольные списки, рекомендации по безопасности и способы устранения неполадок.
Important: этот материал ориентирован на Ubuntu 16.04 и указанные версии ПО. Обновления версий требуют адаптации команд и конфигураций.
Введение
Wekan — это веб-приложение для совместной работы в формате доски Kanban. Оно основано на фреймворке Meteor и использует Node.js и MongoDB. Пользователям достаточно зарегистрироваться или пригласить участников, чтобы создавать карточки задач и назначать исполнителей.
В этой инструкции мы последовательно установим Wekan на Ubuntu 16.04, настроим MongoDB с авторизацией, запустим приложение как systemd-сервис и настроим Nginx как обратный прокси. Также приведём разделы по отладке, безопасности и альтернативным способам развертывания.
Что понадобится
- Сервер с Ubuntu 16.04
- Права root или sudo
- Доступ к интернету на сервере
Краткие требования по версиям:
- Node.js: 4.8 (в примере — через nvm)
- MongoDB: 3.2.x
- Порт приложения по умолчанию: 8000
- Nginx: любой стабильный релиз из репозитория Ubuntu
Что мы сделаем
- Обновим систему
- Установим Node.js с помощью nvm
- Установим и настроим MongoDB с авторизацией
- Скачаем и установим Wekan
- Запустим Wekan как systemd-сервис
- Настроим Nginx как обратный прокси
- Протестируем и активируем первого пользователя
Предупреждение
Важно: используйте надёжные пароли и, если приложение будет общедоступным, настройте HTTPS (строго рекомендуется). Способ с Nginx позволяет легко добавить SSL через Let’s Encrypt.
Шаг 1 — Обновление системы
Подключитесь к серверу по SSH:
ssh [email protected]Обновите списки пакетов и установите обновления:
sudo apt update
sudo apt upgrade -yШаг 2 — Установка Node.js (через nvm)
Wekan — Node.js-приложение. В этом примере используем Node Version Manager (nvm), чтобы получить Node.js v4.8.
Создайте системного пользователя для запуска приложения. Это ограничит права процесса.
useradd -m -s /bin/bash wekan
passwd wekanВойдите под пользователем wekan и установите nvm:
su - wekan
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
source ~/.bashrc
command -v nvm
nvm --versionУстановите Node.js 4.8 и переключитесь на него:
nvm install v4.8
nvm use node
node -v
ALT: Снимок терминала с подтверждением установки Node.js и nvm — команды и версии.
Шаг 3 — Установка и настройка MongoDB
Wekan требует MongoDB 3.2.x. Добавим официальный репозиторий MongoDB 3.2, установим сервер и включим аутентификацию.
Добавление ключа и репозитория:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt update
sudo apt install -y mongodb-org mongodb-org-server mongodb-org-shell mongodb-org-mongos mongodb-org-toolsЗапустите MongoDB и включите автозапуск:
sudo systemctl start mongod
sudo systemctl enable mongodСоздайте административного пользователя в базе данных MongoDB и включите авторизацию.
Войдите в mongo shell:
mongoВыполните создание пользователя администратора (замените пароли на надёжные):
db.createUser({
user: "admin",
pwd: "MyAdminPassword",
roles: [ { role: "root", db: "admin" } ]
})ALT: Текстовый снимок создания admin-пользователя в mongo shell.
Отредактируйте конфигурационный файл /etc/mongod.conf, чтобы включить авторизацию. В vim добавьте или раскомментируйте секцию security:
vim /etc/mongod.confУбедитесь, что присутствует:
security:
authorization: enabledСохраните изменения и перезапустите MongoDB:
sudo systemctl restart mongodALT: Снимок терминала с перезапуском mongod после изменения конфигурации.
Создайте базу данных wekan и пользователя wekan с правами readWrite:
mongo -u admin -p
// Введите MyAdminPassword при запросе
use wekan
db.createUser({
user: "wekan",
pwd: "WekanPassword",
roles: ["readWrite"]
})ALT: Снимок создания базы wekan и пользователя wekan в mongo shell.
Важно: замените “MyAdminPassword” и “WekanPassword” на уникальные надёжные пароли. Храните их в менеджере паролей.
Шаг 4 — Установка Wekan
Под пользователем wekan скачайте релиз Wekan. В примере используется релиз v0.63; при установке на рабочем сервере проверьте актуальную стабильную версию в репозитории проекта.
su - wekan
wget https://github.com/wekan/wekan/releases/download/v0.63/wekan-0.63.tar.gz
tar xf wekan-0.63.tar.gzПерейдите в каталог сборки и установите зависимости:
cd bundle/programs/server
npm installALT: Снимок терминала с процессом npm install для Wekan.
Настройка переменных окружения (пример):
export MONGO_URL='mongodb://wekan:WekanPassword@127.0.0.1:27017/wekan?authSource=wekan'
export ROOT_URL='http://192.168.33.10/'
export MAIL_URL='smtp://user:password@smtp.example.com:25/'
export MAIL_FROM='[email protected]'
export PORT=8000Запустите приложение вручную для проверки:
cd ~/bundle
node main.jsОткройте в браузере http://192.168.33.10:8000 (замените адрес на ваш). Вы должны увидеть страницу входа Wekan.

ALT: Терминал, где запущен node main.js — сервер Wekan слушает порт 8000.
Шаг 5 — Запуск Wekan как systemd-сервиса
Чтобы Wekan автоматически запускался после рестарта и работал как демон, создадим файл службы systemd и файл окружения.
Под пользователем wekan создайте файл .env в директории bundle:
su - wekan
cd ~/bundle
vim .envВставьте (адаптируйте значения):
MONGO_URL='mongodb://wekan:WekanPassword@127.0.0.1:27017/wekan?authSource=wekan'
ROOT_URL='http://wekan.hakase-labs.co'
MAIL_URL='smtp://user:password@smtp.example.com:25/'
MAIL_FROM='[email protected]'
PORT=8000
HTTP_FORWARDED_COUNT=1Теперь создайте unit-файл для systemd под root:
cd /etc/systemd/system/
vim wekan.serviceСодержимое:
[Unit]
Description=Wekan Server
After=syslog.target
After=network.target
[Service]
Type=simple
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
RestartSec=10
ExecStart=/home/wekan/.nvm/versions/node/v4.8.7/bin/node bundle/main.js
EnvironmentFile=/home/wekan/bundle/.env
ExecReload=/bin/kill -USR1 $MAINPID
User=wekan
Group=wekan
WorkingDirectory=/home/wekan
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Wekan
[Install]
WantedBy=multi-user.targetСохраните и выполните:
sudo systemctl daemon-reload
sudo systemctl start wekan
sudo systemctl enable wekanПроверьте статус службы и порты:
netstat -plntu
systemctl status wekanALT: Лог и статус службы Wekan после старта — демон запущен.
Шаг 6 — Настройка Nginx как обратного прокси
Установите Nginx и настройте виртуальный хост, который будет проксировать запросы к Wekan на localhost:8000.
sudo apt install nginx -yСоздайте конфигурацию сайта:
cd /etc/nginx/sites-available
sudo vim wekanПример конфигурации (адаптируйте server_name):
server {
server_name wekan.hakase-labs.co;
listen 80;
access_log /var/log/nginx/wekan-access.log;
error_log /var/log/nginx/wekan-error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
proxy_pass http://127.0.0.1:8000;
}
}Активируйте сайт и проверьте конфигурацию:
sudo ln -s /etc/nginx/sites-available/wekan /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl enable nginxПроверьте, что Nginx слушает порт 80:
netstat -plntuALT: Логи и вывод netstat — Nginx слушает 80, а Wekan — 8000.
Совет: для публичного сервера настоятельно рекомендуется подключить SSL (Let’s Encrypt). Nginx конфигурацию для HTTPS можно дополнить через certbot.
Шаг 7 — Тестирование и активация первого пользователя
Откройте в браузере URL, соответствующий ROOT_URL, например http://wekan.hakase-labs.co/
Зарегистрируйте пользователя через форму «Register». Иногда при первой регистрации появляется “Internal Server Error” — это ожидаемая ситуация, если учётная запись требует ручной активации.
Активируйте первого пользователя через mongo shell (выполните от root или соответствующего администратора):
mongo -u wekan -p --authenticationDatabase "wekan"
// Введите WekanPassword
use wekan
db.users.update({username:'hakase'},{$set:{isAdmin:true}})После этого зайдите в интерфейс и выполните вход под учётной записью.
ALT: Снимок экрана регистрации и входа в Wekan, затем панель управления.
Критерии приёмки
- Веб-страница Wekan доступна через указанный ROOT_URL
- Сервис wekan запущен и активен в systemd
- MongoDB работает с авторизацией и пользователь wekan имеет права readWrite на базу wekan
- Nginx корректно проксирует запросы на localhost:8000
- Вход под административной учётной записью работает
Контрольный список для продакшн-готовности
- Все пароли заменены на уникальные и надёжные
- Включён HTTPS (Let’s Encrypt или коммерческий сертификат)
- Бэкапы MongoDB настроены и протестированы
- Логи ротации настроены (logrotate для nginx и systemd/journald)
- Фаервол настроен (разрешены только нужные порты)
- Мониторинг сервиса (systemd, процесс Node.js, использование памяти/CPU)
Техническая проверка и отладка — распространённые ошибки и решения
- Wekan не запускается — проверьте логи systemd:
sudo journalctl -u wekan -bПриложение возвращает 500 Internal Server Error при попытке регистрации — проверьте, что подключение к MongoDB корректно и пользователь wekan существует. Также проверьте лог приложения в syslog (или в файле, если настроено логирование).
Nginx отдаёт 502/504 — убедитесь, что Wekan слушает порт 8000 и systemd запущен, проверьте SELinux/AppArmor, если применимо.
Проблемы с почтой — проверьте правильность строки MAIL_URL и доступность SMTP-сервера. Логи приложений и очередь почты в почтовом сервере помогут найти причину.
Невозможность подключиться к MongoDB — проверьте bind_ip в /etc/mongod.conf (должно быть 127.0.0.1 или ваш IP), а также что аутентификация включена и используются правильные учетные данные.
Безопасность и рекомендации
- Всегда включайте авторизацию MongoDB в продакшне.
- Для публичного доступа используйте HTTPS. Let’s Encrypt + certbot позволяет получить валидный сертификат бесплатно.
- Ограничьте доступ к MongoDB только с локального хоста, если Wekan и MongoDB находятся на одной машине.
- Запускайте Wekan под отдельным неправазвым пользователем (как в примере — wekan).
- Настройте бэкап MongoDB (mongodump, репликация или управляемые бэкапы).
- Периодически проверяйте обновления Wekan и зависимостей; применяйте их по тестовой процедуре.
Альтернативные подходы к развёртыванию
- Docker: официальный образ Wekan или сообщество предоставляют Docker-решения — быстрее разворачивать и проще переносить между серверами.
- Snap/пакеты: в зависимости от сообщества Wekan могут быть готовые пакеты.
- Kubernetes: для высокой доступности и масштабирования стоит использовать StatefulSet для MongoDB и Deployment для Wekan с Ingress в роли обратного прокси.
Когда использовать Docker/Kubernetes:
- нужен быстрый rollback и изоляция окружения — Docker
- масштабирование, автоматический перезапуск и мониторинг — Kubernetes
Когда не использовать: если нужна простота и минимальные зависимости — подойдет прямой метод, показанный в этой инструкции.
Мини-методология обновления Wekan
- Сделайте полный бэкап MongoDB (mongodump). 2. Разверните тестовую копию сервиса и прогоните smoke-тесты. 3. Обновите Wekan на тесте. 4. Проведите регрессионное тестирование. 5. Обновите продакшн в окне обслуживания. 6. Мониторьте метрики и логи.
Роли и чек-листы
Администратор сервера:
- Создать пользователя wekan
- Настроить сервис systemd
- Настроить бэкапы и мониторинг
DevOps / инженер развёртывания:
- Настроить CI/CD (если используется)
- Настроить SSL на Nginx
- Контролировать доступы к MongoDB
Администратор приложения:
- Управление пользователями внутри Wekan
- Настройка почтовых шаблонов и уведомлений
Глоссарий (1 строка)
- ROOT_URL — базовый URL приложения.
- MONGO_URL — строка подключения к MongoDB.
- MAIL_URL — строка подключения к SMTP для отправки почты.
- systemd — системный менеджер инициализации в Ubuntu.
Примеры тестов / приёмочные тесты
- Доступность: выполнить HTTP GET на ROOT_URL и ожидать 200 OK.
- Авторизация: регистрация нового пользователя и вход в систему.
- БД: проверка, что документ пользователя сохранён в коллекции users в базе wekan.
- Сервис: systemctl status wekan должен вернуть active (running).
Куда двигаться дальше (Roadmap)
- Настроить HTTPS и HSTS
- Включить мониторинг (Prometheus + Grafana, или Zabbix)
- Настроить бэкапы и тестовые restaurations
- Автоматизировать развертывание (Ansible / Terraform / Docker Compose)
Примеры команд для резервного копирования и восстановления MongoDB
Создать дамп:
mongodump --db wekan --out /var/backups/mongodumps/wekan-$(date +%F)Восстановить дамп:
mongorestore --db wekan /var/backups/mongodumps/wekan-YYYY-MM-DD/wekanЧасто задаваемые вопросы — коротко
Q: Можно ли использовать MongoDB новее 3.2? A: Возможно, но версии Wekan и специфичные сборки могут требовать совместимости. Проверяйте требования выбранного релиза Wekan.
Q: Как получить HTTPS бесплатно? A: Используйте certbot (Let’s Encrypt) и конфигурацию Nginx для автоматического получения и обновления сертификатов.
Q: Что делать при проблеме с памятью Node.js? A: Увеличьте лимит памяти Node, мониторьте использование и оптимизируйте плагины/карточки, используйте swap с осторожностью.
Заключение
В этой инструкции показан полный путь от установки зависимостей до запуска Wekan как системного сервиса и настройки Nginx в роли обратного прокси. Для безопасной и стабильной работы в продакшне следуйте контрольным спискам: включите авторизацию в MongoDB, настройте HTTPS, автоматические бэкапы и мониторинг.
Summary
- Wekan можно установить вручную на Ubuntu 16.04 с Node.js, MongoDB и Nginx.
- Запускать приложение следует под отдельным непользовательским аккаунтом и как systemd-сервис.
- Для публичного доступа обязательно настраивайте HTTPS и бэкапы.
Reference
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента