Суббота, 23 Март 2013 23:15

Настройка собственного облачного хранилища

Автор
Оцените материал
(10 голосов)

После того, как я, наконец, установил дополнительный SSD на свой домашний сервер, то мне, в первую очередь, захотелось настроить собственное облачное хранилище.

Из opensource решений я знаю только Owncloud. И как раз, пару недель назад вышла пятая версия Owncloud. Вначале я попытался поставить её, но потом отказался от этой идеи, поскольку, во-первых, эта пятая версия упорно не хотела работать на nginx, выдавая ошибку:

This content failed to load.

При этом никакие рекомендации, описанные здесь:

http://forum.owncloud.org/viewtopic.php?f=23&t=9013

мне не помогли.

А во-вторых, для пятой версии ещё не вышел ownCloud Desktop Client. Поэтому я решил ставить версию 4.5.8.

Итак, сперва-наперво, обновим порты во FreeBSD:

portsnap fetch update

Теперь смотрим, какие пакеты нужны для Owncloud:

http://doc.owncloud.org/server/5.0/admin_manual/installation/installation_source.html

И вроде бы, у меня всё стоит, кроме smbclient. Честно говоря, не знаю, пригодится ли оно, но поставить ведь не сложно:

cd /usr/ports/net/samba-smbclient
make install clean

В зависимостях опции сборки оставил по умолчанию.

Но чтобы 100% быть уверенным, что всё необходимое для owncloud у меня есть, я решил сначала поставить owncloud прямо из портов. К этому времени, там тоже уже была 5-я версия. Ставлю:

cd /usr/ports/www/owncloud
make install clean

И не зря я так поступил, потому как owncloud потянул за собой некторые зависимости: mp3info и php53-pdo_mysql. Поэтому делаем вот такие команды:

rehash
service php-fpm restart

Теперь, что касается настройки nginx: для себя, я определился, что облако у меня будет доступно под адресу cloud.example.com. Поэтому, нужно подготовить nginx для нового поддомена. В документации есть страничка о том, как нужно сконфигурировать nginx для owncloud:

http://doc.owncloud.org/server/5.0/admin_manual/installation/installation_others.html?highlight=nginx

Этот конфиг работает с версией 4.5.8, но не работает с пятой версией.

Вообщем, с помощью документации, я в свой конфиг (в конец конфига перед последним завершающим символом « } » ) nginx дописываю вот такие строчки:

# redirect http to https.
server {
  listen 80;
  server_name cloud.example.com ;
  return https://$server_name$request_uri;  # enforce https
}

# owncloud (ssl/tls)
server {
   listen 443 ssl;
   ssl_certificate      cert.pem;
   ssl_certificate_key  cert.key;
   server_name cloud.example.com;
   root /usr/home/www/owncloud;
   index index.php;
   client_max_body_size 1024M; # set maximum upload size
         
  # deny direct access
   location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
     deny all;
   }
        
  # default try order
   location / {
     try_files $uri $uri/ @webdav;
   }
  # owncloud WebDAV
   location @webdav {
     fastcgi_split_path_info ^(.+\.php)(/.*)$;
     fastcgi_pass unix:/tmp/php-fpm.sock;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param HTTPS on;
     include fastcgi_params;
   }
   
  # enable php
   location ~ \.php$ {
     try_files $uri = 404;
     fastcgi_pass unix:/tmp/php-fpm.sock;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param HTTPS on;
     include fastcgi_params;
   }
 }

И не забываю перезапустить nginx:

service nginx restart

Затем, вручную скачиваю уже нужную мне версию Owncloud:

fetch http://download.owncloud.org/community/owncloud-4.5.8.tar.bz2

И содержимое архива распаковываю в каталог /usr/home/www/owncloud. При этом, не забываю дать соответствующие права:

chown -R www:www /usr/home/www/owncloud

Далее, нужно создать базу MySQL для облака:

mysql -p
CREATE DATABASE `cloud`;
GRANT ALL PRIVILEGES ON cloud.* TO 'cloud'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Затем открываю браузер, захожу по адресу cloud.example.com и вижу вот такую картинку:

Тут надо нажать кнопку «дополнительно» и ввести логин, пароль и название базы MySQL:

и нажать кнопку «завершить установку».

Есть ещё один момент, который, скорей всего, имеет смысл сделать. Во всяком случае, хуже не должно быть, ибо тут написано:

http://wiki.nginx.org/HttpDavModule

что если нужны полные возможности WebDAV, то нужно пересобрать nginx с опцией расширенных возможностей webdav. А Owncloud благодаря этим возможностям и работает. Сразу скажу, что я не тестировал, работает ли корректно owncloud без расширенный возможностей webdav — я просто сразу пересобрал nginx, включив опцию dav-ext-module, а, за одним, и обновил сам nginx. Делал это так:

Сначала установил программку portupgrade:

cd /usr/ports/ports-mgmt/portupgrade
make install clean

опции сборки зависимостей оставил по умолчанию. О том, что это за программка и как ей пользоваться, я прочитал тут:

http://hotfreebsd.ru/ispolzovanie-portupgrade-dlya-obnovleniya-ustanovlennyx-iz-portov-programm

Установил portupgrade, потом иду в каталог /usr/ports/www/nginx-devel и там выполняю команду:

make config

Появится меню выбора опций сборки, в котором я дополнительно (к тем что у меня уже стояли) отмечаю вот эту опцию:

затем обновляю nginx:

service nginx stop
rehash
portupgrade nginx-devel

Всё должно пройти гладко без всяких запросов. Собственно, после этой процедуры, запускаем nginx обратно и начинаем пользоваться owncloud.

Надо заметить, что по умолчанию owncloud даёт загрузить только файлы не больше 8мб.:

На самом деле, причина этого — настройки php. Находим файл /usr/local/etc/php.ini и открываем для редактирования. Находим в нём строчки «upload_max_filesize» и «post_max_size». Правим их до нужного нам размера:

upload_max_filesize = 1024M
post_max_size = 1024M

Сохраняем и перезапускаем php-fpm:

service php-fpm restart

Собственно, с установкой и конфигурированием закончено на этом. Теперь можно позагружать файлы на облако и скачать ownCloud Desktop Client вот от сюда:

http://owncloud.org/sync-clients

Он там есть и для винды, и для мака, и для линукса. С установкой клиента проблем не должно возникнуть, после чего появится значок в трэе, символизирующий об успешном подключении и синхронизации:

На работе у меня до сих пор стоит Fedora 13 x86_64, поэтому для рабочего компа мне пришлось самому пересобирать пакеты, нужные для owncloud-client, и, собсветнно, сам owncloud-client. Вот они все:

ftp://technotrance.su/files/repo/owncloud-client-1.2.1/owncloud-client-1.2.1-4.1.x86_64.rpm
ftp://technotrance.su/files/repo/iniparser-3.1/iniparser-3.1-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/libqtkeychain-0.20130221-5.1/libqtkeychain0-0.20130221-5.1.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.4/owncloud-csync-0.70.4-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.4/owncloud-csync-libs-0.70.4-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.4/owncloud-csync-plugin-owncloud-0.70.4-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.4/owncloud-csync-plugin-sftp-0.70.4-1.fc13.x86_64.rpm

Надо скачать все эти файлы в одну папку, затем, находясь в ней, выполнить команду:

rpm -ivh *.rpm

Эта команда установит все пакеты разом из этой папки.

Также, при пересборке src.rpm-пакетов у меня возникли некоторые проблемы из-за того, что эти src.rpm-ки были сделаны, по-ходу, для suse. Поэтому пришлось их раздраконить и немножко поправить spec-файлы. Выкладываю также src.rpm-ки, которые корректно соберутся под федорой:

ftp://technotrance.su/files/repo/owncloud-csync-0.70.4/owncloud-csync-0.70.4-1.fc19.src.rpm  (это вместо ocsync-0.70.4-32.1.src.rpm, который лежит в репозитории owncloud -- он не собирается под федорой)
ftp://technotrance.su/files/repo/libqtkeychain-0.20130221-5.1/libqtkeychain-0.20130221-5.1.src.rpm
ftp://technotrance.su/files/repo/owncloud-client-1.2.1/owncloud-client-1.2.1-4.1.src.rpm

Добавлено 01.04.2013: У owncloud обнаружился один серьёзный косяк. И заключается он в том, что client не может синхронизировать файлы с сервера на комп, если среди них попадаются .zip файлы. С компа на сервер синхронизирует нормально, а вот с сервера на комп − зависает, когда доходит до любого .zip файла. На форуме разработчиков этот баг пока висит открытым. Поэтому сейчас пока придётся либо не использовать zip файлы на сервере, либо ждать когда разработчики исправят этот косяк. Для меня использование zip файлов не принципиально, поэтому пока живу без них, но за обновлениями буду следить. Как только решатся проблемы с zip файлами и работой owncloud на nginx, то попробую обновить своё облако Улыбаюсь

Добавлено 13.04.2013: Исправили косяк с zip файлами. Ещё с версии клиента 1.2.3. Но тут я уже выложу следующую версию − 1.2.4-5.1 для Fedora 13 x86_64, поскольку мне её вручную пришлось собирать. Как и прежде, готовые пакеты + src-пакеты:

ftp://technotrance.su/files/repo/owncloud-client-1.2.4-5.1/owncloud-client-1.2.4-5.1.x86_64.rpm
ftp://technotrance.su/files/repo/iniparser-3.1/iniparser-3.1-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/libqtkeychain-0.20130221-7.1/libqtkeychain0-0.20130221-7.1.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.6/owncloud-csync-0.70.6-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.6/owncloud-csync-libs-0.70.6-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.6/owncloud-csync-plugin-owncloud-0.70.6-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.6/owncloud-csync-plugin-sftp-0.70.6-1.fc13.x86_64.rpm

ftp://technotrance.su/files/repo/owncloud-csync-0.70.6/owncloud-csync-0.70.6-1.fc20.src.rpm
ftp://technotrance.su/files/repo/libqtkeychain-0.20130221-7.1/libqtkeychain-0.20130221-7.1.src.rpm
ftp://technotrance.su/files/repo/owncloud-client-1.2.4-5.1/owncloud-client-1.2.4-5.1.src.rpm

Добавлено 21.04.2013: Дождался я пока разработчики залатают бОльшую часть багов в новой пятой версии Owncloud. И решил снова попробовать установить пятую версию облака себе. На этот раз, вроде, всё прошло нормально. Установил себе версию 5.0.5.

Итак опишу этот процесс. Начну с того, что в документации выложили весьма изменённый конфиг для nginx:

http://doc.owncloud.org/server/5.0/admin_manual/installation/installation_others.html

У меня он получился вот таким:

# redirect http to https.
server {
  listen 80;
  server_name cloud.example.com;
  return https://$server_name$request_uri;  # enforce https
}

# owncloud (ssl/tls)
server {
   listen 443 ssl;
   ssl_certificate      cert.pem;
   ssl_certificate_key  cert.key;
   server_name cloud.example.com;
   root /usr/home/www/owncloud;
   index index.php;
   client_max_body_size 10G; # set maximum upload size
   fastcgi_buffers 64 4K;

  rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
  rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
  rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

  error_page 403 = /core/templates/403.php;
  error_page 404 = /core/templates/404.php;

  location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
  deny all;
  }

  location / {
  # The following 2 rules are only needed with webfinger
  rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
  rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
                                                                       
  rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
  rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

  rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

  try_files $uri $uri/ index.php;
  }

  location ~ ^(.+?\.php)(/.*)?$ {
  try_files $1 = 404;

  include fastcgi_params;
  fastcgi_param PATH_INFO $2;
  fastcgi_param HTTPS on;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_pass unix:/tmp/php-fpm.sock;
  }

  # Optional: set long EXPIRES header on static assets
  location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
  expires 30d;
  # Optional: Don't log access to assets
  access_log off;
  }
 }

Собственно, он почти такой же, как и в документации, однако без строчки, выделенной зелёным, ни шиша не работало!

Затем, я скачал архив owncloud-5.0.5.tar.bz2 и распаковал его в каталог /usr/home/www/owncloud. Ну, а дальше всё, как и раньше — то бишь что я описывал выше при установке версии 4.5.8. Я не стал заморачиваться с так называемым "джедайским" методом обновления четвёртой версии до пятой, поскольку у меня за это время не так много данных накопилось — мне проще скопировать всё заново на облако Улыбаюсь

Не забываем, кстати, mysql-базу пересоздать.

Добавлено 27.04.2013:

ftp://technotrance.su/files/repo/owncloud-client-1.2.5-5.1/owncloud-client-1.2.5-5.1.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.7-1/owncloud-csync-0.70.7-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.7-1/owncloud-csync-devel-0.70.7-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.7-1/owncloud-csync-libs-0.70.7-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.7-1/owncloud-csync-plugin-owncloud-0.70.7-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.7-1/owncloud-csync-plugin-sftp-0.70.7-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/libqtkeychain-0.20130221-7.1/libqtkeychain0-0.20130221-7.1.x86_64.rpm
ftp://technotrance.su/files/repo/iniparser-3.1/iniparser-3.1-1.fc13.x86_64.rpm

ftp://technotrance.su/files/repo/owncloud-client-1.2.5-5.1/owncloud-client-1.2.5-5.1.src.rpm
ftp://technotrance.su/files/repo/libqtkeychain-0.20130221-7.1/libqtkeychain-0.20130221-7.1.src.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.70.7-1/owncloud-csync-0.70.7-1.fc19.src.rpm

Добавлено 03.07.2013:

ftp://technotrance.su/files/repo/libiniparser-3.1-3.2/libiniparser-3.1-3.2.x86_64.rpm
ftp://technotrance.su/files/repo/libqtkeychain-0.20130221-7.2/libqtkeychain0-0.20130221-7.2.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.80.0-1/owncloud-csync-0.80.0-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.80.0-1/owncloud-csync-libs-0.80.0-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.80.0-1/owncloud-csync-plugin-owncloud-0.80.0-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.80.0-1/owncloud-csync-plugin-sftp-0.80.0-1.fc13.x86_64.rpm
ftp://technotrance.su/files/repo/owncloud-client-1.3.0-6.1/owncloud-client-1.3.0-6.1.x86_64.rpm

ftp://technotrance.su/files/repo/libiniparser-3.1-3.2/libiniparser-3.1-3.2.src.rpm
ftp://technotrance.su/files/repo/libqtkeychain-0.20130221-7.2/libqtkeychain-0.20130221-7.2.src.rpm
ftp://technotrance.su/files/repo/owncloud-csync-0.80.0-1/owncloud-csync-0.80.0-1.fc13.src.rpm
ftp://technotrance.su/files/repo/owncloud-client-1.3.0-6.1/owncloud-client-1.3.0-6.1.src.rpm

Прочитано 20117 раз Последнее изменение Среда, 03 Июль 2013 21:25

Комментарии  

Александр
+3 # Александр 24.03.2013 18:56
Спасибо за статью (статьи).
Нашел у вас много всего интересного. Останавливает лишь то, что у меня опыт общения только с Ubuntu. Не уверен что все это смогу сделать на ней.
Ещё более удивительно то, что нет ни одного комментария и благодарностей.
Спасибо за проделанный труд и доступность изложения.
Николай
0 # Николай 24.03.2013 19:26
Да не, комментарии есть на других статьях...
А на убунте можно сделать абсолютно всё, что я сделал здесь на федоре и на фрюхе.
Ivan
0 # Ivan 29.05.2013 22:12
Очень познавательная статья только ника не могу победить подключение клиента почему то пишет
Попытка подключения к ownCloud на 192.168.0.5/owncloud/remote.php/webdav/ ...
Не удалось подключиться к ownCloud!
Ошибка: Отказано в соединении
Подключение к ownCloud не может быть установлено. Пожалуйста, проверьте еще ​​раз. Версия ownCloud 5.0.6
Николай
0 # Николай 01.06.2013 12:42
Я бы в сторону фаервола наверно посмотрел бы. Или может что-то с настройками вэб-сервера. У себя я такой ошибки не встречал ни разу -- клиент сразу подключился.
Алексаедр
+2 # Алексаедр 08.11.2013 13:28
Хорошая статья, полная по содержанию и главное рабочая.
Серый Волк
0 # Серый Волк 06.01.2014 07:52
Не смог добиться, чтобы можно было сохранять файлы большого объема. Зато нашел хорошую альтернативу Seafile. Ставится легко, поддерживает русский язык, имеет мобильных клиентов. По настоящему хорошая вещь.
Николай
0 # Николай 10.01.2014 17:24
Про большие файлы ничего сказать не могу, т.к. у меня нет в них необходимости.
Ну а русский язык и клиенты для айфонов и андроидов -- это и у owncloud есть.
Александр
0 # Александр 24.01.2014 02:33
>Есть ещё один момент, который, скорей всего, имеет >смысл сделать. Во всяком случае, хуже не должно быть, >ибо тут написано:

>wiki.nginx.org/HttpDavModule

Абсолютная бессмыслица, у nginx своя реализация webdav, у owncloud тоже своя. Они никак не пересекаются.

You have no rights to post comments

Вы здесь: Home Мои статьи FreeBSD Настройка собственного облачного хранилища