Установка Focalboard с Nginx на Ubuntu 20.04
Что такое Focalboard
Focalboard — это бесплатное, с открытым исходным кодом и самохостящееся приложение для управления проектами. Оно заменяет или дополняет такие инструменты, как Trello, Notion и Asana, и работает на серверах с Ubuntu, Debian и другими Linux‑системами.
Ключевые возможности
- Перетаскивание карточек
- Гибкое управление карточками и правами
- Импорт и экспорт досок
- Поддержка нескольких языков
- Фильтры по статусу, срокам и другим полям
Важно: перед началом убедитесь, что доменное имя указывает на ваш сервер и у вас есть root-доступ или пользователь с sudo.
Предварительные требования
- Сервер с Ubuntu 20.04
- Домен, указывающий на IP сервера
- Доступ root или пользователь с sudo
План работ
- Установить PostgreSQL
- Сконфигурировать базу и пользователя
- Скачать и установить Focalboard
- Создать unit для systemd
- Настроить Nginx как обратный прокси
- Получить SSL через Certbot
- Тестирование и безопасность
Установка и настройка PostgreSQL
Focalboard использует PostgreSQL. Установите её и утилиты командой:
apt-get install curl wget gnupg2 -y
apt-get install postgresql postgresql-contrib -yЗатем войдите в оболочку PostgreSQL:
su - postgres
psqlСоздайте базу данных и пользователя (замените пароль на сложный):
CREATE DATABASE focalboards;
CREATE USER focaluser WITH PASSWORD 'password';Выйдите из psql:
\q
exitСовет: используйте уникальный пароль и храните его в менеджере паролей.
Скачивание и установка Focalboard
Скачайте последнюю версию с GitHub и распакуйте архив:
VER=$(curl -s https://api.github.com/repos/mattermost/focalboard/releases/latest|grep tag_name | cut -d '"' -f 4)
wget https://github.com/mattermost/focalboard/releases/download/${VER}/focalboard-server-linux-amd64.tar.gzРаспакуйте и переместите в /opt:
tar -xvzf focalboard-server-linux-amd64.tar.gz
mv focalboard /optОтредактируйте конфигурацию:
nano /opt/focalboard/config.jsonПример настроек подключения к базе — оставьте как указано, но замените пароль при необходимости:
"dbtype": "postgres",
"dbconfig": "postgres://focaluser:password@localhost/focalboards?sslmode=disable&connect_timeout=10",Сохраните файл.
Важно: если вы подключаете удалённую БД, используйте шифрование и ограничьте доступ по IP.
Создание systemd‑службы для Focalboard
Создайте unit файл:
nano /lib/systemd/system/focalboard.serviceВставьте следующую конфигурацию:
[Unit]
Description=Focalboard server
[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/opt/focalboard/bin/focalboard-server
WorkingDirectory=/opt/focalboard
[Install]
WantedBy=multi-user.targetПерезагрузите демон systemd и запустите сервис:
systemctl daemon-reload
systemctl start focalboard
systemctl enable focalboardПроверьте состояние:
systemctl status focalboardПример вывода показывает, что сервер запущен и слушает порты 8000 и 9092.
Проверка прослушиваемых портов:
ss -antpl | grep focalboardВывод должен содержать строки, подобные:
LISTEN 0 4096 *:8000 *:* users:(("focalboard-serv",pid=9608,fd=8))
LISTEN 0 4096 *:9092 *:* users:(("focalboard-serv",pid=9608,fd=9)) Настройка Nginx как обратного прокси
Установите Nginx:
apt-get install nginx -yСоздайте конфигурацию виртуального хоста:
nano /etc/nginx/conf.d/focalboard.confДобавьте конфигурацию (замените server_name на ваш домен):
upstream focalboard {
server localhost:8000;
keepalive 32;
}
server {
listen 80;
server_name focalboard.example.com;
location ~ /ws/* {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 50M;
proxy_set_header Host $http_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;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
client_body_timeout 60;
send_timeout 300;
lingering_timeout 5;
proxy_connect_timeout 1d;
proxy_send_timeout 1d;
proxy_read_timeout 1d;
proxy_pass http://focalboard;
}
location / {
client_max_body_size 50M;
proxy_set_header Connection "";
proxy_set_header Host $http_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;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_cache_revalidate on;
proxy_cache_min_uses 2;
proxy_cache_use_stale timeout;
proxy_cache_lock on;
proxy_http_version 1.1;
proxy_pass http://focalboard;
}
}Проверьте синтаксис и перезапустите Nginx:
nginx -t
systemctl restart nginx
systemctl status nginxЗамечание: при использовании файрвола откройте порты 80 и 443.
Доступ к веб‑интерфейсу
Откройте в браузере http://focalboard.example.com (замените домен). Вас должно перенаправить на страницу входа.

Подпись: Скриншот страницы входа Focalboard.
Нажмите кнопку создания аккаунта и заполните форму регистрации:

Подпись: Страница регистрации администратора Focalboard.
После регистрации вы увидите панель управления:

Подпись: Дашборд Focalboard с примерной рабочей доской.
Примечание: на скриншотах показан пример интерфейса; реальные поля зависят от версии.
Получение SSL с помощью Let’s Encrypt
Установите Certbot для Nginx и получите сертификат:
apt-get install python3-certbot-nginx -y
certbot --nginx -d focalboard.example.comВ процессе введите ваш email и согласитесь с правилами. Выберите автоматическое перенаправление с HTTP на HTTPS, если сайт новый.
После успешного выполнения Certbot сгенерирует ключи в /etc/letsencrypt/live/focalboard.example.com/
Важно: настроьте автоматическое обновление сертификата в cron или systemd timer. Команда проверки обновлений:
certbot renew --dry-runРезервное копирование и восстановление
- Регулярно делайте дамп базы PostgreSQL:
pg_dump -U focaluser -h localhost focalboards > /var/backups/focalboards-$(date +%F).sql- Делайте резервную копию каталога /opt/focalboard (конфигурации, плагины).
- Храните резервные копии вне сервера (облачное хранилище или отдельный NAS).
Критерии приёмки
- Сервис focalboard активен и слушает порт 8000
- Nginx отвечает на запросы по HTTPS для вашего домена
- Успешная регистрация администратора и вход в систему
- Наличие регулярных резервных копий базы и конфигурации
Безопасность и эксплуатация
- Минимизируйте права пользователя БД (используйте отдельного пользователя для Focalboard).
- Используйте брандмауэр (ufw) для ограничения доступа к серверу:
ufw allow 80,443/tcp
ufw enable- Отключите прямой доступ к портам 8000/9092 извне. Доступ только локально через Nginx.
- Обновляйте систему и Focalboard по расписанию.
Отладка и распространённые проблемы
Проблема: Focalboard не стартует
- Проверьте логи systemd: journalctl -u focalboard -b
- Убедитесь, что в config.json корректная строка dbconfig
Проблема: WebSocket не работает
- Проверьте Nginx‑конфигурацию для location /ws/
- Убедитесь, что прокси передаёт заголовки Upgrade и Connection
Проблема: Certbot не может получить верификацию
- Проверьте доступность http://your-domain/.well-known/acme-challenge/
- Временно отключите правила, блокирующие запросы от Let’s Encrypt
Рекомендации по бэст‑практикам и альтернативы
Альтернативы
- Если нужна интеграция с большими экосистемами: рассмотреть Mattermost с плагином Focalboard или SaaS‑решения.
- Для лёгкой доски внутри корпоративной сети можно использовать Traefik вместо Nginx.
Характеристики развертывания
- Лёгкий сценарий: VPS с 1 CPU и 1–2 ГБ RAM для небольшой команды
- Производство: 2+ CPU и 4+ ГБ RAM, отдельная БД, мониторинг и бэкапы
Роль‑ориентированные чеклисты
Администратор сервера
- Настроил DNS и брандмауэр
- Установил и настроил PostgreSQL
- Настроил Certbot и SSL
- Настроил мониторинг сервисов
DevOps инженер
- Автоматизировал развёртывание systemd unit и конфигурации Nginx
- Настроил CI/CD для обновлений и тестов
- Настроил резервное копирование и тест восстановления
Пользователь приложения
- Зарегистрировался и создал первую рабочую доску
- Ознакомился с правами доступа и экспортом данных
Тесты и критерии приёмки
- Проверка 1: HTTP -> перенаправление на HTTPS
- Проверка 2: Авторизация администратора успешна
- Проверка 3: Создание, редактирование и перемещение карточки успешно
- Проверка 4: Восстановление из последней резервной копии
Небольшой план обновления и миграции
- Снятие бэкапа базы и каталога /opt/focalboard
- Остановка сервиса systemctl stop focalboard
- Замена бинарников и конфигураций
- Запуск и тестирование
- Откат при ошибке: восстановление дампа и файлов
Mermaid диаграмма для быстрой диагностики проблем
flowchart TD
A[Проблема с доступом] --> B{Проверить DNS}
B -- OK --> C{Nginx отвечает}
B -- Нет --> D[Исправить DNS]
C -- OK --> E{Focalboard слушает 8000}
C -- Нет --> F[Проверить /var/log/nginx/error.log]
E -- Нет --> G[Проверить systemctl status focalboard]
E -- OK --> H[Проверить WebSocket /ws/]Заключение
Поздравляем — вы развернули Focalboard за Nginx на Ubuntu 20.04 и защитили доступ с помощью Let’s Encrypt. Следите за обновлениями, делайте регулярные бэкапы и ограничьте прямой доступ к внутренним портам.
Ключевые действия после установки
- Настройте автоматическое обновление сертификатов
- Настройте мониторинг и бэкапы
- Проверьте права доступа к базе данных
Если понадобятся дополнительные инструкции по автоматизации, мониторингу или интеграциям, задайте вопрос.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента