Сервис OneDrive продолжает отключаться на Ubuntu на Raspberry Pi

Вопрос или проблема

Я установил клиент OneDrive onedrive v2.4.22-1+np1 (https://github.com/abraunegg/onedrive) на сервер Ubuntu (Ubuntu 22.04.1), который работает на Raspberry Pi 4.

После установки я запустил службу с помощью

systemctl --user enable onedrive
systemctl --user start onedrive 

Синхронизация с OneDrive работает как ожидалось, пока я вошёл в систему. Когда я оставляю систему в покое, синхронизация останавливается через некоторое время. На системе работает другая служба, которая зависит от синхронизации. Эта служба продолжает работать, но выдает устаревшие результаты из-за отсутствующей синхронизации, и результаты не видны в облаке.

Когда я вхожу на сервер на Raspberry по SSH и получаю статус службы с помощью systemctl --user status onedrive сразу после входа, я вижу, что клиент onedrive запустился сразу после моего входа, в то время как он должен был работать непрерывно без моего входа:

Dec 14 12:45:27 raspi-server onedrive[19550]: Конфигурационный файл успешно загружен
Dec 14 12:45:27 raspi-server onedrive[19550]: Сервер уведомлений (dbus) недоступен, отключение
Dec 14 12:45:28 raspi-server onedrive[19550]: Настройка глобальных конечных точек Azure AD
Dec 14 12:45:29 raspi-server onedrive[19550]: Инициализация механизма синхронизации...
Dec 14 12:45:29 raspi-server onedrive[19550]: Инициализация монитора...
Dec 14 12:45:29 raspi-server onedrive[19550]: Интервал мониторинга OneDrive (секунды): 300
Dec 14 12:45:29 raspi-server onedrive[19550]: Запуск синхронизации с OneDrive

Согласно документации на https://github.com/abraunegg/onedrive/blob/master/docs/USAGE.md#how-to-run-a-user-systemd-service-at-boot-without-user-login, я должен установить службу, используя команды systemctl --user enable onedrive и systemctl --user start onedrive, но сначала с su - root. Я получаю ошибку аутентификации, используя su - root. Если я делаю это без повышенных прав, синхронизация работает, но останавливается, когда я не в системе. Если я использую sudo systemctl --user enable onedrive вместо использования su - root, я получаю сообщение об ошибке Ошибка подключения к шине: $DBUS_SESSION_BUS_ADDRESS и $XDG_RUNTIME_DIR не определены (подумайте о использовании --machine=<user>@.host --user для подключения к шине другого пользователя). Связанная документация рассматривает аналогичное сообщение об ошибке, и для Ubuntu на Raspberry Pi первым шагом согласно документации является “Создайте символическую ссылку из /home/root/.config/onedrive на /root/.config/onedrive/”. Но у меня нет ни каталога /home/root/, ни /root/.config/, так что я застрял здесь.

Я не знаю, как выяснить, что не так с конфигурацией моей службы. Как я могу сделать так, чтобы служба onedrive работала непрерывно?

Правка:

Недостающим элементом была команда терминала
loginctl enable-linger <your_user_name>
которую я взял из принятого ответа, пункт 4. С этим теперь все работает как часы.

Раскрытие информации: Я разработчик клиента OneDrive для Linux – https://github.com/abraunegg/onedrive

Если я делаю это без повышенных прав, синхронизация работает, но останавливается, когда я не в системе.

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

  1. Войдите как пользователь, не имеющий прав root.

  2. Настройте приложение в соответствии с вашими требованиями и убедитесь, что оно работает, используя –synchronize –dry-run для одноразовой синхронизации.

  3. Включите и запустите службу, необходимую для вашего пользователя без прав root, согласно https://github.com/abraunegg/onedrive/blob/master/docs/usage.md#onedrive-service-running-as-a-non-root-user-via-systemd-with-notifications-enabled-arch-ubuntu-debian-opensuse-fedora.

    systemctl --user enable onedrive; systemctl --user start onedrive

  4. Включите вашу учетную запись для ожидания по следующему https://github.com/abraunegg/onedrive/blob/master/docs/usage.md#how-to-start-a-user-systemd-service-at-boot-without-user-login.

    loginctl enable-linger <your_user_name>

Это правильный процесс, который был проверен множество раз.

Дополнительно, в будущем, пожалуйста, поднимайте вопрос здесь: https://github.com/abraunegg/onedrive/discussions, чтобы задать подобные вопросы.

Ответ или решение

Решение проблемы с остановкой службы OneDrive на Ubuntu с Raspberry Pi заключается в правильной настройке службы для автоматического запуска без необходимости входа в систему. Вот что вам следует сделать:

Шаги для настройки службы OneDrive:

  1. Войдите в систему как некорневой пользователь.
    Убедитесь, что вы используете пользователя, под которым вы хотите запустить службу OneDrive.

  2. Настройка приложения:
    Настройте клиент OneDrive согласно вашим требованиям и проверьте, что он работает корректно. Для этого вы можете использовать команду:

    onedrive --synchronize --dry-run

    Это позволит вам имитировать синхронизацию без внесения реальных изменений.

  3. Включите и запустите службу OneDrive:
    Используйте следующие команды, чтобы включить и запустить службу для вашего некорневого пользователя:

    systemctl --user enable onedrive
    systemctl --user start onedrive
  4. Активируйте возможность «linger» для вашего пользователя:
    Это ключевой шаг, который позволит вашему пользователю работать в фоновом режиме даже при отсутствии активной сессии. Выполните команду:

    loginctl enable-linger <ваше_имя_пользователя>

    Замените <ваше_имя_пользователя> на ваше фактическое имя пользователя.

Проверка состояния службы:

После выполнения вышеперечисленных шагов вы можете проверить состояние службы OneDrive, используя:

systemctl --user status onedrive

Если все сделано правильно, вы увидите, что служба активна и работает.

Дополнительная информация:

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

journalctl --user -u onedrive

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

Если у вас возникнут дополнительные вопросы или проблемы, вы можете обратиться в сообщество разработчиков через дискуссионную платформу GitHub.

Таким образом, следуя этим шагам, вы сможете настроить и запустить службу OneDrive на Ubuntu с Raspberry Pi без необходимости при этом оставаться в системе.

Оцените материал
Добавить комментарий

Капча загружается...