В кои веки пробую установить и использовать уже со времен моего первого знакомства данное облачное хранилище персонального вида, начинал я с версии 6, а на дворе уже 8. Думается мне что многое изменилось и все к лучшему, хотелось бы на это надеяться. Вот поэтому я решил оформить в ввиде пошаговых инструкций что и как нужно для этого сделать чтобы развернуть свое персональное хранилище на компьютере у себя дома, а после через проброс портов своего роутера дать доступ к нему из вне, либо покупать облачную конфигурацию в виде VPS/VDS и уже на ней воспроизводить все шаги текущей заметки. Но к примеру Я – не особо доверяю сервисам облака – по мне лучше подконтрольные сервисы видеть на своем железе.
В заметке будут освящены все шаги:
- Подготовка системы Ubuntu 12.04.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 немного устарела:
Обновляю, а лучшим всё-таки решением будет установить репозитарии 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»/”Завершить установку” и нас перебрасывает на интерфейс управления:
Закачанные файлы в облако располагаются в системе: (права от имени пользователя 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.