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

Установка Baikal на Debian 11 с Nginx и HTTPS

• 7 min read • Инструкции • Обновлено 04 Dec 2025
Установка Baikal на Debian 11 с Nginx и HTTPS
Установка Baikal на Debian 11 с Nginx и HTTPS

Baikal — лёгкий сервер CalDAV/CardDAV для синхронизации календарей и адресных книг между устройствами. В этой статье пошагово показано требуемое ПО, настройка пользователя, Nginx, SSL с certbot, первоначальная конфигурация через веб и подключение клиента Thunderbird. В конце есть чеклисты, сценарии отката, рекомендации по безопасности и резервному копированию.

О чём этот материал

  • Полная последовательность установки Baikal на Debian 11 VPS с Nginx и Certbot
  • Исправленные команды и практические пояснения
  • Рекомендации по безопасности, резервному копированию и восстановлению
  • Инструкции по подключению клиента Thunderbird и основные сценарии устранения неполадок

Основные варианты запросов, на которые отвечает статья

  • установка Baikal
  • Baikal CalDAV CardDAV сервер Debian 11
  • настроить Baikal на VPS с Nginx
  • Let’s Encrypt для Baikal

Содержание

  • Требования
  • Установка зависимостей
  • Настройка брандмауэра
  • Конфигурация Nginx
  • Загрузка и распаковка Baikal
  • Включение сайта, перезапуск Nginx, установка SSL
  • Завершение настройки через веб
  • Добавление первого пользователя
  • Подключение Thunderbird
  • Резервное копирование и восстановление
  • Безопасность и жёсткая конфигурация
  • Чеклисты, рунибук и критерии приёмки
  • Часто задаваемые вопросы

Требования

Перед началом подготовьте следующее:

  • Машина, доступная из интернета: домашний сервер с проброшенными портами или VPS
  • Домен, который указывает на эту машину: в примерах используется yetanotherbaikalserver.xyz
  • Права root или sudo для установки пакетов и изменения конфигурации

Эта инструкция ориентирована на Debian 11, но общая логика применима к другим дистрибутивам с небольшими изменениями.

Краткое резюме Droplet DigitalOcean

Установка зависимостей

Создайте отдельного пользователя для деплоя приложения. Это уменьшит риск случайных изменений системных файлов:

sudo useradd -m -s /bin/bash -G sudo baikal
sudo passwd baikal

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

su - baikal

Установите необходимые пакеты. Команда ниже включает PHP 7.4, FPM, SQLite, Nginx, certbot и базовые утилиты:

sudo apt update && sudo apt install -y php php7.4-fpm php7.4-xml php-sqlite3 sqlite3 nginx certbot python3-certbot-nginx ufw net-tools unzip wget

Пояснения к пакетам:

  • php7.4-fpm — запуск PHP через FPM для Nginx
  • php7.4-xml — модуль XML, необходимый Baikal
  • sqlite3 — используется по умолчанию как лёгкая база данных
  • certbot python3-certbot-nginx — автоматическая установка TLS через Let’s Encrypt

Создать нового пользователя для Baikal

Настройка брандмауэра

Откройте только нужные порты и разрешите HTTPS и HTTP. Используем ufw для простоты:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Проверьте статус:

sudo ufw status verbose

Важно: если у вас уже есть правила iptables или другой firewall manager, согласуйте правила, чтобы не закрыть доступ к SSH.

Включение брандмауэра на сервере

Конфигурация Nginx для Baikal

Baikal хорошо работает за Nginx. Создайте файл конфигурации сайта:

sudo nano /etc/nginx/sites-available/baikal

Пример простого server блока, который можно применять как стартовую конфигурацию. Обратите внимание на путь сокета PHP FPM, он может быть php7.4-fpm.sock:

server {
  listen 80;
  server_name yetanotherbaikalserver.xyz;

  root /var/www/baikal/html;
  index index.php;

  rewrite ^/.well-known/caldav /dav.php redirect;
  rewrite ^/.well-known/carddav /dav.php redirect;

  charset utf-8;

  location ~ /(\.ht|Core|Specific|config) {
    deny all;
    return 404;
  }

  location ~ ^(.+\.php)(.*)$ {
    try_files $fastcgi_script_name =404;
    include /etc/nginx/fastcgi_params;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
  }
}

После создания конфига включите сайт и перезапустите Nginx:

sudo ln -s /etc/nginx/sites-available/baikal /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Если Nginx выдаёт ошибку “failed to bind”, значит порт 80 или 443 уже занят. Выполните команду:

sudo netstat -tulpn | grep -E ":80|:443"

и отключите конфликтующий сервис, например Apache:

sudo systemctl disable --now apache2

Создание конфигурации Nginx для Baikal

Загрузка и распаковка Baikal

Создайте веб-корень и перейдите в него:

sudo mkdir -p /var/www/ && cd /var/www/

Скачайте актуальную версию Baikal. В примере используется релиз 0.9.2:

sudo wget https://github.com/sabre-io/Baikal/releases/download/0.9.2/baikal-0.9.2.zip

Распакуйте архив и установите права доступа:

sudo unzip ./baikal-0.9.2.zip
sudo mv baikal baikal
sudo chown -R www-data:www-data ./baikal

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

Скачивание и распаковка Baikal

Распаковка архива Baikal

Установка и настройка SSL с Let’s Encrypt

Запустите certbot для автоматической генерации сертификата и обновления конфигурации Nginx:

sudo certbot --nginx -d yetanotherbaikalserver.xyz

Certbot предложит перейти на HTTPS и настроит редиректы. Проверьте автоматическое обновление сертификатов:

sudo systemctl status certbot.timer
sudo certbot renew --dry-run

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

Перезапуск Nginx после включения конфигурации

Завершение настройки через веб-интерфейс

Откройте браузер и перейдите по адресу вашего домена. Baikal автоматически направит вас на страницу настройки администратора.

Необходимо задать следующие параметры:

  • Часовой пояс сервера
  • Включить CalDAV и CardDAV по необходимости
  • Адрес электронной почты для уведомлений (опционально, требует настроенного SMTP)
  • Метод аутентификации, например Digest
  • Пароль для администратора
  • Параметры базы данных (по умолчанию SQLite)

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

Настройки по умолчанию Baikal

Выбор метода аутентификации

Настройки базы данных по умолчанию

Добавление первого пользователя

В панели администратора выберите Users and resources и нажмите Add user. Укажите уникальное имя пользователя и пароль.

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

Выбор вкладки пользователи в админке Baikal

Создание нового пользователя Baikal

Подключение Thunderbird к Baikal

  1. В Thunderbird выберите Calendar на главной странице клиента.

Выбор календаря в Thunderbird

  1. Выберите On the Network и нажмите Next.

Подключение календаря через сеть

  1. Введите URL вашего сервера с путём /dav.php, например https://yetanotherbaikalserver.xyz/dav.php, и имя пользователя. Нажмите Find Calendars.

Детали сервера в Thunderbird

  1. Выберите тип Calendar Type = CalDAV и нажмите Subscribe.

Выбор типа календаря CalDAV

После этого ваш календарь начнёт синхронизироваться с Baikal.

Резервное копирование и восстановление

Baikal по умолчанию использует SQLite, что упрощает резервирование. Основные шаги:

  • Файлы приложения и конфигурация: /var/www/baikal
  • База данных SQLite: обычно в каталоге baikal Specific или db

Пример простого бэкап скрипта:

#!/bin/bash
BACKUP_DIR=/var/backups/baikal
mkdir -p "$BACKUP_DIR"
TIMESTAMP=$(date -u +"%Y%m%dT%H%M%SZ")
cp -a /var/www/baikal "$BACKUP_DIR/baikal_files_$TIMESTAMP"
# если используется sqlite
cp /var/www/baikal Specific/db.sqlite "$BACKUP_DIR/db_$TIMESTAMP.sqlite"
find "$BACKUP_DIR" -type f -mtime +30 -delete

Критерии успешного восстановления:

  • Восстановленный сайт отвечает по HTTPS
  • Восстановленные учётные записи и события доступны и синхронизируются с клиентами

Для миграции на другую машину перенесите папку приложения и sqlite-файлы, скорректируйте права и конфигурацию Nginx и перезапустите сервисы.

Жёсткая настройка безопасности

Рекомендации для повышенной защиты сервера Baikal:

  • Ограничьте доступ по IP к панели администратора, если возможно
  • Включите HSTS и минимизируйте набор разрешённых шифров TLS
  • Установите fail2ban для защиты от грубой силы в HTTP auth
  • Регулярно обновляйте систему и пакеты
  • Запустите Baikal за reverse proxy с rate limiting, если нужно
  • Сделайте права файлов более строгими: исполняемые файлы доступны для чтения nginx, права записи только для обслуживающей службы

Пример минимальных заголовков безопасности для Nginx:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
add_header Referrer-Policy no-referrer-when-downgrade;
add_header X-XSS-Protection "1; mode=block";

Важно: проверьте совместимость с клиентами при жёстких TLS настройках.

Чеклист перед вводом в эксплуатацию

  • Домен указывает на сервер
  • Nginx слушает 80 и 443
  • Сертификат TLS установлен и валиден
  • PHP FPM запущен и доступен через unix сокет
  • Baikal установлена и доступна через /dav.php
  • Создан минимум один администратор и один пользователь
  • Настроено резервное копирование файлов и базы
  • Настроен мониторинг и оповещения на уровне сервера

Ролевой чеклист

Администратор сервера:

  • Проверить бэкапы раз в неделю
  • Обновлять систему и пакеты по расписанию

Администратор Baikal:

  • Управлять пользователями и ресурсами
  • Обеспечивать разграничение доступа и учётные политики

Пользователь:

  • Настроить клиентские устройства на CalDAV и CardDAV
  • Сообщать об ошибках синхронизации

Руководство по инцидентам и откату

Если сайт недоступен после изменений конфигурации Nginx:

  1. Проверить конфигурацию: sudo nginx -t
  2. Откатить симлинк в sites-enabled к предыдущему состоянию или восстановить из бэкапа конфигурации
  3. Перезапустить Nginx: sudo systemctl restart nginx
  4. Если проблема в PHP, перезапустить PHP-FPM: sudo systemctl restart php7.4-fpm

Если синхронизация клиентов перестала работать после обновления Baikal:

  1. Откатить файлы приложения из резервной копии
  2. Проверить логи Nginx и PHP на ошибки
  3. Если используется sqlite, проверить целостность файла базы

Критерии приёмки

  • Сервер отвечает по HTTPS без ошибок сертификата
  • Веб-интерфейс Baikal доступен и позволяет создать пользователя
  • Клиент Thunderbird успешно находит и подписывает календарь по CalDAV
  • Резервное копирование успешно сохраняет файлы и бд
  • Регулярные проверки certbot проходят успешно

Когда эта инструкция не подойдёт

  • Если требуется высоконагруженная система с сотнями пользователей и высокой доступностью. Baikal рассчитан на относительно лёгкие случаи. Для больших нагрузок рассмотрите полноценную CalDAV/CardDAV реализацию на основе SabreDAV, Radicale или готовые облачные решения.

Короткая методология развёртывания

  1. Подготовить ОС и домен
  2. Установить зависимости и создать пользователя
  3. Настроить Nginx и PHP-FPM
  4. Распаковать Baikal и выставить права
  5. Подключить TLS и проверить доступность
  6. Настроить резервное копирование и безопасность
  7. Подключить клиентов и проверить синхронизацию

Глоссарий в одну строку

  • CalDAV — протокол синхронизации календарей
  • CardDAV — протокол синхронизации адресных книг
  • FPM — FastCGI Process Manager для PHP

Часто задаваемые вопросы

Почему systemctl показывает, что Nginx failed to bind

Ошибка означает, что порт 80 или 443 уже занят другим процессом. Найдите процесс: sudo netstat -tulpn | grep -e :80 -e :443 и отключите конфликтующий сервис, например Apache.

Почему после установки Baikal по адресу сайта отображается страница Debian Welcome

Скорее всего, включён default конфиг Nginx. Удалите или отключите его: sudo rm /etc/nginx/sites-enabled/default и перезапустите Nginx.

Выдаёт DOM Error при синхронизации

DOM Error обычно указывает на отсутствие XML модуля в PHP. Установите php7.4-xml: sudo apt install php7.4-xml, затем перезапустите php-fpm.

Image credit: Unsplash and Sabre All alterations and screenshots by Ramces Red

Important

  • Перед изменением конфигурации системы сделайте полную резервную копию
  • Проверяйте команды и пути сокета PHP-FPM под вашу установку

Notes

  • Для крупной инсталляции рассмотрите использование реляционной СУБД и балансировщика нагрузки

Сводка

Baikal предоставляет простой и независимый способ синхронизации календарей и адресных книг. Правильная конфигурация Nginx, PHP-FPM и TLS вместе с регулярными бэкапами и базовыми мерами безопасности обеспечит стабильную работу сервера для личного или небольшого командного использования.

Поделиться: 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 быстро