- PVSM.RU - https://www.pvsm.ru -

На дворе 2017 год: правительство шпионит и блокирует сайты, большие корпорации отдают ваши личные данные правительству или продают на сторону. У вас уже есть подписка на VPN, но в России такие сервисы теперь вне закона. Вы арендовали VPS заграницей [1] и ходите в сеть через него, но мощности работают вхолостую.
Установим Nextcloud [2]! Он заменит синхронизацию контактов, календаря, списка задач и файлохранилища/обменника на вашем смартфоне, а на ПК сойдёт за Dropbox. И независимости добавим, и сервер нагрузим.
Дальше длинная, но не сложная инструкция про аренду сервера, установку и настройку Nextcloud [2] на сервере и на ПК/смартфонах, включая синхронизацию контактов и календаря.
1. Я живу в Китае, тут проблема блокировки стоит острее, чем в России. Не по наслышке знаю, что даже Google и Dropbox могут однажды отключить навсегда, а использовать отечественные сервисы не хочется по разным причинам.
2. На моём сервере в качестве средства обхода блокировок стоит Shadowsocks [3] — для России это сейчас overkill, но в Китае выручает. Сначала ставил Streisand [4], но это перебор.
2. Я не профессиональный сисадмин. Не используйте эту инструкцию бездумно на сервере с важной информацией. И делайте бэкапы.
Nextcloud — open source проект своего персонального «облака»: в нём объединены функции Dropbox, контактов, календаря и списка задач Google, а так же много чего ещё. Другими словами, можно отказаться от Google и синхронизировать свои данные с компьютера и смартфона на свой сервер.
На сервере
На клиентах
Предположим, что вы уже арендовали сервер и смогли подключиться к нему по SSH через Putty.
Обновляем список пакетов
sudo apt-get update
Устанавливаем веб-сервер Apache2
sudo apt-get install apache2
Отредактируем конфигурацию
sudo nano /etc/apache2/apache2.conf
В конце файла дописываем две строчки, подставив свои значения:
ServerName IP-адрес-сервера
ServerName ваш-домен
Включим мод headers, пригодится в дальнейшем
sudo a2enmod headers
Установим сертификат для шифрованного соединения, если у вас есть домен. Очень желательно.
Добавляем репозиторий для LetsEncrypt Certbot
sudo add-apt-repository ppa:certbot/certbot
Обновляем список пакетов
sudo apt-get update
Устанавливаем Certbot
sudo apt-get install python-certbot-apache
Получаем сертификат
sudo certbot --apache -d ваш-домен
ответьте на вопросы: предоставьте ваш e-mail, согласитесь с условиями, при выборе перенаправления выберите вариант «2 — redirect»
Настроим автоматическое обновление сертификатов раз в три месяца
sudo crontab -e
выберите редактирование через nano, допишите следующую строчку и сохраните файл:
15 3 * * * /usr/bin/certbot renew --quiet
Установим базу данных MySQL
sudo apt-get install mysql-server
Задайте рут-пароль для базы данных. Обязательно запомните или запишите его.
Затем запустите команду для настройки безопасности
mysql_secure_installation
Ответьте на несколько вопросов. Можете отказаться от принудительной проверки сложности пароля и замены рут-пароля (первые два вопроса, отвечайте 'N'), на остальные вопросы отвечайте 'Y'.
PHP
Установим PHP 7 и нужные модули
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
Добавим php-cli
sudo apt-get install php-cli
И модуль для кэширования php-apcu
apt-get install php-apcu
Откроем файл конфигурации и отредактируем его
sudo nano /etc/apache2/mods-enabled/dir.conf
В списке файлов index с разным расширением, перепишите его так, чтобы в начале был index.php.
Перезапустите Apache
sudo systemctl restart apache2
Папку для личных файлов лучше создать в отдельном месте на сервере, а не так, как по-умолчанию хочет сделать NextCloud. Это нужно для повышения безопасности.
Создадим директорию в /media/
sudo mkdir /media/nextcloud/
Изменим права доступа к директории
chown -R www-data:www-data /media/nextcloud/
Скачаем последнюю версию NextCloud в формате *.tar.bz2 с официального сайта. Для этого в браузере откройте страницу релизов [10] и найдите новую версию. На момент написания этой статьи свежая версия 12.0.2, поэтому ссылка будет такая:
download.nextcloud.com/server/releases/nextcloud-12.0.2.tar.bz2 [11]
Скопируйте её в буфер обмена.
Вернёмся в PuTTY. Перейдите во временную директорию
cd /tmp
Скачайте архив с NextCloud, замените ссылку на самую свежую.
curl -LO https://download.nextcloud.com/server/releases/nextcloud-12.0.2.tar.bz2
Распакуйте архив
sudo tar -C /var/www -xvjf /tmp/nextcloud-12.0.2.tar.bz2
Создайте скрипт для установки
nano /tmp/nextcloud.sh
Вставьте в него следующий код
#!/bin/bash
ocpath='/var/www/nextcloud'
htuser='www-data'
htgroup='www-data'
rootuser='root'
printf "Creating possible missing Directoriesn"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater
printf "chmod Files and Directoriesn"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
chmod 755 ${ocpath}
printf "chown Directoriesn"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/
chmod +x ${ocpath}/occ
printf "chmod/chown .htaccessn"
if [ -f ${ocpath}/.htaccess ]
then
chmod 0644 ${ocpath}/.htaccess
chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
then
chmod 0644 ${ocpath}/data/.htaccess
chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi
Выполните скрипт
sudo bash /tmp/nextcloud.sh
Создайте файл конфигурации NextCloud в Apache
sudo nano /etc/apache2/sites-available/nextcloud.conf
Вставьте следующий текст
Alias /nextcloud "/var/www/nextcloud/"
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
<VirtualHost *:443>
ServerName ваш_домен
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
</VirtualHost>
Активируйте файл конфигурации
sudo a2ensite nextcloud
Включите дополнительные параметры
sudo a2enmod rewrite
sudo apt-get install php-bz2 php-curl php-gd php-imagick php-intl php-mbstring php-xml php-zip
Перезагрузите Apache
sudo systemctl reload apache2
Перейдём в MySQL, при входе понадобится рут-пароль MySQL, который мы создавали ранее.
mysql -u root -p
Создадим новую базу данных под названием nextcloud
CREATE DATABASE nextcloud;
Зададим ей параметры, не забудьте вставить новый пароль
GRANT ALL ON nextcloud.* to 'nextcloud'@'localhost' IDENTIFIED BY 'ваш_новый_пароль_для_базы';
Сбросим параметры и выйдем из MySQL
FLUSH PRIVILEGES
exit
В браузере откройте ip_или_домен/nextcloud [12]
Если всё сделано правильно, вы увидите страницу NextCloud и приглашение создать учётную запись администратора:
Первые два поля — имя и пароль для учётной записи администратора
Data folder: укажите директорию, которую вы создали в шаге «Директория для файлов», в примере это /media/nextcloud
Configure the database
Нужно указать параметры, которые мы использовали в шаге «Создадим базу MySQL»
Первая строчка — имя базы данных
Вторая строчка — пароль базы данных (не рут-пароль!)
Третья строчка — пользователь
Четвёртая строчка — адрес для обращения к базе данных, это должен быть localhost и порт 5342
Поздравляем, NextCloud установлен и работает, вы находитесь в учётке администратора.
При первом входе в админку вы увидите сообщение, что требуется дополнительная настройка, чтобы обезопасить ваш сервер. Сейчас расскажу, что нужно сделать.
Редактируем .htaccess
sudo nano /var/www/nextcloud/.htaccess
Сразу после строчки
<IfModule mod_headers.c>
добавьте
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
Удаляем страницу Apache по-умолчанию
sudo rm -rf /var/www/html/
ВНИМАНИЕ: выполните команду только в том случае, если сервер был чистый, а в директории /var/www/html нет ничего ценного.
Включаем memcache
Остановим Apache
sudo systemctl stop apache2
Отредактируем конфигурацию NextCloud
sudo nano /var/www/nextcloud/config/config.php
В конце файла добавим строчку
'memcache.local' => 'OCMemcacheAPCu',
Откроем файл конфигурации Apache PHP
sudo nano /etc/php/7.0/apache2/php.ini
В файле много текста. Листайте, пока не найдёте раздел, посвящённый opcache, затем вставьте туда следующие параметры:
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
Перезапускаем Apache.
sudo systemctl reload apache2
Все предупреждения о проблемах с безопасностью должны исчезнуть, останется надпись All checks passed.
Убедитесь, что пройдены все основные проверки безопасности. Это выглядит вот так. Если есть предупреждения — вернитесь к инструкции по настройке и проверьте, что всё сделано правильно.

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

Здесь можно придать Nextcloud индивидуальности: задать имя, подпись, картинку на фон, и даже поменять цвет оформления. Делается по желанию.

Не стоит его включать. Оно значительно повышает нагрузку на сервер и на дисковое хранилище, но не сильно влияет на безопасность: ключи шифрования будут храниться на том же сервере, и если доступ к нему получит злоумышленник, то сможет прочитать даже зашифрованные файлы.
Приложения — это дополнения, которые расширяют функции облака. Вот что я поставил для себя:
Позволяет настроить двухфакторную авторизацию в аккаунт с помощью одноразовых кодов через приложение Google Authenticator или FreeOTP [13]. Обязательно настройте этот способ входа для аккаунта администратора, желательно — для пользователя тоже. Сделать это можно в разделе Personal, в самом низу страницы.

Их мы будем использовать вместо календаря и контактов Google, об этом дальше.


Управление проектами в стиле Канбан [14].

Текстовые заметки, можно удобно синхронизировать с телефоном. [15]
Сервер-библиотека для доступа к книгам. Работает с приложениями типа FBreader [16].
Хранилище паролей для сайтов в браузере. Есть плагин для Chrome [17].
Односторонняя синхронизация SMS-сообщений с телефона в облако через Nextcloud SMS [18].

Простой список дел с привязкой к календарю.

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

Теперь у вас есть пользователь с ограниченными правами — то, что нужно для повседневного использования. Именно с обычным пользователем мы и будем дальше работать. Выйдите из учётной записи администратора и зайдите как новый пользователь.
Это можно сделать через компьютер, но тогда не сохранятся портреты контактов, поэтому всё будем делать на смартфоне. Если на смартфоне нет контактов Google — листайте дальше.
https://ip-или-домен.ru/nextcloud/remote.php/dav/

Когда синхронизация закончится, все ваши контакты будут доступны и в веб-интерфейсе: https://ваш_домен/nextcloud/index.php/apps/contacts/

Если на телефоне у вас по какой-то причине нет контактов из Google, но вы можете открыть их в браузере на ПК, пропустите шаг Перенос контактов из Google в DAVdroid, экспортируйте контакты из Google Contacts (More -> Export) в файл vCard, а затем импортируйте файл через веб-интерфейс Nextcloud.
Зайдите в стандартное приложение Календарь на смартфоне и проверьте, что новый календарь Nextcloud отображается в списке ваших календарей. Теперь можно сохранять события туда, они будут автоматически синхронизироваться с вашим собственным сервером Nextcloud. Google больше не нужен.

Веб-версия календаря будет доступна из браузера по адресу ваш_домен/nextcloud/index.php/apps/calendar [23]

Запустите приложение OpenTasks (в меню может называться просто Tasks), теперь там есть список Local (только на устройстве) и ваш «облачный» список.

Ещё один клиент для списка задач — SimpleTask Nextcloud [24]. Меньше функций, но работает чуть надёжнее.
В браузере задачи будут доступны по адресу ваш_домен/nextcloud/index.php/apps/tasks [25]

Windows и macOS

Готово.
Работает как Dropbox: кинули файл в папку — он улетает на серрвер. И наоборот.
Почему-то разработчики не предусмотрели смены языка через настройки приложения, по-умолчанию оно использует системный. У меня Windows на китайском (и ничего с этим не поделать), но приложения всё-таки удобнее держать на более привычном языке. Вот решение проблемы:
client_ca.qm
client_cs.qm
client_de.qm
client_el.qm
client_es.qm
client_es_AR.qm
client_et.qm
client_eu.qm
client_fa.qm
client_fi.qm
client_fr.qm
client_gl.qm
client_hu.qm
client_it.qm
client_ja.qm
client_nb_NO.qm
client_nl.qm
client_pl.qm
client_pt.qm
client_pt_BR.qm
client_en.qm
client_sk.qm
client_sl.qm
client_sr.qm
client_sv.qm
client_th.qm
client_tr.qm
client_TW.qm
client_uk.qm
client_zh_CN.qm
client_zh_TW.qm
qt_ar.qm
qt_ca.qm
qt_cs.qm
qt_da.qm
qt_de.qm
qt_es.qm
qt_fa.qm
qt_fi.qm
qt_fr.qm
qt_gl.qm
qt_he.qm
qt_hu.qm
qt_it.qm
qt_ja.qm
qt_ko.qm
qt_lt.qm
qt_pl.qm
qt_pt.qm
qt_en.qm
qt_sk.qm
qt_sl.qm
qt_sv.qm
qt_uk.qm
qt_zh_CN.qm
qt_zh_TW.qm
qtbase_ca.qm
qtbase_cs.qm
qtbase_de.qm
qtbase_fi.qm
qtbase_fr.qm
qtbase_he.qm
qtbase_hu.qm
qtbase_it.qm
qtbase_ja.qm
qtbase_ko.qm
qtbase_lv.qm
qtbase_pl.qm
qtbase_en.qm
qtbase_sk.qm
qtbase_uk.qmГотово.
Клиент для iPhone есть в официальном AppStore [28], для Android — в Google Play [29] и на F-Droid [30]. Установка простая и одинаковая на обоих платформах:
Готово.
Можете попробовать закинуть несколько файлов и посмотреть, как они улетят на облако.
Как и на Dropbox / Google Drive, в Nextcloud можно включить автоматическую загрузку всех новых фотографий и видео в облако. Но не забывайте об объёме жёсткого диска: в самом дешёвом сервере это всего 20 гигабайт. Большие объёмы фотографий я синхронизирую на ноутбук и домашний медиа-сервер с помощью Syncthing, бесплатно и очень быстро.
На iOS можно дополнительно включить опцию CryptoCloud, тогда все файлы будут храниться на сервере в зашифрованном виде. Полезно, например, если вы пользуетесь чужим сервером Nextcloud. Но файлы можно будет просматривать только с iOS-устройств.
Жаль, что я узнал о Nextcloud только теперь: сколько времени я убил на установку сервисов Google на своих предыдущих телефонах, и всё ради синхронизации контакт-листа и календаря. Работает всё стабильно, насколько это позволяет Китай. Пинги до сервера большие, но подключение есть всегда
Пожалуйста, расскажите в комментариях
Автор: Владимир ZH
Источник [31]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/267293
Ссылки в тексте:
[1] VPS заграницей: https://habrahabr.ru/company/ruvds/blog/341228/
[2] Nextcloud: http://nextcloud.com/
[3] Shadowsocks: https://blog.wtigga.com/shadowsocks/
[4] Streisand: https://blog.wtigga.com/streisand-vpn/
[5] не работает: https://blog.wtigga.com/chinese-firewall/
[6] перестать работать: https://geektimes.ru/post/293203/
[7] хостинг: https://www.reg.ru/?rlink=reflink-717
[8] стоит копейки: http://www.reg.ru/?rid=2026727
[9] PuTTY, Puttygen, Pageant: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
[10] страницу релизов: https://download.nextcloud.com/server/releases/
[11] download.nextcloud.com/server/releases/nextcloud-12.0.2.tar.bz2: https://download.nextcloud.com/server/releases/nextcloud-12.0.2.tar.bz2
[12] ip_или_домен/nextcloud: https://ip_%D0%B8%D0%BB%D0%B8_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD/nextcloud
[13] FreeOTP: https://f-droid.org/packages/org.fedorahosted.freeotp/
[14] Канбан: https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BD%D0%B1%D0%B0%D0%BD_(%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0)
[15] синхронизировать с телефоном.: https://f-droid.org/packages/it.niedermann.owncloud.notes/
[16] FBreader: https://f-droid.org/packages/org.geometerplus.zlibrary.ui.android/
[17] плагин для Chrome: https://chrome.google.com/webstore/detail/hlpjhlifkgmoibhollggngbbhbejecph
[18] Nextcloud SMS: https://f-droid.org/packages/fr.unix_experience.owncloud_sms/
[19] DAVdroid: https://f-droid.org/packages/at.bitfire.davdroid/
[20] OpenTask: https://f-droid.org/packages/org.dmfs.tasks/
[21] ZenUI Dialer: https://play.google.com/store/apps/details?id=com.asus.contacts
[22] 249 руб: https://play.google.com/store/apps/details?id=at.bitfire.davdroid
[23] ваш_домен/nextcloud/index.php/apps/calendar: https://%D0%B2%D0%B0%D1%88_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD/nextcloud/index.php/apps/calendar/
[24] SimpleTask Nextcloud: https://play.google.com/store/apps/details?id=nl.mpcjanssen.simpletask.nextcloud
[25] ваш_домен/nextcloud/index.php/apps/tasks: https://%D0%B2%D0%B0%D1%88_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD/nextcloud/index.php/apps/tasks/
[26] с официального сайта: https://nextcloud.com/install/#install-clients
[27] ваш_домен/nextcloud: https://%D0%B2%D0%B0%D1%88_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD/nextcloud
[28] в официальном AppStore: https://itunes.apple.com/us/app/nextcloud/id1125420102?mt=8
[29] Google Play: https://play.google.com/store/apps/details?id=com.nextcloud.client
[30] F-Droid: https://f-droid.org/packages/com.nextcloud.client/
[31] Источник: https://geektimes.ru/post/294997/
Нажмите здесь для печати.