Nextcloud - andyceo/documentation GitHub Wiki
sudo docker container exec -ti --user www-data:www-data $(sudo docker ps -q --filter "name=^infrastructure_nextcloud[^-cron]" --filter "status=running") bash -il
При использовании команды выше, будет достаточно выполнять команды php occ <NEXTCLOUD_COMMAND>. Они будут выполняться от пользователя www-data, под которым и работает Nextcloud внутри контейнера.
-
зайти в контейнер с Nextcloud (см. выше)
-
включим режим обслуживания:
php occ maintenance:mode --on -
обновим индексы (можно делать при работающем Nextcloud) (обычно это все, что требуется при обновлении Nextcloud на следующую версию)
php occ db:add-missing-indices -
обновим схему бд (надо делать при выключенном Nextcloud, может занять несколько часов, в зависимости от объема базы, но можно рискнуть и запустить на работающем экземпляре, особенно если объемы небольшие)
php occ db:convert-filecache-bigint -
обновим mime-типы:
php occ maintenance:repair --include-expensive -
обновим схему базы данных, выполнив запрос в базе данных (можно через phpMyAdmin, также см. https://github.com/NethServer/ns8-nextcloud/pull/157)
SELECT CONCAT('ALTER TABLE `', TABLE_NAME, '` ROW_FORMAT=DYNAMIC;') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'nextcloud' AND ENGINE = 'InnoDB';Этот запрос сгенерирует DDL-выражения для изменения формата строк всех таблиц в базе данных nextcloud, использующих движок InnoDB, на
ROW_FORMAT=DYNAMIC. -
выключаем режим обслуживания:
php occ maintenance:mode --off
Чтобы выполнить cron-задачи вручную, на хост-машине выполним (может быть полезно, когда крон-задачи давно не выполнялись, и по аяксу крон упирается в таймаут):
sudo docker exec --user www-data <CONTAINER_ID> php cron.php
Настроим выполнение крон-задач через AJAX|WebCron|Cron (Cron - не работает в контейнере):
sudo docker exec --user www-data <CONTAINER_ID> php occ background:<ajax|webcron|cron>
Важные задачи, которые выполняются в cron (это неточно, @todo проверить), и которые можно вызвать вручную:
sudo docker exec --user www-data <CONTAINER_ID> php occ files:scan --all
sudo docker exec --user www-data <CONTAINER_ID> php occ files:scan-app-data
Получить <CONTAINER_ID> можно с помощью команды:
sudo docker ps -q --filter "name=^infrastructure_nextcloud[^-cron]" --filter "status=running"
- https://docs.nextcloud.com/server/13/admin_manual/configuration_server/harden_server.html
- https://docs.nextcloud.com/server/13/admin_manual/configuration_server/server_tuning.html
Этот метод работает начиная с Ubuntu Focal 20.04, Debian 12:
sudo apt install nextcloud-desktop
sudo add-apt-repository ppa:nextcloud-devs/client
sudo apt update
sudo apt install nextcloud-client
Надо раздать какие-то права, а то Nextcloud не может писать в папки (не разобрался).
sudo apt install snapd
sudo snap install nextcloud-client