Компьютеры, программы, интернет => Программы и сети => Тема начата: Shaman от 20 Авг., 2020, 17:27
Название: Облачный сервер дома - это реально!
Отправлено: Shaman от 20 Авг., 2020, 17:27
Столкнулся с необходимостью получать и передавать данные людям не используя при этом открытые облачные сервисы типа Яндекс диск. Для личного пользования давно был реализован SSH доступ до сервера на linux которы перекрывал все потребности, но поскольку из соображений безопасности доступ был реализован только по ключу, что резко ограничивает круг использования. Поскольку пришлось бы всем желающим раздавать файлы ключей, что не есть хорошо.
Мой выбор пал на ownCloud (https://owncloud.com/) поскольку он бесплатный, имеет клиентские приложения под все популярные мобильные платформы, и десктопные решения под все популярные ОС.
А также, что не маловажно для новичков в роде меня, подробную инструкцию по установке и настройке (https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-owncloud-on-ubuntu-18-04-ru) и хорошую документацию. (https://doc.owncloud.org/server/10.5/) Здесь более подробные инструкции по установке и настройке Apache (https://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ru) и брандмауэра UFW (https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04-ru)
Ниже прокомментированы моменты, которые оказались не явными для меня и возможно будут таковыми для других новичков.
ЦитатаЗатем создайте отдельную учетную запись пользователя MySQL для управления созданной базой данных. Создание баз данных и учетных записей с одной функцией является хорошей идеей с точки зрения управления и безопасности. Выберите предпочитаемое имя пользователя. Для целей этого обучающего модуля мы решили использовать имя owncloud.
GRANT ALL ON owncloud.* to 'owncloud'@'localhost' IDENTIFIED BY 'owncloud_database_password';
красным выделено место куда нужно вписать имя пользователя, а зелёным имя базы данных. Не верный шаг в инструкции для начинающих делать одинаковые имена для разных параметров в местах где их нужно вводить одновременно.
Перед выполнением Шага 4инструкции по установке и настройке Решите, где будут располагаться каталоги пользователей облака. По умолчанию они лежат "/var/www/owncloud/data"
ВАЖНО!!!
Ни в коем случае не переносите эту директорию при уже настроенном, и работающем сервере он упадёт. Её можно перенести вручную по инструкции. Но это не тривиальная задача для новичка и забегая вперёд скажу у меня не вышло и пришлось поднимать сервер заново. Также её можно задать во время первичной конфигурации на веб интерфейсе, но у меня это опять же не сработало, выходила ошибка. Поэтому моим решением было смонтировать директорию по умолчанию другую директорию, в нужном мне месте, средствами самой системы. инструкция по монтированию
В файле fstab при помощи команды нужно прописать следующие строки без кавычек: Путь должен содержать только латинские символы и в нём должны отсутствовать пробелы Сохранить изменения и перемонтировать все диски и директории командой
[свернуть]
Если вы хотите добавить или удалить фалы в каталогах пользователей не через приложение или вэб-интерфейс то после создания/удаления оных необходимо выполнить в терминале следующие команды иначе файлы не появятся/останутся у пользователей:
Где /var/www/owncloud директория в которой расположен (по мнению программы) каталог data
[свернуть]
Название: Re: Облачный сервер дома это реально.
Отправлено: Shaman от 15 Сен., 2020, 17:58
Далее я буду приписывать дальнейшую настройку сервера. После того как сервер запустился в его админке будут появляться сообщения, что он ещё хочет для стабильной работы.
Включить поддержку .htaccess
Откройте файл конфигурации сервера Apache /etc/apache2/httpd.conf или (зависит от версии) /etc/apache2/apache2.conf Добавьте в файл /etc/apache2/httpd.conf или apache2.conf следующие строки AccessFileName .htaccess Перезагрузите Apache
[свернуть]
В ответ на предупреждение: Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд
Нужно:
внести исправления в описание хоста: Перезагрузите Apache
[свернуть]
Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация доступна в документации.
Решение
Установить: sudo apt install memcached php-memcached php-memcache php-apcu Откройте файл конфигурации сервера owncloud /var/www/owncloud/config/config.php И добавте в него следующие строки
[свернуть]
Название: Re: Облачный сервер дома - это реально!
Отправлено: Shaman от 06 Апр., 2021, 17:41
Добавление внутренних каталогов как внешних хранилищ. 1. Расщариваем каталог по SMB, включая возможность не авторизованным пользователям читать и записывать файлы 2. В веб интерфейсе переходим на вкладку настройки/хранилище и и проверяем нет ли сообщения "Примечание: "smbclient" не установлен. Монтирование SMB / CIFS, SMB / CIFS с ипользованием логина OC невозможно. Пожалуйста, обратитесь к системному администратору.". Если есть устанавливаем. Для убунту команда на установку: и перезапускаем веб сервер в моём случае это apache2 Cтавим галочку подключить внешнее хранилище. 3. В списке "Добавить хранилище" выбираем SMB/CIFS. Имя каталога пишем любое удобное, это имя будет отображаться в списке каталогов. 4. Если вы хотите иметь возможность создавать общедоступные ссылки, то в "Авторизации" нужно выбрать "Имя пользователя и пароль" в противном случае оставить как есть. 5. В "Конфигурации" в поле "Сервер" прописываем ip локальной петли 127.0.0.1. В поле "Общий доступ" имя общего ресурса который был расшарен ранее по SMB. В полях "Имя пользователя" и "Пароль" (появляются только при выборе авторизации по паролю) пользователя которому разрешен доступ к каталогам. Поля "Удалённый каталог" и "Домен" в нашем случае не нужны. 6. В "Доступно для" добавляем пользователей облака которые могут видеть добеленное хранилище. Если оставить пустым будет видно всем. 7. Нажимаем на шестерёнку и проставляем нужные настройки. Если хотите создавать общедоступные ссылки обязательно нужно включить общий доступ (не работает без настроек из пунктов 4-5). Пункт "Включить предпросмотр" влияет на появление превьюшек на файлах (если сервер и канал слабый лучше выключить).
Скрин с примером
[свернуть]
Если все настройки введены правильно и папка доступна по сети, то напротив имени хранилища появиться зелёный круг. Если нарисован красный квадрат проверяйте правильность ввода настроек и доступность каталога.
Да значительно проще добавить каталог напрямую через облако, но в этом случае, если ваш сервер, так же как и у меня, используется как десктоп, доступ в папку и изменение файлов будет затруднён (с.м. первый пост под спойлером п.5).
Можно подключить и по SFTP, но в таком случае в настройках ssh сервера нужно открывать парольный доступ либо генерировать RCA ключи и естественно закрытый ключ будет храниться здесь же на сервере, что не допустимо.
Название: Re: Облачный сервер дома - это реально!
Отправлено: Shaman от 07 Апр., 2021, 18:14
Перенос сервера и базы данных на другую систему. Дабы избежать проблем версии owncloud должны быть одинаковыми. Как обновиться смотри пост ниже. А также желательно отключить все сторонние приложения (не от разработчиков owncloud). В первую очереди необходимо сделать бэкап базы данных mysql для этого необходимо. 1. Остановить ваш веб сервера дабы никто не смог изменить базу данных. Для апача это команда
2. Сделать бэкап. Способ зависит от версии используемой базы данных я напишу команды, которые сработали у меня. sudo mysqldump --opt название_базы_данных > название_файла_бэкапа.sql
3. Скопировать каталог data. По умолчанию расположен /var/www/owncloud А так же фал config.php, расположен /var/www/owncloud/config Т
4. Установить пользователя для каталога owncloud www-data командой (только для ubuntu/debian):
Для других дистрибутивов пользователь и команда могут быть другими.
5. Развернуть базу данных. Аналогично пункту 2 напишу, что сработало у меня. mysql -u пользователь_БД -p имя_БД < файл_дампа_БД
6. Проверяем, что база развёрнута. вместо sklad пишем своего пользователя базы данных, вместо owncloud свою базу Вывод
[свернуть]
Если все ваши пользователи есть в таблице база развернулась успешно.
На всякий случай удаляем блокировку файлов.
7. Запускаем апачи :)
Название: Re: Облачный сервер дома - это реально!
Отправлено: Shaman от 08 Апр., 2021, 12:55
Обновление owncloud
1. Заходим в настройки
[свернуть]
2. Выбираем пункт основные
[свернуть]
3. Выбираем открыть окно обновления.
[свернуть]
4. Нажимаем start.
[свернуть]
4.1 если выпала ошибка как на скрине ниже...
...значит у вас каталог ownwloud, с подкаталогами, не доступен для пользователя под которым работает owncloud и веб-сервер. Для Debian/Ubuntu это пользователь и группа www-data. Переназначаем пользователя командой и делаем новую попытку обновления.
[свернуть]
Важно!!!
После обновления необходимо установить разрешение на исполнение для файла occ (установщик их почему-то сбрасывает), иначе вы не сможете выполнять сервисные функции.
Название: Re: Облачный сервер дома - это реально!
Отправлено: Shaman от 08 Апр., 2021, 13:15
Предупреждение в админке
Мы рекомендуем включить системный cron, так как любой другой планировщик может иметь недоработки в производительности и надёжности.
3. В настройках в браузере выбираем планировщик cron.
[свернуть]
Название: Re: Облачный сервер дома - это реально!
Отправлено: Shaman от 12 Апр., 2021, 10:37
Предупреждение в админке
Транзакционная блокировка файлов должна быть настроена на использование блокировок в памяти, а не в базе данных, как установлено по умолчанию.
Если у вас домашний или малонагруженный сервер и вы не используете ZFS, просто не обращайте внимание на это. Иначе, или вы замечаете, что при использовании внешних SMB хранилищ у вас не появляются или не пропадают файлы добавленные/удалённые в эти хранилища не через owncloud... ...рекомендую установить и настроить Redis
Далее я привожу краткое изложение статьи по установке и настройке. Оригинал здесь (https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-20-04-ru). 1. Устанавливаем Redis.
2. Конфигурируем его.
2.1 Для всех дистрибутивов использующих systemd ищем строку supervised и вместо no прописываем systemd
/etc/redis/redis.conf
[свернуть]
2.2 Проверяем не закомментирована ли строка привязки к localhost (удалите символ #, если он существует).
2.3 устанавливаем пароль доступа.
Следуя предупреждению...
# Warning: since Redis is pretty fast an outside user can try up to # 150k passwords per second against a good box. This means that you should # use a very strong password otherwise it will be very easy to break.
[свернуть]
... создаём сложный пароль при помощи openssl.
Вывод команды вставляем вместо foobared в строке requirepass /etc/redis/redis.conf
[свернуть]
2.4 Можно отключить или переименовать опасные команды как в How To (https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-20-04-ru) ИМХО
Но это актуально только если вы используете распределённую систему с большой нагрузкой, где злоумышленник может получить доступ до базы из вне. А если owncloud и redis работают на одном сервере и до него получили доступ это последнее о чём вам стоит задумываться. Поскольку следуя этой инструкции Redis будет настроен для работы только через localhost или unix socket
[свернуть]
Для этого в конфиг нужно добавить стоки типа rename-command FLUSHDB "" отключает выбранную команду вообще rename-command FLUSHDB "новое имя команды" задаёт новое имя /etc/redis/redis.conf
[свернуть]
Важно!!!
Не переименовывайте команду DEL, из списка, её использует owncloud.
2.5 сохраняем конфиг и перезапускаем службу командой.
Потом, если вы будете менять ещё какие-то настройки, используйте команду
3.Проверяем работу Redis
Проверим, может ли Redis сохранять данные даже после остановки или перезапуска.
[свернуть]
4 Настраиваем owncloud для работы с Redis. Взято из официального мануала (https://doc.owncloud.org/server/10.7/admin_manual/configuration/server/caching_configuration.html)
4.1 Открываем файл config.php
4.2 Вставляем строки: Сохраняем, заходим в веб-интерфейс и пробуем добавить и удалить файлы.
Возможно так же настроить redis и owncloud для работы через unix socket (так работает значительно быстрее) Для этого нам понадобится: ↓ спойлер ↓
1. сменить для пользователя redis группу на www-data и добавить пользователя www-data в группу redis
2. Создать папку где будет лежать сокет
3. В конфигурацию Redis добавить строчки:
4. п 4.2 будет выглядеть так:
5. Перезагрузить Redis и проверить, что файл /var/run/redis/redis.sock создан. И перезапустить веб-сервер (в моём случае это апач)
[свернуть]
[свернуть]
Очистка кеша Redis
Кэш Redis можно очистить из командной строки с помощью инструмента redis-cli , как в следующем примере:
Или, если вы используете redis только для блокировки транзакций:
Естественно если команды были переименованы нужно вводить их новые имена.
<dbIndex>- номер базы данных Redis, в которой хранится кеш. По умолчанию в ownCloud он равен нулю. Чтобы проверить, что у вас сейчас установлено, отметьте dbindexзначение в config/config.php. По умолчанию каждый экземпляр Redis поддерживает 16 баз данных, поэтому <dbIndex> необходимо установить значение от 0 до 15.
[свернуть]
Название: Re: Облачный сервер дома - это реально!
Отправлено: Shaman от 12 Апр., 2021, 14:58
К сожалению заметил несколько ошибок, а исправить пост уже не могу. :( Ниже исправленная версия
Цитата: Shaman от 15 Сен., 2020, 17:58Далее я буду приписывать дальнейшую настройку сервера. После того как сервер запустился в его админке будут появляться сообщения, что он ещё хочет для стабильной работы.
Включить поддержку .htaccess
Откройте файл конфигурации сервера Apache /etc/apache2/httpd.conf или (зависит от версии) /etc/apache2/apache2.conf Добавьте в файл /etc/apache2/httpd.conf или apache2.conf следующие строки Перезагрузите Apache
[свернуть]
В ответ на предупреждение: Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд
Нужно:
внести исправления в описание хоста: Включите соответствующий модуль apache командой: Перезагрузите Apache
[свернуть]
Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информация доступна в документации.
Решение
Установить: sudo apt install memcached php-memcached php-memcache php-apcu Откройте файл конфигурации сервера owncloud /var/www/owncloud/config/config.php И добавьте в него следующие строки
[свернуть]
Название: Re: Облачный сервер дома - это реально!
Отправлено: Shaman от 18 Сен., 2022, 03:04
После очередного обновления до версии 10.10.0. сервер стал проверять целостность файлов в каталогах, почему-то не смог удалить неиспользуемые файлы и выдал предупреждение: Некоторые файлы не прошли проверку целостности.
Список файлов можно посмотреть рядом по ссылке. Проблема решается просто удалением этих самых файлов, только нужно предварительно сделать их бекап и в момент удаления остановить сервер. Как остановить и запустить апач написано здесь (https://anklab.ru/forum/index.php?msg=701)
Название: Re: Облачный сервер дома - это реально!
Отправлено: Shaman от 20 Сен., 2022, 02:05
В после обновления до версии 10.10 обнаружил, что на папки подключенные по SMB появилась квота на скачивание в размере 512Mб как её убрать не нашел, поэтому откатился назад на версию 10.7.0.4 Да здравствует ZTF с её снапшотами :D потому как откат версии из программы невозможен, мануале о чем сказано в мануале.
Downgrading is not supported as it risks corrupting your data. If you want to revert to an older ownCloud version, make a new, fresh installation and then restore your data from backup. Before attempting this, file a support ticket (if you have paid support) or ask for help in the ownCloud forums to resolve your issue without downgrading.
[свернуть]
Возможно это происходит из-за большой разницы в версиях и на чистой установке проблемы не будет, не проверял.