Облачный сервер Nextcloud: различия между версиями
Владимир (обсуждение | вклад) Новая страница: «мини|Nextcloud - презентация Своими словами. Аналог Яндекс, Google д...» |
Владимир (обсуждение | вклад) |
||
| (не показано 37 промежуточных версий этого же участника) | |||
| Строка 1: | Строка 1: | ||
[[Файл:Nextcloud - презентация.png|мини|Nextcloud - презентация]] | [[Файл:Nextcloud - презентация.png|мини|Nextcloud - презентация]] | ||
Своими словами. Аналог Яндекс, Google дисков. То есть '''web''' доступ к файлам, и клиент на все платформы для синхронизации. Но есть одно маленькое, но. Размерность, скорость и фишки делаются на свое усмотрение. На собственном железе. Все данные рядом, или точно известно где они. | Своими словами. Аналог Яндекс, Google дисков. То есть '''web''' доступ к файлам, и клиент на все платформы для синхронизации. Но есть одно маленькое, но. Размерность, скорость и фишки делаются на свое усмотрение. На собственном железе. Все данные рядом, или точно известно где они. | ||
<br /> | <br /> | ||
==Настройка Proxmox для Nextcloud== | |||
Наше облако базируется на системном хранилище local-lvm, а вот сами данные будут храниться на SSD на 960 гигабайт из Китая. Пока без рейда (. | |||
Поэтому после аппаратного подключения накопителя к серверу, нужно на нем создать раздел и отформатировать в ext4. | |||
Самое интересное то, что Proxmox как бы конфигурируется через web, но работу с накопителями на низком уровне можно осуществить только из консоли. | |||
Туда и переходим, в '''PowerShell''' конечно же. | |||
ssh vova@192.168.1.130 | |||
Водим [[Облачный сервер Nextcloud#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5%20.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F|пароль]]. | |||
<br /> | |||
===Подключение накопителя к Proxmox=== | |||
<br /> | |||
====Просмотр разделов==== | |||
Смотрим что там у нас по разделам. | |||
'''lsblk''' | |||
Тут должно быть несколько дисков. Может быть так что нужный '''sda''' или наоборот '''sdb'''. Наш тот у которого нет разделов. | |||
Пример: | |||
sda 8:0 0 960G 0 disk | |||
sdb 8:16 0 120G 0 disk | |||
├─sdb1 8:17 0 1007K 0 part | |||
├─sdb2 8:18 0 512M 0 part | |||
└─sdb3 8:19 0 119.5G 0 part | |||
'''sda''' и есть наша SSD на 960 гигабайт. | |||
<br /> | |||
====Создание раздела==== | |||
На ней и создадим раздел. | |||
fdisk /dev/sda | |||
Запустилась программа по созданию разделов. | |||
Смотрим информацию о командах. | |||
m | |||
Создаем новый раздел | |||
n | |||
'''Enter, Enter, Enter, Enter''' | |||
Запишем изменения | |||
w | |||
Теперь если взглянуть на разделы. | |||
lsblk | |||
Видно, что | |||
sda 8:0 0 960G 0 disk | |||
└─sda1 8:1 0 960G 0 part | |||
появился раздел '''sda1'''. | |||
<br /> | |||
====Форматирование раздела==== | |||
от его и нужно форматировать в ext4. | |||
mkfs.ext4 /dev/sda1 | |||
Соглашаемся и дожидаемся окончания. Теперь у нас есть файловая система на накопителе SSD. | |||
Осталось выполнить '''монтирование''' раздела в '''var/lib/''' с нужным нам именем, без разницы каким. | |||
Делать мы это будем не по букве диска, так как эта штука не статичная. Может меняться при следующем запуске системы. И вручную монтировать мы тоже не хотим. | |||
<br /> | |||
====ID разделов==== | |||
Делать будем по '''ID накопителя'''. Узнаем: | |||
blkid | |||
Видим много чего, но нас интересует наш раздел /dev/sda1. Вот он: | |||
/dev/sda1: UUID="2e51447b-2ed3-4380-b497-401114b7261f" TYPE="ext4" PARTUUID="23d0899a-01" | |||
И нужный нам '''UUID''' накопителя. | |||
<br /> | |||
====Монтирование раздела==== | |||
Создадим каталог, в который будет монтироваться раздел. Назовем его SATA2 | |||
mkdir /var/lib/SATA2 | |||
Монтируем чтобы не перезагружаться. | |||
mount -t ext4 /dev/sda1 /var/lib/SATA2/ | |||
<br /> | |||
====Авто монтирование раздела==== | |||
Для авто монтирования в систему открываем в '''nano''' файл '''fstab.''' | |||
nano /etc/fstab | |||
В конце добавляем: | |||
UUID=2e51447b-2ed3-4380-b497-401114b7261f /var/lib/SATA2 ext4 defaults 0 1 | |||
ctrl + o | |||
ctrl + x | |||
Цифры в конце указываю на то, что система не загрузится если не найдет данный накопитель. | |||
Готово. | |||
<br /> | |||
===Создание виртуальной машины=== | |||
<br />[[Файл:Облачный сервер Nextcloud - Подключение хранилища.png|мини|Подключение хранилища]] | |||
====Подключение хранилища==== | |||
Теперь '''web''' интерфейсе переходим в раздел '''Датацентр'''. | |||
Выбираем: “'''Хранилище'''” | |||
Нажимаем: “'''Добавить'''”, в списке выбираем: “'''Каталог'''”. | |||
В появившемся окне: | |||
ID: '''SATA2''' | |||
''название нашего ранее созданного хранилища.'' | |||
Каталог: '''/var/lib/SATA2/''' | |||
''физический путь к примонтированному разделу.'' | |||
Содержимое: '''Резервная копия, ISO образ, Шаблон контейнера''' | |||
''то, что можно размещать в этом хранилище.'' | |||
'''Добавить.''' | |||
<br /> | |||
[[Файл:Облачный сервер Nextcloud - демонстрация загруженный образов.png|мини|Демонстрация загруженный образов]] | |||
====Загрузка образа Ubuntu==== | |||
Получается мы устанавливаем '''ubuntu server''' как виртуальную в среде '''Proxmox'''. | |||
На данный момент это версия '''18.04.4 LTS'''. | |||
На этот раз ни на какие накопители ничего записывать не нужно. | |||
Требуется загрузить образ в пространство Proxmox, в хранилище. В нашем случае подойдет local. | |||
Выбираем '''local в узле pve''', переходим в “'''Содержимое'''”. | |||
Нажимаем “'''Загрузить'''” и выбираем '''наш образ'''. | |||
Загружаем, ожидаем. | |||
====Создание VM==== | |||
Нажимаем: '''создать VM:''' | |||
В разделе '''Общее:''' | |||
Узел: '''pve''' | |||
VM ID: '''100''' | |||
Имя: '''cloud''' | |||
В разделе '''ОС:''' | |||
Хранилище: '''local''' | |||
'''ISO образ:''' ''То, что загрузили с официального сайта Ubuntu.'' | |||
В разделе '''Жесткий диск:''' | |||
Шина: '''VirtIO Block''' | |||
Хранилище: '''local-lvm''' | |||
Размер: '''20''' | |||
Кэш: '''Write through''' | |||
В разделе '''Процессор:''' | |||
Ядра: '''2''' | |||
В разделе '''Память:''' | |||
Память: '''2048''' | |||
'''Готово.''' | |||
Появилась виртуальная '''машина''' с номером '''100''' и названием '''cloud''' в разделе '''pve'''. | |||
Теперь сразу же подкинем этой машине наш накопитель SSD для хранения “облачных данных”. | |||
Переходим в неё, в раздел '''Оборудование''' и нажимаем “'''Добавить'''”, выбираем '''Жесткий диск'''. | |||
Хранилище: '''SATA2''' | |||
Размер: '''834''' | |||
''в моем случае, на пару гигабайт меньше, чем доступно.'' | |||
Кэш: '''Write through''' | |||
'''Добавить'''. | |||
Нажимаем '''Запуск.''' <br /> | |||
==Установка Ubuntu== | |||
Установка точно такая же как на реальном железе. Но все буде рассказано. | |||
Переходим в раздел '''Консоль''' нашей 100 виртуальной машины. Или если все на отдельном сервере, просто устанавливаем систему с USB накопителя. | |||
Видим запуск ОС и выбор языка. Выбираем '''Русский'''. | |||
Клавиатура остается на '''Английском'''. | |||
'''Готово.''' | |||
Видим, что машина получила '''IP адрес''' от нашего '''DHCP''' сервера. | |||
'''192.168.1.130'''/24 | |||
<br /> | |||
===Создание разделов=== | |||
В разделе '''Filesystem setup''' выбираем '''Вручную'''. Мы же профессионалы. | |||
Видим 2 накопителя: | |||
Cначало '''swop''': '''/dev/vda/ 20G''' | |||
Жмем и выбираем: '''Add Partition''' | |||
Size: '''2''' | |||
Format: '''swop''' | |||
'''Create''' | |||
Теперь создадим '''boot''' '''/dev/vda/ 20G''' | |||
Size: '''1''' | |||
Format: '''ext4''' | |||
Mount: '''/boot''' | |||
'''Create''' | |||
Теперь уже основной каталог: '''/dev/vda/ 20G''' | |||
Size: '''ничего''' | |||
Format: '''ext4''' | |||
Mount: '''/''' | |||
'''Create''' | |||
Теперь диск хранилище: '''/dev/vdb/ 834G''' | |||
Size: '''ничего''' | |||
Format: '''ext4''' | |||
Mount: '''other /media/nextcloud''' | |||
'''Create''' | |||
Идем в самый низ и выбираем: '''Готово'''. Продолжить: '''Да'''. | |||
Начинается установка. При этом она идет в фоне. | |||
В это время заполняем данные пользователя и машины: | |||
<br /> | |||
===Создание пользователя=== | |||
Your name: '''имя_пользователя''' | |||
your server’s name: '''nextcloud''' | |||
Pick a username: '''имя_пользователя''' | |||
Choose password: '''пароль_сервера_cloud''' | |||
Confirm your password: '''пароль_сервера_cloud''' | |||
'''Готово.''' | |||
На вопрос установить ли '''ssh''' соглашаемся, поставив крестик пробелом. | |||
'''Готово.''' | |||
Ничего не выбираем и говорим '''Готово.''' Ждем окончания установки. | |||
По окончании: '''Reboot.''' | |||
'''Enter''' | |||
<br /> | |||
===[https://onedrive.live.com/view.aspx?resid=1BA17484D0963ECC%211919&id=documents&wd=target%28%D0%9F%D0%B0%D1%80%D0%BE%D0%BB%D0%B8.one%7C8D326A63-2198-4CAE-BC1F-3D883FECEB4F%2F%D0%9C%D0%BE%D0%B8%20%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D1%8B%7CBC1C8534-C0AB-4BE4-B12F-E8197EF2D103%2F%29 onenote:https://d.docs.live.net/1ba17484d0963ecc/Документы/Записная%20книжка%20пользователя%20Владимир/Пароли.one#Мои%20сервисы§ion-id={8D326A63-2198-4CAE-BC1F-3D883FECEB4F}&page-id={BC1C8534-C0AB-4BE4-B12F-E8197EF2D103}&end Информация, пароли, имена.]=== | |||
===Первичная настройка=== | |||
ОС перезагрузиться, но уже в '''установленном''' виде. С ней бы выполнить стандартный набор операций. | |||
'''PowerShell''' | |||
'''ssh''' vova@192.168.1.130 | |||
Вот мы и в '''консоли''' будущего '''облака'''. Так как мы не '''root''' нужно выполнять все действия через команду '''sudo''', или ввести '''sudo''' '''su''' и ввести пароль. Это сделает все наши операции от '''root'''. | |||
''обновляем репозитории.'' | |||
'''apt-get update''' | |||
''выполняем обновление пакетов из репозиториев.'' | |||
'''apt-get upgrade -y''' | |||
''устанавливаем файловый менеджер mc.'' | |||
'''apt-get install mc -y''' | |||
''устанавливаем архиватор.'' | |||
'''apt-get install unzip -y''' | |||
ОС готова переходим к установке '''Nextcloud'''. | |||
== Настройка сети == | |||
Добавляем виртуальную сетевую карту '''ens19.''' Присвоим адрес этой машине номер 4. | |||
nano /etc/netplan/00-installer-config.yaml | |||
network: | |||
ethernets: | |||
ens18: | |||
dhcp4: true | |||
ens19: | |||
dhcp4: no | |||
dhcp6: no | |||
addresses: [192.168.2.4/24, ] | |||
version: 2 | |||
После чего нужно перезагружаться | |||
reboot | |||
== Подключение каталога Nextcloud по NFS == | |||
Создадим каталог для монтирования | |||
mkdir /media/nextcloud | |||
Установим клиент NFS | |||
apt-get install nfs-common | |||
после чего добавим в '''fstab''' автомонтирование | |||
nano /etc/fstab | |||
добив в конфиг строку | |||
192.168.2.1:/mnt/meganas/nextcloud /media/nextcloud nfs defaults 0 2 | |||
сохраняем и выполняем авто монтирование | |||
mount -a | |||
каталог есть | |||
==Подготовка к установке Nextcloud== | |||
Начинается все с установки Apache web server | |||
<br /> | |||
===Apache=== | |||
Устанавливаем из репозиториев apache:<syntaxhighlight lang="bash"> | |||
apt-get -y install apache2 | |||
</syntaxhighlight>Запускаем процесс apache:<syntaxhighlight lang="bash"> | |||
service apache2 start | |||
#или по новому | |||
systemctl start apache2 | |||
</syntaxhighlight>Делам так чтобы стартовал при перезапуске:<syntaxhighlight lang="bash"> | |||
systemctl enable apache2 | |||
</syntaxhighlight>Смотрим статус, должно быть '''Active: active (running)''':<syntaxhighlight lang="bash"> | |||
systemctl status apache2 | |||
</syntaxhighlight>Узнаем ip адрес машины, чтобы вписать в конфиг | |||
ip a | |||
Конфигурация:<syntaxhighlight lang="bash"> | |||
nano /etc/apache2/sites-available/nc.mywolfram.ru.conf | |||
</syntaxhighlight>Вставляем в документ это:<syntaxhighlight lang="apacheconf"> | |||
<VirtualHost *:80> | |||
DocumentRoot /var/www/nextcloud/ | |||
ServerName nc.mywolfram.ru | |||
RemoteIPHeader X-Forwarded-For | |||
RemoteIPInternalProxy 192.168.3.47/24 | |||
<Directory /var/www/nextcloud/> | |||
Require all granted | |||
AllowOverride All | |||
Options FollowSymLinks MultiViews | |||
LimitRequestBody 10737418240 | |||
<IfModule mod_dav.c> | |||
Dav off | |||
</IfModule> | |||
</Directory> | |||
</VirtualHost> | |||
</syntaxhighlight>Сохранить изменения. | |||
Добавляем сайт, включаем реврайт, перезагружаем apache.<syntaxhighlight lang="bash"> | |||
a2ensite nc.mywolfram.ru | |||
a2enmod a2enmod rewrite headers env dir mime setenvif remoteip | |||
systemctl reload apache2 | |||
</syntaxhighlight> | |||
===PHP=== | |||
С PHP все просто. | |||
apt-get install php zip libapache2-mod-php php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip php-mysql php-bcmath php-gmp -y | |||
Да - это установка всех нужных модулей одной командой. | |||
==== php.ini ==== | |||
Файл находится в директории '''/etc/php/7.4/apache2/''' | |||
Внесем в него некоторые изменения: | |||
nano '''/etc/php/7.4/apache2/php.ini''' | |||
лимит на загрузку файлов | |||
upload_max_filesize = 10G | |||
Изменить лимит памяти до 512 | |||
nano /etc/php/7.4/apache2/php.ini | |||
memory_limit = 512M | |||
<br /> | |||
===MariaDB (Можно заменить на mysql)=== | |||
База данных. | |||
Устанавливаем из репозиториев: | |||
apt-get install mariadb-server –y | |||
'''или mysql''' | |||
apt-get install mysql-server -y | |||
Запускаем процесс, mariadb или mysql | |||
systemctl start mariadb | |||
Делам так чтобы стартовал при перезапуске mariadb или mysql | |||
systemctl enable mariadb | |||
Смотрим статус, должно быть '''Active: active (running) mariadb или mysql''' | |||
systemctl status mariadb | |||
Далее, настройка для mariadb и mysql одинакова | |||
mysql_secure_installation | |||
''Set root password? [Y/n]'' '''Y''' | |||
Вводим пароль пользователя: пароль_для_sql | |||
''Remove anonymous users? [Y/n]'' '''Y''' | |||
''Disallow root login remotely? [Y/n]'' '''Y''' | |||
''Remove test database and access to it? [Y/n]'' '''Y''' | |||
''Reload privilege tables now? [Y/n]'' '''Y''' | |||
Перезагружаем процесс: | |||
systemctl restart mariadb | |||
Настраиваем пользователя. | |||
mysql -u root -p | |||
Вводим вышеуказанный пароль. | |||
CREATE DATABASE nextclouddb; | |||
CREATE USER ''''nextcloud'''<nowiki/>'@'localhost' IDENTIFIED BY 'пароль базы'; | |||
GRANT ALL PRIVILEGES ON '''nextclouddb'''.* TO ''''nextcloud'''<nowiki/>'@'localhost'; | |||
FLUSH PRIVILEGES; | |||
\q | |||
nextclouddb - имя базы | |||
vovacloud - пользователь базы | |||
service apache2 reload<br /> | |||
==Nextcloud== | |||
[[Файл:Облачный сервер Nextcloud - Демонстрация получения ссылки.png|мини|Демонстрация получения ссылки]] | |||
Нам нужно загрузить архив с nextcloud с официального сайта. Там жмем на северную версию и копируем ссылку с кнопки загрузить. | |||
Как это сделать, идем на официальный сайт [https://nextcloud.com/install/ nextcloud], выбираем загрузку для сервера. И на кнопке скачать выполняем копирование ссылки. Это и есть прямой путь к получению архива. | |||
<br /> | |||
===Загрузка и распаковка=== | |||
wget полученная_нами_ссылка | |||
Пример: | |||
wget <nowiki>https://download.nextcloud.com/server/releases/nextcloud-18.0.3.zip</nowiki> | |||
Происходит загрузка в каталог, который сейчас открыт | |||
Распаковываем скачанный архив в '''/var/www/html/''' | |||
unzip nextcloud-18.0.1.zip -d /var/www/html/ | |||
<br /> | |||
===Предоставление прав=== | |||
Делам папку '''/nextcloud''' принадлежащей группе и пользователю www-data: | |||
chown -R www-data:www-data /var/www/html/nextcloud | |||
Так же у меня для хранения самих файлов есть каталог '''/media/nextcloud''', создан был при установке, в него примонтирован раздел на SSD. | |||
Делаю папку '''/media/nextcloud''' принадлежащей группе и пользователю www-data: | |||
chown -R www-data:www-data /media/nextcloud | |||
Даю папкам права на запись в соответствии со значением 755: | |||
chmod 755 /var/www/html/nextcloud | |||
chmod 755 /media/nextcloud | |||
<br /> | |||
===Первый запуск=== | |||
Открываем Nextcloud в браузере: | |||
<nowiki>http://адрес__машины_nextcloud/</nowiki> | |||
Пример: | |||
http://192.168.1.154<nowiki/>/ | |||
Нас приветствует первая настройка. | |||
Имя пользователя: Придумываем свое имя пользователя. (vova0108) | |||
Пароль: Придумываем совой пароль | |||
Каталог с данными: в моём случае выше упомянуты '''/media/nextcloud''' | |||
Пользователь базы данных: | |||
Пароль базы данных: | |||
Название базы: | |||
Готово. | |||
Ожидаем первичной настройки. | |||
<br /> | |||
===Настройка '''config.php'''=== | |||
После окончания осталось поправить '''config.php''': | |||
nano /var/www/html/nextcloud/config/config.php | |||
В нем нужно прописать дополнительные доверенные адреса, чтобы он нас с них пускал:<syntaxhighlight lang="php"> | |||
<?php | |||
$CONFIG = array ( | |||
'instanceid' => 'ocuyjdpcoq7j', | |||
'passwordsalt' => '8SPnKr5RkCP0+EGp3hfSHU1Ypdw/EF', | |||
'secret' => '3P99k361V/tqX76GRVFoNJtwYTm8Mtsv8L782yJk+URFK5Uf', | |||
'trusted_domains' => | |||
array ( | |||
0 => '192.168.1.145', | |||
1 => '192.168.3.47', | |||
2 => 'nc.mywolfram.ru', | |||
), | |||
'datadirectory' => '/media/nextcloud', | |||
'dbtype' => 'mysql', | |||
'version' => '31.0.0.18', | |||
'htaccess.RewriteBase' => '/', | |||
'overwrite.cli.url' => 'https://nc.mywolfram.ru', | |||
'dbname' => 'nextclouddb', | |||
'dbhost' => 'localhost', | |||
'dbport' => '', | |||
'dbtableprefix' => 'oc_', | |||
'mysql.utf8mb4' => true, | |||
'dbuser' => 'nextcloud', | |||
'dbpassword' => '01082008', | |||
'installed' => true, | |||
'maintenance' => false, | |||
'trusted_proxies' => | |||
array ( | |||
0 => '192.168.3.47', | |||
), | |||
'overwriteprotocol' => 'https', | |||
'maintenance_window_start' => 1, | |||
'theme' => '', | |||
'loglevel' => 2, | |||
'app_install_overwrite' => | |||
array ( | |||
0 => 'keeweb', | |||
), | |||
'max_upload_size' => '10G', | |||
'max_chunk_size' => '10G', | |||
'memcache.local' => '\\OC\\Memcache\\Memcached', | |||
'memcache.distributed' => '\\OC\\Memcache\\Memcached', | |||
'memcache.locking' => '\\OC\\Memcache\\Memcached', | |||
'default_phone_region' => 'RU', | |||
); | |||
</syntaxhighlight>Я добавляю много адресов, это уже с учётом того что есть прокси nginx и домен. | |||
1.230 - это машина nginx | |||
===Скрытие index.php=== | |||
Чтобы убрать index.php в адресной строке | |||
в файле '''config.php''' исправить и добавит строку. | |||
'overwrite.cli.url' => '<nowiki>https://nc.mywolfram.ru'</nowiki>, | |||
'htaccess.RewriteBase' => '/', | |||
Обязательно не от '''root'''! | |||
Запустить из каталога '''/var/www/html/nextcloud/''' | |||
cd /var/www/html/nextcloud/ | |||
sudo -u www-data php occ maintenance:update:htaccess | |||
Настройка Nextcloud закончена. | |||
=== Настройка Memcache === | |||
[https://abc-server.com/ru/blog/administration/caching-cloud/ источник с данными для установки] | |||
[https://www.dmosk.ru/miniinstruktions.php?mini=nextcloud-apache-ubuntu источник с настройками для opcache] | |||
Устанавливаем нужные модули | |||
apt-get install memcached | |||
apt-get install php-memcache | |||
apt-get install php-memcached | |||
''apt-get install php-apcu'' | |||
Добавляем в '''''config.php''''' строку '''''memcache.local' => '\OC\Memcache\APCu',''''' | |||
nano /var/www/html/nextcloud/config/config.php | |||
<syntaxhighlight> | |||
$CONFIG = array ( | |||
.... | |||
array ( | |||
0 => '192.168.1.130', | |||
1 => '192.168.1.230', | |||
2 => 'nc.mywolfram.ru', | |||
), | |||
.... | |||
'memcache.local' => '\OC\Memcache\APCu', | |||
.... | |||
), | |||
</syntaxhighlight>в '''php.ini''' включить opcache | |||
nano /etc/php/7.4/apache2/php.ini | |||
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 | |||
=== Включить строгую безопасность транспорта HTTP === | |||
Добавить в файл '''nc.mywolfram.ru.conf''' строки | |||
nano /etc/apache2/sites-available/nc.mywolfram.ru.conf | |||
<syntaxhighlight> | |||
<VirtualHost *:80> | |||
..... | |||
<IfModule mod_headers.c> | |||
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" | |||
</IfModule> | |||
</VirtualHost> | |||
</syntaxhighlight> | |||
еще команда | |||
=== В базе данных отсутствуют некоторые индексы === | |||
sudo -u www-data php /var/www/html/nextcloud/occ db:add-missing-indices | |||
== Не актуально в 20 == | |||
=== Настройка супер кодировки (Смайлики) === | |||
MariaDB 10.2 и старше - на момент установки была 10.1 | |||
в файле /etc/mysql/my.cnf | |||
nano /etc/mysql/my.cnf | |||
В конце добавляем блок | |||
[mysqld] | |||
innodb_large_prefix=true | |||
innodb_file_format=barracuda | |||
innodb_file_per_table=1 | |||
Если версия MariaDB 10.3 то: | |||
[mysqld] | |||
innodb_file_per_table=1 | |||
перезагружаем MariaDB | |||
systemctl restart mariadb | |||
далее идем в настройки базы; | |||
mysql -u root -p | |||
Вводим пароль базы и вводим; | |||
SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%"; | |||
Все значения должны быть “Antelope” | |||
Идем в папку с облаком; | |||
cd /var/www/html/nextcloud/ | |||
Переходим в режим разработчика nextcloud | |||
sudo -u www-data php occ maintenance:mode --on | |||
Снова заходим в базу MariaDB и вводим пароль базы данных | |||
mysql -u root -p | |||
Вставляем; | |||
ALTER DATABASE nextclouddb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; | |||
nextclouddb - это название базы данных, должен быть такой результат: | |||
Query OK, 1 row affected (0.00 sec) | |||
Выходим из базы | |||
\q | |||
Устанавливаем <code>mysql.utf8mb4</code> значение true в вашем config.php: | |||
sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true" | |||
конвертируем все таблицы в новый формат, это не быстро: | |||
sudo -u www-data php occ maintenance:repair | |||
Отключить режим обслуживания: | |||
sudo -u www-data php occ maintenance: mode --off | |||
Ура! | |||
== Решение проблемм == | |||
[https://adminunix.ru/ustranenie-problem-s-oblachny-m-hranilishhem-nextcloud/ ист 1] | |||
Текущая версия от 15:38, 11 марта 2025

Своими словами. Аналог Яндекс, Google дисков. То есть web доступ к файлам, и клиент на все платформы для синхронизации. Но есть одно маленькое, но. Размерность, скорость и фишки делаются на свое усмотрение. На собственном железе. Все данные рядом, или точно известно где они.
Настройка Proxmox для Nextcloud
Наше облако базируется на системном хранилище local-lvm, а вот сами данные будут храниться на SSD на 960 гигабайт из Китая. Пока без рейда (.
Поэтому после аппаратного подключения накопителя к серверу, нужно на нем создать раздел и отформатировать в ext4.
Самое интересное то, что Proxmox как бы конфигурируется через web, но работу с накопителями на низком уровне можно осуществить только из консоли.
Туда и переходим, в PowerShell конечно же.
ssh vova@192.168.1.130
Водим пароль.
Подключение накопителя к Proxmox
Просмотр разделов
Смотрим что там у нас по разделам.
lsblk
Тут должно быть несколько дисков. Может быть так что нужный sda или наоборот sdb. Наш тот у которого нет разделов.
Пример:
sda 8:0 0 960G 0 disk sdb 8:16 0 120G 0 disk ├─sdb1 8:17 0 1007K 0 part ├─sdb2 8:18 0 512M 0 part └─sdb3 8:19 0 119.5G 0 part
sda и есть наша SSD на 960 гигабайт.
Создание раздела
На ней и создадим раздел.
fdisk /dev/sda
Запустилась программа по созданию разделов.
Смотрим информацию о командах.
m
Создаем новый раздел
n
Enter, Enter, Enter, Enter
Запишем изменения
w
Теперь если взглянуть на разделы.
lsblk
Видно, что
sda 8:0 0 960G 0 disk └─sda1 8:1 0 960G 0 part
появился раздел sda1.
Форматирование раздела
от его и нужно форматировать в ext4.
mkfs.ext4 /dev/sda1
Соглашаемся и дожидаемся окончания. Теперь у нас есть файловая система на накопителе SSD.
Осталось выполнить монтирование раздела в var/lib/ с нужным нам именем, без разницы каким.
Делать мы это будем не по букве диска, так как эта штука не статичная. Может меняться при следующем запуске системы. И вручную монтировать мы тоже не хотим.
ID разделов
Делать будем по ID накопителя. Узнаем:
blkid
Видим много чего, но нас интересует наш раздел /dev/sda1. Вот он:
/dev/sda1: UUID="2e51447b-2ed3-4380-b497-401114b7261f" TYPE="ext4" PARTUUID="23d0899a-01"
И нужный нам UUID накопителя.
Монтирование раздела
Создадим каталог, в который будет монтироваться раздел. Назовем его SATA2
mkdir /var/lib/SATA2
Монтируем чтобы не перезагружаться.
mount -t ext4 /dev/sda1 /var/lib/SATA2/
Авто монтирование раздела
Для авто монтирования в систему открываем в nano файл fstab.
nano /etc/fstab
В конце добавляем:
UUID=2e51447b-2ed3-4380-b497-401114b7261f /var/lib/SATA2 ext4 defaults 0 1
ctrl + o
ctrl + x
Цифры в конце указываю на то, что система не загрузится если не найдет данный накопитель.
Готово.
Создание виртуальной машины

Подключение хранилища
Теперь web интерфейсе переходим в раздел Датацентр.
Выбираем: “Хранилище”
Нажимаем: “Добавить”, в списке выбираем: “Каталог”.
В появившемся окне:
ID: SATA2
название нашего ранее созданного хранилища.
Каталог: /var/lib/SATA2/
физический путь к примонтированному разделу.
Содержимое: Резервная копия, ISO образ, Шаблон контейнера
то, что можно размещать в этом хранилище.
Добавить.

Загрузка образа Ubuntu
Получается мы устанавливаем ubuntu server как виртуальную в среде Proxmox.
На данный момент это версия 18.04.4 LTS.
На этот раз ни на какие накопители ничего записывать не нужно.
Требуется загрузить образ в пространство Proxmox, в хранилище. В нашем случае подойдет local.
Выбираем local в узле pve, переходим в “Содержимое”.
Нажимаем “Загрузить” и выбираем наш образ.
Загружаем, ожидаем.
Создание VM
Нажимаем: создать VM:
В разделе Общее:
Узел: pve
VM ID: 100
Имя: cloud
В разделе ОС:
Хранилище: local
ISO образ: То, что загрузили с официального сайта Ubuntu.
В разделе Жесткий диск:
Шина: VirtIO Block
Хранилище: local-lvm
Размер: 20
Кэш: Write through
В разделе Процессор:
Ядра: 2
В разделе Память:
Память: 2048
Готово.
Появилась виртуальная машина с номером 100 и названием cloud в разделе pve.
Теперь сразу же подкинем этой машине наш накопитель SSD для хранения “облачных данных”.
Переходим в неё, в раздел Оборудование и нажимаем “Добавить”, выбираем Жесткий диск.
Хранилище: SATA2
Размер: 834
в моем случае, на пару гигабайт меньше, чем доступно.
Кэш: Write through
Добавить.
Нажимаем Запуск.
Установка Ubuntu
Установка точно такая же как на реальном железе. Но все буде рассказано.
Переходим в раздел Консоль нашей 100 виртуальной машины. Или если все на отдельном сервере, просто устанавливаем систему с USB накопителя.
Видим запуск ОС и выбор языка. Выбираем Русский.
Клавиатура остается на Английском.
Готово.
Видим, что машина получила IP адрес от нашего DHCP сервера.
192.168.1.130/24
Создание разделов
В разделе Filesystem setup выбираем Вручную. Мы же профессионалы.
Видим 2 накопителя:
Cначало swop: /dev/vda/ 20G
Жмем и выбираем: Add Partition
Size: 2
Format: swop
Create
Теперь создадим boot /dev/vda/ 20G
Size: 1
Format: ext4
Mount: /boot
Create
Теперь уже основной каталог: /dev/vda/ 20G
Size: ничего
Format: ext4
Mount: /
Create
Теперь диск хранилище: /dev/vdb/ 834G
Size: ничего
Format: ext4
Mount: other /media/nextcloud
Create
Идем в самый низ и выбираем: Готово. Продолжить: Да.
Начинается установка. При этом она идет в фоне.
В это время заполняем данные пользователя и машины:
Создание пользователя
Your name: имя_пользователя
your server’s name: nextcloud
Pick a username: имя_пользователя
Choose password: пароль_сервера_cloud
Confirm your password: пароль_сервера_cloud
Готово.
На вопрос установить ли ssh соглашаемся, поставив крестик пробелом.
Готово.
Ничего не выбираем и говорим Готово. Ждем окончания установки.
По окончании: Reboot.
Enter
Информация, пароли, имена.
Первичная настройка
ОС перезагрузиться, но уже в установленном виде. С ней бы выполнить стандартный набор операций.
PowerShell
ssh vova@192.168.1.130
Вот мы и в консоли будущего облака. Так как мы не root нужно выполнять все действия через команду sudo, или ввести sudo su и ввести пароль. Это сделает все наши операции от root.
обновляем репозитории.
apt-get update
выполняем обновление пакетов из репозиториев.
apt-get upgrade -y
устанавливаем файловый менеджер mc.
apt-get install mc -y
устанавливаем архиватор.
apt-get install unzip -y
ОС готова переходим к установке Nextcloud.
Настройка сети
Добавляем виртуальную сетевую карту ens19. Присвоим адрес этой машине номер 4.
nano /etc/netplan/00-installer-config.yaml
network:
ethernets:
ens18:
dhcp4: true
ens19:
dhcp4: no
dhcp6: no
addresses: [192.168.2.4/24, ]
version: 2
После чего нужно перезагружаться
reboot
Подключение каталога Nextcloud по NFS
Создадим каталог для монтирования
mkdir /media/nextcloud
Установим клиент NFS
apt-get install nfs-common
после чего добавим в fstab автомонтирование
nano /etc/fstab
добив в конфиг строку
192.168.2.1:/mnt/meganas/nextcloud /media/nextcloud nfs defaults 0 2
сохраняем и выполняем авто монтирование
mount -a
каталог есть
Подготовка к установке Nextcloud
Начинается все с установки Apache web server
Apache
Устанавливаем из репозиториев apache:
apt-get -y install apache2
Запускаем процесс apache:
service apache2 start
#или по новому
systemctl start apache2
Делам так чтобы стартовал при перезапуске:
systemctl enable apache2
Смотрим статус, должно быть Active: active (running):
systemctl status apache2
Узнаем ip адрес машины, чтобы вписать в конфиг
ip a
Конфигурация:
nano /etc/apache2/sites-available/nc.mywolfram.ru.conf
Вставляем в документ это:
<VirtualHost *:80>
DocumentRoot /var/www/nextcloud/
ServerName nc.mywolfram.ru
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 192.168.3.47/24
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
LimitRequestBody 10737418240
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>
Сохранить изменения. Добавляем сайт, включаем реврайт, перезагружаем apache.
a2ensite nc.mywolfram.ru
a2enmod a2enmod rewrite headers env dir mime setenvif remoteip
systemctl reload apache2
PHP
С PHP все просто.
apt-get install php zip libapache2-mod-php php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip php-mysql php-bcmath php-gmp -y
Да - это установка всех нужных модулей одной командой.
php.ini
Файл находится в директории /etc/php/7.4/apache2/
Внесем в него некоторые изменения:
nano /etc/php/7.4/apache2/php.ini
лимит на загрузку файлов
upload_max_filesize = 10G
Изменить лимит памяти до 512
nano /etc/php/7.4/apache2/php.ini
memory_limit = 512M
MariaDB (Можно заменить на mysql)
База данных.
Устанавливаем из репозиториев:
apt-get install mariadb-server –y
или mysql
apt-get install mysql-server -y
Запускаем процесс, mariadb или mysql
systemctl start mariadb
Делам так чтобы стартовал при перезапуске mariadb или mysql
systemctl enable mariadb
Смотрим статус, должно быть Active: active (running) mariadb или mysql
systemctl status mariadb
Далее, настройка для mariadb и mysql одинакова
mysql_secure_installation
Set root password? [Y/n] Y
Вводим пароль пользователя: пароль_для_sql
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Перезагружаем процесс:
systemctl restart mariadb
Настраиваем пользователя.
mysql -u root -p
Вводим вышеуказанный пароль.
CREATE DATABASE nextclouddb; CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'пароль базы'; GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextcloud'@'localhost'; FLUSH PRIVILEGES; \q
nextclouddb - имя базы
vovacloud - пользователь базы
service apache2 reload
Nextcloud

Нам нужно загрузить архив с nextcloud с официального сайта. Там жмем на северную версию и копируем ссылку с кнопки загрузить.
Как это сделать, идем на официальный сайт nextcloud, выбираем загрузку для сервера. И на кнопке скачать выполняем копирование ссылки. Это и есть прямой путь к получению архива.
Загрузка и распаковка
wget полученная_нами_ссылка
Пример:
wget https://download.nextcloud.com/server/releases/nextcloud-18.0.3.zip
Происходит загрузка в каталог, который сейчас открыт
Распаковываем скачанный архив в /var/www/html/
unzip nextcloud-18.0.1.zip -d /var/www/html/
Предоставление прав
Делам папку /nextcloud принадлежащей группе и пользователю www-data:
chown -R www-data:www-data /var/www/html/nextcloud
Так же у меня для хранения самих файлов есть каталог /media/nextcloud, создан был при установке, в него примонтирован раздел на SSD.
Делаю папку /media/nextcloud принадлежащей группе и пользователю www-data:
chown -R www-data:www-data /media/nextcloud
Даю папкам права на запись в соответствии со значением 755:
chmod 755 /var/www/html/nextcloud chmod 755 /media/nextcloud
Первый запуск
Открываем Nextcloud в браузере:
http://адрес__машины_nextcloud/
Пример:
http://192.168.1.154/
Нас приветствует первая настройка.
Имя пользователя: Придумываем свое имя пользователя. (vova0108)
Пароль: Придумываем совой пароль
Каталог с данными: в моём случае выше упомянуты /media/nextcloud
Пользователь базы данных:
Пароль базы данных:
Название базы:
Готово.
Ожидаем первичной настройки.
Настройка config.php
После окончания осталось поправить config.php:
nano /var/www/html/nextcloud/config/config.php
В нем нужно прописать дополнительные доверенные адреса, чтобы он нас с них пускал:
<?php
$CONFIG = array (
'instanceid' => 'ocuyjdpcoq7j',
'passwordsalt' => '8SPnKr5RkCP0+EGp3hfSHU1Ypdw/EF',
'secret' => '3P99k361V/tqX76GRVFoNJtwYTm8Mtsv8L782yJk+URFK5Uf',
'trusted_domains' =>
array (
0 => '192.168.1.145',
1 => '192.168.3.47',
2 => 'nc.mywolfram.ru',
),
'datadirectory' => '/media/nextcloud',
'dbtype' => 'mysql',
'version' => '31.0.0.18',
'htaccess.RewriteBase' => '/',
'overwrite.cli.url' => 'https://nc.mywolfram.ru',
'dbname' => 'nextclouddb',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextcloud',
'dbpassword' => '01082008',
'installed' => true,
'maintenance' => false,
'trusted_proxies' =>
array (
0 => '192.168.3.47',
),
'overwriteprotocol' => 'https',
'maintenance_window_start' => 1,
'theme' => '',
'loglevel' => 2,
'app_install_overwrite' =>
array (
0 => 'keeweb',
),
'max_upload_size' => '10G',
'max_chunk_size' => '10G',
'memcache.local' => '\\OC\\Memcache\\Memcached',
'memcache.distributed' => '\\OC\\Memcache\\Memcached',
'memcache.locking' => '\\OC\\Memcache\\Memcached',
'default_phone_region' => 'RU',
);
Я добавляю много адресов, это уже с учётом того что есть прокси nginx и домен.
1.230 - это машина nginx
Скрытие index.php
Чтобы убрать index.php в адресной строке
в файле config.php исправить и добавит строку.
'overwrite.cli.url' => 'https://nc.mywolfram.ru',
'htaccess.RewriteBase' => '/',
Обязательно не от root!
Запустить из каталога /var/www/html/nextcloud/
cd /var/www/html/nextcloud/
sudo -u www-data php occ maintenance:update:htaccess
Настройка Nextcloud закончена.
Настройка Memcache
источник с данными для установки
источник с настройками для opcache
Устанавливаем нужные модули
apt-get install memcached
apt-get install php-memcache
apt-get install php-memcached
apt-get install php-apcu
Добавляем в config.php строку memcache.local' => '\OC\Memcache\APCu',
nano /var/www/html/nextcloud/config/config.php
$CONFIG = array (
....
array (
0 => '192.168.1.130',
1 => '192.168.1.230',
2 => 'nc.mywolfram.ru',
),
....
'memcache.local' => '\OC\Memcache\APCu',
....
),в php.ini включить opcache
nano /etc/php/7.4/apache2/php.ini
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
Включить строгую безопасность транспорта HTTP
Добавить в файл nc.mywolfram.ru.conf строки
nano /etc/apache2/sites-available/nc.mywolfram.ru.conf
<VirtualHost *:80>
.....
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
</VirtualHost>
еще команда
В базе данных отсутствуют некоторые индексы
sudo -u www-data php /var/www/html/nextcloud/occ db:add-missing-indices
Не актуально в 20
Настройка супер кодировки (Смайлики)
MariaDB 10.2 и старше - на момент установки была 10.1
в файле /etc/mysql/my.cnf
nano /etc/mysql/my.cnf
В конце добавляем блок
[mysqld] innodb_large_prefix=true innodb_file_format=barracuda innodb_file_per_table=1
Если версия MariaDB 10.3 то:
[mysqld] innodb_file_per_table=1
перезагружаем MariaDB
systemctl restart mariadb
далее идем в настройки базы;
mysql -u root -p
Вводим пароль базы и вводим;
SELECT NAME, SPACE, FILE_FORMAT FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME like "nextcloud%";
Все значения должны быть “Antelope”
Идем в папку с облаком;
cd /var/www/html/nextcloud/
Переходим в режим разработчика nextcloud
sudo -u www-data php occ maintenance:mode --on
Снова заходим в базу MariaDB и вводим пароль базы данных
mysql -u root -p
Вставляем;
ALTER DATABASE nextclouddb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
nextclouddb - это название базы данных, должен быть такой результат:
Query OK, 1 row affected (0.00 sec)
Выходим из базы
\q
Устанавливаем mysql.utf8mb4 значение true в вашем config.php:
sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
конвертируем все таблицы в новый формат, это не быстро:
sudo -u www-data php occ maintenance:repair
Отключить режим обслуживания:
sudo -u www-data php occ maintenance: mode --off
Ура!