Гид по технологиям

Установка Focalboard с Nginx на Ubuntu 20.04

• 5 min read • DevOps • Обновлено 27 Nov 2025
Focalboard на Ubuntu 20.04 — установка с Nginx
Focalboard на Ubuntu 20.04 — установка с Nginx

Что такое Focalboard

Focalboard — это бесплатное, с открытым исходным кодом и самохостящееся приложение для управления проектами. Оно заменяет или дополняет такие инструменты, как Trello, Notion и Asana, и работает на серверах с Ubuntu, Debian и другими Linux‑системами.

Ключевые возможности

  • Перетаскивание карточек
  • Гибкое управление карточками и правами
  • Импорт и экспорт досок
  • Поддержка нескольких языков
  • Фильтры по статусу, срокам и другим полям

Важно: перед началом убедитесь, что доменное имя указывает на ваш сервер и у вас есть root-доступ или пользователь с sudo.

Предварительные требования

  • Сервер с Ubuntu 20.04
  • Домен, указывающий на IP сервера
  • Доступ root или пользователь с sudo

План работ

  1. Установить PostgreSQL
  2. Сконфигурировать базу и пользователя
  3. Скачать и установить Focalboard
  4. Создать unit для systemd
  5. Настроить Nginx как обратный прокси
  6. Получить SSL через Certbot
  7. Тестирование и безопасность

Установка и настройка 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 не может получить верификацию

Рекомендации по бэст‑практикам и альтернативы

Альтернативы

  • Если нужна интеграция с большими экосистемами: рассмотреть 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: Восстановление из последней резервной копии

Небольшой план обновления и миграции

  1. Снятие бэкапа базы и каталога /opt/focalboard
  2. Остановка сервиса systemctl stop focalboard
  3. Замена бинарников и конфигураций
  4. Запуск и тестирование
  5. Откат при ошибке: восстановление дампа и файлов

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. Следите за обновлениями, делайте регулярные бэкапы и ограничьте прямой доступ к внутренним портам.

Ключевые действия после установки

  • Настройте автоматическое обновление сертификатов
  • Настройте мониторинг и бэкапы
  • Проверьте права доступа к базе данных

Если понадобятся дополнительные инструкции по автоматизации, мониторингу или интеграциям, задайте вопрос.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро