Перемещение каталога данных ownCloud в Ubuntu 16.04
ownCloud – это надёжное средство для хранения конфиденциальных данных на частном сервере. По умолчанию данные сохраняются на том же разделе, что и операционная система, что может привести к нехватке свободного дискового пространства. Например, резервное копирование изображений высокого разрешения и видео высокой четкости может быстро исчерпать всё доступное пространство. Со временем потребности в хранении данных будут увеличиваться, в следствие чего может возникнуть необходимость переместить каталог данных OwnCloud.
Данное руководство поможет вам добавить дисковое пространство или просто изменить расположение хранилища OwnCloud по умолчанию.
Требования
- Сервер Ubuntu 16.04.
- Предварительно установленный и настроенный сервер ownCloud; руководство по установке ownCloud можно найти здесь. Согласно предложенному руководству каталог data находится в root-каталоге ownCloud, /var/www/owncloud.
В данном руководстве показано, как переместить данные в дополнительный том, смонтированный в /mnt/owncloud. Это поможет вам переместить каталог data в новое место независимо от того, какое хранилище вы используете.
1: Перемещение каталога данных ownCloud
Если вы уже используете ownCloud и внесли изменения в бэкенд, при перемещении каталога данные могут повредиться. Чтобы предотвратить это, остановите сервер Apache:
sudo systemctl stop apache2
Не все команды для управления сервисами возвращают результат на экран. Чтобы убедиться, что команда выполнена успешно, запустите:
sudo systemctl status apache2
Если сервер остановлен, последняя строка вывода будет выглядеть так:
. . .
Stopped LSB: Apache2 web server.
Примечание: Настоятельно рекомендуется создать резервную копию данных, прежде чем вносить какие-либо изменения.
Скопируйте содержимое каталога data в новый каталог с помощью rsync. Флаг –a сохраняет привилегии и другие свойства каталога. Флаг –v предоставляет подробный вывод. В приведённом ниже примере данные скопированы в каталог owncloud-data-bak, который хранится в домашнем каталоге.
sudo rsync -av /var/www/owncloud/data/ ~/owncloud-data-bak /
Теперь можно переместить каталог data в новое место с помощью команды mv.
sudo mv /var/www/owncloud/data /mnt/owncloud/
Переместив каталог data, нужно обновить настройки ownCloud.
2: Настройка ownCloud
ownCloud хранит все настройки в одном файле. В нём нужно указать путь к новому каталогу данных.
sudo nano /var/www/owncloud/config/config.php
Найдите переменную datadirectory и обновите путь к каталогу:
Теперь нужно убедиться, что данные доступны из нового каталога.
3: Запуск Apache
Запустите Apache с помощью systemctl и восстановите доступ к ownCloud.
sudo systemctl start apache2
Откройте веб-интерфейс ownCloud:
ownCloud является веб-приложением, а потому не предоставляет средства для проверки целостности данных. Однако, уже то, что вы можете получить доступ к веб-интерфейсу, означает, что операция прошла успешно.
Заключение
Переместив каталог data на дополнительное устройство хранения, вы увеличили объём доступного дискового пространства ownCloud.
Использование ownCloud 7 в полевых условиях
Прочитав статью «Делаем backup Google или паранойя по поводу санкций. Owncloud и другие открытые решения», я решил, что пора дать второй шанс ownCloud’у после крайне неудачного опыта с 5 версией. В итоге оказалось, что за сей короткий промежуток времени ownCloud приобрел вполне добротный вид и способна работать в качестве повседневного инструмента — обнаруженные проблемы либо не существенны, либо имеют решение. Те, кто не знаком с ownCloud, могут узнать о его ключевых особенностях, к примеру, на официальном сайте или на opennet.ru. В этой статье я НЕ расскажу о том, как надо устанавливать ownCloud и как потом его с нуля настроить, потому что уже достаточно об этом писано-расписано-переписано, да и установка не представляет собой ничего сложного, я лишь кратко упомяну важные детали. Под катом будет информация о том, что же интересного умеет ownCloud, какие приложения в apps.owncloud.com мне показались стоящими внимания, затрону интеграцию с KDE и Android, а также скажу пару слов о подводных камнях и интересных местах, ну а в конце подведу итоги для тех, кому лень столько читать. ownCloud на своём сервере я использую в одиночестве, поэтому администрирование пользователями и всё сопутствующее будет описано крайне скудно. Осторожно: много картинок.
Несколько слов об используемом софте
Вся конструкция зиждется на ArchLinux x86_64 + Nginx 1.6.1 + MariaDB 10.0.13 + php-fpm 5.5.16 + ownCloud 7.0.2 (ejabberd 14.07 опционально) из стандартных репозиториев. Настройки практически не отличаются от рекомендуемых, сертификаты брал у StartSSL. Для синхронизации взяты: пустой ArchLinux + KDE, Sony Xperia S CyanogenMod 11 (Android 4.4.2) с множеством контактов без GAPPS, пустой Google Nexus P.A.C. (Android 4.3.1) с GAPPS и подключённым Google-аккаунтом. Приложения в большинстве своём устанавливаю из F-Droid. Под спойлером находятся небольшие нюансы конфигурации, которые могут быть полезны администратору. Под него стоит залезать только при установке ownCloud, для общего понимания ценности платформы данная информация не нужна.
Мелочи конфигурации
- Сделайте бекап перед любыми операциями над приложениями, старайтесь не закрывать окно со списком приложений, иначе можете остаться с белой простынёй вместо интерфейса ownCloud. Если всё же всё закрыли и выдаётся только белый экран, то приложение можно выключить напрямую из БД, поправив у нужного приложения (app_id) запись в поле configvalue таблицы oc_appconfig.
- Для того, чтобы ownCloud успешно подключился к MySQL, при установке вместо localhost стоит написать 127.0.0.1, иначе произойдёт ошибка подключения
- Если понадобится Local MS Word support в Documents, стоит проверить, запускается ли вообще libreoffice (openoffice) из командной строки. Также в настройке может помочь этот комментарий. И проверьте ‘preview_libreoffice_path’ в config.php. Если convtest.php начал ругаться на «Document is empty» — всё хорошо, смело тестируйте на живых *.docx.
- Если папка /var/lib/mysql стала разрастаться до небывалых размеров, лучше поскорее решить эту проблему. Мне помогли innodb_file_per_table=1 и expire_logs_days=7 в my.cnf. После перезапуска сервиса папка /var/lib/mysql уменьшилась с 21 Гб до 190 Мб.
- В файле /apps/documents/ajax/download.php в 19 строке стоит Filter_Office заменить на \OCA\Documents\Filter\Office, иначе файлы не будут загружаться. В git это уже исправлено.
- Для корректной работы JavaScript XMPP Chat компонент стоит брать не из apps.owncloud.com, а из папки build из GitHub, тогда точно будет работать. Для доступа к bosh server (HTTP Binding, XEP-0124) я использовал
location /http-bind/ < proxy_pass http://example.com:5280/http-bind/; >
# curl -sS https://getcomposer.org/installer | php # php composer.phar install
Коротко о главном
По моему мнению, следующий список приложений заслуживает особого внимания. Часть приложений была включена в пакет, остальные скачивались и устанавливались отдельно. Список приложений:
Activity, Calendar, Contacts, Deleted files, Encryption, Full Text Search, PDF Viewer (pdfjs-based), Pictures, Share Files, Text Editor, Video Viewer (MediaElement.js), Files move, JavaScript XMPP Chat, Mail, Maps, News, Notes, Music, RainLoop Webmail, Passman, Roundcube, Grauphel, Tasks Enhanced, ocDashboard, Embedded Videostream, Old Menu, ATNotes.
А теперь подробнее о некоторых компонентах, использовании и синхронизации.
Официальный desktop-клиент

ownCloud Desktop Client доступен для Linux, Windows и Mac. Поддерживается синхронизация отдельных папок, игнорирование файлов и папок по шаблону, пауза синхронизации, уведомления на рабочем столе, логгирование действий (текущей сессии), работа через HTTP-SOCKS прокси, ограничение скорости загрузки/отдачи. Клиент поддерживает только один аккаунт и имеет не совсем адекватный интерфейс добавления синхронизации отдельных папок, больше минусов я не заметил, функциональности хватает для повседневных задач. Подчеркну, что это именно синхронизатор файлов, а не удалённый доступ к ним. Для обычного удалённого доступа к файлам можно использовать любую программу, работающую с WebDAV (Dolphin в KDE, проводник в Windows).
Официальный Android-клиент

ownCloud for Android (F-Droid, Google Play) версии 1.5.8 умеет выполнять следующие функции:
- Скачивать, заливать, удалять и переименовывать файлы, папки только удалять и переименовывать.
- Автоматически синхронизировать вручную указанные файлы.
- Автоматическая загрузка создаваемых фото- и видеофайлов.
- Открытие общего доступа для файлов и папок.
- Поддержка нескольких аккаунтов.
- Поддержка пароля для запуска приложения.
Это, собственно, всё. Лично я активно пользуюсь автосинхронизацией файлов, автозагрузкой файлов, общим доступом (сфоткал — нажал на уведомление — поделиться ссылкой — копировать ссылку; обычные файлы шарятся примерно так же), ну и просто удобным доступом к файлам в облаке. При длительном использовании багов не замечено, однако было бы хорошо осуществить:
- Аплоад папок.
- Кнопку «загрузить текущие фото и видео».
- Автосинхронизацию указанных папок, а не только файлов.
- Интеграцию средств синхронизации календаря, контактов и задач.
- При автоматической загрузке фото и видео, файлы копируются в папку /sdcard/owncloud/user@example.com/НемедленнаяЗагрузка, затем уже оттуда попадают на сервер, т.е. фактически присутствуют 2 копии. Это может быть достаточно ресурсозатратно при длительном использовании.
- Разделение настроек автозагрузки фото- и видеофайлов в зависимости от аккаунта. Сейчас отснятый материал либо никуда не загружается, либо загружается сразу во все аккаунты, для сепарации придётся держать 2 приложения на устройстве.
- Автоматически фото и видео загружается в папку «НемедленнаяЗагрузка», возможности изменить это имя из настроек приложения не хватает.
Первые 3 пункта нивелируются программой FolderSync (Google Play, free), только без особого удобства. Для синхронизации календаря, контактов и задач тоже существуют отдельные программы, а вот последние 2 пункта надо бы поправить в приложении здесь и сейчас. Мне кажется, что их исправление не составит особого труда, может даже эта статья побудит какого-нибудь доброго человека оформить pull request.
Альтернативные приложения: ownCloud Client (Google Play, free) от BezKloboukuNos, множество приложений, которые работают с файлами по WebDAV.
Помимо Android также заявлена поддержка Windows Phone и iOS.
Календарь

Приложение умеет работать с несколькими календарями, скрывать/показывать указанные, шарить календари между пользователями ownCloud, поддерживает гибкую систему повтора события. Очень бы хотелось видеть возможность удобного шаринга календаря внешнему миру, но ownCloud умеет только отдавать листинг с *.ics v2.0 файлами после успешной basic-аутентификации.
Для экспорта календаря с телефона/планшета в ownCloud необходимо воспользоваться ручными методами, предоставляемыми соответствующим поставщиком календаря. В качестве средства синхронизации я использую DAVdroid (F-Droid, Google Play), в качестве альтернативы можно рассмотреть CalDAV-Sync (Google Play), который имеет дополнительные функции (смена имени и цвета календаря, возможность синхронизации только с сервера, различные диапазоны синхронизации), но мне вполне хватает DAVdroid. Marten Gajda (разработчик CalDAV-Sync, CardDAV-Sync и ещё нескольких приложений, представленных ниже) порядка двух лет назад обещал выложить исходный код своих приложений, когда они будут готовы к версии 1.0. Подождём, посмотрим, может он так и поступит вскоре.
Контакты

С контактами пришлось немного повозиться. Как оказалось, невозможно никакими средствами силами клиентов в пару нажатий отправить текущие контакты телефона на сервер. Кроме того, если экспортировать контакты в vCard и загрузить в ownCloud, то тоже ничего адекватного не выйдет. В итоге я экспортировал все контакты со всех устройств в vCard с помощью vCardIO (code.google.com, Google Play) (потому что на встроенный ownCloud ругается), удалил все контакты со всех устройств, загрузил все vCard в ownCloud, запустил синхронизацию на всех устройствах. Именно после этих действий я получил корректную синхронизацию.
Для синхронизации контактов я использую всё тот же DAVdroid, но в качестве альтернативы можно использовать CardDAV-Sync beta(Google Play, free), который умеет ещё и выбирать направленность и приоритетность синхронизации, а также периодическую синхронизацию.
Задачи
Tasks Enhanced предоставляет интерфейс для составления задач с несколько иным функционалом, нежели календарь: прогресс выполнения задачи, комментарии различных пользователей ownCloud, группировка по важности/времени/статусу события, напоминание о событии в указанное время. Для хранения данных использует идентичные календарю объекты хранения, поэтому будьте внимательны, удаляя список/календарь. Также, если скрыть календарь, то список задач тоже будет скрыт, а для расшаривания задач нужно полностью расшарить календарь. Tasks Enhanced умело дополняет календарь: если в календаре удобно хранить расписания, дальние и повторяющиеся события, встречи, напоминалки и праздники, то в Tasks Enhanced можно поместить информацию о проекте с его сроками, единичные события с напоминанием о них за какое-нибудь удобное время, ну или просто использовать как TODO-лист. Так как записи календаря и задач в БД мало чем отличаются и находятся в одной таблице, то теоретически можно написать для WEB GUI небольшую кнопку по переносу записи, но это просто мысли в слух.
Для работы с Tasks Enhanced на Android я нашёл только одно приложение — Tasks (F-Droid, Google Play), однако оно может синхронизировать задачи, только если установлен вышеупомянутый CalDAV-Sync. Приложение умеет показывать задачи с различными сортировками (все, срок, начало, приоритет, процесс), добавлять/редактировать задачи, напоминать о начале и завершении задачи. Внешний вид минималистичен, управление выстроено логично, пользоваться приятно. Альтернативой может служить приложение CalDAV Tasksync beta free (Google Play), которое имеет немного иной набор умений, но таки имеет существенный недостаток — не умеет напоминать о событиях. Автор обещал исправить сие недоразумение в ближайших релизах. Стоит поставить оба приложения и самостоятельно решить, каким удобнее пользоваться. Task Sync — To-Do List (Google Play) тоже должен поддерживать ownCloud, но я его не тестировал.
RSS-агрегатор

News — это простейший сборщик новостей, умеющий выполнять всего несколько функций: добавить в папку/переименовать/удалить ленту, создать/переименовать/удалить папку, фиды перемещаются с помощью Drag&Drop, ну и около фида кнопка «Mark read» присутствует, как и галка «Keep unread» около записи. Не являюсь знатоком агрегаторов, функционал достаточен для удобного управления фидами. Не знаю, насколько и чья это «фича», но все свои ленты я добавлял не через прямые RSS-ссылки, а просто вставляя адрес домашней страницы в поле и нажимая кнопку «Add».

Для Android есть приложение ownCloud News Reader (F-Droid, Google Play), которое позволяет читать собранные агрегатором данные. Помимо, собственно, прочтения данных, программа позволяет добавить фид и пометить указанную запись как непрочитанную. На этом функционал и закончился, причём добавление фида и перемещение его через WEB GUI в папку привело к тому, что клиент вообще перестал как-либо синхронизироваться, пришлось переустанавливать. Иногда бывает, что подтупливает при синхронизации, больше недостатков не заметил. Несмотря на скромные возможности, пользоваться WEB- и Android-приложениями удобно, переходить обратно на Tiny Tiny RSS желания нет. Альтернативных Android-клиентов к RSS-агрегатору я не нашёл.
В магазине приложений Google Chrome можно установить расширение ownCloud News Checker, которое должно показывать (у меня работает со значительной задержкой) количество непрочитанных записей и позволяет быстро перейти на страницу ownCloud News. Насколько полезно это приложение — судите сами.
Закладки


Ну тут всё просто: поля для названия, адреса, описания и тегов. Имеется возможность перетащить в панель закладок браузера кнопку, которая позволит в 1 клик открыть всплывающий интерфейс добавления закладки для текущей страницы. Кнопку можно взять (и перетащить в панель закладок) на стартовой странице приложения в WEB GUI ownCloud’а.Также поддерживается импорт/экспорт закладок, мне удалось без сторонних инструментов экспортировать закладки из Chromium в ownCloud посредством HTML-файла.
Для Android существует приложение ownCloud Bookmarks (Google Play), которое позволяет просматривать по тегам, добавлять и удалять закладки. Добавить можно не только руками, но и через кнопку «Отправить» в браузере (как минимум во встроенном). Экспорта и импорта нет, да и не больно и надо, главное, что есть удобный доступ к закладкам с мобильных устройств.

В магазине Google Chrome есть приложение Owncloud Bookmarks, с помощью которого можно быстро добраться до своих закладок, сортировка по тегам присутствует, кнопка добавления закладки тоже, так что на панель выносить отдельную не стоит, разве что для экономии одного клика. Если будете пользоваться закладками ownCloud — обязательно поставьте это расширение.
Заметки


Notes — это фактически WEB-морда к /Notes/*.txt. Название заметки соответствует названию текстового файла и первой строке содержимого, содержимое заметки — содержимому текстового файла. Минималистичность прям зашкаливает, даже поля для названия заметки не существует. Для Android существует My Own Notes (F-Droid, Google Play), которое позволяет добавлять/изменять/удалять заметки.
Также в ownCloud можно поставить приложение ATNotes, которое уже имеет названия у заметок, умеет шарить внутри ownCloud’а указанные заметки, поддерживает простейшие элементы форматирования текста и хранит данные не в директории пользователя, а в базе данных. Однако ATNotes не умеет синхронизироваться с чем бы то ни было.
Музыка


Music фактически умеет корректно работать только с файлами MP3. В теории, если корректно оформить коллекцию, то можно из централизованного места по сети слушать музыку посредством встроенного Ampache. На деле же не все приложения справляются с этой задачей. На Android у меня корректно заработал только Just Player (F-Droid, Google Play), и то, наверное, потому, что в коде Music имеется «Dirty fix for JustPlayer». На десктопе ни Amarok, ни Viridian не осилили подключение, зато с ходу заработал Tomahawk. Жаль, будем ждать исправлений.
Изображения

Приложение парсит папки и составляет сетку из картинок с древом, соответствующим этому древу. Картинки можно разворачивать почти на весь экран, есть поддержка слайдшоу — автосмена картинок каждые ~4.5 секунды.
Для Android имеется приложение ownCloud Gallery (Google Play, free), баги прямо прыгают на пользователя с экрана, но так или иначе приложение справляется с генерацией превьюшек, на весь экран открыть оригинал не в состоянии. Разработчик отплёвывется от этого с помощью «limitation of the ownCloud API», но я плохо понимаю, почему нельзя забрать файл целиком по WebDAV, как это делает оригинальное приложение, и показывать потом пользователю нормально.
На этом приложения, которые могут синхронизироваться с другими устройствами, закончились.
Jabber-клиент

JavaScript XMPP Chat — миниатюрный Jabber-клиент для ownCloud, не умеет выступать в роли standalone-клиента, поэтому требует HTTP Binding (XEP-0124) от XMPP-сервера. Кроме стандартных сообщений, заявлена поддержка OTR и видеозвонков (WebRTC), но их я не тестировал. Есть поддержка уведомлений на рабочем столе, всё лаконично и просто, без излишеств. На странице аутентификации в ownCloud теперь появится дополнительная кнопка — «Log in without chat», основная же кнопка «Войти» теперь помимо самого ownCloud аутентифицирует и Jabber-клиент. Из минусов стоит отметить проблемы с автоматической аутентификацией и в целом не очень стабильную работу, и то, что полоса сворачивания OJSXC перекрывает полосу прокрутки страницы.
Менеджер паролей

Passman — менеджер паролей с шифрованием на клиентской стороне (AES). Может быть я что-то делаю не так, но я так и не понял, как туда вносить записи. Кроме того, у меня не работают кнопки в нижнем левом углу, видать это приложение совсем криво встало у меня. Да и вообще лично я не вижу в этом приложении пользы, мне проще синхронизировать свою KeePass-базу и открывать её. Так безопасней.
Почта

Почтовые клиенты представлены тремя приложениями: Roundcube, RainLoop Webmail и Mail. Первые 2 приложения фактически встраивают в окно с ownCloud’ом интерфейс соответствующего клиента, у Roundcube рабочим оказался автологин, у Rainloop нет. У Roundcube есть плагин, позволяющий сделать обратную операцию — интегрировать окно с ownCloud в Roundcube, но мне это показалось не интересным. Если вы используете Roundcube, советую поставить плагин Roundcube-CardDAV, который позволит сихронизировать контакты из ownCloud для пущего удобства. В Rainloop данная функция уже встроена, так что ничего устанавливать не надо. Учтите, что адрес должен быть не просто https://example.com/remote.php/carddav/, как в большинстве программ, работающих с CardDAV, а именно полный — https://example.com/remote.php/carddav/addressbooks/USER/Контакты.
Последний клиент — Mail — разрабатывается самим проектом, релиза до сих пор не было (и это надо учитывать, если появится желание использовать в повседневной работе), но, по моему мнению, приложение вполне работоспособно. Если достаточно будет проверить почту и ответить простым сообщением — Mail вполне для этого сгодится. Данное приложение пока что не получится установить просто так, нужно будет прочитать README и выполнить указанные там инструкции (либо заглянуть под спойлер в начале статьи).
На этом интересные приложения, требующие дополнительного объяснения, закончились. Скажу пару слов о менее интересных приложениях, с которыми можно ознакомиться уже на apps.owncloud.com.
Прочие приложения
Documents — совместная работа с документами. Работать над сложными документами, пестрящими таблицами и формулами, может и не получиться, но правки в несложные документы коллективно вносить очень даже удобно.
Maps — карты, использующие openlayers (OpenStreetMap) в качестве источника карт, умеет искать ближайшие заведения.
grauphel — Tomboy sync server — tomboy REST server, ничего больше говорить и не надо.
ocDashboard — страница с виджетами для быстрого доступа к информации.
Embedded Videostream — приложение для проигрывания мультимедиа файлов прямо в браузере.
Old menu — для тех, кому не нравится новое выпадающее меню и хочет вернуть старое, что слева.
Files move — приложение, позволяющее перемещать файлы по папкам прямо в WEB GUI ownCloud.
mozilla_sync — свой sync-server для Firefox. Данным браузером я не пользуюсь, поэтому не проверял на работоспособность.
Помимо этих приложений, вы можете найти обновления и прочие приложения по адресу apps.owncloud.com. Многие приложения до сих пор не портированы с 5 и 6 версий ownCloud, но, повторюсь, проект очень активно развивается и большинство интересных приложений либо уже портированы, либо будут портированы вскоре. На данный момент разрабатывается ownCloud 8, уже сейчас в магазине приложений можно найти разрабатываемый только для 8й версии News — Unstable channel. Также можно просмотреть github.com/owncloud на предмет приложений, не попавших в магазин.
Дополнительная информация
KDE позволяет подключить контакты и календари с помощью CardDAV и CalDAV (System Settings — Personal Information). Там также можно подключить почтовые ящики. Вкупе с kontact (в ArchLinux советую сразу установить пакет kde-meta-kdepim) эти средства позволят получить централизованный доступ к календарям, задачам и контактам из ownCloud, почте, локальным фидам и заметкам. О возможностях Kontact рекомендую прочитать на просторах Интернета.
Перед использованием ownCloud категорически советую прочитать документацию по адресу doc.owncloud.org. Там можно будет узнать о дополнительных возможностях ownCloud: полное шифрование пользовательских файлов, расшаривание данных между двумя ownCloud-серверами, синхронизация, управление удалёнными файлами, версионирование файлов и прочее. Помимо информации для конечных пользователей, на doc.owncloud.org можно найти полезности для администраторов и девелоперов.
Итого
Для тех, кому лень читать статью целиком, выделю основные плюсы и минусы платформы.
Плюсы:
Полностью рабочие основные сервисы, проект явно готов к повседневному использованию.
Наличие приложений на все случаи жизни.
Приятные мелочи вроде шаринга файлов и папок, автоматического версионирования файлов, совместной работы с документами, монтирование внешних ресурсов и т.п.
Синхронизация данных на основных десктопных и мобильных платформах.
Активное развитие.
Минусы:
В некоторых приложениях представлены лишь базовые функции, которых может и не хватить.
Редкие задержки при соединении с сервером.
Возможны редкие ошибки при установке и настройке приложений. По началу это может отпугнуть, но после настройки приложения работают стабильно, кроме Ampache и OJSXC. Фактически пришлось почесать голову только при установке OJSXC в связи с сыростью кода, прочие приложения устанавливаются без проблем, стоит только прочитать README.
Если есть возможность, вы можете лично поучаствовать в развитии платформы, особенно в официальном Android-приложении это было бы очень кстати. Поле для работы ещё огромное по всем фронтам, есть где развернуться.
Уже сейчас можно с уверенностью сказать, что ownCloud 7 можно использовать в повседневной жизни, установить дополнительные программы на свои компьютеры, ноутбуки, планшеты и смартфоны, настроить синхронизацию необходимых компонентов, после чего спокойно радоваться комфортной работе с едиными данными.
Полезные ссылки
Официальный сайт — owncloud.org
Особенности платформы — owncloud.org/features
Документация — doc.owncloud.org
Демо — demo.owncloud.org
Статьи о релизах версий ownCloud от opennet.ru — 1, 2, 3, 4, 5, 6, 7.
Дополнительные приложения — github.com/owncloud/core/wiki/Apps
Альтернативы — Seafile (demo), Pydio (demo). Можно использовать их в качестве дополнительного средства доступа к файлам (потому что они в первую очередь нацелены именно на работу с файлами и не являются комбайнами, как ownCloud), чем я скоро и займусь.
Свое облачное хранилище — ownCloud

ownCloud — это персональное облачное хранилище данных, подобное Google Drive или Dropbox, но интересно это решение не только возможностью хранить файлы и получать доступ к ним с любого устройства. ownCloud — это гораздо больше:
- Синхронизация календарей на всех устройствах
- Хранилище контактов
- Фотоархив
- Персональное файловое хранилище
- Синхронизация с другими облачными хранилищами — DropBox, Swift, Google Docs, Amazon S3
- Встроенный модуль просмотра PDF
- Музыкальный проигрыватель
Полный список возможностей ownCloud представлен на официальном сайте проекта — owncloud.org
Установка ownCloud
Традиционно с заказа SSD VDS или выделенного сервера — это зависит от того, какой объем данных будет храниться. В качестве операционной системы выберем Ubuntu, однако при желании можно поэкспериментировать с другими ОС.
Apache, PHP, MySQL
Установим «джентельменский набор» из актуальных версий PHP, MySQL и Apache. В выбранной нами Ubuntu это можно сделать одной командой:
Собственный Dropbox на ownCloud. Резервное копирование данных со смартфона. Серверная часть

Кража телефона простимулировала задуматься над резервным копированием данных на телефоне. Вторая причина — на старом телефоне, к которому вернулся, накопитель всего на 64 ГБ, часть емкости уже занята системной информацией. Фотографии и видео быстро заполняют весь накопитель.
Ручное перекладывание по USB-кабелю на компьютер как решение не рассматривалось. FTP и CIFS/NFS — несовременно. Выбрал ownCloud.
- Есть бесплатная версия от сообщества.
- Есть репозитории под Ubuntu, есть собственный платный (сейчас не очень актуально) и
сторонние бесплатные клиенты. - Вся информация лежит на вашем сервере/хранилище.
- Есть инструкции, как настраивать на русском и на английском
- Есть веб-интерфейс для настройки и для просмотра сохраненных файлов
- Есть поддержка нескольких пользователей. Можно сделать хранилища для других жителей квартиры. Ваши данные не будут путаться с их. Каждый будет иметь доступ только к своим данным. Ну не считая админа сервера 🙂
Краткий план установки такой:
- Установка необходимых пакетов
- Настройка MariaDB
- Настройка Apache
- Загрузка и установка ownCloud
- Выбор места на сервере для хранения файлов
- Настройка ownCloud
- Поиск и исправление ошибок собственных и из используемых инструкций
-
Устанавливаем Apache, MariaDB, PHP, а также служебные пакеты.
evgeniy@owncloud-vm:~$ sudo pecl channel-update pecl.php.net
Updating channel «pecl.php.net»
Update of Channel «pecl.php.net» succeeded
Я не специалист в PHP, поэтому просто приведу цитату из man-страницы pecl
PEAR is the PHP Extension and Application Repository, found at pear.php.net.
The pear command is used to install PEAR extensions.
The pecl command is used to install PECL extensions.
Создаем папку для кэша PEAR
evgeniy@owncloud-vm:~$ sudo pear channel-update pear.php.net PHP Warning: PHP Startup: Unable to load dynamic library 'smbclient.so' (tried: /usr/lib/php/20190902/smbclient.so (/usr/lib/php/20190902/smbclient.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/smbclient.so.so (/usr/lib/php/20190902/smbclient.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Notice: Trying to access array offset on value of type bool in PEAR/REST.php on line 187 PHP Notice: Trying to access array offset on value of type bool in /usr/share/php/PEAR/REST.php on line 187
Проблема была решена следующим набором команд — обновление PEAR до версии 1.10.13 (рекомендуется в подробной инструкции, в краткой такого нет) и принудительное обновление состава пакетов из репозитория:
evgeniy@owncloud-vm:~$ pear version evgeniy@owncloud-vm:~$ sudo pear upgrade --force --alldeps http://pear.php.net/get/PEAR-1.10.13 evgeniy@owncloud-vm:~$ sudo pear clear-cache evgeniy@owncloud-vm:~$ sudo pear update-channels evgeniy@owncloud-vm:~$ sudo pear upgrade --force evgeniy@owncloud-vm:~$ sudo pear upgrade-all evgeniy@owncloud-vm:~$ pear version
evgeniy@owncloud-vm:~$ sudo pecl install smbclient-stable downloading smbclient-1.0.6.tgz . Starting to download smbclient-1.0.6.tgz (33,207 bytes) . done: 33,207 bytes . evgeniy@test:~$ echo "extension=smbclient.so" | sudo tee /etc/php/7.4/mods-available/smbclient.ini extension=smbclient.so evgeniy@owncloud-vm:~$ sudo phpenmod smbclient
Перезапускаем Apache и проверяем, что модуль SMB загружен:
evgeniy@owncloud-vm:~$ sudo systemctl restart apache2 evgeniy@owncloud-vm:~$ php -m |grep smbclient
evgeniy@owncloud-vm:~$ my_ip=$(hostname -I|cut -f1 -d ' ') evgeniy@owncloud-vm:~$ my_domain="test.owncloud.local"
Меняем имя сервера на то, что мы сохранили в переменную my_domain
evgeniy@owncloud-vm:~$ hostnamectl -f owncloud-vm evgeniy@owncloud-vm:~$ sudo hostnamectl set-hostname $my_domain evgeniy@owncloud-vm:~$ hostname -f test.owncloud.local
evgeniy@test:~$ sudo mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on. Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. . Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] n . skipping. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] . Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] - Dropping test database. . Success! - Removing privileges on test database. . Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] . Success! Cleaning up. All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
Проверяем версию, ну и что есть доступ к консоли администратора
evgeniy@test:~$ mysqladmin -u root -p version Enter password: mysqladmin Ver 9.1 Distrib 10.3.34-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.3.34-MariaDB-0ubuntu0.20.04.1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 1 hour 34 min 35 sec Threads: 6 Questions: 74 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.013
Какая может быть проблема. У меня эта команда выдавала ошибку доступа. Если запускать ее с sudo, то команда работала корректно. Аналогичная история была с командой «mysql -u root»
Это можно исправить следующим набором команд:
evgeniy@test:~$ sudo mysql -u root [mysql] use mysql; [mysql] update user set plugin='' where User='root'; [mysql] flush privileges; [mysql] \q
Команда из инструкции к ownCloud
evgeniy@test:~$ sudo sed -i «/\[mysqld\]/atransaction-isolation = READ-COMMITTED\nperformance_schema = on» /etc/mysql/mariadb.conf.d/50-server.cnf
Перезапускаем сервер БД и проверяем его статус:
evgeniy@test:~$ sudo systemctl restart mariadb evgeniy@test:~$ sudo systemctl status mariadb ● mariadb.service - MariaDB 10.3.34 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-06-05 00:03:15 MSK; 31s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 1253 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 1264 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 1266 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] &> Process: 1350 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 1352 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS) Main PID: 1319 (mysqld) Status: "Taking your SQL requests now. " Tasks: 31 (limit: 1103) Memory: 168.2M CGroup: /system.slice/mariadb.service └─1319 /usr/sbin/mysqld Jun 05 00:03:15 test.owncloud.local systemd[1]: Started MariaDB 10.3.34 database server. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1354]: Upgrading MySQL tables if necessary. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: Looking for 'mysql' as: /usr/bin/mysql Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: This installation of MariaDB is already upgraded to 10.3.34-MariaDB. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: There is no need to run mysql_upgrade again for 10.3.34-MariaDB. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: You can use --force if you still want to run mysql_upgrade Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1365]: Checking for insecure root accounts. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1369]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables lines 1-27/27 (END)
evgeniy@test:~$ sudo a2enmod rewrite headers env dir mime unique_id ssl
Для того, чтобы правильно работал выбранный мною клиент, да и вообще для безопасности, нужно использовать протокол HTTPS. Для этого надо сгенерировать ключи для SSL. Создаем директорию для ключей, переходим в нее и генерируем ключи. В качестве Common Name используем доменное имя сервера (FQDN), которое мы создали в пункте 6. в моем случае это «test.owncloud.local»
evgeniy@test:~$ sudo mkdir /etc/apache2/certificate evgeniy@test:~$ cd /etc/apache2/certificate/ evgeniy@test:/etc/apache2/certificate$ sudo openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out apache-certificate.crt -keyout apache.key Generating a RSA private key . ++++ . ++++ writing new private key to 'apache.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:RU State or Province Name (full name) [Some-State]:Moscow Locality Name (eg, city) []:Moscow Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:test.owncloud.local Email Address []:
evgeniy@test:~$ sudo vim /etc/apache2/sites-available/owncloud.conf
Alias /owncloud "/var/www/owncloud"Options +FollowSymlinks AllowOverride All Require all granted Satisfy Any Dav off
evgeniy@test:~$ sudo a2ensite owncloud.conf Enabling site owncloud. To activate the new configuration, you need to run: systemctl reload apache2
evgeniy@test:~$ sudo vim /etc/apache2/sites-available/000-default.conf
RewriteEngine On RewriteCond % !=on RewriteRule ^/?(.*) https://%/$1 [R=301,L] ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog $/error.log CustomLog $/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/certificate/apache-certificate.crt SSLCertificateKeyFile /etc/apache2/certificate/apache.key
evgeniy@test:~$ sudo a2ensite 000-default.conf Enabling site 000-default. To activate the new configuration, you need to run: systemctl reload apache2
Загрузка, распаковка, смена владельца:
evgeniy@test:~$ cd /var/www evgeniy@test:/var/www$ sudo wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 --2022-06-05 00:11:58-- https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 Resolving download.owncloud.com (download.owncloud.com). 167.233.14.167, 2a01:4f8:1c1d:3d1::1 Connecting to download.owncloud.com (download.owncloud.com)|167.233.14.167|:443. connected. HTTP request sent, awaiting response. 200 OK Length: 79062710 (75M) [application/x-bzip2] Saving to: ‘owncloud-complete-latest.tar.bz2’ owncloud-complete-latest.tar.bz2 100%[============================================================================>] 75.40M 1.08MB/s in 1m 45s 2022-06-05 00:13:44 (734 KB/s) - ‘owncloud-complete-latest.tar.bz2’ saved [79062710/79062710] evgeniy@test:/var/www$ sudo tar -xjf owncloud-complete-latest.tar.bz2 evgeniy@test:/var/www$ sudo chown -R www-data. owncloud
evgeniy@test:/var/www$ cd /var/www/owncloud evgeniy@test:/var/www/owncloud$ sudo -u www-data ./occ maintenance:install --database "mysql" --database-name "owncloud" --database-user "root" --database-pass "123456" --data-dir "/var/www/owncloud/data" --admin-user "admin" --admin-pass "123456"
Все идентификаторы (имена пользователей, пароли) надо поменять на используемые у вас.
Если что-то пошло не так и надо удалить базу данных ownCloud, то проверяем, что база есть и каково ее имя, удаляем, проверяем, что операция прошла успешно:
evgeniy@test:~$ sudo mysql -u root -e "SHOW DATABASES"; evgeniy@test:~$ sudo mysql -u root -e "DROP DATABASE owncloud"; evgeniy@test:~$ sudo mysql -u root -e "SHOW DATABASES";
evgeniy@test:/var/www/owncloud$ sudo -u www-data ./occ config:system:set trusted_domains 1 --value="$my_ip" System config value trusted_domains => 1 set to string 172.16.1.213 evgeniy@test:/var/www/owncloud$ sudo -u www-data ./occ config:system:set trusted_domains 2 --value="$my_domain" System config value trusted_domains => 2 set to string test.owncloud.local
evgeniy@test:~$ echo "*/15 * * * * /var/www/owncloud/occ system:cron" | sudo -u www-data -g crontab tee -a /var/spool/cron/crontabs/www-data */15 * * * * /var/www/owncloud/occ system:cron evgeniy@test:~$ echo "0 2 * * * /var/www/owncloud/occ dav:cleanup-chunks" | sudo -u www-data -g crontab tee -a /var/spool/cron/crontabs/www-data 0 2 * * * /var/www/owncloud/occ dav:cleanup-chunks

Пока есть один пользователь admin. Пароль для него задан при установке (пункт 12), параметр —admin-pass.
Вид интерфеса после авторизации:

Переводим ownCloud в сервисный режим и останавливаем Apache:
evgeniy@test:~$ cd /var/www/owncloud evgeniy@test:/var/www/owncloud$ sudo -u www-data php occ maintenance:mode --on Maintenance mode enabled Please also consider to stop the web server on all ownCloud instances evgeniy@test:/var/www/owncloud$ sudo systemctl stop apache2.service
Создаем каталог, если он еще не создан, и переносим в него файлы:
evgeniy@test:/var/www/owncloud$ sudo mkdir /mnt/owncloud evgeniy@test:/var/www/owncloud$ sudo chown www-data /mnt/owncloud evgeniy@test:/var/www/owncloud$ sudo rsync -avz /var/www/owncloud/data /mnt/owncloud sending incremental file list data/ data/.htaccess data/.ocdata data/htaccesstest.txt data/index.html data/owncloud.log data/admin/ data/admin/cache/ data/admin/files/ data/admin/files/ownCloud Manual.pdf data/admin/files/Documents/ data/admin/files/Documents/Example.odt data/admin/files/Photos/ data/admin/files/Photos/Lake-Constance.jpg data/admin/files/Photos/Portugal.jpg data/admin/files/Photos/Teotihuacan.jpg data/avatars/ data/files_external/ data/files_external/rootcerts.crt sent 6,985,083 bytes received 277 bytes 13,970,720.00 bytes/sec total size is 8,178,313 speedup is 1.17
Манипуляции с базой данных. Заходим на сервер БД клиентом:
evgeniy@test:/var/www/owncloud$ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 45 Server version: 10.3.34-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Выбираем нашу базу:
MariaDB [(none)]> use owncloud Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
Смотрим список пользователей и у каждого меняем путь. Если уже создано несколько пользователей, то используем поле id для их идентификации. Если вы делаете эту процедуру сразу после установки ownCloud, то будет только один пользователь — admin.
MariaDB [owncloud]> select * from oc_accounts; +----+-------+---------+---------------+--------------+-------+------------+------------------+------------------------------+-------+ | id | email | user_id | lower_user_id | display_name | quota | last_login | backend | home | state | +----+-------+---------+---------------+--------------+-------+------------+------------------+------------------------------+-------+ | 1 | NULL | admin | admin | admin | NULL | 1654386521 | OC\User\Database | /var/www/owncloud/data/admin | 1 | +----+-------+---------+---------------+--------------+-------+------------+------------------+------------------------------+-------+ 1 row in set (0.000 sec) MariaDB [owncloud]> UPDATE oc_accounts SET home='/mnt/owncloud/data/admin' WHERE Query OK, 1 row affected (0.033 sec) Rows matched: 1 Changed: 1 Warnings: 0
Теперь надо сделать выборку по задачам и проверить, нет ли у какой-либо задачи старого пути. У меня таких не нашлось.
MariaDB [owncloud]> select * from oc_jobs where ; Empty set (0.000 sec) MariaDB [owncloud]> select * from oc_jobs; +----+----------------------------------------------------+----------+------------+--------------+-------------+--------------------+ | id | class | argument | last_run | last_checked | reserved_at | execution_duration | +----+----------------------------------------------------+----------+------------+--------------+-------------+--------------------+ | 1 | OCA\Files\BackgroundJob\ScanFiles | null | 1654386430 | 1654386430 | 0 | 0 | | 2 | OCA\Files\BackgroundJob\DeleteOrphanedItems | null | 1654386437 | 1654386437 | 0 | 0 | | 3 | OCA\Files\BackgroundJob\CleanupFileLocks | null | 1654386444 | 1654386444 | 0 | 0 | | 4 | OCA\Files\BackgroundJob\CleanupPersistentFileLocks | null | 1654386477 | 1654386477 | 0 | 0 | | 5 | OCA\DAV\CardDAV\SyncJob | null | 1654386505 | 1654386505 | 0 | 0 | | 6 | OCA\DAV\BackgroundJob\CleanProperties | null | 1654386522 | 1654386521 | 0 | 0 | | 7 | OCA\Activity\BackgroundJob\EmailNotification | null | 1654386739 | 1654386739 | 0 | 0 | | 8 | OCA\Activity\BackgroundJob\ExpireActivities | null | 1654386749 | 1654386749 | 0 | 0 | | 9 | OCA\Federation\SyncJob | null | 1654386752 | 1654386752 | 0 | 0 | | 10 | OCA\Files_Sharing\DeleteOrphanedSharesJob | null | 1654386761 | 1654386761 | 0 | 0 | | 11 | OCA\Files_Sharing\ExpireSharesJob | null | 1654386770 | 1654386770 | 0 | 0 | | 12 | OCA\Files_Sharing\External\ScanExternalSharesJob | null | 1654386775 | 1654386775 | 0 | 0 | | 13 | OCA\Files_Trashbin\BackgroundJob\ExpireTrash | null | 1654386795 | 1654386795 | 0 | 0 | | 14 | OCA\Files_Versions\BackgroundJob\ExpireVersions | null | 1654386833 | 1654386833 | 0 | 0 | | 15 | OCA\Market\CheckUpdateBackgroundJob | null | 0 | 1654386024 | 0 | -1 | | 16 | OCA\UpdateNotification\Notification\BackgroundJob | null | 0 | 1654386025 | 0 | -1 | | 17 | \OC\Authentication\Token\DefaultTokenCleanupJob | null | 0 | 1654386026 | 0 | -1 | +----+----------------------------------------------------+----------+------------+--------------+-------------+--------------------+ 17 rows in set (0.000 sec)
Если задача есть, то выполните запрос:
MariaDB [owncloud]> UPDATE oc_jobs SET argument = REPLACE(argument, '\\/var\\/www\\/owncloud\\/data\\/', '\\/mnt\\/owncloud/data\\/') WHERE of the incorrect record>;
где в подставить id с записью, у которой неверный путь.
Выходим из БД:
MariaDB [owncloud]> \q Bye
Проверяем пути в приложениях. Если у какого-то приложения есть старый путь, то меняем его (команда ниже). В моем случае такого приложения не нашлось.
evgeniy@test:/var/www/owncloud$ sudo -u www-data php ./occ config:list < "system": < "instanceid": "oc8mwxq3rfxl", "passwordsalt": "***REMOVED SENSITIVE VALUE***", "secret": "***REMOVED SENSITIVE VALUE***", "trusted_domains": [ "localhost", "172.16.1.213", "test.owncloud.local" ], "datadirectory": "\/mnt\/owncloud\/data", "overwrite.cli.url": "http:\/\/localhost", "dbtype": "mysql", "version": "10.10.0.3", "dbname": "owncloud", "dbhost": "localhost", "dbtableprefix": "oc_", "mysql.utf8mb4": true, "dbuser": "***REMOVED SENSITIVE VALUE***", "dbpassword": "***REMOVED SENSITIVE VALUE***", "allow_user_to_change_mail_address": "", "logtimezone": "UTC", "apps_paths": [ < "path": "\/var\/www\/owncloud\/apps", "url": "\/apps", "writable": false >, < "path": "\/var\/www\/owncloud\/apps-external", "url": "\/apps-external", "writable": true >], "installed": true, "maintenance": false >, "apps": < "activity": < "enabled": "yes", "installed_version": "2.7.0", "types": "filesystem" >, "backgroundjob": < "lastjob": "14" >, "comments": < "enabled": "yes", "installed_version": "0.3.0", "types": "logging,dav" >, "configreport": < "enabled": "yes", "installed_version": "0.2.1", "types": "filesystem" >, . "updatenotification": < "enabled": "yes", "installed_version": "0.2.1", "types": "" >> >
Команда для замены (не проверял):
evgeniy@test:/var/www/owncloud$ sudo -u www-data php ./occ config:app:set —value /mnt/owncloud/data
И, наконец, исправляем путь в файле настроек, параметр datadirectory:
evgeniy@test:/var/www/owncloud$ sudo vim /var/www/owncloud/config/config.php 'oc8mwxq3rfxl', 'passwordsalt' => 'ahNk4VxR1R5DeZyJ9ly8wsdqCXo1z3', 'secret' => 'b8xm+wxPuQFyuW0syudVGGsKQwgfnTFoMEBm6cZA00Wm2zG0', 'trusted_domains' => array ( 0 => 'localhost', 1 => '172.16.1.213', 2 => 'test.owncloud.local', ), 'datadirectory' => '/mnt/owncloud/data', 'overwrite.cli.url' => 'http://localhost', 'dbtype' => 'mysql', 'version' => '10.10.0.3', 'dbname' => 'owncloud', 'dbhost' => 'localhost', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'oc_admin', 'dbpassword' => 'WeBkvHU7WqHPQ/7Sxm0Oq4rVs1vAEh', 'allow_user_to_change_mail_address' => '', 'logtimezone' => 'UTC', 'apps_paths' => array ( 0 => array ( 'path' => '/var/www/owncloud/apps', 'url' => '/apps', 'writable' => false, ), 1 => array ( 'path' => '/var/www/owncloud/apps-external', 'url' => '/apps-external', 'writable' => true, ), ), 'installed' => true, 'maintenance' => false, );
Возвращаем ownCloud в боевой режим и запускаем Apache:
evgeniy@test:/var/www/owncloud$ sudo -u www-data php occ maintenance:mode --off ownCloud is in maintenance mode - no app have been loaded Maintenance mode disabled evgeniy@test:/var/www/owncloud$ sudo systemctl start apache2.service
Для резервного копирования я предлагаю использовать приложение FolderSync. Уверен есть альтернативы, платные и бесплатные. Но эта программа мои задачи решила.
Запускаем его. Первым делом надо добавить нашу учетную запить на ownCloud

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

Вводим название учетной записи (1). Я выбрал Backup. Можно взять название сервера, или просто Home Dropbox, в нем же не только резервные копии хранить можно. Кроме имени надо заполнить имя и пароль пользователя (2,3). Это может быть пользователь из параметра —admin-user «admin», созданный на шаге 12 первой части. Либо специально созданный пользователь, если решение используют несколько человек.
Заполняем IP-адрес или FQDN (если в сети поднят DNS-сервер) (4), адрес порта HTTPS 443 (5), директория (по умолчанию owncloud) (6) и разрешение использовать самоподписанный сертификат (мы его сделали на шаге 8) (7). Когда все поля заполнены, нажимает «Тест».

Если всё хорошо, нажимает «Сохранить» (9). Если что-то пошло не так, ищем, где ошибка и повторяем тест.

Следующий шаг — создать задания. Это исходный каталог на устройстве и целевой каталог в ownCloud и регламент синхронизации. На начальном экране программы выбираем «Задания» (1). Далее нашу учетную запить (2).

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


И подстверждаем выбор

Выбираем исходный каталог на устройстве (1), файлы из которого мы будем синхронизировать, и подтверждаем выбор (2)

Теперь настраиваем регламент. Вкладка «Основные». выбираем вариант «На удаленную папку», то есть с устройства на ownCloud

На вкладке «Планирование» выбираем работу по расписанию, регулярность копирования (ежедневно) и время синхронизации — лучше выбрать ночное время, когда телефон простаивает и стоит на зарядке

Вкладка «Настройка синхронизации». Выбираем синхронизацию вложенных папок и скрытых файлов (не всегда нужно). Старые файлы заменяются новыми без дополнительных вопросов

Вкладка «Продвинутые». Выбираем «Повторять при ошибке».

Вкладка «Соединение». Выбираем синхронизацию при подключении к Wi-Fi. проводное подключение на телефоне вряд ли будет. А передавать по мобильной сети бессмысленно, так как наш сервер находится в локальной сети.

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

Нажимаем кнопку «Синхронизация» в верхней части экрана и смотрим, началась ли синхронизация

Кратка информация по синхронизации есть на главном экране (продолжительность, скороть передачи, количество сравненных и переданных файлов

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