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

Синхронизация календарей между Linux и Android

9 min read Tech Обновлено 09 Apr 2026
Синхронизация календарей Linux ↔ Android
Синхронизация календарей Linux ↔ Android

синхронизация календаря между устройствами

Сколько вы полагаетесь на календарь? Если вы ведёте расписание в облаке, важно, чтобы все устройства синхронизировались корректно. В Linux‑окружениях это обычно делается через CalDAV — открытый протокол для доступа и управления календарями (iCalendar) по HTTP. На десктопе большинство приложений (Evolution, Thunderbird/Lightning, KOrganizer) понимают CalDAV из коробки. На Android нужен мост — отдельное приложение‑адаптер, которое «переведёт» CalDAV в нативный аккаунт Android.

В этой статье вы найдёте пошаговую инструкцию:

  • как поднять сервер CalDAV (Radicale и Baikal);
  • как создать и опубликовать сетевой календарь в популярных Linux‑клиентах;
  • как настроить Android (DAVDroid/CalDAV‑Sync) и проверить синхронизацию;
  • советы по безопасности, отладке и резервному восстановлению.

Важно: все примеры используют HTTP/HTTPS‑URL и типичные пути. Подставляйте свои хосты, пользователей и имена календарей.

Что такое CalDAV (в двух строках)

CalDAV — расширение WebDAV для работы с календарями в формате iCalendar. Оно позволяет создавать, изменять и получать события удалённо через HTTP(S).

1. Построение сервера календаря (CalDAV)

Выбор сервера зависит от требований: простота развертывания, наличие веб‑интерфейса, масштабируемость. Для начала подходят Radicale и Baikal.

Radicale — быстро и минималистично

Radicale — лёгкий CalDAV/CardDAV сервер, часто доступен в репозиториях дистрибутивов.

Установка (пример для Debian/Ubuntu):

sudo apt update
sudo apt install python3-pip python3-venv
python3 -m venv ~/radicale-venv
source ~/radicale-venv/bin/activate
pip install radicale

Или из репозитория:

sudo apt install radicale

Запуск для теста:

radicale

По умолчанию Radicale слушает порт 5232. Конфигурация может храниться в:

/etc/default/radicale
/etc/radicale/users
/etc/radicale/config
~/.config/radicale/config

Пример простого systemd‑юнита для запуска Radicale как службы (если установлен через pip в виртуальном окружении, путь поправьте):

[Unit]
Description=Radicale CalDAV server
After=network.target

[Service]
Type=simple
User=radicale
ExecStart=/home/radicale-venv/bin/radicale
Restart=on-failure

[Install]
WantedBy=multi-user.target

Важно: Radicale должен быть запущен, чтобы синхронизация работала. Хорошая практика — запустить как службу и настроить логирование.

Права доступа и аутентификация управляются в config и users. Проверьте секцию Rights в файле конфигурации, чтобы ограничить чтение/запись для нужных пользователей.

конфигурация Radicale и аутентификация

Baikal — с веб‑интерфейсом

Baikal — CalDAV/CardDAV сервер с веб‑интерфейсом, основанный на PHP и SQLite. Потребует веб‑сервера (Apache/Nginx) и PHP.

Быстрые шаги (общая идея):

  1. Установите веб‑стек: Apache/Nginx + PHP + SQLite (или MySQL).
  2. Скопируйте файлы Baikal в корень веб‑сервера, например /var/www/baikal.
  3. Установите права на /var/www/baikal/Specific.
  4. Создайте файл ENABLE_INSTALL в папке Specific.
  5. Перейдите в браузере на http://yourserver/baikal/admin/install и завершите установку.

Во время установки включите опцию «Enable CalDAV» и, при желании, «Enable Web interface». После установки можно управлять пользователями и календарями через веб‑панель.

установка Baikal и настройки

Недостаток Baikal для начинающих — нужна минимальная настройка веб‑сервера и знание прав на файловую систему. Плюс — графический интерфейс для управления.

Советы по размещению сервера

  • Вариант «в облаке»: развёртывание на VPS (DigitalOcean, Hetzner и т.п.) даёт доступ с любой сети и простой настройку HTTPS.
  • Вариант «локальная сеть»: сервер работает в локальной сети; синхронизация доступна только при соединении с этой сетью.
  • Для безопасности используйте HTTPS; если сервер в локальной сети, рассмотрите VPN для доступа извне.

2. Создание и публикация сетевого календаря

После запуска сервера создайте календарь:

  • В Baikal можно создавать календари через веб‑интерфейс (админка).
  • В Radicale календари обычно создаются клиентом при первой попытке подключения или добавлением файлов в хранилище.

Похожие шаги в популярных Linux‑клиентах:

  • Evolution: File > New > Calendar > выберите CalDAV и укажите URL.

создание календаря в Evolution

  • Thunderbird/Lightning: New Calendar > On the Network > CalDAV, затем URL.

создание календаря в Thunderbird

KOrganizer: добавление удалённого календаря

Примеры URL (подставьте ваши значения):

Публикация существующего календаря из десктопа:

  • Lightning: Publish Calendar
  • Evolution: Actions > Publish Calendar Information
  • KOrganizer: File > Export > Export as iCalendar (или настроить сетевой календарь)

Убедитесь, что URL публикации и логин совпадают с учётной записью на сервере.

3. Установка CalDAV‑адаптера на Android

На Android обычные календарные приложения часто не поддерживают CalDAV напрямую. Решение — установить адаптер‑мост, который регистрирует CalDAV‑аккаунт в системе.

Популярные варианты:

  • DAVDroid — поддерживает несколько аккаунтов, двухстороннюю синхронизацию событий и задач; доступен в F‑Droid и на Play Store.

DAVDroid: добавление аккаунта в Android

  • CalDAV‑Sync — тоже поддерживает множество календарей, двухстороннюю синхронизацию и цветовые метки.

Выбор зависит от предпочтений: оба приложения хорошо себя зарекомендовали с Baikal и Radicale.

Важно: не перемещайте эти приложения на SD‑карту — это может нарушить работу синхронизации.

4. Настройка CalDAV‑аккаунта в Android (DAVDroid / CalDAV‑Sync)

Общий порядок действий:

  1. Установите DAVDroid или CalDAV‑Sync.
  2. Откройте «Настройки» → «Аккаунты» → Добавить аккаунт → DAVDroid/CalDAV.
  3. Введите базовый URL и данные для входа.

Пример данных для Radicale (DAVDroid):

Для Baikal (DAVDroid):

DAVDroid автоматически просканирует доступные календари и предложит их для синхронизации.

CalDAV‑Sync похож: для Radicale можно указать http://yourserver:5232/username/; для Baikal — http://yourserver/cal.php/calendars/username/calendarname или просто http://yourserver/cal.php и позволить приложению сканировать.

CalDAV‑Sync: добавление аккаунта

5. Проверка и отладка синхронизации

Откройте любое календарное приложение на Android (стандартное, Etar, aCalendar и т.д.) и проверьте, отображаются ли события.

Если синхронизация не работает — последовательный чек‑лист для диагностики:

  • Убедитесь, что сервер (Radicale/Baikal/веб‑сервер) запущен и доступен по сети.
  • Проверьте, не отключено ли системное приложение Calendar Storage на Android.
  • Если используется Privacy Guard/разрешения, убедитесь, что адаптеру разрешён доступ к календарю и контактам.
  • Проверьте в Android: Настройки > Использование данных > запрет фоновых данных для соответствующего приложения.
  • Проверьте системный общий флажок синхронизации в настройках Android.
  • Посмотрите логи Radicale или веб‑сервера (apache/nginx) на предмет ошибок авторизации или 404.

Примеры команд для проверки доступности CalDAV (замените URL и учётные данные):

curl -u username:password -X PROPFIND "http://yourserver:5232/username/" -i

Если вы получаете 401 — проблема с авторизацией. Если 404 — неверный путь.

Расширенная отладка и логирование

  • Radicale логирует в stdout/stderr; при запуске как служба смотрите journalctl -u radicale.
  • Для Baikal проверьте логи веб‑сервера (/var/log/apache2/error.log или /var/log/nginx/error.log).
  • При ошибках авторизации попробуйте временно включить простой тестовый пользовательский доступ и подключиться.

Альтернативы и когда CalDAV не подходит

  • Google Calendar — самый простой вариант для пользователей, готовых доверить данные крупному провайдеру.
  • ownCloud/Nextcloud — полноценные решения для синхронизации файлов, контактов и календарей; подходят, если нужна интеграция с файловым хранилищем и приложениями.
  • Экспорт/импорт .ics — годится для одноразовой передачи событий, но не для постоянной синхронизации.

Когда CalDAV может не подойти:

  • Если вы хотите синхронизировать дополнительные метаданные, которые не покрывает iCalendar.
  • Если нужна корпоративная интеграция с Exchange/ActiveSync — лучше использовать сервисы с поддержкой EAS или мосты.

Безопасность и приватность (рекомендации)

  • Используйте HTTPS (TLS) для всех внешних соединений. Если сервер доступен в интернете, получите сертификат Let’s Encrypt и настройте обратный прокси (Nginx/Apache) с HTTPS.

Пример простого Nginx‑конфига для прокси Radicale и HTTPS:

server {
    listen 80;
    server_name cal.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name cal.example.com;

    ssl_certificate /etc/letsencrypt/live/cal.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cal.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:5232/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  • Ограничьте доступ брандмауэром (открывайте только необходимые порты: 80/443 для веб‑прокси; 5232, если доступ напрямую).
  • Используйте надёжные пароли и, если возможно, двухфакторную аутентификацию для учётной записи администратора Baikal.
  • Контролируйте и очищайте журналы доступа для проведения аудита и обнаружения подозрительных подключений.

Приватность и GDPR:

  • Календарные события могут содержать персональные данные (ФИО, контакты, адреса). Настройте срок хранения и доступы в соответствии с политикой вашей организации.
  • Если сервер хранит данные граждан ЕС, подумайте о юридической стороне: договоры обработки данных и место хранения серверов.

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

  • Для Radicale — регулярно архивируйте каталог хранения (обычно ./collections или ./storage в каталоге Radicale). Простой rsync или tar + cron решит задачу.
  • Для Baikal — делайте бэкап SQLite или дамп MySQL/PostgreSQL, а также файлов конфигурации и каталога Specific.

Пример cron для ежесуточного бэкапа Radicale:

0 03 * * * tar -czf /var/backups/radicale-$(date +\%F).tar.gz /var/lib/radicale

Критерии приёмки (тесты)

  • Созданное в Evolution событие появляется на Android (в течение установленного интервала) и наоборот.
  • Повторяющиеся события синхронизируются корректно (повторения и исключения).
  • Напоминания/уведомления сохраняются при пересылке между устройствами.
  • Множественные календари с разными цветами корректно отображаются на Android.
  • Доступы и права чтения/записи действуют в соответствии с настройками сервера.

Чек‑листы по ролям

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

  • Установить и запустить Radicale/Baikal
  • Настроить HTTPS и брандмауэр
  • Создать учётные записи и права доступа
  • Настроить бэкапы и мониторинг

Пользователь (Linux):

  • Создать сетевой календарь в клиенте (Evolution/Thunderbird/KOrganizer)
  • Проверить URL и учётные данные
  • Опубликовать календарь при необходимости

Пользователь (Android):

  • Установить DAVDroid или CalDAV‑Sync
  • Добавить аккаунт и выбрать календари для синхронизации
  • Проверить разрешения приложению и фоновые данные

Готовые шаблоны и команды (чеки и подсказки)

URL‑шаблоны:

Curl‑проверка доступа:

curl -v -u username:password -X PROPFIND "http://yourserver/cal.php/calendars/username/"

systemd‑юнит для Radicale (пример выше) и команда для просмотра логов:

journalctl -u radicale -f

Типичные проблемы и их решения

Проблема: «Календари не отображаются на Android» — решения:

  • Проверьте, доступна ли конечная точка CalDAV по URL в браузере/curl.
  • Убедитесь, что DAVDroid/CalDAV‑Sync имеет разрешения на календарь.
  • Проверьте, что Calendar Storage не отключен на устройстве.
  • Временно отключите VPN/прокси, если используется, — они могут мешать сканированию.

Проблема: «Аутентификация постоянно требует логин/пароль»:

  • Убедитесь, что протокол правильный (HTTP vs HTTPS) и порт корректный.
  • Проверьте, нет ли в URL лишних слэшей или опечаток.
  • Посмотрите серверные логи на предмет повторных попыток 401.

Проблема: «При обновлении Android‑прилета аккаунт удаляется» — возможны баги в системном обновлении. Решение: периодически проверяйте список аккаунтов и настройте автозаполнение/скрипт для быстрой повторной настройки.

Когда стоит выбрать альтернативу (decision help)

  • Нужна интеграция с файловым хранилищем и полной синхронизацией контактов/задач — смотрите Nextcloud/ownCloud.
  • Нужна корпоративная совместимость с Exchange — рассмотрите Exchange/ActiveSync или шлюзы.
  • Вам важен простой «работающий из коробки» вариант с минимальной поддержкой — используйте Google Calendar.

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

  • CalDAV даёт гибкий способ синхронизировать календари между Linux и Android.
  • Radicale хорош для быстрой и лёгкой установки; Baikal даёт веб‑панель управления.
  • На Android используйте DAVDroid или CalDAV‑Sync в качестве адаптера.
  • Обязательно настройте HTTPS, бэкапы и базовую права доступа.

Если у вас есть конкретная конфигурация (дистрибутив Linux, версия Android, используемые приложения), пришлите её — помогу адаптировать команды и конфигурацию под ваш сценарий.

интерфейс Baikal — управление календарями

Image Credits:

Computer vector designed by Freepik, KOrganizer screenshot, Baikal screenshots, Calendar icon, Global server icon, Smartphone app icon, Cell phone icon by Freepik from www.flaticon.com.

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