Обновить
Комментарии 48
Я когда на дебиане FTP-сервак поднимал тоже на хабре статью выкладывал. Ибо надо было как-то все свои действия законспектировать (в первую очередь самому себе), а тут получилось и записал себе и помощь тем, кто будет разбираться.

Вашу статью — однозначно в избранное. Давно уже хочется самому поробовать сделать себе облако и «пощупать» лично, а тут как раз занятный мануал )
Пощупать можно, развернув готовый appliance.
А конкретнее можно?
У меня просто времени не хватает на все и я не совсем в теме.
О! Отличная штука. И главное ее можно воткнуть на комп и даже пользоваться, пробросив порты в WMNat и на роутере.
Как доделаю робота думаю руки дойдут)
Именно в процессе такого конспектирования и родилась идея этой статьи. Так как я всё это делаю впервые, то было очень сложно добиться работающей системы без подробных записей как делать.

На самом деле, со времён сборки мною небольшого сервера-хранилки для дома — ноябрь прошлого года, уже накопилось несколько таких конспектов. Сейчас этот сервер умеет следующее:
— ESXi с проброшенными в виртуальные машины SATA-контроллерами и инъектированными драйверами сетевой карты и самих SATA-контроллеров. Всё остальное уже крутится в виртуальных машинах.
— FreeNAS как хранилка файлов.
— TimeMachine для ноутбуков с OS X.
— Торрентокачалка с полюбившимися мне push-уведомлениями о завершении закачки.
— Автоматическое скачивание новых серий популярных сериалов и интересных мне раздач при их обновлении. Также с push-уведомлениями о начале скачивания.
— Plex медиа-сервер. Для удобного хранения и просмотра видео-коллекции. Доступен не только для меня, но и для родных/друзей. Также с всевозможными push-уведомлениями.
— Трансляция каналов torrent-tv на телевизоры.
Сейчас ещё осваиваю умный дом на z-wave. Но это уже на отдельной железке

Если что-то заинтересовало, то готов написать еще статьи.
Вот про torrent.TV по подробнее, пожалуйста. Можно отдельной статьей, если время есть.
Всё решение состоит из набора софта работающего as is.
Но были и нюансы.
Вроде бы для комментария много писать, а для статьи мало.
Но так как на Хабре не так много было статей по данной тематике, то во мне побелило решение написать статью.
Предупрежу сразу — реализованное у меня решение будет стоить несколько сотен рублей разово и что-то около 3х рублей в день.
Я бы все равно послушал)
А вот расскажите, как на домашнем сервере-хранилке вы обеспечиваете надёжность хранения. Вот вы написали, что у вас накопилось 5 Tb данных. А это всё куда-то регулярно копируется в резервную копию? Куда? Или обходитесь простым RAID-зеркалированием? Есть ли какой-то мониторинг «здоровья» жёсткого диска?
Я спрашиваю не потому, что не знаю, как решаются такие проблемы. Я спрашиваю потому, что мне интересно, как их решает автор, и я надеюсь почерпнуть в его ответе что-то новое для себя.
Боюсь Вас разочаровать, но ничего нового я в этом направлении не придумал.
Избавиться в домашних условиях от единой точки отказа довольно проблематично и дорого.
А по сему всё банально:
— В FreeNAS используется ZFS с raidz1 (выдерживает смерть одного любого диска), состояние дисков отслеживается через S.M.A.R.T. силами самой системы FreeNAS, а в случае обнаружения проблем — должно прийти письмо на почту;
— критичные для меня данные просто синхронизируются в google drive их клиентом для Win (стоит на виртуальной машине на том же ESXi что и FreeNAS).

Таким образом, от смерти одного диска я вроде бы защищен, при смерти всех дисков у меня остаются необходимые мне данные.
Забыл еще уточнить:
— ESXi крутится на флешке, с флешки снят образ;
— у FreeNAS сделан бекап настроек и копия самой виртуальной машины.
Всё это хранится на другой машине и в случае аварии я могу довольно быстро всё восстановить на ней.
Темы очень интересные и полезные, был бы рад увидеть статьи по всем пунктам.

Еще было бы интересно вынести всю музыку с компьютеров на сервер, так, чтобы ее можно было проигрывать в iTunes — как на OS X / Windows, так и в iOS — чтобы не занимать память устройств. Насколько я знаю, «Домашняя коллекция» iTunes такое умеет, но при этом требует постоянно работающий экземпляр iTunes на MAC или PC. Если есть какие-либо способы эмуляции Домашней коллекции свободным ПО, чтобы все разместить на домашнем *nix-сервере — было бы тоже интересно об этом узнать.
Была подобная мысль, но остановилась пока только на идеи с виртуальной машиной и Hackintosh.
Либо попробовать плагин firefly.
На сколько я сужу по поиску, у NAS QNAP есть iTunes Music Server. Значит решение задачи существует.
Благодарю. Кстати, тем, кто обновляется до 8.02 c nginx. Процесс обновления становится колом из вебморды с ошибкой CSRF attack. Connection will be closed.
Нужно все делать через консоль.
sudo -u www-data php occ upgrade


Я сегодня долго ругался. Не забывайте бэкапить базу данных, /var/www/owncloud и data-директорию. Зачастую не все так гладко проходит. Лучше потестить.
Как бы так авторизовать клиента более надежно чем через логин пароль?
Вообще, параноя возобладала и пока что обращения к ownCloud завернул в ssh-туннель с пробрасыванием порта на localhost.
посмотрите авторизацию сертификатом.
Не уверен, что мобильный клиент это сможет сделать, но в браузере входить сможете без проблем

ssl_client_certificate /etc/nginx/client-ca.crt;
ssl_verify_client on;

и никто, кроме владеющих сертификатом от client-ca, доступ не получит
В том и вопрос что мне нужен не мобильный клиент и не браузер, а чтобы их родной клиент ходил с сертификатом на ownCloud.
https://github.com/owncloud/client/issues/69
ну тогда (если речь идет не о мобильном клиенте) можно придумать костыль в виде nginx на локальной машине с вот такой директивой.

При необходимости, win32-версия nginx вполне хорошо переносится на флешке.
Мне на днях попалась такая вещь, как Google Authenticator.
Сразу родилась мысль о возможности её использования.
Поиск в google подсказал, что уже есть соответствующее стороннее расширение.
Попробую его на выходных.
Во-первых, устанавливается в связке с SQLite, что подходит только если у вас небольшое кол-во файлов и пользователей, и абсолютно не подходит, если вы планируете синхронизацию с помощью клиента. У меня же хранилище уже расползлось почти на 5Tb и установленный таким образом ownCloud просто отказывался видеть часть файлов. Да и без синхронизации отдача от облака не велика.


А можете показать логи из sqlite/owncloud-client по поводу проблем синхронизации?
У меня чуть меньше 1 тб и таких проблем не наблюдается.
К сожалению логов с sqlite не осталось. Про проблемы с синхронизацией честно предупреждают при первом входе в систему (см. скриншот в пункте 2.11).
У меня же проблема была в следующем: после установки ownCloud в качестве плагина, я подменял папку для хранения файлов, заданную в настройках ownCloud, на существующий у меня Storage FreeNAS в котором и хранятся мои 5Tb. После чего ownCloud видел только часть файлов из Storage. Я думал, что необходимо какое-то время для индексации, но файлы так и не появлялись.
Очень хорошая статья. Спасибо!
Отдельный респект за собранные в одном месте настройки fail2ban для owncloud.

Если у вас сервис доступен открыто из Сети и имеется свой домен — для удобства лучше использовать бесплатный сертификат от StartSSL, WoSign Let's Encrypt (запуск ожидается летом 2015). В таком случае не придется устанавливать сертификат на все свои устройства.

Бесплатные домены, помимо .tk, можно получить здесь.

Еще мои уточнения/замечания (раз уж статья идет как мануал :):

  • при ответе на вопросы при создании сертификата лучше указать домен/IP-адрес облака, чтобы ограничить его зону применения
  • openssl genrsa -des3 -out server.key 1024 — 1024 бит явно недостаточно по сегодняшним меркам, я бы рекомендовал 2048-4096
  • openssl x509 -req -days 3650 -in server.csr -sha256 -signkey server.key -out server.crt — используем современный хэш (как вариант — sha384)
  • в jail.conf лучше еще включить защиту от перебора SSH

Спасибо за уточнения. В таком случае может и des3 следует заменить на что-то другое?
Сейчас посмотрел, что думает о моём соединении Google Chrome, а там: «Соединение зашифровано с помощью устаревших технологий».
Здесь явно ещё есть простор для улучшений.
Про защиту от перебора по SSH не понял. Если не пробрасывать 22 порт наружу, то зачем это?
des3 — это алгоритм, которым шифруется приватный ключ при хранении на диске / переносе между серверами. На диске некоторые администраторы вообще хранят ключ без шифрования (чтобы не вводить пароль при рестарте сервера), хоть это и не рекомендуется. При переносе между серверами / backup приватный ключ можно шифровать -aes256.

На само соединение SSL\TLS шифрование ключа не влияет никак, это скорее мера защиты от его кражи. А вот длина ключа (к-во бит) как раз играет существенную роль.

Касательно устаревших технологий — у меня в nginx.conf обычно:
Если нет необходимости поддерживать старых (WinXP и старше) клиентов
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA';
Но я не гуру в этом вопросе, возможно, хабравчане посоветуют вариант набора ciphersuites получше.

Вообще советую сервис Qualsys, там же есть некоторые рекомендации, как достичь «их» класса А+.

Защита от перебора SSH, конечно, же нужна, если сервис SSH смотрит наружу.
В LAN необязательно — хотя все зависит от того, кто живет в вашей LAN :)
Для гарантированного получения A+ в списке цепочек я рекомендую использовать такую настройку протокола:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'HIGH:!aNULL:!MD5:!kEDH';
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

Как показала практика, при жеской прописке алгоритмов, в зависимости от типа и содержания сертификата, возможно занижение рейтинга до A и ниже. (почему — не знаю, тоже не гуру, но опытный)
Скорее всего, причина в том, что указывая вручную алгоритмы вы указывали вначале более слабые либо не поддерживающие forward secrecy алгоритмы, чего лучше не делать еще со времен уязвимости BEAST, примерно тогда стандартом стал honor cipher order, который по-сути является форсируемым со стороны сервера порядком алгоритмов, клиенты же подключаются по первому поддерживаемому, что и стало причиной снижения рейтинга, сертификат в данном случае роли не играет.

Лично я использую такой порядок циферов:
ssl_ciphers 'ECDH+AESGCM256:DH+AESGCM256:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES128:RSA+AESGCM256:RSA+AES256:RSA+AESGCM128:RSA+AES128:RSA+3DES:!aNULL:!MD5:!DSS';

# RSA+3DES не помечен как уязвимый и висит для поддержки IE 8 / XP, в 99% случаях можно безболезненно убрать
Вместо поднятия ssh внутри jail и создания лишнего юзера, можно было бы обойтись ssh на хосте и последовательностью:
jls #отображает список jail и их порядковый номер
jexec порядковый_номер(или имя) tcsh #войти в шелл jail

Фича с fail2ban+pushover хороша, возьму на заметку
В качестве дополнения, если кто-то выбирает себе облако:
ownCloud хорош (почти) во всём, что касается веба. Почти — потому что таки медленно работает в сравнении с альтернативами.
Для синхронизации с использованием клиентов, десктопных или мобильных, годится с трудом. Кучу маленьких файлов (исходники, иконки, и т.д.) обрабатывает удивительно огромное количество времени. Проблема, как я понял, в архитектуре, и исправлениям с помощью твиков не подлежит. Тип БД и ресурсы сервера существенного влияния не оказали.
Наиболее продвинутые альтернативы — Bittorrent Sync и Seafile. Btsync быстрый и в меру удобный, но последнее обновление сделало его непригодным для привычного использования.
Seafile порадовал всем, чем только может порадовать сервер «облака». Файлы ещё ни разу не пропадали и не портились, синхронизация быстрая. Условный минус — отсутствие на сервере «ортодоксальной» файловой системы хранения данных, но это решаемо. Однако оба эти продукта несколько проигрывают в функциональности веб-интерфейса.
Заработало ли снова редактирование в браузере документов *.doc? Т.к. в версии 8.0 модуль был сломан, а в 8.0.2 я его не нашёл. При этом в 7 ветке все работает отлично.
Проверил. Не заработало или я не нашел. Как это выглядело в 7 ветке?
Во всех ветках, начиная с 6 одинаково: в owncloud устанавливается приложение documents, на сервере устанавливается open/libreoffice, ну и на страничке администрирования нужно указать наличие open/libreoffice.
К слову: в 8й версии большую часть «вторичных»(documents,bookmarks,etc.) приложений из основного пакета убрали и их надо ставить либо включив appstore в config.php, либо по старинке — ручками.
Ну и у меня что на 8, что на 8.0.2 documents работает нормально: doc/docx показывает и редактировать дает, возможно при переезде с 7 на 8 что-то просто не учли.
У меня, кстати, приложение галерея отвалилось. Как её переустановить вообще?
Можно с гитхаба стянуть нужную версию и распаковать в $ownclouddir/apps не забыв поchmodить и поchownить ну и удалить старое, если оно там есть, либо вообще отказаться от нынешнего приложения и сразу начать пользоваться его будущей заменой
Не вспомнил сразу: версия приложения подставляемая гитхабом к имени папки ломает загрузку приложений, так-что, после распаковки папку нужно переименовать в gallery или galleryplus, в зависимости от выбранного варианта.
Изучу, спасибо. А удаление кошерное как делается? Никак не привыкнуть, что нормальный apt-get не используется толком.
Не очень понял вопрос, удаление чего?
Сам owncloud из репо дистрибутива лично я не ставлю, это скорее мера «на потрогать», чем для постоянного пользования.
Хм. Почему? Они сами рекомендуют именно так делать, вроде. Но в итоге немного странно получается, что часть вещей обновляется руками все равно.
Да вроде не рекомендуют, просто предоставляют возможность. Тот-же автор публикации самостоятельно устанавливал owncloud в jail несмотря на то, что у freenas есть поддерживаемый плагин.

Сейчас они(owncloud) движутся в сторону своего appstore и понятно почему — каждое приложение упаковывать под разные системы управления пакетами в т.ч. от сторонних разработчиков — геморрой, а в некоторых случаях может быть лицензионно не возможно, так-что репозитории ос просто не способны решить проблему удобства администрирования(какой смысл, если некоторые приложения тогда прийдется ставить ручками и следить за их актуальностью?), минорные апдейты owncloud ставит прямо из веб-интерфейса, так-что вы ничем не рискуете, кроме одного вечера на чтение документации ну и стопки новых знаний, если подобным ранее подробно не занимались.

К слову о документации, недавно открыл для себя очень полезную опцию конфигурации, которая, учитывая количество css и js файлов может заметно сократить скорость загрузки веб-интерфейса (в моем случае ~1.5сек превратились в 600мсек)
Создаём самоподписанные ключи и сертификаты
Как у вас работает синхронизация с iOS клиентами при таких сертификатах?
Имею тут проблему, у ownCloud баг давно заведен, фиксить не торопятся.
Проблем не замечал. Всё работает.
В том баге человек отписался, что проблемы наблюдается при подключенном аккаунте Dropbox'а. У меня подключен, отключать еще не пробовал.
А вообще, я смотрел сниффером запросы к серверу от web и iOS клиента, они несколько различаются по набору http-команд, что плохо.
Пример редактирования файла doc в owncloud 7
Установил libreoffice, и приложение documents, включил в настройках.
Просмотр работает, редактирование — нет.
image
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.