Файл htaccess не работает nextcloud
Установим Nextcloud! Он заменит синхронизацию контактов, календаря, списка задач и файлохранилища/обменника на вашем смартфоне, а на ПК сойдёт за Dropbox. И независимости добавим, и сервер нагрузим.
Дальше длинная, но не сложная инструкция про аренду сервера, установку и настройку Nextcloud на сервере и на ПК/смартфонах, включая синхронизацию контактов и календаря.
Disclaimer
1. Я живу в Китае, тут проблема блокировки стоит острее, чем в России. Не по наслышке знаю, что даже Google и Dropbox могут однажды отключить навсегда, а использовать отечественные сервисы не хочется по разным причинам.
2. На моём сервере в качестве средства обхода блокировок стоит Shadowsocks — для России это сейчас overkill, но в Китае выручает. Сначала ставил Streisand, но это перебор.
3. Я не профессиональный сисадмин. Не используйте эту инструкцию бездумно на сервере с важной информацией. И делайте бэкапы.
Nextcloud — open source проект своего персонального «облака»: в нём объединены функции Dropbox, контактов, календаря и списка задач Google, а так же много чего ещё. Другими словами, можно отказаться от Google и синхронизировать свои данные с компьютера и смартфона на свой сервер.
Зачем это нужно?
- Если у вас паранойя.
- Если вы не доверяете большим корпорациям.
- Если вы хотите держать свои данные под личным контролем.
- Если в вашей стране Google не работает, или может вдруг перестать работать.
- Если не жалко платить каждый месяц за хостинг, или если уже есть работающий сервер.
- Если… да мало ли.
Что потребуется?
Что будем делать?
- Установим Apache, PHP и MySQL
- Добавим бесплатный SSL-сертификат Let's Encrypt
- Установим и настроим NextCloud
- Клиенты на ПК и Android
- Перенос контактов, календаря и задач из Gmail
Сервер
Предположим, что вы уже арендовали сервер и смогли подключиться к нему по SSH через Putty.
Начало
Обновляем список пакетов
Apache
Устанавливаем веб-сервер Apache2
В конце файла дописываем две строчки, подставив свои значения:
Включим мод headers, пригодится в дальнейшем
LetsEncrypt
Установим сертификат для шифрованного соединения, если у вас есть домен. Очень желательно.
Добавляем репозиторий для LetsEncrypt Certbot
Обновляем список пакетов
Устанавливаем Certbot
ответьте на вопросы: предоставьте ваш e-mail, согласитесь с условиями, при выборе перенаправления выберите вариант «2 — redirect».
Настроим автоматическое обновление сертификатов раз в три месяца:
выберите редактирование через nano, допишите следующую строчку и сохраните файл:
MySQL
Установим базу данных MySQL
Задайте рут-пароль для базы данных. Обязательно запомните или запишите его. Затем запустите команду для настройки безопасности
Ответьте на несколько вопросов. Можете отказаться от принудительной проверки сложности пароля и замены рут-пароля (первые два вопроса, отвечайте 'N'), на остальные вопросы отвечайте 'Y'.
PHP
Установим PHP 7 и нужные модули
И модуль для кэширования php-apcu
Откроем файл конфигурации и отредактируем его
В списке файлов index с разным расширением, перепишите его так, чтобы в начале был index.php.
Директория для файлов
Папку для личных файлов лучше создать в отдельном месте на сервере, а не так, как по-умолчанию хочет сделать NextCloud. Это нужно для повышения безопасности.
Создадим директорию в /media/
Изменим права доступа к директории
Nextcloud
Скачаем последнюю версию NextCloud в формате *.tar.bz2 с официального сайта. Для этого в браузере откройте страницу релизов и найдите новую версию. На момент написания этой статьи свежая версия 12.0.2, поэтому ссылка будет такая:
Скопируйте её в буфер обмена.
Вернёмся в PuTTY. Перейдите во временную директорию
Скачайте архив с NextCloud, замените ссылку на самую свежую.
Создайте скрипт для установки
Вставьте в него следующий код
Создайте файл конфигурации NextCloud в Apache
Вставьте следующий текст
Активируйте файл конфигурации
Включите дополнительные параметры
Создадим базу MySQL
Перейдём в MySQL, при входе понадобится рут-пароль MySQL, который мы создавали ранее.
Создадим новую базу данных под названием nextcloud
Зададим ей параметры, не забудьте вставить новый пароль
Сбросим параметры и выйдем из MySQL
Пока мы в консоли, сделаем ещё пару вещей для беспроблемных обновлений:
Установим нужные права на директорию с Nextcloud
И удалите директорию /var/www/nextcloud/assets
Настраиваем NextCloud
Если всё сделано правильно, вы увидите страницу NextCloud и приглашение создать учётную запись администратора:
Первые два поля — имя и пароль для учётной записи администратора
Data folder: укажите директорию, которую вы создали в шаге «Директория для файлов», в примере это /media/nextcloud
Configure the database
Нужно указать параметры, которые мы использовали в шаге «Создадим базу MySQL»
Первая строчка — имя базы данных
Вторая строчка — пароль базы данных (не рут-пароль!)
Третья строчка — пользователь
Четвёртая строчка — адрес для обращения к базе данных, это должен быть localhost и порт 5342
Поздравляем, NextCloud установлен и работает, вы находитесь в учётке администратора.
Настройка безопасности
Редактируем .htaccess
Сразу после строчки <IfModule mod_headers.c> добавьте Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
Удаляем страницу Apache по-умолчанию
ВНИМАНИЕ: выполните команду только в том случае, если сервер был чистый, а в директории /var/www/html нет ничего ценного.
Включаем memcache
Отредактируем конфигурацию NextCloud
В конце файла добавим строчку
Откроем файл конфигурации Apache PHP
В файле много текста. Листайте, пока не найдёте раздел, посвящённый opcache, затем вставьте туда следующие параметры:
Все предупреждения о проблемах с безопасностью должны исчезнуть, останется надпись All checks passed.
Админка
Basic settings
Убедитесь, что пройдены все основные проверки безопасности. Это выглядит вот так. Если есть предупреждения — вернитесь к инструкции по настройке и проверьте, что всё сделано правильно.
Sharing
Установите настройки для раздачи файлов, если будете пользоваться облаком не одни. У нас частный небольшой сервер, и тысячи одновременных скачиваний могут создать на него серьёзную нагрузку. Стоит принудительно устанавливать пароль на скачивание к каждой публичной ссылке, а через несколько дней делать её неактивной.
Theming
Здесь можно придать Nextcloud индивидуальности: задать имя, подпись, картинку на фон, и даже поменять цвет оформления. Делается по желанию.
Encryption
Не стоит его включать. Оно значительно повышает нагрузку на сервер и на дисковое хранилище, но не сильно влияет на безопасность: ключи шифрования будут храниться на том же сервере, и если доступ к нему получит злоумышленник, то сможет прочитать даже зашифрованные файлы.
Приложения
Приложения — это дополнения, которые расширяют функции облака. Вот что я поставил для себя:
Two Factor TOTP Provider
Позволяет настроить двухфакторную авторизацию в аккаунт с помощью одноразовых кодов через приложение Google Authenticator или FreeOTP.
Обязательно настройте этот способ входа для аккаунта администратора, желательно — для пользователя тоже. Сделать это можно в разделе Personal, в самом низу страницы.
Calendar, Contacts
Их мы будем использовать вместо календаря и контактов Google, об этом дальше.
Управление проектами в стиле Канбан.
Notes
OPDS catalog
Сервер-библиотека для доступа к книгам. Работает с приложениями типа FBreader.
Passman
Хранилище паролей для сайтов в браузере. Есть плагин для Chrome.
Phone Sync
Tasks
Простой список дел с привязкой к календарю.
Пользователи
Сейчас вы находитесь в аккаунте администратора, но использовать его для хранения файлов и синхронизации параметров не нужно. Оставьте его для доступа к настройкам облака. Для повседневного личного использования нужен аккаунт простого пользователя.
- Откройте раздел Users
- В верху введите имя и пароль пользователя
- Нажмите на Groups, добавьте новую группу Users
- Нажмите Create
- Назначьте квоту места, чтобы случайно не переполнить сервер
Теперь у вас есть пользователь с ограниченными правами — то, что нужно для повседневного использования. Именно с обычным пользователем мы и будем дальше работать. Выйдите из учётной записи администратора и зайдите как новый пользователь.
Перенос контактов из Gmail
Это можно сделать через компьютер, но тогда не сохранятся портреты контактов, поэтому всё будем делать на смартфоне. Если на смартфоне нет контактов Google — листайте дальше.
Нам понадобится
- Аккаунт на вашем Nextcloud
- Смартфон на Android
- Приложение DAVdroid и OpenTask для синхронизации контактов и задач
- Приложение ZenUI Dialer (или любое другое для копирования контактов)
По шагам
Установка DAVdroid
А так же ваш логин и пароль .
Перенос контактов из Google в DAVdroid
- УстановитеZenUI Dialer
- Запустите и перейдите в управление контактами (кнопка «три точки» ->Manage contacts)
- Выберите Copy contacts
- Для Copy contacts from выберите вашу учётку Google
- Для Copy contacts to выберите DAVdroid Address book
- На вопрос Do you want to keep the originals ответьте ОК, иначе контакты будут удалены из Google.
- Дождитесь, пока закончится копирование.
- Откройте DAVdroid и синхронизируйте контакты ещё раз.
Если на смартфоне нет контактов
Если на телефоне у вас по какой-то причине нет контактов из Google, но вы можете открыть их в браузере на ПК, пропустите шаг Перенос контактов из Google в DAVdroid, экспортируйте контакты из Google Contacts (More -> Export) в файл vCard, а затем импортируйте файл через веб-интерфейс Nextcloud.
Календарь
Зайдите в стандартное приложение Календарь на смартфоне и проверьте, что новый календарь Nextcloud отображается в списке ваших календарей. Теперь можно сохранять события туда, они будут автоматически синхронизироваться с вашим собственным сервером Nextcloud. Google больше не нужен.
Веб-версия календаря будет доступна из браузера по адресу ваш_домен/nextcloud/index.php/apps/calendar
Список задач
Запустите приложение OpenTasks (в меню может называться просто Tasks), теперь там есть список Local (только на устройстве) и ваш «облачный» список.
Ещё один клиент для списка задач — SimpleTask Nextcloud. Меньше функций, но работает чуть надёжнее.
Синхронизация с ПК
Windows и macOS
- Установите и запустите клиент с официального сайта
- Введите адрес вашего сервера как ваш_домен/nextcloud
- Введите логин и пароль от учётной записи пользователя
- Выберите локальную папку для синхронизации (например, D:\Nextcloud)
Работает как Dropbox: кинули файл в папку — он улетает на серрвер. И наоборот.
Как изменить язык Nextcloud (Windows)
Почему-то разработчики не предусмотрели смены языка через настройки приложения, по-умолчанию оно использует системный. У меня Windows на китайском (и ничего с этим не поделать), но приложения всё-таки удобнее держать на более привычном языке. Вот решение проблемы:
- Выключите клиент Nextcloud
- Откройте папку, куда вы установили Nextcloud (по-умолчанию c:\Program Files (x86)\Nextcloud\)
- Найдите файлы client_ru.qm, qt_ru.qm и qtbase_ru.qm
- Удалите все остальные языковые файлы:
Android и iOS
Клиент для iPhone есть в официальном AppStore, для Android — в Google Play и на F-Droid. Установка простая и одинаковая на обоих платформах:
- Установите и запустите клиент
- Введите адрес вашего сервера как ваш_домен/nextcloud
- Введите логин и пароль от учётной записи пользователя
Можете попробовать закинуть несколько файлов и посмотреть, как они улетят на облако.
Бэкап фотографий
Как и на Dropbox / Google Drive, в Nextcloud можно включить автоматическую загрузку всех новых фотографий и видео в облако. Но не забывайте об объёме жёсткого диска: в самом дешёвом сервере это всего 20 гигабайт. Большие объёмы фотографий я синхронизирую на ноутбук и домашний медиа-сервер с помощью Syncthing, бесплатно и очень быстро.
На iOS можно дополнительно включить опцию CryptoCloud, тогда все файлы будут храниться на сервере в зашифрованном виде. Полезно, например, если вы пользуетесь чужим сервером Nextcloud. Но файлы можно будет просматривать только с iOS-устройств.
Личные впечатления
Жаль, что я узнал о Nextcloud только теперь: сколько времени я убил на установку сервисов Google на своих предыдущих телефонах, и всё ради синхронизации контакт-листа и календаря. Работает всё стабильно, насколько это позволяет Китай. Пинги до сервера большие, но подключение есть всегда
Ошибки после обновления. Centos 7
В 15 NC Значение «no-referrer» уже указано в .htaccess
Закомментируем строку:
Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read the documentation page about this.
• filecache.mtime
• filecache.storage_mtime
или бывает так же:
Некоторые индексы базы данных не были преобразованы в тип big int. Так как преобразование таких индексов может занять продолжительное время, оно должно быть запущенно вручную. Чтобы выполнить преобразование, необходимо включить режим обслуживания и запустить в терминале команду «occ db:convert-filecache-bigint».
- mounts.storage_id
- mounts.root_id
- mounts.mount_id
Переведем NC в режим обслуживания:
]$ cd /var/www/html/nextcloud/
[user@server nextcloud]$
[user@server nextcloud]$ sudo -u apache php occ maintenance:mode --on
[sudo] пароль для user:
The current PHP memory limit is below the recommended value of 512MB.
Maintenance mode enabled
[user@server nextcloud]$
[user@server nextcloud]$ sudo -u apache php occ db:convert-filecache-bigint
The current PHP memory limit is below the recommended value of 512MB.
Nextcloud is in maintenance mode - no apps have been loaded
Following columns will be updated:
This can take up to hours, depending on the number of files in your instance!
Continue with the conversion (y/n)? [n] Y
Выключаем режим обслуживания:
The current PHP memory limit is below the recommended value of 512MB.
Maintenance mode disabled
[user@server nextcloud]$
/var/www/html/nextcloud
[user@server nextcloud]$ sudo nano .htaccess
<IfModule mod_php7.c>
php_value upload_max_filesize 16000M
php_value post_max_size 16000M
php_value memory_limit 512M
php_value mbstring.func_overload 0
php_value default_charset 'UTF-8'
php_value output_buffering 0
<IfModule mod_env.c>
SetEnv htaccessWorking true
</IfModule>
</IfModule>
+
Предупреждения о текущей конфигурации:
В базе данных отсутствуют некоторые необязательные столбцы. Из-за того, что добавление столбцов в больших таблицах может занять некоторое время, они не добавляются автоматически, если они могут быть необязательными. Запустив «occ db:add-missing-columns», эти недостающие столбцы можно добавить вручную, пока экземпляр продолжает работать. После добавления столбцов некоторые функции могут улучшить отзывчивость или удобство использования.
Отсутствует необязательный столбец "reference_id" в таблице "oc_comments".
]$ sudo -u apache php /var/www/html/nextcloud/occ db:add-missing-columns
Check columns of the comments table.
Adding additional reference_id column to the comments table, this can take some time.
Comments table updated successfully.
[user@server
Ошибки после обновления Nextcloud. Ubuntu 19.04 server Nginx
- The old server-side-encryption format is enabled. We recommend disabling this. For more details see the documentation.
- Заголовок HTTP «X-Frame-Options» не настроен на значение «SAMEORIGIN». Это потенциальная проблема безопасности для устранения которой рекомендуется задать этот параметр.
- Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация доступна в документации.
- В базе данных отсутствуют некоторые индексы. Так как создание таких индексов может занять достаточно продолжительное время, оно должно быть запущено вручную. Для создания индексов необходимо запустить команду «occ db:add-missing-indices» во время работы сервера Nextcloud. При созданных индексах, как правило, запросы к базе данных выполняются значительно быстрее.
- В таблице «oc_calendarobjects_props» отсутствует индекс «calendarobject_calid_index».
- В таблице «oc_schedulingobjects» отсутствует индекс «schedulobj_principuri_index».
- В таблице «oc_properties» отсутствует индекс «properties_path_index».
- Отсутствует необязательный столбец "reference_id" в таблице "oc_comments".
- mounts.storage_id
- mounts.root_id
- mounts.mount_id
1. The old server-side-encryption format is enabled. We recommend disabling this. For more details see the documentation.
Если ранее включали шифрование, но затем отключили, вы все еще можете видеть это предупреждение, удалим или закомментируем строки в config/config.php:3. Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация доступна в документации.
4. В базе данных отсутствуют некоторые индексы. Так как создание таких индексов может занять достаточно продолжительное время, оно должно быть запущено вручную. Для создания индексов необходимо запустить команду «occ db:add-missing-indices» во время работы сервера Nextcloud. При созданных индексах, как правило, запросы к базе данных выполняются значительно быстрее.
- В таблице «oc_calendarobjects_props» отсутствует индекс «calendarobject_calid_index».
- В таблице «oc_schedulingobjects» отсутствует индекс «schedulobj_principuri_index».
- В таблице «oc_properties» отсутствует индекс «properties_path_index».
5. В базе данных отсутствуют некоторые необязательные столбцы. Из-за того, что добавление столбцов в больших таблицах может занять некоторое время, они не добавляются автоматически, если они могут быть необязательными. Запустив «occ db:add-missing-columns», эти недостающие столбцы можно добавить вручную, пока экземпляр продолжает работать. После добавления столбцов некоторые функции могут улучшить отзывчивость или удобство использования.
- Отсутствует необязательный столбец "reference_id" в таблице "oc_comments".
6. В системе не установлены рекомендуемые модули PHP. Для улучшения производительности и совместимости рекомендуется установить эти модули.
bcmath
gmpВ предыдущей статье я писал как можно установить и настроить nextcloud на операционной системе Ubuntu Server 20.04 с web-сервером nginx+php-fpm и базой данных postgresql. Почитать можно тут.
После успешного запуска nextcloud в панели администратора Вы можете в пункте общие сведения, увидеть следующие предупреждения:
Индексирование файлов
Для устранения запустим команды для ускорения индексирования файлов. В терминале набираем:
Включаем режим обслуживания:
И вводим данные строки:
Выключаем режим обслуживания
После данной манипуляции ошибка должна исчезнуть.
Предупреждения о текущей конфигурации /.well-known/.
- Веб-сервер не настроен должным образом для разрешения «/.well-known/webfinger».
- Веб-сервер не настроен должным образом для разрешения «/.well-known/nodeinfo».
- Веб-сервер не настроен должным образом для разрешения «/.well-known/caldav».
- Веб-сервер не настроен должным образом для разрешения «/.well-known/carddav».
Также внесём следующие строки в файл .htaccess
Зависание входа в панель NextCloud
Лечится добавлением в конфигурационный файл NexCloud:
Не настроена система кэширования.
Не настроена система кэширования. Для увеличения производительности сервера, по возможности, настройте memcache.
Хочу использовать Memcached. Для этого надо установите модуль для PHP и сам memcached.
Как оказалось есть два похожих пакета:
- php-memcache — модуль Memcache для PHP,
- php-memcached — расширение PHP для взаимодействия с memcached.
Нужен с буквой d в конце.
настройки в /etc/php/7.4/mods-available/memcached.ini оставляю все без изменений.
В выводе phpinfo(); появился блок с описанием memcached.Настройки запуска сервиса в /etc/systemd/system/multi-user.target.wants/memcached.service и конфигурационный файл /etc/memcached.conf тоже не менял.
Проверяем запустился ли сервис
Должно выдать что-то вроде этого
Теперь в конфиге NextCloud добавим строки:
Модуль php-imagick не поддерживает SVG
Для устранения данного предупреждения необходимо установить модуль imagick:
Не указан регион размещения этого сервера Nextcloud
Не указан регион размещения этого сервера Nextcloud, что требуется для возможности проверки номеров телефонов без указания кода страны.
Чтобы разрешить пользователям сервера указывать номера телефонов без указания кода страны, добавьте параметр «default_phone_region» с соответствующим кодом страны в соответствии с ISO 3166-1↗.
Для устранения данного предупреждения откроем конфигурационный файл NextCloud :
и добавим следующие строки:
Предупреждение headers
Для устранения данных ошибок в терминале набираем следующее:
И заполняем данным текстом:
Сохраняем файл (ctrl+o, ctrl+x). И перезагружаем nginx
Для устранения данного предупреждения отредактируем файл Nginx headers.conf:
Добавим следующие строки:
PHP не настроен для системного окружения.
PHP не настроен правильно для получения переменных системного окружения.
Запрос getenv(«PATH») возвращает пустые результаты.
Обратитесь к разделу о конфигурации PHP и примечаниям к конфигурации PHP из руководства по установке. Обратите внимание на настройку параметров PHP, особенно при использовании механизма php-fpm.Когда вы используете php-fpm, системные переменные среды, такие как PATH, TMP или другие, не заполняются автоматически так же, как при использовании php-cli. Вызов функции PHP, такой как getenv(‘PATH’); может возвращать пустой результат. Поэтому вам может потребоваться вручную настроить переменные среды в файле конфигурации php-fpm.
И сними с них комментарий (;).
Далее перезапустим php7.4-fpm
Значение PHP ниже рекомендуемого значения .
Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ.
В терминале набираем:
Находим и редактируем следующие строки:
Не скачиваются файлы больше 1Гб
При попытках скачать из облака файлы объемом более 1гб скачивание прерывается при достижении 1гб. Такое происходит при условии использования Nginx как реверс-прокси. Решается очень просто, нужно добавить в конфиг сайта опцию «proxy_buffering off». Открываем конфиг Nginx, находим секцию в которой конфиг нашего Nextcloud и добавляем эту опцию:
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.Задача
На развернутой Ubuntu Server 18.04.1 выполнена установка Nextcloud, необходимо выполнить настройку, устранив предупреждения безопасности и производительности.
Решение
Так же в документации есть раздел оптимизации работы Nextcloud, заодно воспользуемся некоторыми из этих советов.
Для экономии текста, в статье не буду каждый раз указывать необходимость перезагрузки Apache и PHP, ориентируйтесь по тексту.
В раздел виртуального порта на 443 порту добавляем блок
Описание виртуально порта стало таким
Для работы потребуются модули mod_headers и mod_env, но они уже были установлены вместе с Nextcloud.
Согласно разделу документации Configuring memory caching необходимо настроить кэширование. Для личного использования достаточно настроить APCu.
PHP-FPM
Установка PHP-FPM опциональна и данную настройку можно игнорировать, но я установил
Согласно разделу документации Tune PHP-FPM необходимо оптимизировать работу PHP-FPM, разрешив выполнять несколько запросов одним процессом.
Правим конфигурационный файл
OPcache
Согласно разделу документации Enable PHP OPcache, можно ускорить работу PHP. Правим конфигурационный файл PHP
Результат
У меня на сервере крутится nas4free, и через плагин OneButtonInstaller установлен Nextcloud. Nas4free я устанавливал с тем учетом, чтобы объединить все 4 диска в рейд массив ZFS. На то время это было единственное решение, что я нашел с надежной и быстрой файловой системой. Всеми остальными функциями nas4free я по истечению времени так и не воспользовался. У меня вопрос. Имеет ли смысл сносить nas4free и устанавливать linux и накатывать NExtcloud для более стабильной работы / съедания меньшего количества ресурсов / расширения функционала? Или оставить nas4free, так как разницу я не замечу? Сервер крутится круглые сутки. Так же в nas4free можно посмотреть состояние бесперебойника.
Андрей, тут все очень индивидуально. Рекомендаций дать, наверное не могу.
Про nas4free только читал. Для себя выбрал полнеценный сервер, ибо нужен был не только NAS.
Про ZFS так же только читал, для себя использовать не стал. Поговаривают, что к ZFS есть вопросы по производительности на слабых железяках, и по скорости исчерпания ресурса SSD.По файловой системе использую ext4, по дискам SSD + 4 HDD в корзине, но они не объединены в RAID или LVM. Примерно описывал в статье Linux. Монтирование дисков
Читайте также: