- Установка NextCloud на Ubuntu 20.04 (Apache, MariaDB)
- Возможности NextCloud
- Установка NextCloud (Apache, MariaDB)
- Удаление index.php с домена NextCloud
- Известные ошибки
- Решение ошибки: Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ
- Решение ошибки: Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим подсказкам по безопасности
- Решение ошибки: Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информации
- Решение ошибки: В базе данных отсутствуют некоторые индексы. Из-за того, что добавление индексов в большие таблицы могло занять некоторое время, они не добавлялись автоматически
- Решение ошибки: В некоторых столбцах базы данных отсутствует преобразование в большой тип int. Из-за того, что изменение типов столбцов в больших таблицах могло занять некоторое время, они не менялись автоматически
- NextCloud: Создаем свое облачное хранилище
- NextCloud – больше чем облачное хранилище
- Содержание
- Установка NextCloud с помощью snap-пакета
- Настройка учетной записи NextCloud
- Шифрование домена NextCloud с помощью сертификата SSL от Let’s Encrypt
- Дополнительные настройки NextCloud
- Nextcloud. Настраиваем персональное облако и смотрим, стоит ли возня свеч
- Содержание статьи
- Установка
- Интерфейс и приложения
- Торренты и youtube-dl
- Продолжение доступно только участникам
- Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
- История создания домашнего облака. Часть 3. Создание персонального облака — установка и настройка Nextcloud
- Оглавление
- Быстрая навигация по главе
- Предисловие
- Подготовка сервера для установки Nextcloud
- Установка Nextcloud
- Организация места хранения данных Nextcloud
- Настройка доступа к виртуальной машине Nextcloud из локальной сети
- Настройка Nextcloud
- Дополнительная «тонкая» настройка Nextcloud
- Защита для Nextcloud
- Синхронизация с облаком смартфонов
- Синхронизация с облаком персонального компьютера
- Послесловие
- Видео
Установка NextCloud на Ubuntu 20.04 (Apache, MariaDB)
Возможности NextCloud
Инструкция по установке довольно обширная, хоть и не сложная, но если вы хотите установить NextCloud максимально легким способом, то тогда вам стоит воспользоваться нашей предыдущей статьей по установки NextCloud с помощью snap пакета: NextCloud: Создаем свое облачное хранилище.
Установка NextCloud (Apache, MariaDB)
Установим Apach и MariaDB:
Установим необходимые PHP модули:
Войдем в консоль базы данных. Поскольку MariaDB теперь использует плагин unix_socket для аутентификации входа пользователя, нет необходимости вводить пароль root MariaDB. Нам просто нужно добавить к команде mysql префикс sudo:
Создаем базу данных, пользователя и задаем свой пароль:
Выходим из консоли базы данных:
В самом верху следующей команды добавляем название своего домена:
Создаём виртуальный хост Apache для Nextcloud:
Где example.com – это название вашего домена.
Меняем владельца каталога:
Устанавливаем NextCloud, задаем нашу базу данных, создаем администратора:
Добавляем свой домен в базу доверенных доменов NextCloud:
Шифрование домена NextCloud:
Не забудьте открыть порты 80 и 443:
Удаление index.php с домена NextCloud
В строке ‘overwrite.cli.url’ => ‘http://localhost’ заменяем http://localhost на свой домен: https://example.com
И под ним добавляем следующую строку:
Пример на скриншоте.
Известные ошибки
Решение ошибки: Разрешённое максимальное значение использования памяти PHP ниже рекомендуемого значения в 512 МБ
Решение ошибки: Заголовок HTTP «Strict-Transport-Security» должен быть настроен как минимум на «15552000» секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим подсказкам по безопасности
В конце, под блоком SSL добавляем следующий параметр:
И перезапускаем веб-сервер:
Решение ошибки: Не настроена система кеширования. Для увеличения производительности сервера, по возможности, настройте memcache. Более подробная информации
Добавляем следующий параметр:
Перезапускаем Apache и PHP-FPM:
Увеличиваем предел размера загружаемого файла
При использовании модулей Apache PHP, по умолчанию задан предел загружаемого файла в 2 МБ. Обходим данное ограничение, увеличиваем предел загружаемого файла по своему усмотрению (в этом примере мы задаем предел в 5024 МБ):
Решение ошибки: В базе данных отсутствуют некоторые индексы. Из-за того, что добавление индексов в большие таблицы могло занять некоторое время, они не добавлялись автоматически
Решение ошибки: В некоторых столбцах базы данных отсутствует преобразование в большой тип int. Из-за того, что изменение типов столбцов в больших таблицах могло занять некоторое время, они не менялись автоматически
Переводим NextCloud в режим обслуживания:
И вводим следующую команду:
Отключаем режим обслуживания:
После этого Проверка безопасности и параметров, скорее всего не выявит проблем.
NextCloud: Создаем свое облачное хранилище
NextCloud – больше чем облачное хранилище
NextCloud – веб-платформа, позволяющая создать свое собственное облачное хранилище.
Набор функций NextCloud часто сравнивают с функциональностью таких облачных файловых хостингов как Dropbox, OneDrive и т.д. Но на самом деле, NextCloud предлагает гораздо большую функциональность. В своем хранилище NextCloud вы можете создать не только файловый хостинг, но и закрытое сообщество в котором можно совершать аудио/видео звонки (NextCloud Talk), переписываться, создавать рабочие задачи и совместно работать (по типу Trello).
Расширение функциональности легко достигается с помощью добавления приложений из магазина приложений apps.nextcloud.com.
Для управления облачным хранилищем доступны настольные (для Windows, macOS и Linux) и мобильные приложения (для Android и iOS):
Содержание
Установка NextCloud с помощью snap-пакета
NextCloud доступен в магазине snap-пакетов snapcraft, поэтому процесс установки будет максимально простым.
В качестве серверной системы мы использовали Ubuntu 20.04.
Обновим систему и включим поддержку snap-пакетов:
Установка пакета snap NextCloud:
Проверяем установку пакета:
Посмотреть сетевые интерфейсы пакета:
Посмотреть список служб пакета:
Настройка учетной записи NextCloud
Создание учетной записи Администратора:
Вместо «имя» вводим имя администратора учетной записи и вместо слова «пароль» вводим непосредственно придуманный пароль для учетной записи.
По умолчанию NextCloud работает только с внутренним доменом localhost, проверить можно командой:
Поэтому мы зададим доменное имя или IP-адрес сервера:
Вместо example.com указываем свой домен или IP-адрес. Для добавления еще одного домена нужно изменить индекс на 1. Пример:
Проверяем доверенные домены:
В настройках DNS (А-запись) учетной записи регистратора доменного имени не забудьте добавить IP-адрес сервера.
Шифрование домена NextCloud с помощью сертификата SSL от Let’s Encrypt
Для нашего домена добавим бесплатный SSL сертификат от Let’s Encrypt.
Если вы пользуетесь ufw в качестве настройки системного фаервола, то сначала откройте порты 80 и 443:
sudo nextcloud.enable-https lets-encrypt
В ходе установки сертификата нужно будет указать свою электронную почту и указать доменное имя.
После установки сертификата откройте доменное имя или IP-адрес в браузере.
Интерфейс NextCloud по умолчанию.
Дополнительные настройки NextCloud
Если вам потребуется доступ к консоли mysql, то сначала нужно узнать название базы. Сделать это можно следующей командой:
Отобразить список баз:
Скорее всего название базы будет nextcloud, значит подключиться к консоле нашей базы можно будет следующей командой:
Список команд и приложений доступен по ссылке: nextcloud-snap.
В NextCloud доступно огромное количество приложений для расширения функциональности.
Отдельно хочу выделить следующие приложения (кстати, устанавливаются они легко через веб-интерфейс):
NextCloud – это однозначно интересное решение, которое подойдет не только для создания личного облачного хранилища, но и в качестве создания облачного хранилища для сообществ, ведения обсуждений и совершения звонков внутри сообщества.
Nextcloud. Настраиваем персональное облако и смотрим, стоит ли возня свеч
Содержание статьи
Вообще говоря, первым делом я рассматривал более безобидные варианты вроде Dropbox или Google Drive. Поставить одну из них на сервер, и пусть синхронизирует папки с компьютером, а при желании можно и на телефоне открыть. Но бесплатно в этих сервисах доступно не так много места, а платить за хранение одних и тех же файлов дважды совершенно не хочется — один раз хостеру VPS, где лежат данные, второй раз — за Dropbox. Да и что‑то свое иметь всегда приятнее, верно?
Поиски показали, что найти решение одновременно простое и не совсем кустарное не так‑то легко. Зато в любом треде на эту тему обязательно появляются люди, которые поставили себе ownCloud или Nextcloud и рапортуют о ровном и приятном полете на протяжении долгих лет. И хоть я и не поклонник мегакомбайнов, звучало это достаточно заманчиво, чтобы дать им шанс.
Обе программы — это платформы, которые сами по себе заменяют Dropbox и дают возможность управлять файлами и шейрить их, но после установки плагинов начинают напоминать миниатюрную операционку. Здесь тебе и почтовые программы, метящие на роль Gmail, и коллаборативные редакторы на манер Google Docs, и календари с планировщиками, и заметки, и майндмапы и прочие майндфаки.
ownCloud после установки
При этом ownCloud — штука далеко не новая, в «Хакере» о нем писали еще в 2014 году. Nextcloud посвежее и развивается активнее: первый релиз состоялся в 2016 году, а текущая версия на момент написания этой статьи — двадцатая.
Пристально изучив оба, я обнаружил, что Nextcloud вполне можно назвать младшим братом ownCloud, причем родным, а не двоюродным. Сходства видны на каждом шагу, включая даже некоторые элементы интерфейса и названия файлов. Такое ощущение, будто создатели Nextcloud не долго думая просто стянули весь код предшественника и принялись модернизировать его.
Обе компании находятся в Германии, так что история могла быть более запутанной и повествовать о расколе среди сотрудников ownCloud. Но нам об этом ничего не известно, так что просто возьмем Nextcloud, как более модный, и приступим к установке.
Установка
Детально раскатывание Nextcloud на своем сервере описано в документации, так что повторять ее мы не будем и только пробежимся по основным пунктам — чтобы ты представлял себе масштабы работ и не пропустил важные шаги, если решишь повторить мой путь.
Вот что потребуется сделать в общих чертах.
Когда все будет готово, не спеши перезапускать сервер! Как только ты это сделаешь, Nextcloud начнет на весь мир показывать установщик, которым, по идее, может воспользоваться кто угодно и станет админом твоего облака вместо тебя 🙂 Чтобы избежать этого, можешь либо завершить процесс установки через командную строку, либо настроить веб‑сервер таким образом, чтобы он не пускал кого попало. Тебя выручит авторизация (директива auth_basic ) либо белый список, в который будет входить только твой IP (директивы allow IP> и deny all ).
В любом случае для работы с Nextcloud тебе понадобится задать логин и пароль для админской учетки, а также указать базу данных и креды ее пользователя, которого ты создавал. В общем, если ты когда‑нибудь устанавливал WordPress или phpBB, то ты точно справишься.
Интерфейс и приложения
После долгих приключений в темном подземелье консоли мы выбираемся на поверхность, к цивилизации. На первый взгляд все очень модно.
Файловый менеджер с картиночками!
Точнее, подобие магазина, потому что денег здесь не берут, все только даром.
Шейринг
Еще можно назначить пароль и указать время, по истечении которого ссылка работать перестанет.
Ограничение по времени
Но внимание, конечно, сразу перетягивает на себя магазин приложений. Всего аппликух ни много ни мало — 281 штука. Здесь есть всякие просмотрщики (например, для снимков в RAW, книжек в ePub, треков в GPX), музыкальные плееры, галереи для просмотра и публикации картинок, несколько видов таск‑трекеров и заметок, менеджер паролей и тому подобные вещи.
Вот, к примеру, отличный редактор диаграмм на основе исходных кодов Draw.io, о котором я когда‑то писал в рубрике WWW. Он устанавливается буквально одной кнопкой, после этого можно создавать, открывать и редактировать файлы с диаграммами.
Не стоит, впрочем, ждать, что все приложения будут ставиться одной кнопкой и идеально работать, наделяя Nextcloud новой восхитительной возможностью. Приложухи здесь очень разные — как по качеству, так и по требованиям.
Например, бывает нужно что‑то дополнительно вручную устанавливать на сервер, а приложение Nextcloud служит только фронтендом. Так, нельзя просто взять и в один клик поставить коллаборативный редактор документов Collabora — нужен соответствующий сервер.
То же и с почтой. Программа с незатейливым названием Mail — это лишь клиентская часть, и если ты хочешь не только развернуть свой вебовый почтовик, но и не зависеть от сторонних сервисов POP3/SMTP/IMAP, то устанавливать, настраивать и поддерживать сервер придется самостоятельно. Разработчики рекомендуют использовать Mail-in-a-Box — как наиболее простой в установке.
Случается и так, что приложения требуют, например, определенной версии PHP или самого Nextcloud. В общем, забыть о том, что ты теперь сам себе админ, не выйдет.
Торренты и youtube-dl
Вряд ли сегодня кого‑то удивишь торрент‑клиентом с вебовым интерфейсом, но приятно, когда скачанными файлами легко управлять. Что касается youtube-dl — знаменитой программы для стягивания видео с YouTube и множества других сервисов (включая Twitter, TikTok и даже Pornhub), то у него и вовсе нет своего графического интерфейса. Так что иметь возможность открыть в браузере страничку, вбить туда URL и заполучить файл — идея неплохая, особенно если речь об использовании с мобильного устройства.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
История создания домашнего облака. Часть 3. Создание персонального облака — установка и настройка Nextcloud
На пути создания своего облачного сервиса пока мы освоились в системе Debian и создали веб-сервер. Теперь пришла пора для финального шага — создания и настройки персонального облака на базе сервера Nextcloud.
Оглавление
Быстрая навигация по главе
Предисловие
Вот мы и подошли к тому самому, ради чего всё затевалось и к чему не быстро продвигались. В этой части будет описана установка и некоторые моменты в настройке сервера Nextcloud в виртуальной машине VMWare, а также небольшой опыт работы с ним в виде синхронизации содержимого пары смартфонов и папок настольного компьютера под управлением Windows. Нижеприведённые инструкции по установке Nextcloud подразумевают, что сервис разворачивается на сервере, который был создан по инструкциям в предыдущей части моего повествования.
Изначально эта глава планировалась небольшой, так как я хотел ограничиться только описанием установки и настройки Nextcloud, по сути закончив эту историю о «простом входе в Linux под конкретную задачу». Но, подумав, что кому-то это может показаться интересным, потом всё же решил показать как я решил вопрос синхронизации папок своего домашнего компьютера, поэтому эта завершающая глава плавно перетекла из чётких инструкций что и как делать в, по сути, программирование. Этим объясняется некоторый «винегрет» в этой части – начинается она с работы и настройки в Linux, перетекая на уровень настроек сети и виртуального софта, а заканчивается строганием костылей в Windows. С другой стороны, этот цикл статей имеет название «История создания…» и я всё же решил рассказать её до конца.
Примечание
При дальнейшем чтении в конструкциях вида http:// 127.0.0.1 (https:// 127.0.0.1) пробел после http:// (https://) необходимо убирать при вводе в адресную строку браузера. Пробел вставлен при публикации этой статьи с целью воспрепятствовать автоматической конвертации движком сайта текста в ссылки.
Подготовка сервера для установки Nextcloud
Nextcloud – это веб-приложение, которое имеет набор файлов и работает с базой данный MySQL. Веб-приложение устанавливается как обычный сайт, для установки которого нужно загрузить файлы «движка» на сервер, запустить установочный файл и при установке указать реквизиты доступа к базе данных, заранее созданной для этого сайта.
Создаём директорию, в которой будут размещены файлы Nextcloud:
# mkdir /var/www/nextcloud
Я решил отказаться от HTTP, оставив доступ только по HTTPS. Для этого нужно настроить apache.
Открываем файл:
# nano /etc/apache2/sites-available/default-ssl.conf
И перед тегом добавляем следующее содержимое:
Отключаем конфигурацию HTTP:
# a2dissite 000-default.conf
Закрываем порт 80:
# ufw delete allow 80
И перезапускаем веб-сервер:
# service apache2 restart
Создаём базу данных с названием nextcloud:
mysql> CREATE DATABASE `nextcloud`;
Создаём пользователя с именем nextcloud и тривиальным паролем nc123:
mysql> CREATE USER ‘nextcloud’@’localhost’ IDENTIFIED BY ‘nc123’;
Выдаём полный доступ пользователю nextcloud на базу nextcloud:
mysql> GRANT ALL PRIVILEGES ON `nextcloud`.* TO ‘nextcloud’@’localhost’;
Обновляем таблицу привилегий:
mysql> FLUSH PRIVILEGES;
Выходим из mysql:
mysql: mysql> exit
Помимо этого, необходимо установить дополнительные модули для PHP:
# apt-get install curl libcurl3 libcurl3-dev php5-curl
# a2enmod rewrite
В первой части этой истории нами были открыты порты для сетевого и почтового взаимодействия, но под нашу целевую задачу они не требуются и лучше их закрыть. Удаляем правила:
# ufw delete allow 138/udp
# ufw delete allow 139/udp
# ufw delete allow 139/tcp
# ufw delete allow 445/tcp
# ufw delete allow 25
# ufw delete allow 465
# ufw delete allow 110
# ufw delete allow 143
# ufw delete allow 993
Установка Nextcloud
Изменяем права на папку:
# chmod 755 /var/www/nextcloud
Всё! Сервис установлен, если набрать в браузере https:// 127.0.0.1/nextcloud, то откроется мастер установки. Но подождём с этим, предварительно подготовив место для хранения пользовательских данных.
Стоит упомянуть, что версия Nextcloud 11.0.2 на данный момент является довольно устаревшей и содержащей уязвимости, которых нет в более новых и актуальных версиях, поэтому если и устанавливать ветку 11.х, то лучше установить более свежую версию (на начало 2018 года — это версия 11.0.7).
Организация места хранения данных Nextcloud
Эта часть факультативная и может без проблем пропускаться – работать всё будет и без неё. Однако, если вы заходите выносить директорию с данными вне виртуальной машины, то рекомендую ознакомиться с ней.
По умолчанию синхронизируемый контент будет храниться в директории /var/www/nextcloud/nxcdata. Меня этот вариант сразу не устраивал по нескольким причинам. С одной стороны, я бы не хотел постоянного увеличения объёма файла виртуального диска. С другой стороны, хотелось бы иметь отдельное и независимое от виртуальной машины решение хранения данных. Самое простое, что сразу приходит в голову – использование USB-диска. В случае нехватки места диск можно просто заменить. В случае необходимости его можно подключить к другому компьютеру и скачать необходимые файлы. Мобильно и удобно. Однако USB 2.0 использовать не хотелось по причине относительно небольшой пропускной способности по современным меркам, а с USB 3.0 у меня ничего не получилось – софт виртуализации (WMVare и VirtualBox) никак не хотел нормально пробрасывать устройства, подключенные через контроллер USB 3.0.
Аппетиты, в процессе работы над созданием облака, у меня возросли и мне уже никак не меньше одного терабайта надо было, поэтому, в конце концов, я решил подключить к виртуальной машине обычный двухтерабайтный жесткий диск, который уже был размещён и подключен внутри компьютера. В случае необходимости он без проблем вытаскивается и подключается через имеющийся переходник SATA USB 3.0.
Итак, основная идея — организовать постоянную точку для подключения директории с пользовательским контентом вне каталога /var/www/nextcloud, в которой создаётся символьная ссылка с названием nxcdata, ссылающаяся на реальный каталог с данными, который может быть подключен различными способами на различных носителях.
Создаём каталог:
# mkdir /mnt/nxcdata
Изменяем права:
# chmod 770 /mnt/nxcdata
Делаем владельцем веб-сервер:
# chown www-data:www-data /mnt/nxcdata
Я могу как угодно и где угодно располагать данные, главное – символьную ссылку на эту директорию размещать в директории /mnt/nxcdata и назвать её nxcdata, т.е. полный путь будет выглядеть как /mnt/nxcdata/nxcdata.
Сначала я протестировал решение для локальной папки, которую создал в домашнем каталоге.
Создал в нужном месте папку:
$ mkdir /home/user/nxcdata
Изменил права:
# chmod 755 /home/user/nxcdata
Это решение было работоспособно, поэтому можно двигаться дальше. Внешний каталог для данных можно подключить двумя способами – через сервис VMWare Shared или напрямую как физический диск или раздел. Надо понимать, что первое решение возможно только при наличии установленных vmware tools, которые без проблем ставятся только при наличии графического интерфейса операционной системы (в ином случае придётся править установочные скрипты vmware tools). Если же отказаться от графического интерфейса, то остаётся только вариант подключения диска напрямую к виртуальной машине, но и с этим решением мне пришлось изрядно помучиться. Через некоторое время я всё же нашёл стабильно работающий вариант, с учётом которого был придуман универсальный скрипт, вобравший в себя оба варианта подключения.
Для папки, подключаемой через VMWare Shared Folders в разделе Shared Folders настройках виртуальной машины необходимо подключить необходимую папку из хостовой системы и дать ей название vmw-nxcdata. Эта папка может ссылаться на какую-то директорию на жестком диске или прямо на корневой каталог какого-то диска в хостовой системе.
Подключенная папка появится в виртуальной системе автоматически по пути /mnt/hgfs/vmw-nxcdata. Однако проблема в том, что веб-серверу будет недостаточно прав для записи файлов по этому пути и стандартными средствами системы переназначить права для этой директории не получится. Поэтому мне пришлось разобраться как вручную монтировать подобные ресурсы.
Создаём папку:
# mkdir /mnt/vmw-nxcdata
Монтирование нужно выполнять именно с такими параметрами для беспроблемной работы веб-сервера в будущем. Изначально я монтировал без указания uid/gid и масок, но ни к чему хорошему это потом не приводило, так как изменить права после монтирования уже не получалось. После выполнения монтирования может выдаваться: «Could not add entry to mtab, continuing», — однако монтироваться и работать будет.
Отлично, директорию мы примонтировали. Теперь можно разместить символьную ссылку на эту директорию в /mnt/nxcdata. Но не хотелось бы при каждом запуске или перезапуске сервера делать это вручную. Самый простой способ – в файле /etc/rc.local вписать вышеприведённую команду для монтирования до строчки «exit 0». Однако мне хотелось, чтобы при выключении виртуальной машины происходило автоматическое гарантированное размонтирование для надёжной сохранности данных. И я решил сделать всё на уровне сервисов и немного разобраться с механизмами init/update-rc, тем более мне было любопытно и это оказалось довольно интересно.
Смысл нижеследующих действий в том, чтобы создать системный сервис, который бы вызывался и выполнял заранее заданные команды при включении или выключении системы. Сервис описывается скриптом, составленным по определённым правилам и располагается в /etc/init.d. Блок INIT INFO располагается в самом начале скрипта и содержит служебную информацию, в которой хотелось бы отметить директивы Default-Start и Default-Stop – они задают уровни выполнения, на которых скрипт должен быть запущен или остановлен по умолчанию.
0 – выполнение скрипта при выключении системы
1 – выполнение скрипта при запуске системы в однопользовательском режиме
2 – выполнение скрипта при запуске системы в многопользовательском режиме
3 – 5 – зарезервировано
6 – выполнение скрипта при перезагрузке системы
После написания скрипта он задействуется, используя механизм update-rc, который, фактически, на скрипт создаёт ссылки в нужных каталогах /etc/rc0.d — /etc/rc6.d, содержимое которых соответствует выполняемым задачам по уровням запуска. Ссылки можно создавать и самостоятельно, но, в отличии от включения или отключения конфигураций веб-сервера apache, здесь нужно учитывать много нюансов, поэтому включать или отключать сервис нужно через update-rc.
Итак, создаём файл:
# nano /etc/init.d/nxcdata_automount.sh
И записываем в него следующее содержимое:
Обратите внимание на пару закомментированных команд в секции perform_start – это наш задел на будущее. Так же, после выполнения монтирования перезапускается сервис fail2ban.
Парадокс заключается в том, что спустя год я уже не помню почему я так сделал, но сильно сомневаюсь, что это сделано просто так. Очевидно после выполнения монтирования сервис по непонятной причине падал или неудачно запускался изначально и его приходилось перезапускать вручную.
Делаем наш скрипт исполняемым:
# chmod +x /etc/init.d/nxcdata_automount.sh
Добавляем скрипт в автозагрузку:
# update-rc.d nxcdata_automount.sh defaults
Перезагружаем систему и убеждаемся, что автомонтирование прошло успешно и по нужным путям всё доступно.
В случае монтирования диска не через VMWare Shared Folders, а напрямую следует выполнить действия аналогичные как и при монтировании через VMWare Shared Folders, но с учётом того, что в системе появляется полноценный второй диск. Как узнать букву диска?
Большинство блочных устройств Linux подключаются через интерфейс SCSI, поэтому в большинстве случаев диски будут начинаться с букв sd. Третья буква в имени диска означает его порядковый номер в системе и обозначается по алфавиту: sda — первый диск, sdb — второй диск, sdc — третий и так далее. Дальше следует цифра, которая определяет номер раздела на диске: sda1, sda2 и так далее. Самый простой способ увидеть все подключенные диски — посмотреть содержимое каталога /dev/ и отфильтровать устройства sd:
Например, нам нужно подключить диск sdb1 с файловой системой NTFS.
Далее необходимо так же создать скрипт для автомонтирования и откорректировать команду монтирования в скрипте (примеры подключения диска с NTFS и EXT4 в скрипте уже есть и закомментированы) и добавить скрипт в автозагрузку.
По сути, вся эта морока с кучей директорий nxcdata призвана для одного: обеспечить простой перенос директории с данными в будущем — не нужно будет править конфигурацию в движке Nextcloud и вообще лезть в него — всё, что нужно будет сделать — подключить новый диск, перекопировать на него данные и пересоздать символьную ссылку, ведущую к новой директории с данными. При этом, все действия не выходят за каталог /mnt. Так всё усложнённо получилось эволюционно, просто я не захотел терять наработанные решения.
Как лучше выносить данные вне виртуальной машины? Поделюсь опытом на каком варианте я остановился и почему.
USB накопители автоматически захватывались при загрузке виртуальной машины, корректно и полноценно пробрасывались внутрь и всегда всё работало, но только до того момента как накопитель по какой-то причине не отключался от системы. Помогала перезагрузка или физическое отключение и подключение диска. Решение оказалось ненадёжным. С флешками такой проблемы не было, но меня категорически не устраивал их объём и скорость работы. Возможно стоило попробовать внешний накопитель с автономным питанием.
Проброс директории через VMWare Shared Folders работал стабильно и отлично. Такое решение полностью удовлетворило задачу синхронизации двух смартфонов. Всё отработало несколько дней, были прокачаны десятки гигабайт данных. Однако, когда я решил добавить в облако данные с компьютера, то внезапно обнаружилась проблема, связанная с длинными путями и именами файлов. В теории ограничение на длину имени файла или папки в NTFS составляет 255 символов, но на практике Windows API ограничивает до 244 символов. В теории ограничение на длину пути к файлу или папке в NTFS составляет 32767 символов, но на практике Windows API ограничивает до 245 символов. Учитывая то, что я большой любитель структурировать информацию, длина пути у меня может быть очень большой. Несокращённое название книг так же может легко составлять 100-150 символов с учётом пробелов. Данное ограничение – известная проблема VMWare Shared Folders, которая не вылечилась даже при использовании Windows 10 с всякими хитроумными ключами в реестре для снятия ограничения в 255 символов. Возможна причина в ограничениях vmhgfs. От этого удобного способа подключения пришлось отказаться. Причина установлена точно – проблема в виртуальной файловой системе, которая используется в механизме VMWare Shared Folders.
Следующее решение – подключение жесткого диска напрямую к виртуальной машине. Тут тоже не выходило всё гладко. Структура данных (или файловая система, причём это проявлялось и для NTFS и для EXT2/3/4) постоянно ломались то ли при «захвате» диска или его раздела софтом виртуальной машины, то ли при возврате его в хостовую систему даже если я переводил весь диск в режим offline на хостовой системе. При некоторых режимах я не то, чтобы записывать или читать данные — я даже не мог нормально отформатировать проброшенный жесткий диск или раздел. Однако работоспособный режим удалось найти: к виртуальной машине подключался физический жесткий диск с одним разделом, отформатированный в NTFS, в определённом режиме подключения: SATA/Independent/Persistent/Use individual partition. На жестком диске в должна находиться папка nxcdata, содержащая данные.
Настройка доступа к виртуальной машине Nextcloud из локальной сети
У нас нет проблем с открытием сайтов внутри виртуальной машины или с хостовой системы. Но как открыть созданный сайт с другого компьютера в локальной сети? Посмотрим на структуру нашей сети, изображённой ниже.
На картинке видно, что маршрутизатор подключен к интернету напрямую и сконфигурирован так, что автоматически раздаёт IP адреса подключенным устройствам в диапазоне 192.168.0.2-192.168.0.254. Адрес 192.168.0.2 получил наш компьютер, а 192.168.0.3 – второй компьютер, на котором мы делаем сервер. Однако на втором компьютере установлен софт виртуализации, который создал свой виртуальный маршрутизатор и сконфигурировал его DHCP на подсеть 192.168.233.0/24. Наш виртуальный сервер получил IP 192.168.133.138.
Я без проблем могу открыть сайт внутри виртуальной машины 192.168.233.138. Я без проблем могу открыть сайт с машины 192.168.0.3 просто введя нужный IP адрес в браузере – софт виртуализации уже позаботился о правильном конфигурировании сетевого окружения на хостовой машине. Но как мне добраться до сайта с компьютера 192.168.0.2? Если я введу IP адрес 192.168.233.138, то мне ничего не откроется, так как ни мой компьютер, ни реальный маршрутизатор ничего не знают об этой подсети. Если я введу адрес 192.168.0.3, то мне так же ничего не откроется, так как на этом компьютере реально нет никакого сайта – он внутри его виртуальной машины.
Этот инструмент позволяет довольно гибко управлять сетевыми параметрами. Нам нужно выделить виртуальную сетевую карту VMNet8 и щелкнуть по ставшей доступной кнопке «NAT Settings…». В открывшемся окне нужно добавить правила для создания нужной нам маршрутизации.
Указываем порт хостовой системы и затем прописываем IP адрес и порт виртуальной машины, куда следует перенаправлять запросы. Для проброса HTTPS траффика необходимо указать порт 443 хостовой системы и порт 443 и адрес 192.168.233.138 виртуальной машины. После создания правил нажимаем «OK» во всех окнах – виртуальное сетевое окружение переконфигурируется автоматически.
После этих изменений наши сайты начнут открываться и с машины 192.168.0.2 при обращении к адресу 192.168.0.3.
Подобные настройки для проброса портов есть не только у VMWare, но и у VirtualBox (Настройки → Сеть → выбрать требуемый адаптер → Дополнительно → Проброс портов). Однако в процессе экспериментов по подключению жесткого диска к этому этапу у меня оказался установленным бесплатный VMWare Player, в котором Virtual Network Editor не было. В интернете про проброс портов для VMWare Player я ничего не нашёл и пришлось воспользоваться пробной версией VMWare Workstation – при установке продукта даётся 30 дней его бесплатного использования. Через 30 дней продукт можно удалить, почистить реестр и установить заново, но такое внимание к серверу как-то избыточно и явно нежелательно. И тогда я пошёл на небольшую (или большую) хитрость. В наборе файлов VMWare Workstation присутствует утилита vmnetcfg, которая по сути и запускается через пункт Virtual Network Editor. Однако в наборе файлов VMWare Player её не было. Но при установке VMWare Player как-то же конфигурирует своё сетевое окружение? Я просто взял эту утилиту и скопировал в папку с VMWare Player, после чего запустил. Удивительно, но всё получилось. Возможно, тонкие сетевые настройки в среде VMWare Player работать не будут, но проброс портов обеспечивается, а большего мне и не нужно.
Для доступа к нашему серверу из интернета нужно аналогично пробросить порты на маршрутизаторе, который подключен к интернету. В прошивках подавляющего большинства маршрутизаторов есть секция Port Forwarding, в которой и можно настроить маршрутизацию, указав внешний порт и порт и IP адрес внутренней машины. Однако есть небольшой нюанс. Если провайдер нам выдал реальный IP адрес или мы его купили у него, то тогда проблем не будет – с компьютера из любой точки планеты вводим этот IP адрес, реальный маршрутизатор перенаправит траффик на компьютер с виртуальной машиной, на котором виртуальный маршрутизатор перенаправит траффик непосредственно в виртуальную машину. А вот что делать тому, у кого нет возможности получить реальный IP адрес и он получает динамические адреса или оказывается за NAT провайдера, получая «серые» IP адреса? Мне такую задачу решать не пришлось, так как у меня есть статичный «белый» IP. Тому, кому придётся решать такую задачу так или иначе придётся разбираться с этой проблемой. Я бы советовал посмотреть в сторону dyndns или freedns.afraid.org в случае динамических адресов, либо купить дешевый VDS попробовать придумать какую-то маршрутизацию самому, так как в любом случае без внешнего сервера с статичным IP адресом подобную проблему не решить.
После конфигурирования маршрутизации я зафиксировал IP адреса компьютеров 192.168.0.3 и 192.168.233.138, прописав их в настройках сетевых карт указанных машин вручную для того, чтобы исключить их автоматическое переназначение.
Настройка Nextcloud
Теперь пришла пора открыть в браузере https:// 127.0.0.1/nextcloud внутри виртуальной машины, https:// 192.168.233.138/nextcloud с хостовой системы или, исходя из вышеописанной настроенной маршрутизации, https:// 192.168.0.3/nextcloud с любого компьютера в локальной сети.
Далее задаём логин/пароль для администратора, доступ к ранее созданной БД, а в качестве места хранения указываем полный путь к директории nxcdata: /mnt/nxcdata/nxcdata. Данный этап настройки ничем не отличается от установки какого-нибудь сайта.
В настройках админки я сделал следующие нехитрые изменения:
— Personal → выбрал русский язык и указал e-mail для администратора user@localhost
— Администрирование → Общий доступ → отключил все пункты
— Администрирование → Usage survey → отключил все пункты
— Администрирование → Дополнительные настройки → Управление файлами: «Максимальный размер загружаемого файла» установил в 25 GB
— Пользователи → создал группу users и добавил в неё нового пользователя user
После настройки нужно включить кеширование.
Открываем файл:
# nano /var/www/nextcloud/config/config.php
И в самый конец, перед «);» добавляем нижеследующее:
‘memcache.local’ => ‘\OC\Memcache\Memcached’,
‘memcache.distributed’ => ‘\OC\Memcache\Memcached’,
‘memcached_servers’ => array(
array(‘localhost’, 11211),
),
Теперь нужно разрешить внешний доступ к сайту на уровне его «движка».
Открываем файл:
# nano /var/www/nextcloud/config/config.php
В секцию trusted_domains нужно в массив IP адрес сервера, добавить адрес, на котором установлен Nexcloud. Секция trusted_domains в нашем случае будет выглядеть следующим образом:
‘trusted_domains’ =>
array (
0 => ‘127.0.0.1’,
1 => ‘192.168.233.138’,
),
Теперь можно проверить работоспособность сервиса – открываем сайт и авторизуемся под пользователем user. Если авторизация прошла успешно, то значит сервис готов к бою – можно ставить приложение для синхронизации на компьютеры и смартфоны, для доступа ввести IP адрес 192.168.0.3 и реквизиты доступа аккаунта, созданные под каждое устройство.
К счастью или к сожалению, мне не пришлось пользовался всем потенциалом созданного сервиса, так как изначально мне нужна была система резервного копирования с верификацией и стартово я вообще хотел обойтись только subversion, но скорость коммитов особенно большого количества мелких файлов меня сильно опечалила. Я сделал всё на вырост, но попользоваться этим так и не собрался, а потом стало как-то совсем не до облака.
Более детальный обзор по использованию сервиса сделал пользователь wtigga в конце 2017 года в своей статье «Чем загрузить VPS: своё «облако» Nextcloud». В статье, с точки зрения пользователя, даётся обзор более нового сервера Nextcloud, 12-ой версии.
Дополнительная «тонкая» настройка Nextcloud
В процессе эксплуатации облака в течение первого месяца работы всплыли некоторые проблемы, которые мне пришлось решить с помощью сообщества или самостоятельно. Надо сказать, что я использовал сервис очень усиленно и по сути проверил его на стрессоустойчивость. Синхронизировать за вечер с телефонов несколько гигабайт данных и до миллиона мелких файлов с компьютера – это было обычное дело. В общем, сервис произвёл на меня очень положительное впечатление.
Я бы не сказал, что нижеизложенные решения правильны и красивы, но эти костыли работают по крайней мере для версии 11.0.2, иначе сервисом пользоваться было бы невозможно. В версии 12.х возможно что-то было улучшено и исправлено, поэтому я бы не рекомендовал эти настройки прописывать сразу в рамках стартовой настройки, в то время как для линейки 11.x их можно применять сразу.
При синхронизации возникает ошибка типа «file is locked». Синхронизация останавливается. Проблема известна — необходимо очистить содержимое таблицы oc_file_locks выполнив из консоли mysql (при авторизации пользователя nextcloud) к ней следующий запрос:
mysql > DELETE FROM oc_file_locks WHERE 1
Так как такие ошибки нередки, то я не придумал ничего лучше, как создать скрипт и положить его прямо в папку суперпользователя:
# nano /root/empty_oc_file_locks
Скрипт можно выполнять вручную, но это же не наш метод. Я решил запускать его автоматически каждые 15 минут используя cron (https://ru.wikipedia.org/wiki/Cron ).
Для этого нужно создать файл:
# nano /root/crontab
Со следующим содержимым:
*/15 * * * * root bash /root/empty_oc_file_locks
Теперь нужно внести изменения в планировщик:
# crontab /root/crontab
При синхронизации по webDAV в логах (смотреть в панели администрирования, авторизовавшись администратором) могут появляться следующие ошибки:
Error PHP reset() expects parameter 1 to be array, null given at /var/www/nextcloud/apps/files_versions/lib/Storage.php#783
Error PHP ksort() expects parameter 1 to be array, null given at /var/www/nextcloud/apps/files_versions/lib/Storage.php#782
Error PHP Invalid argument supplied for foreach() at /var/www/nextcloud/apps/files_versions/lib/Storage.php#759
Error PHP Undefined index: by_file at /var/www/nextcloud/apps/files_versions/lib/Storage.php#759
Error PHP Undefined index: all at /var/www/nextcloud/apps/files_versions/lib/Storage.php#757
На этот раз сообщество ничем не помогло и пришлось вести следствие в одиночку. Причина крылась в ошибке «Undefined index… Storage.php#757», которая каскадно тянет ещё несколько ошибок. Смотрим на код этого файла. Вся проблема оказалась в квоте. На этой строчке в коде (Storage.php#757) вычисляется свободное место с учётом объёма архивных файлов. Что-то идёт не так при вычислении, хотя квота задана «неограничено». Для исправления ошибки в панели администрирования я задал «бесконечную, но числовую» квоту для каждого пользователя, например, 100TB.
$blacklist = \OC::$server->getConfig()->getSystemValue(‘blacklisted_files’, array(‘.htaccess’));
И приводим её к следующему виду:
$blacklist = \OC::$server->getConfig()->getSystemValue(‘blacklisted_files’, array(»));
Защита для Nextcloud
Защитить наш сервис от подбора паролей к админке можно с помощью fail2ban. Для этого нужно описать характерное выражение, встречающееся в логах nextcloud при неудачной авторизации, по которому будет срабатывать соответствующий триггер.
Создаём файл:
# nano /etc/fail2ban/filter.d/nextcloud.conf
С нижеприведённым содержимым:
Открываем файл:
# nano /etc/fail2ban/jail.local
И в конец файла добавляем нижеприведённое:
# выявляем неудачные попытки ввода пароля к nextcloud
[nextcloud]
enabled = true
port = http,https
protocol = tcp
filter = nextcloud
logpath = /var/log/nextcloud.log
Перезагружаем сервис:
# service fail2ban restart
Проверяем наличие активного фильтра:
# fail2ban-client status nextcloud
Не забываем, что в соответствии с настройками fail2ban из предыдущей части при неудачном вводе пароля шесть раз подряд в течение 12 часов ваш IP заблокируется ни много ни мало на 30 дней. Я как-то потратил два вечера из-за ошибочного ввода пароля на одном из телефонов, пока не выяснил этот простой факт в логах системы.
Синхронизация с облаком смартфонов
Для синхронизации содержимого телефонов, работающих под Android, существует замечательное приложение FolderSync. Программа полностью оправдывает свою небольшую цену.
Для начала необходимо создать новую учётную запись, в которой в качестве адреса сервера указать https:// 192.168.0.3/nextcloud, ввести логин и пароль от предварительно созданной учётной записи и разрешить самоподписной сертификат. Нажимаем кнопку «Тест» и убеждаемся, что соединение с сервером в порядке.
Далее нужно создать задание. В задании указываем ранее созданную учётную запись и выбираем тип синхронизации – «На удалённую папку». Указываем удалённую папку (создать её можно прямо из приложения» и выбираем локальную папку для синхронизации. Расписание я установил в 2 часа ночи каждый день. В настройках синхронизации у меня было включено «Синхронизация подпапок» и «Синхронизация включенных папок», так же я выбрал опцию всегда заменять старые файлы и в случае конфликтов разрешил по умолчанию использовать локальный файл. В разделе «Соединения» я отключил все соединения кроме Wi-Fi, причём прописал SSID своей домашней Wi-Fi сети в раздел «Разрешённые WiFi SSID’ы» — приложение будет выполнять синхронизацию только в моей домашней сети и не пытаться искать сервер в других сетях. Остальные настройки я оставил по умолчанию. Здесь же можно добавить фильтрацию. Я создал новый фильтр «Имя папки содержит» и указал значение [nosync]. Таким образом, я могу исключить из синхронизации некоторые папки в указанной локальной папке, просто добавляя в конец их названия «[nosync]».
Данная настройка была произведена для таких локальных папок как DCIM, Download, Telegram, viber, WhatsApp. Плюс пара моих пользовательских папок объёмом по нескольку гигабайт. Раз в сутки происходит синхронизация содержимого этих папок с сервером, причём старые версии файлов на сервере не удаляются, а переименовываются и перемещаются в архив. Это позволяло мне быстро восстановить случайно удалённый файл или откатить изменения в каких-то других файлах.
Синхронизация с облаком персонального компьютера
Я не считаю себя настоящим программистом. Последние десять лет я программирую на таких языках программирования, которые применяются разве что при разработке процессоров или чипсетов. Ввиду того, что я уже как лет 15 ничего не делал на Си/Си++, но что-то автоматизировать на компьютере мне требовалось, я довольно активно применял скриптовые языки типа BAT/CMD или такой софт как Sign 0f Mistery или xStarter. Когда-то я узнал и попробовал что такое AutoIt и это стало новой эрой в моей автоматизации на ПК.
После того как я убедился в стабильности и надёжности системы синхронизации на смартфонах я подумал, что неплохо было бы синхронизировать данные на своём домашнем компьютере. У Nextcloud есть свой клиент для Windows и, естественно, он стал первым кандидатом для испытаний. Синхронизировать я собирался объём данных порядка терабайта, состоявший из сотен тысяч файлов разного размера. Данные были различны: музыка, картинки, документы, электронные книги, дистрибутивы, резервные копии сайтов и прочее и подобное. Всё это разумно было бы свести к синхронизации более критических данных, например, таких как документы, но мной овладел азарт и хотелось проверить сделанный сервис на прочность.
Спустя десяток часов после начала синхронизации, а по сути первой закачки контента на сервер, клиент запнулся о файл с длинным именем. В то время на сервере я еще использовал подключение внешнего хранилища через VMWare Shared Folders и мне пришлось перепробовать с десяток клиентов, а потом ставить простые эксперименты по ручному копированию файлов на сервер, чтобы понять, что проблема – на стороне сервера. Так, спустя неделю удачного запуска сервиса, пришлось откатываться на резервную виртуальную машину и отказаться от механизма VMWare Shared Folders, начиная всё сначала. В конце концов, я убрал это узкое место на стороне сервера, протестировал надёжность решения неделей синхронизации смартфонов и решил вновь вернуться к домашнему компьютеру. На этот раз клиент не споткнулся о злополучный файл и я уже было возрадовался, однако спустя полсуток синхронизации мелких файлов клиент опять подвис. Теперь выяснилось, что слишком длинный путь именно на стороне домашнего компьютера и клиент Nextcloud не может его корректно обработать. К сожалению, с родным клиентом Nextcloud работы не получилось, да и информативность его была не совсем высока, поэтому от него пришлось отказаться.
Какое-то время я потратил на то, чтобы найти удобную программу для синхронизации, поддерживающее управление через командную строку. Мне хотелось на каждую крупную папку на компьютере сделать своё задание и запускать их в пакетном режиме. Ранее у меня уже был сделан и отработан набор BAT файлов для синхронизации, используя сценарии и управление FreeFileSync через командную строку. Проблема длинных путей или имён файлов решалась заданием локальных папок вида «\\?\D:\Info», т.е. по сути обращением к локальной папке как к сетевой. Однако, что такое webdav FreeFileSync не знает. Полных аналогов FolderSync для Windows, к сожалению, не нашлось, но не раз на форумах вместо неё рекомендовали GoodSync и, после кастинга десятка других программ, я решил попробовать его. К сожалению, GoodSync стоит на порядок дороже, но разовая трата 15$ ради сохранности своих драгоценных данных, в принципе, посильная трата. Программа имеет тестовый режим, поэтому сначала можно убедиться в её работоспособности и стабильности.
GoodSync оказался довольно дружелюбным софтом. Имеется специальная портабельная версия, которая называется GoodSync2Go. Вот она меня и заинтересовала. При установке нужно выбрать букву диска и программа устанавливается на него в папку GoodSync. Я создал папку Sync в корневом каталоге диска, допустим D, и переместил туда созданную папку GoodSync со всем содержимым.
[ Данный текст написан специально для сайта geektimes.ru автором AlexanderS.
Ссылка на источник необязательна, но его упоминание крайне желательно! ]
После установки в программе нужно создать задания: указывается локальная папка и удалённая папка для синхронизации. В параметрах задания я выбрал синхронизацию слева направо с выбором опций «Синхронное удаление» и «Сохранять предыдущие версии удалённых/заменённых файлов». В настройках левой стороны я выбрал «Безопасное копирование» и «Не создавать папку _gsdata_», правой стороны — «Безопасное копирование» и «Быстрый преданализ по временным меткам». Таким образом, создаются задания на каждую требуемую папку. Допустим так я настроил задание на папку Info и назвал его «bck_Info».
Далее в папке D:\Sync создаётся файл bck_Info.bat со следующим содержимым:
Это скриптовый язык BAT. В первой строчке кода в переменную устанавливается текущий путь для запущенного скрипта. Вторая строчка запускает по этому пути из папки GoodSync файл GoodSync2Go-v10.exe, в котором должно выполнится задание с названием имени этого файла (bck_Info), окно выполнения задания минимизируется, по завершению задания программа должна автоматически закрыться. Я могу скопировать этот скрипт несколько раз, каждый раз меняя только его название на имя ранее созданного задания в GoodSync. Таким образом, просто щёлкая кнопкой Enter по BAT файлу я могу запускать синхронизацию нужных мне папок индивидуально.
Для добавления нового задания в FreeFileSync я мог просто скопировать xml файл сценария и вручную поправить его, т.е. запуска графической оболочки программы не требовалось вообще. В GoodSync же все задания прописываются в файле D:\Sync\GoodSync\GoodSync\Profile\jobs.tic и для добавления нового задания нужно будет отрыть программу и создать его, т.к. править этот файл несколько проблематично и неизвестно к чему это может привести.
Для синхронизации всех папок теперь можно написать простой скрипт bck_all.bat:
Каждая строчка скрипта просто вызывает выполнение отдельного скрипта, которое запускает синхронизацию.
Это всё очень хорошо и удобно работает, однако нет никакого контроля ошибок при синхронизации. Например, если сервер не включен, то все задания стремительно выполнятся, а я, вернувшись через час, буду думать, что синхронизация уже завершена. В то же время, логи всех заданий создаются по пути D:\Sync\GoodSync\GoodSync\Profile\*.log. Достаточно просто просмотреть лог каждой синхронизации на наличие слова «ОШИБКА» – почему-то именно так в логе сообщается о сбоях при синхронизации. Поэтому решено было написать небольшую программку для анализа этих логов после всех синхронизаций, которую запускать автоматически после выполнения синхронизаций всех папок. Программка получила гордое название log_analayser и написана на полускриптовом языке AutoIt. Если кого-то заинтересует, то скачать её полную версию можно на официальном сайте AutoIt, которая содержит нужные библиотеки, компилятор и SciTE – кроссплатформенный редактор для кода из которого можно и скомпилировать программу.
Какое время я потратил на разработку и отладку кода, в результате получился файл log_analayser.au3 со следующим содержимым:
После набора кода нажимаем кнопку F7 в редакторе SciTE и получаем на выходе файл log_analayser.exe.
Программа анализирует файл на наличие какого-либо слова, при нахождении создаётся файл лога, в который копируется найденная строка, содержащая это слово.
Программа может работать в двух режимах:
— анализ конкретного файла
— анализ папки, содержащей файлы для анализа (анализируются так же все вложенные подпапки)
При консольном вызове необходимо задать шесть параметров для программы:
1 — режим работы [file = анализ файла; dir = анализ папки, содержащей файлы]
2 — ключевое слово для поиска
3 — имя файла или полного пути к папке
4 — расширения файла или файлов для анализа в папке
5 — полный путь к папке, где будет расположен лог программы
6 — отображение окна после анализа всех файлов в случае нахождения заданного слова [err_msg_on = отображать; err_msg_off = не отображать]
Таким образом, получился новый скрипт bck_auto.bat:
Скрипт запускает файл, из которого индивидуально друг за другом вызываются задания на синхронизацию всех нужных папок, а затем вызывается анализатор логов синхронизаций, по завершении работы которого в случае ошибок показывается сообщение с предложением просмотреть строки логов, где обнаружены эти ошибки и можно понять с каким заданием случились проблемы. Эти строки пишутся в отдельный лог-файл в папке D:\Sync\LOG.
И тут меня постигла жуткая неудача. Анализатор логов не работал. Нет, он прекрасно работал на тестовых файлах, но упорно не хотел видеть ошибки в логах. Я долго не мог понять в чём причина, пока не выяснил одну жуткую вещь: мало того, что в англоязычном логе сбой выводится единственным русскоязычным словом «ОШИБКА», так ещё и кодировка этой кириллицы – Macintosh! Зачем так сделали программисты из Siber Systems я не знаю, всего скорее это результат какого-то ужасного костыля внутри софта. Ну а кто сказал, что программирование должно быть скучным?
Ничего не оставалось как подпереть один костыль другим и в результате появилась работающая конструкция:
Однако появилась следующая проблема: сам GoodSync не удаляет файлы логов, с каждым новым выполнением задания появлялись новые файлы. И если какая-то синхронизация завершилась с ошибкой, то наш анализатор всегда будет находить этот файл и бодро рапортовать об ошибке. Поэтому перед запуском синхронизаций решено было автоматически очищать папку D:\Sync от любых файлов с логами. Для этого создан элегантный скрипт clean_logs.bat:
Скрипт отключает вывод каких-либо сообщений, выясняет директорию запуска скрипта, сканирует все файлы (в том числе в подпапках) пока они не закончатся и удаляет все файлы с расширением log. По окончании работы вывод сообщений включается.
Скрипт bck_auto.bat преобразился:
Всё очень отлично работает, но ведь смысл в автоматизации рутинных действий. Почему бы нельзя просто выключить компьютер на ночь и пойти спать, а он путь сам синхронизирует кучу файлов, анализирует и выключается?
Доработаем наш скрипт bck_auto.bat:
В скрипте появилось две новых строчки. Приложение MonitorOnOff просто отключает монитор (чтобы он не освещал комнату, а вручную мне его отключать каждый вечер и включать каждое утро очень лень), а команда shutdown выключает компьютер. В log_analyser изменился параметр, отвечающий за показ сообщений при нахождении ошибки – ведь после синхронизации не нужно тормозить выполнение скрипта этим сообщением, а дать возможность ему выключить компьютер.
Программа MonitorOnOff так же написана на AutoIt.
Запущенная программа управляется тремя клавишами: F10 включает монитор, F11 – отключает, а кнопка ESC завершает работу программы и выгружает её из памяти. При задании любого параметра при запуске программы запущенная программа сразу отключит экран.
По сути эта программа – немного урезанный функционал log_analyser. Программа анализирует указанную папку (без учёта подпапок) на наличие файлов и именами хотя бы частично совпадающими с указанным словом для поиска и выводит сообщение о результате проверки.
1 — полный путь к папке (без символа слеша — /)
2 — ключевое слово для поиска в именах файлов, либо полное название файла
3 — текстовая строка, выводимая при ненахождении файл, если =0 — не выводить сообщение
4 — текстовая строка, выводимая при нахождении файла, если =0 — не выводить сообщение
5 — вывод сообщения: msg_off — выводится только сообщение о наличии/отсутствии файлов, msg_on — в выведенном окне предлагается так же открыть папку, в которой обнаружены или необнаружены файлы
Теперь, для этой программы я создал скрипт Check_LOG_from_log_analyser.bat, ссылку которого разместил в обычной автозагрузке Windows:
Таким образом, в финале мы получили полностью автономное решение, которое не зависит от местонахождения папки Sync и корректно отработает из любого места нашего компьютера. Решение не только работоспособно, но и стабильно – на Windows 7 х64 данный комплект скриптов отработал год и абсолютно никаких проблем с ним не возникло.
Возможно сейчас всё это кажется несколько монстрообразным, однако ничего сложно в этом нет. Если внимательно присмотреться к коду AutoIt, то базовой конструкцией является обычные циклы if-then-else-end, однотипные для любого языка программирования, в которые встроены некоторые повторяющиеся операторы и функции AutoIt, которые изучаются буквально за пару вечеров. Скриптовый язык BAT можно даже не учить, так как большинство решений типовые и уже давно описаны в интернете. Уметь пользоваться программированием не только интересно, но может быть и весьма полезно.
Послесловие
Если честно, я предполагал, но сам не ожидал такого объёма статей, на которые пришлось потратить до полусотни часов. Как правило, в интернете установку своего облака сводят к изречениям типа: «Да, там надо-то выполнить несколько команд». Это правда – установка тривиальная. Когда ты знаешь какие команды вводить в консоль и что они значат. Когда ты понимаешь суть маршрутизации в сети. Когда у тебя уже есть работающий сервер и когда ты понимаешь, как в него добавить хост. Когда ты знаешь, как установить сайт. То есть, для применения этих нескольких команд нужно иметь определённый багаж знаний и опыта. Цель этих трёх статей – попытка создать такой багаж, собрав необходимую достаточную информацию в одном месте и пояснить как ей правильно пользоваться. Я искренне надеюсь, что этот цикл статей поможет кому-то сделать свои первые осознанные шаги в мир свободного программного обеспечения.
История создания домашнего облака. Часть 3. Создание персонального облака — установка и настройка Nextcloud.
Версия текста: 1.2.1.
Дата первой публикации: 08.02.2018.
Дата последней правки: 15.01.2020.
1.2.1 [15-01-2020]
Обновление оглавления.
1.2.0 [08-02-2018]
Коррекция текста.
1.1.0 [08-02-2018]
Коррекция текста.
1.0.0 [08-02-2018]
Первая версия.
Описывается установка и настройка Nextcloud 11.0.2 в виртуальной машине VMWare, конфигурация сетевого окружения VMWare и освещаются некоторые моменты настройки, проявившиеся в процессе эксплуатации Nextcloud.
То закрывающий тег фильтруется и оформление применяется до конца статьи! Подобный эффект проявляется именно в этом тексте, т.к. отдельно воспроизвести эффект мне не удалось. Парную корректность тегов (открыто/закрыто) проверил — вроде бы всё нормально. Методика повторения:
— создать черновик
— скопировать исходное форматирование этой статьи и разместить в черновике
— в тексте, в разделе «Защита для Nextcloud» обернуть вышеуказанную конструкцию, например, цитатой
— эффект проявляется, в цитату попадёт весь текст до конца статьи
Видео
Nextcloud 23🚀 Обновляемся с 21 версии и тестируем NextCloud Office
NextCloud. Часть 3. Подключаем облако к Android, Linux, Windows, MacOS
Облачное хранилище Nextcloud - общий обзор
Управляй своими данными вместе с NextCloud. Установка и небольшой обзор.
Нейросеть, способная распознавать одновременно 10 языков
Сервер видео-звонков для NextCloud Talk
Как создать облачное хранилище NAS nextcloud
Установка Nextcloud на OrangePi с коннектом через Wireguard ▲ Создаем свой облачный сервер
Строим облако своими руками. Nextcloud + OnlyOffice
Распаковочка. Организация облачного хранилища с помощью NextCloud на Ubuntu 20.04