Вообще говоря, первым делом я рассматривал более безобидные варианты вроде Dropbox или Google Drive. Поставить одну из них на сервер, и пусть синхронизирует папки с компьютером, а при желании можно и на телефоне открыть. Но бесплатно в этих сервисах доступно не так много места, а платить за хранение одних и тех же файлов дважды совершенно не хочется — один раз хостеру VPS, где лежат данные, второй раз — за Dropbox. Да и что‑то свое иметь всегда приятнее, верно?
РЕКОМЕНДУЕМ:
Защита почтового сервера без антивируса
Поиски показали, что найти решение одновременно простое и не совсем кустарное не так‑то легко. Зато в любом треде на эту тему обязательно появляются люди, которые поставили себе ownCloud или Nextcloud и рапортуют о ровном и приятном полете на протяжении долгих лет. И хоть я и не поклонник мегакомбайнов, звучало это достаточно заманчиво, чтобы дать им шанс.
Установка и настройка Nextcloud
Обе программы — это платформы, которые сами по себе заменяют Dropbox и дают возможность управлять файлами и шейрить их, но после установки плагинов начинают напоминать миниатюрную операционку. Здесь тебе и почтовые программы, метящие на роль Gmail, и коллаборативные редакторы на манер Google Docs, и календари с планировщиками, и заметки, и майндмапы и прочие майндфаки.
При этом ownCloud — штука далеко не новая, о нем писали еще в 2014 году. Nextcloud посвежее и развивается активнее: первый релиз состоялся в 2016 году, а текущая версия на момент написания этой статьи — двадцатая.
Пристально изучив оба, я обнаружил, что Nextcloud вполне можно назвать младшим братом ownCloud, причем родным, а не двоюродным. Сходства видны на каждом шагу, включая даже некоторые элементы интерфейса и названия файлов. Такое ощущение, будто создатели Nextcloud не долго думая просто стянули весь код предшественника и принялись модернизировать его.
Обе компании находятся в Германии, так что история могла быть более запутанной и повествовать о расколе среди сотрудников ownCloud. Но нам об этом ничего не известно, так что просто возьмем Nextcloud, как более модный, и приступим к установке.
Установка Nextcloud
Детально раскатывание Nextcloud на своем сервере описано в документации, так что повторять ее мы не будем и только пробежимся по основным пунктам — чтобы ты представлял себе масштабы работ и не пропустил важные шаги, если решишь повторить мой путь.
Вот что потребуется сделать в общих чертах.
- Скачать и распаковать дистрибутив. Есть разные способы установки, включая пакеты для популярных дистрибутивов Linux и контейнер Docker, но то, как именно ты заполучишь Nextcloud на свой сервер, не так уж важно (по крайней мере, до первого обновления). Я выбрал самый топорный метод — просто скачал архив и распаковал его в папку /<wbr />var/<wbr />www/. Важно: права на файлы нужно передать пользователю www-data ( chown <wbr />-R <wbr />www-data <wbr />nextcloud).
- Убедиться, что в системе есть PHP и все нужные зависимости. Их достаточно много, чтобы завести какой‑нибудь Composer, но я просто поставил пакеты для нужной версии PHP из репозитория Ubuntu.
- Установить MySQL или другую поддерживаемую СУБД и по инструкции завести в базе пользователя с нужными правами. Настройку самой СУБД пока можно пропустить, но, если Nextcloud у тебя приживется надолго, стоит потом вернуться к этому.
- Установить и настроить веб‑сервер. Это может быть Apache или nginx — для обоих есть примеры конфигов, причем в случае с nginx, который выбрал я, — крайне подробные. Тебе потребуется поправить название сервера, путь к папке и, возможно, версию php-fpm. Кстати, убедись, что у тебя установлены php-fpm и php-mysql (или драйвер той БД, которую ты используешь).
- Получить SSL-сертификат. И в данном случае это важно — без HTTPS не все заведется как положено. Бесплатный серт Let’s Encrypt вполне подойдет, а Certbot его выдаст и добавит в конфиг веб‑сервера буквально парой команд.
Когда все будет готово, не спеши перезапускать сервер! Как только ты это сделаешь, Nextcloud начнет на весь мир показывать установщик, которым, по идее, может воспользоваться кто угодно и станет админом твоего облака вместо тебя. Чтобы избежать этого, можешь либо завершить процесс установки через командную строку, либо настроить веб‑сервер таким образом, чтобы он не пускал кого попало. Тебя выручит авторизация (директива auth_basic) либо белый список, в который будет входить только твой IP (директивы allow <<wbr />IP> и deny <wbr />all).
В любом случае для работы с Nextcloud тебе понадобится задать логин и пароль для админской учетки, а также указать базу данных и креды ее пользователя, которого ты создавал. В общем, если ты когда‑нибудь устанавливал WordPress или phpBB, то ты точно справишься.
Интерфейс и приложения
После долгих приключений в темном подземелье консоли мы выбираемся на поверхность, к цивилизации. На первый взгляд все очень модно.
Дашборд!
Файловый менеджер с картиночками!
Журнал изменений!
Магазин приложений!
Точнее, подобие магазина, потому что денег здесь не берут, все только даром.
Поскольку в первую очередь разработчики заменяли Dropbox, с шейрингом файлов здесь все в порядке: можно получить внутреннюю ссылку, поделиться с другим пользователем или сделать публично доступный URL. В последнем случае по ссылке будет открываться предпросмотр, но если дописать в конец /<wbr />preview, то и сам файл.
Еще можно назначить пароль и указать время, по истечении которого ссылка работать перестанет.
Но внимание, конечно, сразу перетягивает на себя магазин приложений. Всего аппликух ни много ни мало — 281 штука. Здесь есть всякие просмотрщики (например, для снимков в RAW, книжек в ePub, треков в GPX), музыкальные плееры, галереи для просмотра и публикации картинок, несколько видов таск‑трекеров и заметок, менеджер паролей и тому подобные вещи.
Вот, к примеру, отличный редактор диаграмм на основе исходных кодов Draw.io. Он устанавливается буквально одной кнопкой, после этого можно создавать, открывать и редактировать файлы с диаграммами.
Не стоит, впрочем, ждать, что все приложения будут ставиться одной кнопкой и идеально работать, наделяя Nextcloud новой восхитительной возможностью. Приложухи здесь очень разные — как по качеству, так и по требованиям.
Например, бывает нужно что‑то дополнительно вручную устанавливать на сервер, а приложение Nextcloud служит только фронтендом. Так, нельзя просто взять и в один клик поставить коллаборативный редактор документов Collabora — нужен соответствующий сервер.
То же и с почтой. Программа с незатейливым названием Mail — это лишь клиентская часть, и если ты хочешь не только развернуть свой вебовый почтовик, но и не зависеть от сторонних сервисов POP3/SMTP/IMAP, то устанавливать, настраивать и поддерживать сервер придется самостоятельно. Разработчики рекомендуют использовать Mail-in-a-Box — как наиболее простой в установке.
Случается и так, что приложения требуют, например, определенной версии PHP или самого Nextcloud. В общем, забыть о том, что ты теперь сам себе админ, не выйдет.
Торренты и youtube-dl
Вряд ли сегодня кого‑то удивишь торрент‑клиентом с вебовым интерфейсом, но приятно, когда скачанными файлами легко управлять. Что касается youtube-dl — знаменитой программы для стягивания видео с YouTube и множества других сервисов (включая Twitter, TikTok и даже Pornhub), то у него и вовсе нет своего графического интерфейса. Так что иметь возможность открыть в браузере страничку, вбить туда URL и заполучить файл — идея неплохая, особенно если речь об использовании с мобильного устройства.
ocDownloader
Первое, что я попробовал, — это плагин ocDownloader, который можно найти в разделе Tools. Установив его, переходи в раздел настроек и в самом низу сайдбара слева ищи пункт Additional Settings. Здесь появится раздел ocDownloader, а в нем — выбор того, через какую программу будут скачиваться файлы — cURL или aria2. И если первый у тебя уже наверняка установлен, то со вторым придется повозиться. Зато, поставив его, ты сможешь тем же способом скачивать и торренты тоже.
Краткое руководство по настройке aria2 есть в ридми к ocDownloader.
Чтобы скачать видео с YouTube, нужно выбрать ocDownloader в верхней панели Nextcloud, перейти во вкладку YouTube, вставить ссылку, и, если youtube-dl установлен и доступен пользователю www-data, закачка пойдет. Правда, плагин использует youtube-dl только для получения прямой ссылки на видео, а качает уже той программой, что ты выбрал. На практике это означает, что поддерживаются не все сайты, с которыми может справиться сам youtube-dl.
Второй нюанс заключается в том, что youtube-dl у меня заработал только в паре с cURL, но не с aria2. Однако разбираться, в чем там дело и что пошло не так, я не стал: зачем нужен кривоватый плагин с такими ограничениями, если можно взять и поставить нормальный youtube-dl и Transmission вместо aria2?
youtube-dl
Если хорошенько поискать, то оказывается, что для youtube-dl таки существуют веб‑фронтенды. В большинстве своем это форки одного и того же кода с разными доработками. Самый продвинутый из того, что мне удалось найти, — это версия пользователя katznboyz1. Установка описана в ридми, но доходит только до тестового запуска через Gunicorn. Для более надежного деплоя лучше использовать Gunicorn через веб‑прокси, в моем случае — nginx. Здесь все хорошо документировано, повторяться не будем.
После установки и настройки ты получаешь удобный веб‑интерфейс, из которого можно отправить видео на скачивание, выбрать опции, посмотреть историю и даже подписаться на какой‑то канал, чтобы видео скачивалось периодически и падало в указанную папку.
У меня скрипт при работе выдавал ошибки и один раз по невыясненным причинам полностью остановился при скачивании видео из Twitter, так что с ним еще предстоит покопаться. Также существует похожий проект — youtube-dl-api-server, который вместо веб‑фронтенда предоставляет RESTful API. Подойдет, если ты собираешься заряжать видео на закачку через браузерные плагины или какие‑то самописные скрипты, а не веб‑интерфейс.
Transmission
По идее, для Transmission существует готовое приложение Nextcloud, но, как и в случае с ocDownloader, у меня дружба с ним не сложилась. Покопавшись, я обнаружил, что автор плагина не потрудился сделать ни настройки, ни документацию и вообще рекомендует использовать созданный им контейнер Docker, в котором уже есть и Nextcloud, и Transmission.
Для каких‑то целей это может и подойти, но я решил пойти своим путем. Первым делом поставил и настроил transmission-demon (о том, как это сделать в Ubuntu, ты можешь прочесть в руководстве). Поскольку у него есть свой веб‑интерфейс, нужда в плагинах для Nextcloud отпадает.
Однако тут перед нами встает вопрос — как сделать, чтобы Nextcloud видел скачанные файлы? Да и вообще изначально‑то я все это затевал ради того, чтобы файлы, которые образуются на сервере в результате работы скриптов, было легко открыть с телефона и при этом не светить на весь интернет.
Доступ к файлам и интерфейс для командной строки
Это может показаться неочевидным, но если просто взять и на уровне файловой системы сервера бросить файл в папку с данными Nextcloud, то Nextcloud этого файла не увидит. Причина проста — Nextcloud ведет свою базу данных и все метаданные заносит в нее. А то, что ты видишь в папке типа /<wbr />var/<wbr />www/<wbr />nextcloud/<wbr />data/<wbr />пользователь/<wbr />files, — это что‑то вроде аттачей к письмам без самих писем.
Решать эту проблему можно с разных сторон, но в любом случае тебе нужно убедиться, что папка, файлы из которой ты хочешь видеть в Nextcloud, будет доступна пользователю www-data — в том числе на запись, если это понадобится.
Теперь нам надо, чтобы Nextcloud видел эту папку. Самый простой способ сделать это — использовать расширение External storage support. Подключи и активируй его, после чего можешь переходить к его настройкам в разделе Administration (не Personal, где он тоже появится!).
Добавь хранилище типа Local и задай путь к папке. Если права настроены правильно, слева появится зеленая галочка, а сама папка отобразится в разделе Files.
Однако сами разработчики Nextcloud в документации описывают этот способ как не особенно надежный. Папка будет сканироваться, только когда ее откроют из интерфейса, а глубина сканирования составит только три уровня.
Поэтому самое время познакомиться с утилитой OCC. При активном использовании Nextcloud ты все равно рано или поздно с ней столкнешься.
Расшифровывается название утилиты как ownCloud Console, то есть ее название так и осталось от ownCloud.
OCC — это единый инструмент, с помощью которого можно совершать многие действия, которые обычно делаются из веб‑интерфейса Nextcloud. Удобно, если их вдруг понадобится автоматизировать и вызвать из скриптов. На сайте разработчика есть подробная документация по OCC.
Мы же остановимся на одной команде — files:scan. Если запустить ее, то Nextcloud проиндексирует содержимое своих папок и добавит записи о новых файлах в базу данных. Вызывать нужно так:
sudo -u www-data php occ files:scan --all
Можешь просто взять и добавить эту команду в crontab, задав вызов, например, каждую минуту. Создаваемая нагрузка не велика, а работает метод железобетонно. С ним даже не нужно настраивать External storage — просто клади файлы туда же, где их хранит сам Nextcloud.
Впрочем, если тебе покажется, что это недостаточно элегантное решение, то можешь попробовать настроить скрипт nextcloud-inotifyscan. Сделать это с наскока у меня не вышло.
Мобильное и десктопное приложения
Говоря о Nextcloud, нельзя не упомянуть о той его составляющей, которая работает на мобильном телефоне. Приложение неплохое, но функции в нем минимальные — это, считай, аналог раздела Files. В нем можно перекладывать файлы туда‑сюда, скачивать их в память телефона, шейрить, отправлять в другие программы. Есть встроенные просмотрщики, в том числе PDF, и текстовый редактор.
А вот все те приложения, которые ты поставишь из магазина, так и останутся в вебовой версии, и в этом, на мой взгляд, главная слабость Nextcloud как экосистемы. Впрочем, никто не мешает заглянуть в веб‑интерфейс с телефона.
Другая вещь, которой здесь не хватает и которая вполне могла бы присутствовать, — это интеграция с ОС телефона (я говорю только об iOS — испытать версию для Android возможности не было). Nextcloud, увы, не появился у меня в качестве раздела в приложении Files подобно тому, как это делают Dropbox и Google Drive. Очень жаль, поскольку я рассчитывал именно на такое поведение.
РЕКОМЕНДУЕМ:
Лучшие приложения для Nextcloud
Примечательно, что в ownCloud такая возможность существует, а еще там есть интерфейс к Shortcuts — системе автоматизации iOS. Но доступно все это только в платных версиях, что серьезно портит картину.
Что порадовало — это возможность закрыть доступ к приложению и логиниться через встроенную в систему биометрию — дактилоскопический датчик или распознавание лица.
Для десктопов (Windows, Linux, macOS) тоже есть программа. Она синхронизирует выбранные папки между облаком и жестким диском и напоминает клиент любого аналогичного сервиса — с той небольшой разницей, что тебе нужно будет указать адрес своего сервера.
Приватность и безопасность
Ставить Nextcloud для повышения безопасности в плане защиты своих данных от взлома — идея как минимум сомнительная, по крайней мере если ты не готов обеспечить дополнительные меры защиты. В первую очередь — ограничить доступ при помощи VPN или какого‑то другого способа и держать все ПО в актуальном состоянии.
Увы, на практике любые ограничения доступа начинают спорить с удобством, да и техподдержка — это не то, чем стоит заниматься раз в год в первый день отпуска, — по крайней мере, если защита для тебя приоритет. Получается, что твой сервер или одно из приложений взломают куда скорее, чем, например, Gmail.
А вот если тебя коробит от мысли, что тот же Gmail собирает ключевые слова в твоих письмах, чтобы прицельно показывать тебе рекламу, то Nextcloud, безусловно, поможет избавиться от этого неприятного чувства. Но — ценой определенных трудов и отказа от многих фич.
Если же опасаешься передачи твоих данных тому или иному государству… то здесь не мне тебя учить! Nextcloud может стать или не стать одним из твоих инструментов, но другим обязательно будет шифрование.
Максимально параноидальным требованиям Nextcloud все равно не удовлетворяет, по крайней мере если ты планируешь пользоваться мобильным приложением. Его исходников, в отличие от исходников самого Nextcloud, никто не видел, и если разработчики захотят собирать какую‑то статистику, то в теории у них для этого будет возможность.
Об установке всяких левых приложений одной кнопкой, кстати, тоже можешь забыть, если серьезно заботишься о приватности и безопасности. Чем больше кода, написанного энтузиастами и не прошедшего никаких аудитов, ты поставишь на свой сервер, тем больше возможностей для протечек и пробоин.
Заключение
Безусловно, заводить у себя Nextcloud — это удовольствие на любителя. Если планируешь развернуть такое хозяйство, нужно сразу готовиться к тому, что приложения здесь — это по большей части бледные копии аналогичных коммерческих сервисов и уступают им и в удобстве, и в функциональности, а подчас и в надежности.
РЕКОМЕНДУЕМ:
Linux-сервер на микрокомпьютере Omega 2
Однако, помимо повышения приватности, есть и другие аргументы в пользу Nextcloud и ему подобных. Один из них — это экономия. Я, к примеру, утилизовал свободное место, доставшееся мне от хостера вместе с инстансом VPS. Но сервер может стоять и дома, с подключенными к нему дисками или доступом к NAS по локальной сети. Тогда цена гигабайта будет значительно ниже.
Ну и наконец, если ты, как и я, энтузиаст всякой персональной автоматизации и у тебя куча скриптов и воркфлоу для разных занятий, то ты наверняка и сам сообразишь, зачем тебе все это может понадобиться!
Спасибо!