К хостинг-провайдеру, где я работаю, обратился клиент. Он просил перенести документы компании из Google Drive на облачный диск с развёрнутым и настроенным Nextcloud.

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

Команда привыкла к Google Drive. Они вместе редактировали документы онлайн, делились ссылками с уровнями доступа, некоторые пользовались мобильным приложением, работали из дома — в общем, максимально привыкли к преимуществам облака. 

Мы решили переносить с помощью официального приложения Google Integration. В результате миграция 200 Гб заняла 6 часов чистого времени, плюс 40 минут на настройку OAuth (это самая нудная часть), а клиент получил независимость от внешних сервисов.

Похожих кейсов не нагуглилось, поэтому вот статья — может, кому-то тоже пригодится. 

Почему выбрали именно этот способ 

Нужно было сохранить не только файлы, но и контакты, и календари, и фото и все их метаданные. Плюсом хотели найти такой способ, чтобы в будущем сделать простую инструкцию и клиенты облачного хранилища могли сами переносить данные без специальных знаний. Поэтому Rclone сразу отклонили — не каждый знает, как работать с командной строкой. Если же использовать WebDAV, который может быть очень удобен для локальной работы с документами, то для переноса не очень подходит. С ним пришлось бы перетаскивать вручную, что не оправдано при таком количестве информации. 

И, хотя мы переносили на облачное хранилище с панелью Plesk, кейс пригодится и тем, у кого cPanel, ISPmanager или другая панель управления хостингом. 

Всё, что потребовалось для переноса данных — подключённое облачное хранилище с Nextcloud на хостинге и аккаунт Google.

1. Установка приложения Google integration в Nextcloud

На этом этапе включаем в Nextcloud «переходник» для работы с Google. «Переходник» — Google integration — понимает оба сервиса: переводит просьбы Nextcloud на понятный официальный язык безопасности Google (OAuth 2.0). Он позволяет передать данные безопасно и контролируемо. 

Для установки приложения Google integration необходимо войти в Nextcloud и перейти в [Приложения].

Далее выбираем пункт [Интеграция] и находим приложение [Google Integration].

Этим простым действием мы добавляем в Nextcloud способность «понимать» и взаимодействовать с API Google.

Ссылка Authorized redirect URIs для Google

Далее нужно взять ссылку для Authorized redirect URIs, она пригодится нам в пункте 2.2.4 для создания [Credentials] в Google. Переходим на страницу [Параметры сервера].

На данной странице открываем пункт [Подключённые учетные записи] и копируем ссылку. Она выглядит так: https://ВАШ_ДОМЕН/nextcloud/index.php/apps/integration_google/oauth-redirect

2. Настройка Google Account

Настраиваем Google Account так, чтобы он доверял нашему Nextcloud и разрешил ему доступ к данным. Для этого создаём специальные ключи доступа (Credentials), но сначала нужно включить двухфакторную аутентификацию (2FA) в  настройках безопасности. Без включённой 2FA система не позволит создать Credentials. Так Google защищает данные на случай утечки пароля.

Создание Credentials в аккаунте Google

Теперь создаём в Google Credentials для Nextcloud. Credentials состоят из двух частей: Client ID (открытый ключ) и Client Secret (секретный ключ). Делаем это поэтапно. 

2.1. Создаём проект

Для создания [Credentials], переходим в Google Cloud Console. При первом входе выбираем любую страну (Беларуси и России в списке нет), ставим чекбокс и нажимаем [Agree and continue].

Далее выбираем наш проект (если его нет, то создаём): [Select a Project][New Project][Create]

Имя проекта — любое, можно оставить по умолчанию или изменить на своё (например, Nextcloud Migration). 

2.2. Настраиваем экран согласия OAuth

После создания проекта переходим в раздел [APIs & Services][OAuth consent screen][OAuth Overview] и нажимаем [Get started].

Далее откроется страница создания приложения. Заполняем необходимые поля.

Далее публикуем наше приложение.

Нажмите [Confirm]

2.3. Включаем необходимые API

Теперь нужно «включить» те сервисы Google, к которым Nextcloud будет обращаться. Для этого перейдите в [APIs & Services][Library]. Выбираем наш проект и включаем необходимые API сервисы.

Мы добавляли 4 API сервиса: [Google Drive API] (для файлов), [Google Calendar API] (календари и события), [Google People API] (контакты), [Google Photos Library API] (для фото). 

Можно искать в поиске, либо перейти по ссылкам выше и нажать [Enable]. Теперь всё готово для создания собственно Credentials.

2.4. Создание OAuth-клиента (финал)

После включения API, переходим в [APIs & Services][Credentials]. Нажимаем кнопку [Create Credentials] вверху страницы и выбираем [OAuth client ID]. Если система запросит настройку экрана согласия, выберите [Web application]. Далее нажимаем [Create client].

Заполняем необходимые поля для создания Create OAuth client ID.

Authorized redirect URIs — это тот самый URI, который скопировали из вашего Nextcloud в первом шаге: 

https://ВАШ_ДОМЕН/nextcloud/index.php/apps/integration_google/oauth-redirect

После создания появится окно с [Client ID] и [Client secret]. Скопируйте и сохраните их — они понадобятся в следующем шаге для настройки Nextcloud. 

3. Подключаем аккаунт Google в Nextcloud

3.1. Вводим ключи доступа

В аккаунте Nextcloud переходим в [Параметры сервера][Подключенные учетные записи]

Далее копируем значения [Client ID] и [Client secret] в поля [ID Клиента] и [Клиентский ключ] и сохраняем настройки.

3.2. Авторизация в Google

После переходим в пункт [Перенос данных]. На данной странице нажимаем [Войти через Google]

Выбираем наш аккаунт → [Дополнительные настройки][Перейти на страницу «ваш_домен» (небезопасно)] [Повторный вход] [Продолжить] [Продолжить]. Система будет предупреждать, что это небезопасно, но мы пропускаем эти предупреждения. 

После входа в аккаунт переходим в пункт [Перенос данных]. На этой странице выберите, что переносить — файлы, контакты, фото, календарь и запустите процесс. 

Готово! Аккаунт Google подключён, и должно начаться копирование данных. Перенос осуществляется во вкладке [Параметры сервера][Перенос данных].

4. Два нюанса, без которых ничего не заработает

Но копирование не началось, хоть и всё было подключено правильно. Процессор зависал на 0%, а в логах сервера обнаружились записи от ModSecurity с кодом ответа 403.

Оказалось, что надо ещё немного «довести» окружение. Вот два момента, которые обязательно нужно проверить.

№1. Проблема с ModSecurity

ModSecurity — это межсетевой экран для веб-приложений (WAF). Он и блокирует длинные запросы от API Google. 

Поэтому временно отключим ModSecurity для нашего домена с Nextcloud.

Это делается в панели управления хостингом (в нашем случае — Plesk). Заходим в [Брендмауэр для веб-приложений][Выкл.][Ок]

Мы отключаем ModSecurity именно для конкретного домена, а не для всего сервера. После завершения переноса данных обязательно надо включить его обратно, чтобы не остаться без защиты.

№2. Проблема с Cron

Nextcloud для выполнения фоновых задач (а перенос именно такая) полагается на планировщик задач (Cron). Если его не настроить, перенос не начнется. 

Чтобы настроить Cron, находим [Планировщик задач] в Plesk, нажимаем [Добавить задачу] и заполняем поля, как на скриншоте и в таблице. 

Теперь задача каждые 5 минут вызывает штатный скрипт Nextcloud, который проверяет очередь фоновых задач и выполняет их. После её активации перенос данных наконец-то запустился.  

Итоги

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

Этот кейс может показаться сырым и не очень оптимальным. Если есть мнения, как можно доработать процесс — пишите в комментариях.

Комментарии (1)


  1. EV1212
    11.11.2025 08:28

    В результате переноса, что произошло с файлами . gdoc, .gsheet и прочими файлами google?