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

Синхронизация календаря Linux с Android

9 min read Инструкции Обновлено 26 Dec 2025
Синхронизация календаря Linux с Android
Синхронизация календаря Linux с Android

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

Настройка двухсторонней синхронизации календарей между настольной системой Linux и Android возможна и относительно проста: установите CalDAV-сервер (Radicale или Baikal), создайте общий календарь, на Android добавьте CalDAV‑адаптер (DAVDroid или CalDAV‑Sync) и подключите календарь. В статье пошагово расписаны варианты установки, типичные ошибки, рекомендации по безопасности и шаблоны конфигураций.

Important: если вы используете локальный сервер (внутри вашей сети), синхронизация будет работать только когда Android-устройство подключено к той же сети или у вас настроен доступ извне (проброс портов или VPN).

Зачем это нужно

Многие пользователи предпочитают держать расписание в облаке или на собственном сервере вместо коммерческих сервисов. Своя CalDAV-инфраструктура даёт контроль над данными, гибкость в настройке и возможность использовать любые десктопные и мобильные клиенты.

Краткое определение: CalDAV — интернет-протокол на базе HTTP для доступа и управления календарями в формате iCalendar (файлы .ics).

Кого это касается

  • Пользователи Linux, которые не хотят хранить календарь в Google или других сервисах.
  • Люди, которым важен контроль данных и приватность.
  • Администраторы домашних серверов и небольших команд.

Содержание

  • Построение календарного сервера (Radicale, Baikal)
  • Создание общего календаря и публикация
  • Установка CalDAV‑адаптера на Android (DAVDroid, CalDAV‑Sync)
  • Настройка учётной записи и синхронизация
  • Проверка работоспособности и отладка
  • Советы по безопасности и резервному копированию
  • Шаблоны конфигураций и примерные команды
  • Чек-лист для разных ролей
  • Матрица совместимости клиентов и серверов
  • Критерии приёмки и тесты

1. Построение календарного сервера

Выбор сервера: любой сервис, поддерживающий CalDAV. Для простоты в статье рассмотрены два решения: Radicale (минималистичный, простой) и Baikal (веб‑интерфейс, требует веб‑сервера и PHP/SQLite).

Radicale — быстро и минимум зависимостей

Radicale — лёгкий CalDAV/CardDAV сервер на Python. Доступен в репозиториях распространённых дистрибутивов (Arch, Ubuntu, Fedora, Debian, openSUSE) и через PyPI.

Установка (системно или в virtualenv):

# системная установка (Debian/Ubuntu)
sudo apt install radicale

# или установка через pip (рекомендуется в виртуальном окружении)
pip install radicale

Запуск сервера:

radicale

Важно: процесс должен работать постоянно для синхронизации. В продакшене создайте systemd‑сервис для автозапуска.

Файлы конфигурации (расположения могут различаться по дистрибутиву):

/etc/default/radicale
/etc/radicale/users
/etc/radicale/config
# либо per-user
~/.config/radicale/config

Примеры ключевых настроек:

  • Аутентификация: используйте файл users или внешнюю базу (htpasswd, SQL) — укажите метод в секции authentication.
  • Права доступа: секция rights в конфиге контролирует, кто может читать и записывать.
  • Порты: по умолчанию Radicale слушает 5232 — при пробросе на роутере используйте этот порт или настраивайте reverse proxy.

Пример простого systemd‑юнита (/etc/systemd/system/radicale.service):

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

[Service]
User=radicale
ExecStart=/usr/bin/radicale
Restart=on-failure

[Install]
WantedBy=multi-user.target

Совет: для публичного доступа проксируйте Radicale через nginx с TLS и базовой аутентификацией, либо используйте VPN.

Настройка Radicale: конфигурация и учётные записи

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

Baikal требует веб‑сервера с PHP и SQLite/MySQL. Подходит, если нужен админский веб‑интерфейс и удобное управление через браузер.

Краткий план установки на Linux с Apache (пример для локальной машины):

  1. Установите LAMP‑стек (Apache, PHP, SQLite/MariaDB). Пример для Ubuntu:
sudo apt update
sudo apt install apache2 php php-sqlite3 unzip
  1. Скачайте пакет Baikal и распакуйте в корень web:
cd /var/www
sudo mkdir baikal
sudo chown $USER:$USER baikal
# скачайте архив, распакуйте в /var/www/baikal
  1. Дайте права на Specific и создайте файл ENABLE_INSTALL:
sudo chown -R www-data:www-data /var/www/baikal/Specific
sudo -u www-data touch /var/www/baikal/Specific/ENABLE_INSTALL
  1. Откройте страницу установки в браузере: http://yourserver/baikal/admin/install

Во время установки выберите SQLite (для простоты), создайте администратора и обязательно включите опцию Enable CalDAV и Web interface.

Установка Baikal: шаги в браузере

Минусы Baikal: иногда устаревшая документация, требуется базовая работа с веб‑сервером. Плюсы: веб‑интерфейс и управление календарями без дополнительных десктопных приложений.

Настройки Baikal: включение CalDAV и веб‑интерфейса


2. Создание общего календаря на сервере

После установки сервера создайте календарь и пользователя. В Baikal это удобно делается через веб‑интерфейс. В Radicale — создайте учётную запись в файле users и используйте десктопный клиент для публикации или загрузите .ics в каталог пользователя.

Примеры URL‑шаблонов (используйте свой адрес и имена):

Если сервер публичный, обязательно использовать HTTPS.

Добавление календаря в десктопные приложения

Подавляющее большинство Linux‑календарей поддерживает CalDAV:

  • Evolution: File > New > Calendar > выберите CalDAV и укажите URL.
  • Thunderbird/Lightning: New Calendar > On the Network > CalDAV > укажите URL.
  • KOrganizer: DAV groupware resource или Calendar in Remote File > URL (см. ниже).

Baikal: интерфейс создания календаря в браузере

В KOrganizer для Radicale можно использовать DAV groupware resource или Calendar in Remote File, указав URL Radicale. Для Baikal рекомендуется Calendar in Remote File с URL /cal.php/calendars/username/calendarname.

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

  • Lightning: Publish Calendar (вставьте URL сервера и имя файла).
  • Evolution: Actions > Publish Calendar Information.
  • KOrganizer: File > Export > Export as iCalendar, затем опубликуйте файл на сервере.

3. Выбор и установка CalDAV‑адаптера на Android

Многие Android‑календарные приложения не имеют встроенной поддержки CalDAV, поэтому нужен адаптер, который синхронизирует CalDAV с системным календарём Android.

Два популярных варианта:

  • DAVDroid (иногда встречается как DAVx5 в новых версиях): Open Source, синхронизация календарей и контактов, двухсторонняя синхронизация, доступен на F‑Droid бесплатно, в Google Play платно (поддержка разработчиков).
  • CalDAV‑Sync: коммерческое приложение в Play Store, простая настройка, поддержка задач и цветового кодирования календарей.

Установите приложение и не перемещайте его на SD‑карту (Android не позволит корректно обслуживать автозапуск/сервис фоновой синхронизации).

DAVDroid: создание аккаунта и автосинхронизация

CalDAV‑Sync: экран настроек и синхронизации


4. Настройка CalDAV‑учётной записи на Android

DAVDroid (DAVx5):

  1. Откройте Settings > Accounts > Add account > DAVx5 (DAVDroid).
  2. Введите Base URL:
  3. Введите имя пользователя и пароль.
  4. DAVDroid автоматически найдет календари и контакты; выберите те, которые хотите синхронизировать.

CalDAV‑Sync:

  1. Settings > Accounts > Add > CalDAV account.
  2. Введите URL к конкретному календарю, например:
  3. Введите учётные данные и выберите настройки синхронизации (интервал, двунаправленность).

Совет: если автоматическое обнаружение не срабатывает, попробуйте указывать URL с и без порта и с полным путем /baikal/cal.php/… в зависимости от конфигурации сервера.

DAVDroid: обнаружение календарей и выбор для синхронизации


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

После настройки откройте системное приложение «Календарь» на Android — синхронизированные календари должны появиться и обновляться.

Если синхронизация не работает, проверьте следующие пункты:

  • Убедитесь, что приложение Calendar Storage на Android включено и не отключено.
  • Если используете Privacy Guard/приватность, разрешите DAVDroid/CalDAV‑Sync доступ к календарю и контактам.
  • Проверьте опцию «Restrict background data» в Settings > Data usage — если включена, синхронизация может быть ограничена.
  • Проверьте системный глобальный переключатель синхронизации (Settings > Accounts > Auto-sync data).
  • Иногда обновления Android могут удалить учётные записи CalDAV; при этом заново добавьте аккаунт или используйте резервную копию настроек.
  • Проверьте логи на сервере: для Radicale — stdout/systemd journal; для Baikal — лог веб‑сервера и PHP.

Полезные команды для отладки Radicale:

# проверить статус systemd
sudo systemctl status radicale
# просмотреть лог в реальном времени
sudo journalctl -u radicale -f
# проверить доступность URL
curl -I http://localhost:5232/

Примеры ошибок и решения:

  • Ошибка 401 Unauthorized — проверьте логин/пароль и схему аутентификации в конфиге.
  • Ошибка 404 Not Found при запросе календаря — проверьте правильность URL (включая имя пользователя и имя календаря).
  • Ошибка 500 — смотрите логи PHP/Apache (для Baikal) или systemd (для Radicale).

Советы по безопасности и резервному копированию

  1. Всегда используйте HTTPS для удалённого доступа к серверу. Простой способ — настроить nginx как reverse proxy и получить TLS‑сертификат через Let’s Encrypt.
  2. Ограничьте доступ по IP или настройте базовую аутентификацию/двухфакторную аутентификацию при возможности.
  3. Регулярно делайте резервные копии каталога календарей и базы данных (для Baikal — папку Specific и файл базы данных; для Radicale — каталог storage).
  4. Если сервер публичный, используйте fail2ban для защиты от подборов паролей.
  5. Рассмотрите вариант доступа через VPN для повышения приватности.

Шаблоны конфигураций и примеры

Пример секции rights в /etc/radicale/config (очень упрощённый):

[rights]
# Формат: шаблон_ресурса = правило_пользователя
# Например, дайте полный доступ пользователю alice к её календарям
/collection/([^/]+)/? = allow:alice:rw
# Доступ на чтение для анонимных посетителей
/collection/([^/]+)/public = allow:anonymous:r

Пример минимального systemd‑юнита для Baikal (если используете системный PHP‑FPM и Apache, systemd не нужен для самого Baikal):

# обычно Baikal работает как набор статических файлов и PHP, управляемых Apache/nginx
# убедитесь, что apache2.service запущен
sudo systemctl enable apache2
sudo systemctl start apache2

Пример nginx‑конфига для реверс‑прокси Radicale и TLS (самый базовый):

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;
  }
}

Матрица совместимости (клиенты ↔ серверы)

Клиент / СерверRadicaleBaikalownCloud/Nextcloud
Evolution
Thunderbird (Lightning)
KOrganizer
Android + DAVx5 (DAVDroid)
Android + CalDAV‑Sync

Примечание: ownCloud/Nextcloud — полноценные решения с дополнительными возможностями (шаринг, права, веб‑интерфейс), но сложнее в поддержке.


Когда этот подход не подойдёт

  • У вас нет возможности поддерживать публичный сервер или VPN, а доступ нужен снаружи — тогда проще использовать коммерческие облачные решения.
  • Вам требуются корпоративные функции синхронизации и управление политиками на уровне организации — рассмотрите Nextcloud или корпоративные MDM/Exchange‑решения.

Чек‑лист для ролей

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

  • Установить и запустить Radicale/Baikal.
  • Настроить бэкап каталога календарей раз в неделю.
  • Настроить HTTPS и мониторинг сервиса.

Обычный пользователь Linux:

  • Создать учётную запись и календарь на сервере.
  • Добавить CalDAV календарь в десктопный клиент (Evolution/Thunderbird/KOrganizer).
  • Установить DAVx5/CalDAV‑Sync на Android и подключить аккаунт.

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

  • Установить DAVx5/CalDAV‑Sync и разрешить доступ к календарю.
  • Проверить, что разрешена фоновая синхронизация и Mobile Data не ограничены.
  • При проблемах — проверить логи приложения и попросить админа проверить сервер.

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

Чтобы считать систему синхронизации настроенной и рабочей, проверьте:

  1. Добавляемое событие на десктопе появляется на Android в течение ожидаемого интервала синхронизации.
  2. Изменение события на Android отражается на десктопе (двунаправленная синхронизация).
  3. Повторяющиеся события и напоминания корректно передаются между устройствами.
  4. Логи сервера не содержат регулярных ошибок авторизации или 500‑го кода.

Тестовые сценарии (acceptance)

  1. Создать одноразовое событие на десктопе, дождаться синхронизации, проверить появление на Android.
  2. Изменить время события на Android, дождаться синхронизации, проверить изменение на десктопе.
  3. Удалить событие на десктопе, убедиться, что оно исчезло на Android.
  4. Проверить синхронизацию при разном подключении (Wi‑Fi, мобильный интернет).
  5. Проверить сохранность данных после перезапуска сервера и клиента.

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

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

Часто встречимые ошибки и быстрые решения

  • «Не найден календарь» — проверьте точность URL (имя пользователя, имя календаря) и слэши в конце пути.
  • «401 Unauthorized» — убедитесь в совпадении учётных данных и используемой схемы аутентификации (basic/digest).
  • «Нет синхронизации при мобильной сети» — проверьте ограничение фоновых данных и глобальную автосинхронизацию в Android.
  • Пропали учётные записи CalDAV после обновления Android — периодически сохраняйте настройки и экспортируйте список календарей.

Короткая методология для быстрой настройки (mini‑SOP)

  1. Выберите сервер: Radicale для простоты или Baikal для веб‑интерфейса.
  2. Установите и запустите сервер. Убедитесь, что он доступен локально.
  3. Создайте пользователя и календарь на сервере.
  4. Проверьте доступ к календарю через curl или браузер.
  5. Настройте десктопный клиент и опубликуйте/подключите календарь.
  6. Установите DAVx5/CalDAV‑Sync на Android и подключите учётную запись.
  7. Протестируйте добавление/редактирование/удаление событий в обе стороны.
  8. Настройте HTTPS и регулярные бэкапы.

Примеры вопросов для комментариев сообщества

  • Как вы храните резервные копии календарей?
  • Какие дополнительные функции вы считаете важными для своего сервера (шаринг, права, интеграция с задачами)?
  • С какими проблемами вы сталкивались при настройке CalDAV на Android?

Если у вас есть свои советы по синхронизации календарей между Linux и Android — оставьте их в комментариях. Какими приложениями пользуетесь вы? Как организуете бэкап? Поделитесь опытом.

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
Автор
Редакция

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

Вибро‑будильник на iPhone: как включить и настроить
Инструкции

Вибро‑будильник на iPhone: как включить и настроить

Системные прерывания: высокая загрузка CPU в Windows
Windows

Системные прерывания: высокая загрузка CPU в Windows

Как включить режим разработчика и загружать приложения на Roku
Руководство

Как включить режим разработчика и загружать приложения на Roku

Universal Control на Mac и iPad — настройка и советы
macOS

Universal Control на Mac и iPad — настройка и советы

Как скачать данные LinkedIn о себе
Конфиденциальность

Как скачать данные LinkedIn о себе

Эффект «Обратное видео» в TikTok — как использовать
соцсети

Эффект «Обратное видео» в TikTok — как использовать