🐹 CentOS 7: Работа в командной строке с Nextcloud. Установка, настройка и обновление Nextcloud с помощью командной строки. Утилита occ.

Содержание:

1. Введение.
2. Установка и настройка с помощью командной строки.
3. Команды технического обслуживания.
4. Обновление с помощью командной строки.
5. Добавление недостающих индексов баз данных.
6. Список всех команд и параметров.
7. Как узнать версию и статус.
8. Список всех команд и параметров.
9. Операции с кэшем файлов и файлами на хранении.

9.1. Сканирование файлов для кэша.
9.2. Очистка кэша.
9.3. Перемещение файлов.

10. Просмотр логирования.
11. Корзина удаленных файлов.
12. Команды управления пользователями.

12.1. Добавление пользователя.
12.2. Сброс пароля пользователя.
12.3. Удаление пользователя.
12.4. Деактивация пользователя.
12.5. Активация пользователя.
12.6. Крайний сеанс пользователя.
12.7. Чтение пользовательских настроек.
12.8. Работа с единичными параметрами.

13. Команды администрирования групп пользователей.
14. Команды управления версиями файлов на хранении.
15. Управление приложениями.
16. Оригиналы источников информации.


На чем было опробовано:

  1. CentOS 7 Linux x86_64 release 7.8.2003.
  2. Nextcloud 20.
  3. Nginx 1.19.2.
  4. PHP Version 7.4.10.
  5. MariaDB Server version 10.5.5.
  6. Ноутбук Emachines G525.

1. Введение.

Для работы с облачным хранилищем Nextcloud в консольном режиме требуется использовать утилиту occ. Название утилиты occ расшифровывается как ownCloud Console.

Вы можете выполнять много полезных и интересных действий с помощью этой утилиты occ. Например, устанавливать компоненты облачного хранилища и его обновления до последних версий, управлять учетными записями пользователей, шифрованием, паролями, настраивать LDAP и прочее.

В рамках этой инструкции выбраны самые часто используемые ситуации. Полный список функционала утилиты occ можно изучить на официальном сайте разработчиков Nextcloud.

Ссылка на страницу утилиты: docs.nextcloud.com.

Утилита occ располагается в корневом каталоге, который содержит основные компоненты Nextcloud.

Пример пути:

/var/www/nextcloud/occ

Утилита occ — это PHP скрипт. Для активации её работы вы должны запускать её от имени пользователя от имени которого работает ваша система web-сервера и использовать работу с теми каталогами, к которым, у этого пользователя, есть права доступа.

Например: nginx или apache.

2. Установка и настройка с помощью командной строки.

Эти команды доступны только после того, как вы загрузили и распаковали архив Nextcloud и не предприняли никаких дальнейших шагов по установке.

Вы можете установить Nextcloud полностью из командной строки. После загрузки архива и копирования Nextcloud в соответствующие каталоги вы можете использовать команды occ вместо запуска графического мастера установки.

Здесь перечислены ваши доступные варианты:

# sudo -u nginx php /var/www/nextcloud/occ

Ответ:

Показать параметры установки maintenance:install облачного хранилища:

# sudo -u nginx php /var/www/nextcloud/occ maintenance:install

Этот пример завершает установку:

# sudo -u nginx php /var/www/nextcloud/occ maintenance:install --database "mysql" --database-name "nextcloud" --database-user "root" --database-pass "password" --admin-user "admin" --admin-pass "password"

Официально поддерживаемые базы данных:

  • sqlite (SQLite3 — только Nextcloud Community edition)
  • mysql (MySQL/MariaDB)
  • pgsql (PostgreSQL)
  • oci (Oracle — только Nextcloud Enterprise edition)

3. Команды технического обслуживания.

Используйте эти команды при обновлении Nextcloud, управлении шифрованием, выполнении резервных копий и других задачах, требующих блокировки пользователей до тех пор, пока вы не закончите:

maintenance
  • maintenance:data-fingerprint обновление системных данных-отпечатков пальцев после восстановления резервной копии.
  • maintenance:mimetype:update-db обновление mimetype базы данных и обновление файлового кэша.
  • maintenance:mimetype:update-js обновление mimetypelist.js.
  • maintenance:mode установка режима технического обслуживания.
  • maintenance:repair восстановление инсталляции.
  • maintenance:theme:update применение изменения пользовательских тем.
  • maintenance:update:htaccess установка файла .htaccess.

Команда maintenance:mode блокирует сеансы всех вошедших в систему пользователей, включая администраторов, и отображает экран состояния, предупреждающий о том, что сервер находится в режиме обслуживания. Пользователи, которые еще не вошли в систему, не могут войти в систему до тех пор, пока не будет выключен режим обслуживания. Когда вы выводите сервер из режима обслуживания, вошедшие в систему пользователи должны обновить свои страницы в web-браузерах.

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

# sudo -u nginx php /var/www/nextcloud/occ maintenance:mode --on

Как это видят пользователи:

Для отключения режима обслуживания выполним команду:

# sudo -u nginx php /var/www/nextcloud/occ maintenance:mode --off

После восстановления резервной копии вашего каталога данных или базы данных необходимо выполнить команду maintenance:data-fingerprint. Это изменяет ETag для всех во время коммуникации с синхронизацией клиентов, позволяя им понять, что файл был изменен.

Команда maintenance:repair запускается автоматически во время обновления для очистки базы данных, поэтому, хотя вы можете запустить ее вручную, обычно в этом нет необходимости:

# sudo -u nginx php /var/www/nextcloud/occ maintenance:repair

Команда maintenance:mimetype:update-db обновляет базу данных Nextcloud и файловый кэш с измененными типами mimetypes, найденными в config/mimetypemapping.json. Выполните эту команду после изменения config/mimetypemapping.json. Если применить mimetype, то потребуется применить и maintenance:mimetype:update-db --repair-filecache, чтобы применить это изменения в существующие файлы.

Выполните команду maintenance:theme:update, если значки вашей пользовательской темы обновляются неправильно.

Это обновляет mimetypelist.js и очищает кэш изображений.

4. Обновление с помощью командной строки.

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

# sudo -u nginx php /var/www/nextcloud/occ upgrade -h

Когда вы выполняете обновление или обновление на вашем сервере Nextcloud, лучше использовать occ для выполнения шага обновления базы данных, а не web-графический интерфейс, чтобы избежать тайм-аутов. PHP-скрипты, вызываемые из web-интерфейса, ограничены 3600 секундами. В больших средах этого может быть недостаточно, и система остается в подвешенном состоянии после старта процессов обновления.

После выполнения всех предварительных шагов используйте эту команду для обновления недостающих индексов ваших баз данных.

Внимание! Делайте резервное копирование перед началом обновления Nextcloud. Всегда может что-то пойти не так и вы останетесь без своего облачного хранилища в самый неподходящий момент.

Внимание! Всегда просмотрите сторонние приложения, если они у вас есть, на предмет совместимости с новым выпуском Nextcloud. Любые приложения, которые не разработаны разработчиками Nextcloud, поставляются сторонними разработчиками. Устанавливайте неподдерживаемые приложения на свой страх и риск. Перед обновлением Nextcloud, все сторонние приложения должны быть отключены. После завершения обновления вы можете снова включить их. В противном случае обновленный Nextcloud может не стартануть из-за устаревшего и плохого по совместимости приложения.

Дадим команду обновить облачное хранилище Nextcloud:

# sudo -u nginx php /var/www/nextcloud/occ upgrade

Обратите внимание, как он детализирует шаги:

Если же обновлений не будет, то ответ будет таким:

Ответ: Nextcloud is already latest version.

Включение детализации отображает временных меток:

# sudo -u nginx php /var/www/nextcloud/occ upgrade -v

Если же обновлений не будет, то ответ будет таким:

Ответ: Nextcloud is already latest version.

Если есть ошибка, она вызывает исключение, и эта ошибка подробно описана в вашем файле журнала Nextcloud, так что вы можете использовать выходные данные журнала, чтобы выяснить, что пошло не так, или использовать в отчете об ошибке:

5. Добавление недостающих индексов баз данных.

Разработчики Nextcloud часто добавляют новые индексы к уже существующим таблицам базы данных, например, для повышения производительности.

Для того чтобы проверить вашу базу данных на наличие отсутствующих индексов и исправить недостатки выполните следующую команду:

# sudo -u nginx php /var/www/nextcloud/occ db:add-missing-columns

# sudo -u nginx php /var/www/nextcloud/occ db:add-missing-indices

6. Список всех команд и параметров.

Запуск occ без параметров содержит список всех команд и параметров.

# sudo -u nginx php /var/www/nextcloud/occ

Ответ командной строки:

Будет длинный-длинный список консольных команд для всех компонентов.

Есть другая команда, которая выдает тот же самый результат:

# sudo -u nginx php /var/www/nextcloud/occ list

Есть команда для выдачи короткой справки помощи:

# sudo -u nginx php /var/www/nextcloud/occ -h

7. Как узнать версию и статус.

Для демонстрации версии существует команда:

# sudo -u nginx php /var/www/nextcloud/occ -V

Ответ: Nextcloud 20.0.0.

Для статуса версии существует команда:

# sudo -u nginx php /var/www/nextcloud/occ status

8. Синтаксис утилиты.

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

Синтаксис таков:

# occ [options] command [arguments]

Получим подробную информацию об отдельных командах с помощью команды help, как в этом примере для команды maintenance:mode:

# sudo -u nginx php /var/www/nextcloud/occ help maintenance:mode

9. Операции с кэшем файлов и файлами на хранении.

Утилита occ имеет возможность управлять файлами в Nextcloud.

9.1. Сканирование файлов для кэша.

Команда files:scan сканирует на наличие новых файлов и обновлений кэш файл. Вы можете повторно сканировать все файлы для каждого пользователя, список пользователей с разделителями пробелов и ограничить путь поиска.

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

# sudo -u nginx php /var/www/nextcloud/occ files:scan --help

Уровни детализации -vv или -vvv автоматически сбрасываются на -v.

Примечание: Для опции --unscanned как правило, существует фоновое задание (через cron), которое будет периодически выполнять это сканирование.

В --unscanned вариант дает возможность запуска из командной строки.

При использовании параметра --path путь должен состоять из следующих компонентов:

"user_id/files/path"

или

"user_id/files/mount_name"

или

"user_id/files/mount_name/path"

где термин files является обязательным.

В приведенном выше примере идентификатор пользователя user_id определяется неявно из заданного компонента path.

Внимание! Параметры --path, --all и user_id являются взаимоисключающими — необходимо указать только один параметр.

9.1.1. Отсканировать всё файлохранилище по всем пользователям:

# sudo -u nginx php /var/www/nextcloud/occ files:scan --all

9.1.2. Отсканировать весь каталог файлохранилища конкретного пользователя user_id:

# sudo -u nginx php /var/www/nextcloud/occ files:scan user_id

или

# sudo -u nginx php /var/www/nextcloud/occ files:scan --path="/user_id/files"

9.1.3. Отсканировать конкретный каталог файлохранилища конкретного пользователя user_id:

# sudo -u nginx php /var/www/nextcloud/occ files:scan --path="/user_id/files/Музыка"

Он понимает названия каталогов на кириллице!

9.2. Очистка кэша.

Команда files:cleanup очищает файловый кэш сервера, удаляя все записи файлов, которые не имеют соответствующих записей в таблице хранения.

# sudo -u nginx php /var/www/nextcloud/occ files:cleanup

9.3. Перемещение файлов.

Вы можете передавать все файлы и общие ресурсы от одного пользователя к другому.

Это полезно перед удалением пользователя:

# sudo -u nginx php /var/www/nextcloud/occ files:transfer-ownership <source-user> <destination-user>

Кроме того, можно перенести только один каталог вместе с его содержимым. Это может быть полезно для реструктуризации вашей организации или квот.

Аргумент --path задается как путь к каталогу, как видно из исходного пользователя:

# sudo -u nginx php /var/www/nextcloud/occ files:transfer-ownership --path="path_to_dir" <source-user> <destination-user>

10. Просмотр логирования.

Эти команды просматривают и настраивают ваши настройки ведения журнала Nextcloud.

Запустите log:file, чтобы увидеть свой текущее расположение журнала и его максимально допустимый размер для ротации:

# sudo -u nginx php /var/www/nextcloud/occ log:file

Используйте опцию --enable, чтобы включить ведение журнала.

Используйте опцию --file, чтобы задать другой путь к файлу журнала.

Установите ротацию по размеру файла журнала в байтах с помощью параметра --rotate-size или выставьте значение на 0 и отключите ротацию.

Команда log:manage устанавливает бэкэнд ведения журнала, уровень журнала и часовой пояс.

# sudo -u nginx php /var/www/nextcloud/occ log:manage

По умолчанию используются значения file, warning и UTC.

Доступные варианты:

--backend [file, syslog, errorlog, systemd]
--level [debug|info|warning|error|fatal]

11. Корзина удаленных файлов.

Внимание! Эта команда доступна только при включенном приложения Deleted files — приложение files_trashbin.

Команда trashbin:cleanup [--all-users] [--] [<user_id>...] удаляет удаленные файлы указанных пользователей в списке с разделителями пробелов или всех пользователей, если указан параметр --all-users.

trashbin
  • trashbin:cleanup [--all-users] [--] [<user_id>...] удалить окончательно удаленные файлы.

В этом примере удаляются удаленные файлы всех пользователей:

# sudo -u nginx php /var/www/nextcloud/occ trashbin:cleanup --all-users

В этом примере удаляются удаленные файлы пользователей molly и freda:

# sudo -u nginx php /var/www/nextcloud/occ trashbin:cleanup molly freda

12. Команды управления пользователями.

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

user
  • user:add добавить пользователя.
  • user:delete удаляет указанного пользователя.
  • user:disable отключает выбранного пользователя.
  • user:enable включает выбранного пользователя.
  • user:lastseen показывает когда пользователь последний логинился.
  • user:list список всех зарегистрированных пользователей.
  • user:report показывает, сколько пользователей имеют доступ.
  • user:resetpassword сбросить пароль по имени пользователя.
  • user:setting чтение и изменение пользовательских настроек.

Вы можете создать нового пользователя с его отображаемым именем, именем входа и любым членством в группе с помощью команды user:add.

Синтаксис такой:

user:add [--password-from-env] [--display-name[="..."]] [-g|--group[="..."]] uid

Команда display-name соответствует Полному имени (Full Name) на странице пользователей в вашем web-интерфейсе Nextcloud, а uid — это их Имя пользователя (Username), которое является их логином. В этом примере добавляется новый пользователь Динара, и добавляет её к users и db-admins группы. Создаются любые несуществующие группы.

12.1. Добавление пользователя.

В данном примере заказали членство сразу в 2 группах users и db-admins:

# sudo -u nginx php /var/www/nextcloud/occ user:add --display-name="Layla Smith" --group="users" --group="db-admins" dinara

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

Команда password-from-env позволяет задать пароль пользователя из переменной окружения. Это предотвращает передачу пароля всем пользователям через список процессов и будет отображаться только в истории пользователя (root), выполняющего команду. Это также позволяет создавать сценарии для добавления нескольких новых пользователей.

Чтобы использовать команду password-from-env, вы должны работать как реальный root, а не sudo, потому что sudo удаляет переменные среды.

В этом примере добавляется новый пользователь Фёдор.

Закажем ему пароль newpassword:

# export OC_PASS=newpassword

Закажем ему учетную запись:

# su -s /bin/sh nginx -c 'php /var/www/nextcloud/occ user:add --password-from-env --display-name="Fedor" --group="users" fedya'

Если ваш пароль newpassword окажется слишком слабый или банальным, то вы получите вот такое сообщение от системы:

Если всё с выбором пароля пройдет хорошо, то ответ будет такой:

Если перейти в панель администрирования, то в списке пользователей можно будет заметить новую учетную запись Фёдора.

12.2. Сброс пароля пользователя.

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

Сбросим пароль Фёдору:

# sudo -u nginx php /var/www/nextcloud/occ user:resetpassword fedya

Вы также можете использовать password-from-env для сброса паролей.

Зададим новый пароль:

# export OC_PASS=newpassword

Установим этот новый пароль Фёдору:

# su -s /bin/sh nginx -c 'php /var/www/nextcloud/occ user:resetpassword --password-from-env fedya'

12.3. Удаление пользователя.

Удаление пользователя Фёдора производится очень просто:

# sudo -u nginx php /var/www/nextcloud/occ user:delete fedya

12.4. Деактивация пользователя.

# sudo -u nginx php /var/www/nextcloud/occ user:disable dinara

12.5. Активация пользователя.

# sudo -u nginx php /var/www/nextcloud/occ user:enable dinara

12.6. Крайний сеанс пользователя.

Просмотр самого последнего входа пользователя в систему:

# sudo -u nginx php /var/www/nextcloud/occ user:lastseen dinara

12.7. Чтение пользовательских настроек.

Считывание пользовательских настроек происходит вот так:

# sudo -u nginx php /var/www/nextcloud/occ user:setting dinara

12.8. Работа с единичными параметрами.

Уточнить настройки пользователя:

# sudo -u nginx php /var/www/nextcloud/occ user:setting dinara core

Уточнить один параметр:

# sudo -u nginx php /var/www/nextcloud/occ user:setting dinara core lang

Ответ: en.

Установить настройку почтового ящика пользователю:

# sudo -u nginx php /var/www/nextcloud/occ user:setting dinara settings email "new-layla@example.tld"

Ответ: ничего.

Удалить один параметр:

# sudo -u nginx php /var/www/nextcloud/occ user:setting dinara settings email --delete

Ответ: ничего.

Создайте простой отчет, который подсчитывает всех пользователей, включая пользователей на внешних серверах аутентификации пользователей, таких как LDAP:

# sudo -u nginx php /var/www/nextcloud/occ user:report

13. Команды администрирования групп пользователей.

Команда group позволяет проводить создание и удаление групп, добавление и удаление пользователей в группах, отображение списка всех пользователей в группе:

group
  • group:add добавить группу.
  • group:delete удалить группу.
  • group:adduser добавить пользователя в группу.
  • group:removeuser удалить пользователя из группы.
  • group:list список настроенных групп.

Вы можете создать новую группу с помощью команды group:add.

Синтаксис таков:

group:add [gid]

Команда gid соответствует имени группы, которое вы вводите после нажатия кнопки Добавить группу на странице Пользователей в web-интерфейсе Nextcloud.

Этот пример добавляет новую группу beer:

# sudo -u nginx php /var/www/nextcloud/occ group:add beer

Добавьте существующего пользователя в указанную группу с помощью команды group:adduser.

Синтаксис таков:

group:adduser [gid] [uid]

Этот пример добавляет пользователя denis в существующую группу beer:

# sudo -u nginx php /var/www/nextcloud/occ group:adduser beer denis

Ответ: ничего.

Вы можете удалить пользователя из группы с помощью команды group:removeuser.

Этот пример удаляет существующего пользователя denis из существующей группы beer:

# sudo -u nginx php /var/www/nextcloud/occ group:removeuser beer denis

Ответ: ничего.

Удалите группу с помощью команды group:delete. Удаление группы не приводит к удалению пользователей в группе. Вы не можете удалить группу администратор.

В этом примере удаляется существующая группа beer:

# sudo -u nginx php /var/www/nextcloud/occ group:delete beer

Настройка группы с помощью команды group:list.

Синтаксис таков:

group:list [-l|--limit] [-o|--offset] [--output="..."]
  • limit allows позволяет указать количество групп для извлечения.
  • offset это смещение для извлечения групп.
  • output задает формат вывода (plain, json или json_pretty). По умолчанию, все просто.

14. Команды управления версиями файлов на хранении.

Внимание! Эта команда доступна только при включенном приложении Versions — приложение files_versions.

Используйте эту команду для удаления версий файлов для определенных пользователей или для всех пользователей, если они не указаны:

versions
  • versions:cleanup удалить все версии файлов.

В этом примере удаляются все версии для всех пользователей:

# sudo -u nginx php /var/www/nextcloud/occ versions:cleanup

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

# sudo -u nginx php /var/www/nextcloud/occ versions:cleanup dinara fred

15. Управление приложениями.

Команды app, включение и отключение приложений:

app
  • app:install становить указанное приложение.
  • app:remove становить указанное приложение.
  • app:check-code проверьте код на соответствие требованиям.
  • app:disable отключить приложение.
  • app:enable включить приложение.
  • app:getpath получить абсолютный путь к каталогу приложений.
  • app:list список всех доступных приложений.
  • app:update обновление приложения или всех приложений.

Загрузите и установите приложение:

# sudo -u nginx php /var/www/nextcloud/occ app:install twofactor_totp

Установить, но не активировать:

# sudo -u nginx php /var/www/nextcloud/occ app:install --keep-disabled twofactor_totp

Перечислить все установленные приложения и показать, включены они или отключены:

# sudo -u nginx php /var/www/nextcloud/occ app:list

Ответ: длинный список установленных приложений.

Активировать приложение, например приложение поддержки внешнего хранилища:

# sudo -u nginx php /var/www/nextcloud/occ app:enable files_external

Ответ: files_external enabled.

Деактивировать приложение:

# sudo -u nginx php /var/www/nextcloud/occ app:disable files_external

Ответ: files_external disabled.

Команда app:check-code имеет несколько проверок: он проверяет, использует ли приложение публичный API Nextcloud (OCP) или частный API (OC_), а также проверяет наличие устаревших методов и валидность info.xml файла. По умолчанию все проверки включены.

Приложение Activity — это пример правильно отформатированного приложения:

# sudo -u nginx php /var/www/nextcloud/occ app:check-code notifications

Ответ: App is compliant — awesome job!

Если у вашего приложения есть проблемы, вы увидите ответ, подобный этому:

# sudo -u nginx php /var/www/nextcloud/occ app:check-code foo_app

Вы можете получить полный путь к файлу приложения:

# sudo -u nginx php /var/www/nextcloud/occ app:getpath notifications

Ответ: /var/www/nextcloud/apps/notifications.

Чтобы обновить приложение, например контакты:

# sudo -u nginx php /var/www/nextcloud/occ app:update contacts

Чтобы обновить все приложения:

# sudo -u nginx php /var/www/nextcloud/occ app:update --all

16. Оригиналы источников информации.

  1. docs.nextcloud.com «Using the occ command».
  2. docs.nextcloud.com «How to upgrade».

Читайте также: