Персональное облачное хранилище

Как организовать персональное облачное хранилище

Posted by

Персональное облачное хранилищеВ кои веки пробую установить и использовать уже со времен моего первого знакомства данное облачное хранилище персонального вида, начинал я с версии 6, а на дворе уже 8. Думается мне что многое изменилось и все к лучшему, хотелось бы на это надеяться. Вот поэтому я решил оформить в ввиде пошаговых инструкций что и как нужно для этого сделать чтобы развернуть свое персональное хранилище на компьютере у себя дома, а после через проброс портов своего роутера дать доступ к нему из вне, либо покупать облачную конфигурацию в виде VPS/VDS и уже на ней воспроизводить все шаги текущей заметки. Но к примеру Я – не особо доверяю сервисам облака – по мне лучше подконтрольные сервисы видеть на своем железе.

В заметке будут освящены все шаги:

  • Подготовка системы .5 Server amd64 (через некоторое время появится здесь ссылка на мой пост)
  • Настройка разворачиваемого приложения owncloud
  • Как настроить проброс порта на использование хранилища извне
  • Как установить клиентскую часть на различные устройства с которых будет осуществлено взаимодействие с хранилищем owncloud

Предисловие: В прошлом 2014 году (в конце сентября у меня истекало так сказать халявное использование сервиса DropBOX (размер 50Gb) , спасибо покупке Samsung Galaxy Tab 2, под мои данные и я ставил перед собой задачу использовать такой объем в дальнейшем, но уже где роль сервиса DropBox использует owncloud) я игрался с 5,6,7 версиями и у меня были множественные ошибки от системы к системе на которых я пытался воссоздать в тестовых условиях работу данного ПО прежде чем переходить к его боевому использованию. У меня много данных/наработок которые мне во чтобы то ни стало нельзя потерь – это будет огромная неудача с моей стороны как я себя позиционирую – системный администратор. У меня все должно быть зарезервировано. И поэтому сейчас настал тот момент когда нужно вынести шаги инсталляции на свой блог – оформленная шпаргалка не помешает.

Характеристики системы:

RAM = 4Gb (и более)

HDD = 25Gb (это под систему, под данные отдельный диск)

CPU = 2

Прежде чем начинать давайте убедимся что наша система в актуальном состоянии:

ekzorchik@srv-serv:~$ sudo apt-get update && sudo apt-get upgrade -y

Эти две простые команды обновят все программы на нашем сервере, процесс может занять длительное время в зависимости от скорости интернета и нашего сервера.

Теперь, можно приступить к установке необходимого для работы ownCloud программного обеспечения:

ekzorchik@srv-serv:~$ sudo apt-get install apache2 php5 php5-common php5-gd php5-intl php5-mcrypt php5-cli php5-ldap php5-sqlite curl libcurl3 libcurl4-openssl-dev php5-curl php-apc ffmpeg php5-imagick php5-mysql -y

Устанавливаем MySQL:

ekzorchik@srv-serv:~$ sudo apt-get install mysql-client mysql-server -y
Во время установки необходимо будет сконфигурировать Web-сервер, соглашаемся и выбираем Apache2, нажимаем «Да» далее нас попросят придумать пароль для нашей базы данных MySQL, придумываем пароль и идем дальше.

New password for the MySQL «root» user: 612mbddr@

Repeat password for the MySQL «root» user: 612mbddr@

Теперь немножко позаботимся о нашей безопасности, вводим в консоль:

ekzorchik@srv-serv:~$ sudo mysql_secure_installation

и на все вопросы отвечаем

Change the root password? [Y/n] n

А после положительно Y.

Входим в консоль управления MySQL:

ekzorchik@srv-serv:~$ mysql -u root -p612mbddr@


Создаем базу данных:

mysql> create database wp_owncloud;

Query OK, 1 row affected (0.00 sec)

Создаем пользователя, желательно с именем как и у базы данных:

mysql> create user 'own'@'localhost' IDENTIFIED BY '612mbddr@@';

Query OK, 0 rows affected (0.00 sec)

Важно: пароль не должен совпадать с паролем суперпользователя.

Передаем созданному пользователю полные права на созданную базу данных:

mysql> GRANT ALL ON wp_owncloud.* to 'own'@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

Выходим:

mysql> quit;

Bye

Для корректности работы персонального облака важно, чтобы на сервере время было синхронизировано с эталонными серверами:

Прописываем часовой пояс:

ekzorchik@srv-serv:~$ sudo rm -rf /etc/localtime && sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Устанавливаем ntp клиент:

ekzorchik@srv-serv:~$ sudo apt-get install ntp ntpdate

Теперь меняем сервер синхронизации времени на ближайший:

ekzorchik@srv-serv:~$ sudo nano /etc/ntp.conf

server 0.ubuntu.pool.ntp.org

server 1.ubuntu.pool.ntp.org

server 2.ubuntu.pool.ntp.org

server 3.ubuntu.pool.ntp.org

Сохраняем и выходим из редактора.

Чтобы проверить правильность времени достаточно ввести в терминале:

ekzorchik@srv-serv:~$ sudo ntpdate pool.ntp.org

20 Aug 00:06:16 ntpdate[17203]: the NTP socket is in use, exiting

Если время на нашем сервере не соответствует времени полученному с ntp сервера вводим:

ekzorchik@srv-serv:~$ sudo ntpdate -bs pool.ntp.org

Переходим к настройке Webдоступа персонального облака:

(подготавливает отдельный диск для хранилища)

ekzorchik@srv-serv:~$ sudo fdisk /dev/sdb

ekzorchik@srv-serv:~$ sudo fsck.ext4 /dev/sdb1

ekzorchik@srv-serv:~$ sudo mkdir /media/own

ekzorchik@srv-serv:~$ sudo mount -t ext4 /dev/sdb1 /media/own

ekzorchik@srv-serv:~$ sudo blkid | grep 'sdb'

/dev/sdb1: UUID=»0f05db71-a2e5-439f-9554-c4c916183de6″ TYPE=»ext4″

ekzorchik@srv-serv:~$ sudo nano /etc/fstab

UUID=0f05db71-a2e5-439f-9554-c4c916183de6 /media/own ext4 defaults,rw 0 0

ekzorchik@srv-serv:~$ sudo umount /dev/sdb1

ekzorchik@srv-serv:~$ sudo mount -a

ekzorchik@srv-serv:~$ df -h | grep /dev/sdb1

/dev/sdb1 29G 44M 27G 1% /media/own

Далее создаю сайт конфигурации для Веб-сервера Apache который будет обслуживать Web-ориентированный доступ к моему облаку:

ekzorchik@srv-serv:~$ sudo nano /etc/apache2/sites-available/owncloud.conf

<VirtualHost *:80>

ServerAdmin webmaster@localhost

DocumentRoot /media/own/

<Directory />

Options Indexes FollowSymLinks

AllowOverride All

Order allow,deny

allow from all

</Directory>

</VirtualHost>

Сохраняем файл и выходим.

Активирую созданный файл конфигурации сайта owncloud: (предварительно деактивировав дефолтный)

ekzorchik@srv-serv:~$ sudo unlink /etc/apache2/sites-available/default

ekzorchik@srv-serv:~$ sudo unlink /etc/apache2/sites-enabled/000-default

ekzorchik@srv-serv:~$ sudo a2ensite owncloud.conf

Enabling site owncloud.conf.

To activate the new configuration, you need to run:

service apache2 reload

Перезапускаем apache:

ekzorchik@srv-serv:~$ sudo service apache2 restart

Редактируем php.ini:

ekzorchik@srv-serv:~$ sudo nano /etc/php5/apache2/php.ini

mysql.default_socket=/var/run/mysqld/mysqld.sock

mysql.cache_size = 4000

upload_max_filesize = 10240M

post_max_size = 1024M

memory_limit = 512M

Находим строчки:

extension=pdo_mysql.so

extension=mysql.so

Для справки:

/usr/lib/php5/20090626/mysql.so

/usr/lib/php5/20090626/pdo_mysql.so

Убираем знаки комментариев перед ними «#» или «//» ( если строчек нет, добавляем их после «[MySQL]» )

[MySQL]

extension=pdo_mysql.so

extension=mysql.so

Сохраняем файл и выходим.

Перезапускам apache еще раз:

ekzorchik@srv-serv:~$ sudo service apache2 restart

Загружаем последнюю версию ownCloud, на момент написания данной заметки – это версия ownCloud 8:

ekzorchik@srv-serv:~$ cd /media/own

ekzorchik@srv-serv:/media/own$ sudo wget -c https://download.owncloud.org/community/owncloud-8.1.1.tar.bz2 --no-check-certificate

Распаковываем:

ekzorchik@srv-serv:/media/own$ sudo tar -xvf owncloud-8.1.1.tar.bz2

Выставляем права:

ekzorchik@srv-serv:/media/own$ sudo chown -R www-data:www-data /media/own/owncloud

Теперь наш сайт готов, остался только маленький штрих, открываем в браузере URL адреса нашего сервера, где развернуто ПО owncloud:

http://IP/owncloud && http://DNS/owncloud и создаем нового пользователя, указываем месторасположение где будят хранится документы хранилища, указываем что в качестве базы данных использовать MySQL, именование базы, а также логин и пароль учётной записи от этой базы данных.

На заметку: в роли путей месторасположения, как сделано у меня, сделать некоторые усовершенствования:

  • Собрать миникомпьютер с поддержкой организации аппаратного RAID’а (RAID 1 && RAID 5)
  • Использовать LVM:
  • Создать файловую систему, к примеру ext4, либо в качестве внешнего хранилища использовать FreeNAS с томом на файловой системе ZFS

(рекомендую сделать физический(программный RAID 1 или 5)

  • Либо использовать домашнее решение WD My book live duo (об этом как переделать данное решение я покажу чуточку позже, но оно будет опубликовано)

После того, как в браузере обратился по адресу развернутого сайта owncloud обнаружил, что установленная у меня в системе версию интерпретатора языка php немного устарела:

Установлена младшая версия php

Обновляю, а лучшим всё-таки решением будет установить репозитарии owncloud в систему чем разворачивать как выше из скачанного файла, потому как из репозитария подтянутся и необходимые зависимости автоматически.

ekzorchik@srv-serv:~$ sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/owncloud.list"
ekzorchik@srv-serv:~$ sudo apt-get update

W: GPG error: http://download.opensuse.org  Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 977C43A8BA684223

ekzorchik@srv-serv:~$ wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_12.04/Release.key

ekzorchik@srv-serv:~$ sudo apt-key add -< Release.key
OK

ekzorchik@srv-serv:~$ sudo apt-get update

ekzorchik@srv-serv:~$ apt-cache show owncloud | grep Version
Version: 8.1.1-1
Version: 5.0.4debian-0ubuntu1~ubuntu12.04.1
Version: 3.0.0-0ubuntu1
Устанавливаю самую последнюю версию owncloud в систему:
ekzorchik@srv-serv:~$ sudo apt-get install owncloud-server=8.1.1-1 owncloud-config-apache=8.1.1-1

The following information may help to resolve the situation:

The following packages have unmet dependencies:

owncloud-server : Depends: php5 (>= 5.4.0) but 5.3.10-1ubuntu3.19 is to be installed

E: Unable to correct problems, you have held broken packages.

Чтобы задействовать пакет php5 более новой версии в текущем релизе операционной системе нужно добавить следующие репозитарии в систему:

ekzorchik@srv-serv:~$ sudo nano /etc/apt/sources.list

deb http://ppa.launchpad.net/ondrej/php5-oldstable/ubuntu precise main
deb-src http://ppa.launchpad.net/ondrej/php5-oldstable/ubuntu precise main

ekzorchik@srv-serv:~$ sudo apt-get update

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

ekzorchik@srv-serv:~$ apt-cache show php5 | grep Version

Version: 5.4.44-1+deb.sury.org~precise+1

Version: 5.3.10-1ubuntu3.19

Version: 5.3.10-1ubuntu3

ekzorchik@srv-serv:~$ sudo apt-get install php5 -y --force-yes

What do you want to do about modified configuration file php.ini? install the package maintainer’s version

На заметку:

  • Для установки на Ubuntu 12.04.5 – пакет ставим выкачивая архив tar.bz2
  • Для установки на Ubuntu 14.04.3 – пакет ставим добавляя соответствующие репозитарии с официального сайта и не происходит такого геморроя выше как делаю/рассматриваю я.

sudo sh -c «echo ‘deb http://download.opensuse.org/repositories/isv:/ownCloud:/community/xUbuntu_14.04/ /’ >> /etc/apt/sources.list.d/owncloud.list»
sudo apt-get update
sudo apt-get install owncloud
wget http://download.opensuse.org/repositories/isv:ownCloud:community/xUbuntu_14.04/Release.key
sudo apt-key add — < Release.key

С учетом обновленной версии php произвожу установку пакета хранилища owncloud самой последней версии:

ekzorchik@srv-serv:~$ sudo apt-get install owncloud=8.1.1-1 -y –force-yes

После установки установщик самостоятельно создаст файл сайта для моего установленного Web-сервера Apache:

Alias /owncloud "/var/www/owncloud/"

<Directory "/var/www/owncloud">

Options +FollowSymLinks

AllowOverride All

<IfModule mod_dav.c>

Dav off

</IfModule>

SetEnv HOME /var/www/owncloud

SetEnv HTTP_HOME /var/www/owncloud

</Directory>

<Directory "/var/www/owncloud/data/">

# just in case if .htaccess gets disabled

Require all denied

</Directory>

поэтому предыдущий можно смело затереть и удалить все файлы в подключенного диска.

ekzorchik@srv-serv:~$ sudo rm /etc/apache2/sites-available/owncloud.conf

ekzorchik@srv-serv:~$ sudo cp /etc/apache2/conf.d/owncloud.conf /etc/apache2/sites-available/

ekzorchik@srv-serv:~$ sudo rm /etc/apache2/conf.d/owncloud.conf

ekzorchik@srv-serv:~$ sudo a2dissite owncloud.conf

ekzorchik@srv-serv:~$ sudo a2ensite owncloud.conf

ekzorchik@srv-serv:~$ sudo service apache2 reload

ekzorchik@srv-serv:~$ ls /media/own

lost+found owncloud owncloud-8.1.1.tar.bz2

ekzorchik@srv-serv:~$ sudo rm -Rf /media/own/owncloud*

ekzorchik@srv-serv:~$ sudo chmod -R 770 /media/own/owncloud/data

ekzorchik@srv-serv:~$ sudo chown -R www-data:www-data /media/own/owncloud/data

ekzorchik@srv-serv:~$ sudo mkdir /media/own/owncloud/data -p

Теперь открываю браузер и перехожу по ссылке настройки:

http://IP&DNS/owncloud

Ниже пример заполнения необходимой информации при конфигурировании персонального облака:

  • Create an admin account:
  • Login: Ekzorchik
  • Password: 712mbddr@
  • Data folder: /media/own/owncloud/data
  • Configure the database: MySQL
  • Database user name: own
  • Database user password: 612mbddr@@
  • Database name: wp_owncloud
  • Name host: localhost

По окончании ввода нажимаем кнопку «Finish setup»/”Завершить установку” и нас перебрасывает на интерфейс управления:

Интерфейс управления персональным хранилищем owncloud

Закачанные файлы в облако располагаются в системе: (права от имени пользователя www-data от имени которого работает Web-сервер Apache)

ekzorchik@srv-serv:~$ sudo ls /media/own/owncloud/data/ekzorchik/files -l

total 2880

drwxr-xr-x 2 www-data www-data 4096 Aug 20 10:23 Documents

-rw-r—r— 1 www-data www-data 692339 Aug 20 10:41 GG4800E_GG7200E_GG7500E_3_8b37e65ddc.pdf

drwxr-xr-x 2 www-data www-data 4096 Aug 20 10:23 Photos

-rw-r—r— 1 www-data www-data 2242192 Aug 20 10:23 ownCloudUserManual.pdf

На этом я пока остановлюсь, в следующих заметках я буду расширять функционал данного облачного хранилища которое я использую в повседневности. А пока у Вас есть настроенное персональное облако owncloud на которое по аналогии посредством клиентов настраивается подключение, для доступа к нему в браузере нужно указать http://IP&DNS/owncloud.

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

 

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

один + 9 =