Персональное облако
Облачное хранилище позволяет не только хранить данные, но и обеспечивать совместную работу с ними в NAS.
Возможные решения
Существует несколько вариантов облачных сервисов: NextCloud, Seafile, Pydio и т.д…
Ниже рассмотрена часть из них.
OwnCloud
Реализован на PHP/Javascript.
- Возможно расширять функционал, устанавливая приложения из репозитория облака.
- Есть интеграция с офисом Collabora и OnlyOffice.
- Возможно использовать существующие хранилища, такие как FTP, Swift, S3, Dropbox и т.п.,
распределяя данные между ними и локальным облаком. - Шифрование на клиенте.
- Возможность предоставлять файлы внешним пользователям по e-mail.
- Есть автоматизация операций с файлами (например, автоматическое добавление тэгов).
- LDAP.
- Есть аудио плеер, музыкальная коллекция, галерея плагин чтения PDF.
- Интеграция с Zimbra.
- Есть календари, списки задач, текстовые редакторы и т.п.
- Антивирус и защита от ransomware.
- Двуфакторная аутентификация.
- Возможность имперсонации под другого пользователя (с целью отладки).
NextCloud
Форк OwnCloud. Реализован на PHP/Javascript.
- Хранение файлов с использованием обычных структур каталогов, или с использованием WebDAV.
- Есть NextCloud Talk, через который возможно делать видеозвонки и видеоконференции.
- Синхронизация между клиентами под управлением Windows (Windows XP, Vista, 7 и 8), Mac OS X (10.6 и новее) или Linux.
- Синхронизация с мобильными устройствами.
- Календарь (также как CalDAV).
- Планировщик задач.
- Адресная книга (также как CardDAV).
- Потоковое мультимедиа (используется Ampache).
- Поддерживает разные провайдеры авторизации: LDAP, OpenID, Shibboleth.
- Двуфакторная авторизация.
- Разделение контента между группами или используя публичные URL. Тонкая настройка правил.
- Онлайн текстовый редактор с подсветкой синтаксиса и сворачиванием. Анонсирована поддержка онлайн-версий редакторов LibreOffice.
- Закладки.
- Механизм сокращения URL.
- Фотогалерея.
- Просмотрщик PDF (используется PDF.js)
- Интеграция с Collabora и OnlyOffice.
- Модуль логирования.
- Возможность создания свои Web-сайтов (на PicoCMS).
- Интеграция с Outlook и Thunderbird.
- Интеграция клиента в Gnome.
- Возможность использовать внешнее хранилище.
- Полнотекстовый поиск.
- Интеграция с антивирусом.
SparkleShare
Реализован на C#.
- Версионирование.
- Шифрование на клиенте.
- Прозрачная синхронизация между несколькими пользователями: удалённые изменения появятся в локальном каталоге, выделенном для SparkleShare.
Seafile
Реализован на C/Javascript.
- Файлы могут быть организованы в библиотеки, которые могут быть синхронизированы между устройствами.
- Есть клиент, позволяющий создать локальный «диск», отображённый на облако.
- Встроенное шифрование. Все файлы шифруются клиентом и хранятся в облаке зашифрованными.
- Поддержка мобильных устройств.
- HTTS/TLS шифрование.
- Есть LDAP.
- Тонкая настройка прав.
- Версионирование файлов.
- Возможность создания снимка каталога, к которому потом возможно вернуться.
- Дедупликация.
- Поддержка блокировки файлов.
- Совместное редактирование файлов онлайн.
- Антивирус.
- Тонкая настройка прав.
- Периодический бэкап через rsync.
- WebDAV.
- REST API.
- Возможность интеграции с Collabora.
- Быстрый и нетребовательный к ресурсам.
- Считается надёжным.
- Установка прав на подкаталоги поддерживается только в платной Pro версии.
- Интеграция с антивирусом — только в Pro версии.
- Аудит — только в Pro версии.
- Полнотекстовый поиск — только в Pro версии.
- Интеграция с S3 и Ceph — только в Pro версии.
- Онлайн просмотр Doc/PPT/Excel — только в Pro версии.
Pydio
Реализован на PHP/Javascript.
- Обмен файлами не только между пользователями, но и между несколькими экземплярами Pydio.
- SSL/TLS шифрование.
- WebDAV.
- Возможность создать несколько рабочих пространств.
- Обмен файлами с внешними пользователями, с тонкой настройкой обмена (например, прямые ссылки, пароль и т.п.).
- Встроен офис Collabora.
- Предосмотр и редактирование изображений.
- Есть встроенный аудио и видео проигрыватель.
ProjectSend
Реализован на PHP/Javascript.
- Возможно расшаривать файлы, как между конкретными пользователями, так и между группами.
- Полный отчёт по операциям с файлами.
- Возможность внешним пользователям загружать файлы (с целью обмена, например прикладывать баг-репорты).
SpiderOak
- Экономия места в хранилище и времени выгрузки файлов за счёт дедупликации и внесения изменений в уже имеющиеся файлы (вместо перезаписи файлов целиком).
- Настраиваемая мультиплатформенная синхронизация.
DropBox для синхронизации создаёт специальную папку, в которую надо помещать все синхронизируемые файлы. SpiderOak может работать с любым каталогом. - Сохранение всех хронологических версий файлов и удаленных файлов
- Совместное использование папок при помощи так называемых ShareRooms, на которые устанавливается пароль.
Файлы, обновлённые на локальном компьютере, автоматически обновляются в хранилище. Пользователи извещаются об изменениях по RSS. - Получение файлов с любого подключенного к Интернету устройства.
- Полное шифрование данных по принципу «нулевого знания».
- Поддержка неограниченного количества устройств.
- Шифрование данных на стороне клиента.
- Двуфакторная аутентификация.
Закрытая проприетарная система.
С учётом того, что данное ПО платное и частично закрытое, его использование исключается.
Установка NextCloud
Изначально было желание использовать Seafile: серверная часть реализована на C, он эффективен и стабилен. Но выяснилось, что в бесплатной версии есть далеко не всё.
Потому, я попробовал Nextcloud и остался доволен. Он предоставляет больше возможностей и полностью бесплатен.
Посмотреть, как он работает в демо-режиме вы можете здесь.
Вот общие точки сопряжения между облачным хранилищем и системой:
- /tank0/apps/cloud/nextcloud — хранилище облачного сервиса.
- /tank0/apps/onlyoffice — данные офиса.
- https://cloud.NAS.cloudns.cc — WEB интерфейс облачного сервиса.
Т.к. конфигурация NextCloud достаточно объёмна и состоит из нескольких файлов, я не буду приводить их здесь.
Всё, что нужно вы найдёте в репозитории на Github.
Там же доступна конфигурация для SeaFile.
Сначала установите и запустите NextCloud.
Для этого надо скопировать конфигурацию в каталог /tank0/docker/services/nextcloud и выполнить:
Будет собран новый образ на основе Nextcloud 13.0.7. Если вы хотите изменить версию базового образа, сделайте это в app/Dockerfile . Я использую версию 15, но стоит заметить, что в ней не работают многие плагины, такие как загрузчик ocDownloader и заметки, а также я ещё не восстановил работоспособность OnlyOffice.
Кардинальных отличий или сильного улучшения производительности я не заметил.
Ниже я считаю, что вы используете версию 13+.
Далее, зайдите в NextCloud и выбрав в меню справа вверху «Приложения», выполните установку необходимых плагинов.
- LDAP user and group backend — сопряжение с LDAP.
- External Storage Support — поддержка внешних хранилищ. Нужна будет далее, с целью интеграции NextCloud и общих файлов, а также сопряжения с внешними облачными хранилищами. Про настройку внешних хранилищ я расскажу в другой статье.
- ocDownloader — загрузчик файлов. Расширяет функциональность облака. Docker образ специально пересобран так, чтобы он работал.
- ONLYOFFICE — интеграция с офисом. Без этого приложения, файлы документов не будут открываться в облаке.
- End-to-End Encryption — сквозное шифрование на клиенте. Если облако используют несколько пользователей, плагин необходим, чтобы удобно обеспечить безопасность их файлов.
- Brute-force settings — защита от подбора учётных данных. NextCloud смотрит в Интернет, потому лучше установить.
- Impersonate — позволяет администратору заходить под другими пользователями. Полезно для отладки и устранения проблем.
- Talk — видеочат.
- Calendar — говорит сам за себя, позволяет вести календари в облаке.
- File Access Control — позволяет запрещать доступ к файлам и каталогам пользователям на основе тэгов и правил.
- Checksum — позволяет вычислять и просматривать контрольные суммы файлов.
- External sites — создаёт ссылки на произвольные сайты на панельке вверху.
- Установлен загрузчик Aria2.
- Установлен загрузчик Youtube-DL.
- Установлены inotify-tools.
- Увеличены лимиты памяти для PHP.
- Web-сервер настроен под лучшую работу с LDAP.
Замечу, что если вы установите версию 13+, но потом решите обновиться на версию 15, это и многое другое вы сможете сделать с помощью утилиты occ.
Настройка LDAP не тривиальна, потому я расскажу подробнее.
Зайдите в «Настройки->Интеграция с LDAP/AD».
Добавьте сервер 172.21.0.1 с портом 389.
Логин: cn=admin,dc=nas,dc=nas .
NextCloud может управлять пользователями в базе LDAP и для этого ему потребуется администратор.
Нажимайте кнопку «Проверить конфигурацию DN» и, если индикатор проверки зелёный, кнопку «Далее».
Каждый пользователь имеет атрибут inetOrgPerson и состоит в группе users_cloud .
Фильтр будет выглядеть так:
Нажимайте «Проверить базу настроек и пересчитать пользователей», и если всё корректно, должно быть выведено количество пользователей. Нажимайте «Далее».
На следующей странице будет настроен фильтр пользователей, по которому NextCloud их будет искать.
На этой странице надо ввести логин какого-либо пользователя и нажать «Проверить настройки».
Последний раз «Далее».
Тут нажмите «Дополнительно» и проверьте, что поле «База дерева групп» равно полю «База дерева пользователей» и имеет значение dc=nas,dc=nas .
Вернитесь в группы и установите в поле «Только эти классы объектов» галочку напротив groupOfUniqueNames .
Итоговый фильтр здесь такой:
Поле «Только из этих групп» я не устанавливал, т.к. хочу увидеть в интерфейсе NextCloud всех пользователей, а те кто не входит в группу users_cloud , отсеиваются фильтром на предыдущем этапе.
OnlyOffice
OnlyOffice — это прекрасный кроссплатформенный офисный пакет, который поддерживает работу с документами MS Office. Он бесплатный и открытый, также как и LibreOffice и также способен работать, как сервер.
Но при этом, поддержка оригинального формата у него реализована гораздо лучше, почти как в оригинальном офисе от MS, он более стабилен, имеет более продуманный интерфейс.
Кстати, есть и Desktop версия OnlyOffice, в том числе под Linux. В общем, намучавшись с тяжёлой и нестабильной Collabora (это LibreOffice), я выбрал OnlyOffice и пока вполне доволен.
Конфигурация OnlyOffice доступна на Github и ниже, под спойлером.
Поясню некоторые моменты:
- Вам надо изменить на свой, также как и NAS на имя своей DNS зоны.
- HTTPS здесь не требуется включать, потому что хотя офис и виден снаружи, обмен с ним идёт через обратный прокси, который работает с пользователем исключительно по HTTPS. Так построена архитектура NAS.
Теперь надо поднять офис:
И, если всё работает, по адресу office.NAS.cloudns.cc будет следующая страница:
Затем, в настройках NextCloud требуется выбрать Пункт «Администрирование->ONLYOFFICE» и прописать в первых двух полях адрес сервера документов: https://office.NAS.cloudns.cc/ и ваш JWT token.
В третьем поле надо прописать адрес облака.
JWT токен возможно сгенерировать, например здесь.
Если сервер настроен правильно, в меню создания документов облака появятся дополнительные пункты для офисных документов, а .docx файлы будут открывать в офисе.
Выводы
Облачное хранилище является центральным звеном для взаимодействия пользователей между собой и другими сервисами.
В этой роли NextCloud весьма удобен и обладает широким функционалом.
У него есть свои в процессе обновления между версиями, но в целом, это хранилище возможно рекомендовать.
Создаем личное файловое облако легко и просто (и дешево)
А сегодня мы с вами быстро и решительно легко и просто поднимем свое личное файловое облако типа Google Drive или Яндекс.Диск, а если повезет, то еще и очень дешево.
Зачем? Ну, например, потому что не хотим зависеть от корпораций с их кабальными лицензионными соглашениями и сменой условий задним числом. Или потому что нам хочется приватности. Или просто потому что можем. А бонусом на нашем сервере вы потом сможете еще установить VPN или прокси для доступа к запрещенным сайтам, или поднять простенький веб-сайтик.
Я специально будут рассказывать все максимально подробно и пошагово, чтобы даже люди без большого опыта системного администрирования смогли все повторить. В наше время, благодаря развитому инструментарию, такому как docker и snap, установить и настроить все что нужно можно очень быстро всего лишь несколькими командами.
Поехали
Первым делом, нам нужен сервер под это дело. Shared hosting нам не подходит, dedicated server — оверкилл и очень дорого, поэтому нам нужен VDS/VPS. Поскольку цель всего затеянного — хранить данные, много данных, самый распространенный вариант “SSD VDS” нам не подходит, и нужно найти то, что обычно называется “HDD VPS” или “Storage VDS”. Гуглим и выбираем то что надо исходя из своих потребностей и размеров кошелька. Я уже много лет пользуюсь одним классным украино-американским хостером, который предлагает HDD VPS в дата-центре в Болгарии за смешные деньги, а именно 1 евро в месяц за сервер с 100 гигабайт дискового пространства, 3 евро в месяц за сервер с 500 гигабайтами, и т.д.
Регистрируемся у хостера, заполняем все необходимые данные, и, наконец, заказываем услугу, выбирая сервер/тариф который нам хочется. Обычно при этом еще задается вопрос, какую ОС установить на сервер. Как известно, лучший дистрибутив Linux — это тот, который использует ваш Linux-гуру, поэтому выбирайте Debian самой свежей версии, которая есть — все дальнейшие инструкции будут приведены именно для Debian. Если Debian в списке нет (чему я очень сильно удивлюсь), то можно выбрать Ubuntu, там будет почти все то же самое.
После этого нужно подождать (обычно от нескольких минут до получаса), пока создается наша виртуальная машина. После этого либо в админиистративной панели хостера, либо в письме у вас в почтовом ящике, либо и там и там, вы получите реквизиты вашего нового сервера: его имя, IP-адрес, а также логин и пароль root-пользователя.
Для подключения к серверу нам нужен SSH-клиент. Если вы линуксоид, или у вас установлен WSL (Windows Subsystem for Linux), то просто используйте команду ‘ssh’. Если вы приверженец Windows, скачайте PuTTy.
Подключаемся к серверу по его IP-адресу:
Сразу же меняем пароль суперпользователя с хостерского на свой свежепридуманный:
Обновим установленный в системе софт до свежих версий и установим несколько пакетов, которые нам пригодятся:
nano — это простой текстовый редактор, как по мне, самый дружелюбный к начинающим пользователям благодаря постоянно присутствующим там на экране подсказкам по его комбинациям клавиш, mc — классический двухпанельный файловый менеджер для более удобных прогулок по файловой системе, самое то для неопытных пользователей.
Создадим учетную запись обычного пользователя (не root) и зададим ему пароль:
После этого немного укрепим безопасность нашей системы. Перевесим SSH-сервер со стандартного порта 22 на нестандартный (на самом деле я нередко встречал мнение, что в наше время это не сильно помогает от сканеров-ботов, но лично я вижу, что помогает) и запретим логиниться пользователю root: сначала надо будет зайти под учетной записью обычного пользователя, а уже потом командой ‘su -’ при необходимости эскалировать права.
и там меняем параметр Port на
и PermitRootLogin на
После этого для подключения к вашему серверу по SSH нужно будет добавлять опцию ‘-p2200’.
Более секьюрным подходом был бы полный запрет авторизацию по паролям и разрешение авторизации только по ключам, но для начинающих пользователей это обычно оказывается слишком сложно, а если вам это нужно и хочется, вы легко найдете в гугле как это сделать.
Теперь давайте немного поколдуем над файловой системой.
Сначала выполним команду mount и найдем, как называется наш основной диск, на котором находится корневой системный раздел:
Как видим, наш диск зовется /dev/vda1. По умолчанию Linux резервирует на каждом диске определенное место “на всякий случай” для пользователя root, чтобы, например, при полном исчерпании свободного пространства, сервисы не начали падать из-за невозможности писать логи и по-прежнему была возможность залогиниться и все исправить. Нюанс в том, что по умолчанию это место задается в % от общего объема, а поскольку диск у нас довольно большой, то не стоит заниматься расточительством, 1% более чем достаточно:
HDD VPS обычно предназначены именно для хранения данных, а не для работы каких-либо тяжелых сервисов, поэтому характеристики у них бывают нередко скромные. Часто можно встретить виртуальные машины с 1 гигбайтом или даже 512 мегабайтами оперативной памяти, что в наше время и для наших целей, прямо скажем, очень мало. Первым делом, проверим, сколько у нас вообще памяти, и главное, есть ли swap (раздел подкачки).
Если в последней строчке вы видите нули, то это тревожный звоночек: памяти мало, свопа нет, и в дальнейшем есть риск наткнуться на серьезные проблемы из-за этого. Сейчас мы все исправим.
— этот набор команд создаст на диске swap-файл размером в 1 гигабайт и начнет использовать его в системе.
Чтобы не надо было делать swapon после каждой перезагрузки, добавим новую строчку в /etc/fstab:
Все, с диском и памятью закончили, теперь переходим к более интересным делам.
Использовать нешифрованный HTTP в наше время очень неблагоразумно, а для HTTPS нам нужны сертификаты, которые не получится получить без доменного имени. Соответственно, нам нужен домен.
Не буду изобретать велосипед, а просто процитирую фрагмент из недавней отличной статьи:
Нам потребуется доменное имя для сервера, чтобы на нём беспроблемно работал TLS (HTTPS). Вы можете либо купить домен и привязать его к IP-адресу вашего VPS, либо использовать какой-либо бесплатный сервис, предоставляющий доменные имена. В последнем случае, родительский домен вашего домена должен быть внесён в список публичных суффиксов доменов. Иначе могут возникнуть проблемы с выпуском сертификата через Let’s Encrypt — упрётся в разрешённое число выпущенных сертификатов для родительского домена за какой-то период времени. В этом руководстве мы воспользуемся бесплатным сервисом freemyip.com, который даёт домен пользователю даже без регистрации.
Выберите красивое доменное имя и заберите его.
Сохраните куда-нибудь ссылку, которую получите.
Запустите следующую команду на вашем сервере: curl ‘ССЫЛКА’, где ССЫЛКА — та самая ссылка, которую вы получили на предыдущем шаге. Обратите внимание: нужно не забыть взять ссылку в одиночные кавычки!
Проверка: проверьте ваш домен ping-ом, он должен указывать на IP-адрес вашего VPS. Если это не так, то попробуйте подождать несколько минут и попробовать снова.
Я лично пользовался сервисом https://www.dynu.com/, там все очень просто: зарегистрировались, нажали DDNS Services -> Add -> выбрали красивый домен -> задали IP-адрес своего сервера. Всё.
Настало время самого важного.
Мы будем устанавливать NextCloud. Из альтернатив могу назвать еще Seafile и FileRun, но NextCloud мне попался под руку раньше, поэтому я буду использовать его.
Инструкция по ручной установке NextCloud довольно страшная: нужно установить Apache, PHP, MySQL/MariaDB, Redis, создать таблицы, сделать еще кучу всего, и не сойти с ума. Хвала людям, придумавшим формат дистрибьюции пакетов snap, мы получим все это введя лишь пару команд.
Устанавливаем snapd (обратите внимание, не snap, а snapd):
Это может занять некоторое время, терпеливо ждем. Всё! NextCloud установлен. Просто, правда?
Поскольку NextCloud поставляется в snap-пакете, то там уже в планировщике стоит задание для автоматического обновления NextCloud — периодически при логине через браузер вы будете видеть веселые уведомления о том, что он обновился до новой версии.
Потом вспоминаем доменное имя, которое мы зарегистрировали ранее, пусть, например, это будет ‘habrdrive.mywire.org’.
Заходим браузером на него: http://habrdrive.mywire.org
Откроется веб-интерфейс NextCloud с мастером установки, где кликаем на “Next”/”Далее” и немного ждем, пока он делает все необходимое под капотом.
NextCloud может предложить вам установить дополнительные расширения (“приложения), но если у вас слабенький сервер (гигабайт памяти или меньше), то лучше вежливо отказаться, если что, доустановите потом.
Немного магии: домен, который мы использовали для первого входа, NextCloud запомнит и больше не будет пускать клиентов ниоткуда, кроме него — то есть если вы, например, потом попробуйте обратиться к NextCloud через браузер не по доменному имени, а по IP-адресу, то NextCloud вежливо вам в этом откажет. В целях безопасности, типа.
Окей. Установка закончена: мы видим веб-интерфейс, пункты меню, мы можем уже загружать и скачивать файлы. Мы ничего не забыли? Конечно забыли. Мы забыли TLS-шифрование 🙂
Настроить его можно очень просто, всего одной командой в консольке:
NextCloud попросит вас согласиться с правилами Let’s Encrypt, сам сходит за сертификатом, установит его, и добавит в планировщик задачу, которая автоматически будет обновлять сертификат каждый 3 месяца.
После этого можно лазить по веб-интерфейсу NextCloud, изучать настройки.
Чтобы создать новые пользовательские аккаунты, для себя, для друзей, для родственников, для кота, и т.д., нужно перейти в пункт “Пользователи” в админской менюшке, и дальше разберетесь. Да, для пользователей можно задавать квоты (максимально допустимый объем занятого пространства) 🙂
В целом, NextCloud даже без дополнительных расширений умеет всё, что полагается уметь файловому облаку: можно создавать папки, заливать и скачивать файлы, шарить файлы и папки между пользователями в пределах облака и даже на весь Интернет, и много чего другого. Есть “Корзина” для удаленных файлов, есть журнал событий — короче говоря, все как у людей.
Интерфейс интуитивно понятный:
Меню выбора приложений (1): в верхнем левом углу, там торчат все “Приложения” NextCloud, но если вы ничего дополнительно не устанавливали, то как минимум там будут “Файлы” и “События”.
Поле «Информация о приложениях» (2): расположено на левой боковой панели и содержит пункты, связанные с выбранным вами приложением. Например, когда открыты «Файлы», там есть специальный набор фильтров для быстрого поиска, например, файлы которыми вы поделились с вами, и файлы, которыми вы поделились с другими, и т.д.
Панель навигации (4). классические “хлебные крошки” (breadcrumbs), показывающие, насколько глубоко вы забрались по папкам и позволяющие оттуда вылезти.
Кнопка «Создать» (5): расположенная на панели навигации кнопка «Создать» позволяет создавать новые файлы, новые папки или загружать файлы. Можно и без нее, просто перетащить drag-n-drop’ом файл или диру в браузер.
Поле поиска (6): поиск по тому, что у вас есть в хранилище.
Меню настроек (9): нажмите на изображение своего профиля, расположенное справа от поля поиска, чтобы открыть раскрывающееся меню настроек. На странице настроек представлены следующие настройки и функции:
Ссылки для скачивания десктопных и мобильных приложений
Настройки имени, электронной почты и изображения профиля
Управление “подключенными” (залогиненными) браузерами и устройствами
Настройки языка интерфейса
Информация о версии Nextcloud
У NextCloud есть десктопный клиент для синхронизации под Windows, MacOS и Linux, есть очень удобные мобильные клиенты для Android и iOS. Найти все это дело можно на их официальном сайте: https://nextcloud.com/clients/
После установки клиента он первым делом спросит у вас адрес сервера — введите свое доменное имя. Дальше пользовательские логин/пароль, и дело сделано:
Кроме того, с NextCloud можно работать любым WebDAV-клиентом. Например, подобный функционал нередко используется во всевозможных менеджерах паролей, утилитах для бэкапов, и т.д. Чтобы получить ссылку для webdav-соединения, при открытом окошке “Файлы” ткните на “Настройки” слева снизу (да, вот это немного неочевидно), и она будет там:
Шифрование
Если вы немного параноик (в наше время это нормально), то NextCloud поддерживает шифрование на стороне сервера. Перед его ключением следует иметь в виду, что: 1) отключить его обратно через веб-интерфейс не получится (но все еще можно через глубины консоли) 2) В зашифрованном виде файлы занимают примерно на 30% больше, чем в нешифрованном, ну и тормозить при заливке-скачивании оно может больше, если на сервере слабый процессор и много пользователей.
Шифрование на стороне сервера Nextcloud генерирует ключ шифрования, который разблокируется с помощью пароля пользователя. Оно шифрует только содержимое файлов, а не имена файлов и структуры каталогов.
Ключи шифрования хранятся в следующих каталогах:
./data/ /files_encryption
./data/files_encryption
При установке из snap папка data будет здесь: /var/snap/nextcloud/common/nextcloud/data
Для включения шифрования, сначала идем в меню «Приложения», находим там Default Encryption module и включаем его:
Потом идем в Настройки — Параметры сервера — Безопасность, находим там «Шифрование на стороне сервера» и тоже его включаем
Детали реализации можно прочитать вот здесь и вот здесь.
Более надежным вариантом будет шифрование всего дискового раздела с данными, но это уже совсем другая и гораздо более сложная история. Гугл в помощь.
Оптимизации
Если у вас на сервере 1 гигабайт памяти, то все еще неплохо, а вот если у вас только 512 мегабайт, то NextCloud будет работать как говно неторопливо. Очень неторопливо. Настолько неторопливо, что лучше вообще избегать ставить его на машины с 512 мегабайтами памяти. Да, мы добавили swap, потому что без swap’а на системах с 512 мегабайтами он тупо не работает — процесс MariaDB (базы данных) периодически тупо прибивается системным out-of-memory-killer’ом и все с грохотом падает. С активным свопом такого не происходит, но поскольку диск у нас HDD, то работает все это дело иногда довольно медленно, вплоть до того, что когда вы после долгого бездействия открываете веб-морду NextCloud или мобильное приложение, первые одна-две попытки соединиться отваливаются по таймауту, что, само собой, не очень приятно, и с этим надо что-то делать.
Так что если вы настолько отчаянны, что у вас 512mb-виртуалка, то сейчас я расскажу несколько трюков, которые помогут сделать чтобы все было не так больно.
Включаем zswap
Zswap — технология компрессии страниц в памяти. Поскольку своп у нас очень медленный, то даже с учетом оверхеда на компрессию-декомпрессию страниц процессором, zswap все равно может дать очень неплохое ускорение работы.
Проверяем, не включено ли оно уже — обычно не включено
Если видим N, то делаем
и потом добавляем те же самые строчки в /etc/rc.local чтобы оно сразу включалось после перезагрузки:
Существует и другой, более “правильный” способ активации zswap еще на этапе загрузки системы через параметры ядра, но не будем переусложнять, оно и так нормально работает.
Из других оптимизаций:
Можно отключить MDNS-Publisher, посколько он нужен только в локальной сети:
Это освободит еще немного памяти.
Еще в /etc/systemd/journald.conf можно выставить опцию
и после этого перезапустить journald командой
чтобы SystemD скидывал логи на диск, а не хранил их в памяти.
Ну и наконец, фантастический костыль, создадим в NextCloud юзера по имени dummy, а в /etc/cron.hourly/ создадим файл ‘poke’ со следущим содержанием:
и сделаем его доступным для запуска
После этого cron каждый час будет тыкать nextcloud через webdav, заставляя того активизировать свои воркеры и прочитать что-нибудь из базы данных, что вызовет загрузку их страниц памяти из свопа если они по какой-то причине там оказались. Да, костыль, но он работает 🙂