Nextcloud - Облако для себя и семьи

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Я пользуюсь облаком со врёмён своего первого телефона на Windows Phone - Nokia Lumia 900. Тогда в комплекте для синхронизации документов и фото там был предустановлен SkyDrive (позже OneDrive). С покупкой нового телефона (опять же на WP) мне добавляли ещё 5 GB места, в итоге объём хранилища вырос до 20 GB. Так же был приобретён USB винт Silicon Power, с ним мне досталось ещё 200 GB места. В Мае 2016 года у Microsoft была акция, в которой получил офис 365 на 1 год и на такое же время 1 TB хранилища OneDrive. В общей сумме получилось 1220 GB места под собственные файлы. И я начал заливать туда не только фото (кстати, которых накопилось порядка 45 GB, т.к. после WP я подключал OneDrive и на Android), но и музыку и фильмы, дабы была возможность доступа к ним с любого девайса которым пользуюсь: будь то домашные компы, ноутбук, рабочий комп или телефоны. 
И вот настал май 2017. В скором времени отберут 1 TB у меня за подписку на Office 365. И встал вопрос. Что делать с облаком? Как быть? как отказаться от такого удобства? А ни как. Нужно искать альтернативные варианты. И вот к чему меня привели поиски: 
  • OneDrive - 1 TB за 2699р в год (за офис 365)
  • Облако от Яндекса - 35гб при установке яндекс.диск на телефон. В общей сумме у меня получилось 44 GB. 1 TB стоит 2000р в год.
  • Облако от Mail - 256GB за 2290 в год. Вообще не айс
  • Google Drive - 1TB за 6990р в год
Деньги как бы небольшие. Но хочется уже своего, родного, которое лежит не где-то и у кого-то, а у тебя. И в случае взлома, кражи и т.д. ты будешь винить только себя. В общем в итоге я пришёл к тому что нужно делать своё облако, и тогда мой взор пал на Nextcloud, который является форком от Owncloud'а. Там даже местами в админке до сих пор в описаниях от Приложений написано Owncloud :) да и выглядит практически так же. И так. Что же нам для этого понадобится? Nextcloud - по сути веб страница, и для его работы много не нужно.
Рекомендуемые:
512 Mb ОЗУ
Red Hat Enterprise Linux 7 / Ubuntu 16.04 LTS
MySQL/MariaDB 5.5+
PHP 7.0+
Apache 2.4 с mod_php
Поддерживаемые
Платформа: Linux (Debian 7, SUSE Linux Enterprise Server 11 SP3 & 12, Red Hat Enterprise Linux/CentOS 6.5 and 7 (7 is 64-bit only), Ubuntu 14.04 LTS, 16.04 LTS)
Web server: Apache 2 (mod_php, php-fpm) or Nginx (php-fpm)
Databases: MySQL/MariaDB 5.5+; PostgreSQL; Oracle 11g
PHP 5.6 + | Версия не должна быть ниже этой. На 5.5 уже не запуститься
Виртуалки: Hyper-V, VMware ESX, Xen, KVM
Desktop: Windows XP SP3 (EoL Q2 2015), Windows 7+, Mac OS X 10.7+ (64-bit only), Linux (CentOS 6.5, 7 (7 is 64-bit only), Ubuntu 12.04 LTS, 14.04 LTS, 14.10, Fedora 20, 21, openSUSE 12.3, 13, Debian 7 & 8).
Мобильные платформы: iOS 7+, Android 4+. Есть и для WP, в маркете стоит 69р
Браузер: IE11+, Microsoft Edge, Firefox 14+, Chrome 18+, Safari 7+
Хоть FreeBSD и не описана в поддержке, ставить буду я именно на неё.

Установка AMP на FreeBSD

 
 
Сама установка FreeBSD не сложна. Пару раз нажать Enter выбрать часовой пояс и тд. Инструкций полно, как в принципе и на установку AMP. Но в ней есть несколько нюансов, поэтому я опишу установку web-сервера как можно полнее. Так же оговорюсь что в этой статье безопасность сервера я рассматривать не буду. И так. Что нам понадобится для установки:

Так как я в примере буду устанавливать облако на виртуальную машину, то оставлю ссылки на VMWare Workstation 12.5: Сайт VMWare и на моей Файлопомойке (версия без кряков)Всё остальное (Apache, MySQL, PHP) мы установим непосредственно из системы. И так приступим.Опишу что мы имеем:Голую FreeBSD 11 установленную на виртуальную машину на домашнем компе. Комп имеет белый IP 10.10.10.10, виртуальная машина с IP выданным по DHCP 20.20.20.20 (в настройках сетевой карты в виртуальной машины NAT). Винт под систему на 20 гигов. И NFS шара по адресу /web на терабайт. В ней будет храниться всё. И базы, и облако, и файлы. На тот случай, если я вдруг решу увеличить объём диска, мне нужно будет лишь перекинуть файлы, заменить шару, и залить файлы обратно.
И так. Первое что мы должны сделать - обновиться.
Обновляем систему:
freebsd-update fetch
freebsd-update install

После обновления системы, обновим дерево портов

portsnap fetch
portsnap extract

Обновились. Теперь можно и работать. Для начала настроим доступ по ssh, для этого отредактируем файл отвечающий за ссх и раскоментируем строки

ee /etc/ssh/sshd_config
port 22
PermitRootLogin yes

Теперь можно либо пойти в ребут, либо перезапустить демона ssh (/etc/rc.d/sshd restart), но т.к. мы обновлялись, рекомендую всё же перегрузиться

reboot

Далее я буду работать через Putty под rootТеперь приступим к установке непосредственно самого AMP. Начнём с MySQL. Идём в порты. Так как во время установки будет куча вопросов, советую каждый раз прописывать make config-recursive,  после этого устанавливать. Все настройки оставляем как есть

cd /usr/ports/databases/mysql56-server
make config-recursive
make install clean

После установки мускуля, нужно прописать в rc.conf чтобы он запускался автоматом. И т.к. у меня базы будут лежать в NFS шаре, меняем путь к ним

echo 'mysql_enable="YES"' >> /etc/rc.conf
echo 'mysql_dbdir="/web/mysql"' >> /etc/rc.conf

Теперь создадим папку для хранения баз, и выставим ей права

cd /web && mkdir mysql && chown mysql:mysql mysql/

Создадим конфиг MySQL

ee /web/mysql/my.cnf

Со следующим содержимым

[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
bind-address =127.0.0.1
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
thread_concurrency = 8
#log=/var/log/mysql.log # Лог всех SQL-запросов
#log-bin=/var/log/mysql-bin.log # Бинарный лог всех SQL-запросов
log-error=/var/log/mysql-err.log # Лог ошибок в работе демона СУБД MySQL
#log-slow-queries=/var/log/mysql.slow # Лог всех медленных SQL-запросов
#log-bin=mysql-bin
#log=/var/log/mysql.log
#binlog_format=mixed
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

И выставим ему права

chown mysql:mysql /web/mysql/my.cnf

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

touch /var/log/mysql-err.log
chown mysql:mysql /var/log/mysql-err.log

После этого стартуем сервер

/usr/local/etc/rc.d/mysql-server start

Ошибок быть не должно, но на всякий случай можно проверить.

ps axw | grep mysql

Вы должны увидеть примерно следующее


13324 - Is 0:00.02 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/web/mysql/my.cnf --basedir=/usr/local --datadir=/web/mysql --pid-file=/web/mysql/bsdt
13638 - I 0:00.19 /usr/local/libexec/mysqld --defaults-extra-file=/web/mysql/my.cnf --basedir=/usr/local --datadir=/web/mysql --plugin-dir=/usr/local/lib/mysql/p
13650 0 S+ 0:00.00 grep mysql

Если старт прошёл нормально, то запускаем конфиг безопастности

/usr/local/bin/mysql_secure_installation

Настроить его не составит труда даже при минимальном знании английского языка.Теперь приступим к установке Apache. Настройки оставляем по умолчанию

cd /usr/ports/www/apache24
make config-recursive
make install clean

Добавим его в автозагрузку

echo 'apache24_enable="YES"' >> /etc/rc.conf

Отредактируем его конфиг

ee /usr/local/etc/apache24/httpd.conf

Меняем следующие параметры: ServerName

ServerName cloud:80

Далее в графе DocumentRoot меня путь в котором будут лежать файлы nextcloud

DocumentRoot "/web/cloud"
<Directory "/web/cloud">

Нужно для правильной обработки php файлов

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html

Теперь создадим эту папку и выставим ей права

mkdir /web/cloud
chown -R www:www /web/cloud

На этом пока всё. Теперь приступим к самому весёлому и интересному. Установим php и дополнения к нему.

cd /usr/ports/lang/php56
make config-recursive
make install clean

Создадим конфиг. Стандартного будет достаточно

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Теперь установим дополнения

cd /usr/ports/lang/php56-extensionsmake config-recursive

Вот теперь внимательно. Нам нужно будет отметить следующие дополнения: CURL, DOM, POSIX, FTP, GD, HASH, ICONV, XML, JSON, MBSTRING, MYSQL, MYSQLI, OPENSSL, SOCKETS, TOKENIZER, XMLREADER, ZLIB, EXIF, GETTEXT, PDO_MYSQL, ZIP. После этого снова запускаем make config-recursive, выбираем то что нужно (я оставлял по умолчанию) и так до тех пор пока не перестанет появлятся выбор дополнений. Только после этого устанавливаем

make install clean

дале доставим то чего не хватает. Почему это убрали из extensions - мне неизвестно, но того требует ситуация

cd /usr/ports/www/mod_php56
make config-recursive
make install clean

Добавляем Апач в автозагрузку

echo 'apache24_enable="YES"' >> /etc/rc.conf

И стартуем его

/usr/local/etc/rc.d/apache24 start

Теперь заходим с помошь WinSCP на наш сервер, и заливаем файлы Nextcloud'a в папку /web/cloud


После того как мы залили, переходим по адресу нашего сайта http://20.20.20.20. Если выдало ошибку что нет прав записи в директорию конфиг, то выставляем права на запись для следующих папок:

chown -R www:www /web/cloud/apps
chown -R www:www /web/cloud/config

Всё. Перезапускаем страницу и видим что всё ок.


Настраиваем базу данных и входим.
Теперь нужно сделать так, чтобы можно было зайти на облако из интернетов. Для этого пробросим порты в Windows. Делается это одной командой:

netsh interface portproxy add v4tov4 listenport=1234 listenaddress=10.10.10.10 connectport=80 connectaddress=20.20.20.20

Теперь при заходе на наш внешний IP адрес с указанием порта 1234 будет форвардить на внутреннюю сетку с nextcloud'ом. Профит!

Поделись с друзьями

Похожие новости
Имя:*
E-Mail: