Облачный сервер Nextcloud: различия между версиями

Материал из wolfram
Перейти к навигации Перейти к поиску
 
(не показано 35 промежуточных версий этого же участника)
Строка 2: Строка 2:
Своими словами. Аналог Яндекс, Google дисков. То есть '''web''' доступ к файлам, и клиент на все платформы для синхронизации. Но есть одно маленькое, но. Размерность, скорость и фишки делаются на свое усмотрение. На собственном железе. Все данные рядом, или точно известно где они.
Своими словами. Аналог Яндекс, Google дисков. То есть '''web''' доступ к файлам, и клиент на все платформы для синхронизации. Но есть одно маленькое, но. Размерность, скорость и фишки делаются на свое усмотрение. На собственном железе. Все данные рядом, или точно известно где они.


===[[Настройка Proxmox для Nextcloud]]===
<br />
Сервер базируется на гипервизоре Proxmox, поэтому если так же, переходим к [[Настройка Proxmox для Nextcloud|настройке гипервизора для nextcloud]].
 
==Настройка 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'''
 
'''Добавить'''.  


=== Установка Ubuntu ===
Нажимаем '''Запуск.''' <br />
==Установка Ubuntu==
Установка точно такая же как на реальном железе. Но все буде рассказано.  
Установка точно такая же как на реальном железе. Но все буде рассказано.  


Строка 15: Строка 210:


'''Готово.'''
'''Готово.'''


Видим, что машина получила '''IP адрес''' от нашего '''DHCP''' сервера.  
Видим, что машина получила '''IP адрес''' от нашего '''DHCP''' сервера.  
  '''192.168.1.130'''/24  
  '''192.168.1.130'''/24  
 
<br />
==== Создание разделов ====
===Создание разделов===
В разделе '''Filesystem setup''' выбираем '''Вручную'''. Мы же профессионалы.  
В разделе '''Filesystem setup''' выбираем '''Вручную'''. Мы же профессионалы.  


Строка 76: Строка 270:
<br />
<br />


==== Создание пользователя ====
===Создание пользователя===
Your name: '''vova'''  
Your name: '''имя_пользователя'''  


your server’s name: '''cloud'''  
your server’s name: '''nextcloud'''  


Pick a username: '''vova'''  
Pick a username: '''имя_пользователя'''  


Choose password: '''01082010'''  
Choose password: '''пароль_сервера_cloud'''  


Confirm your password: '''01082010'''  
Confirm your password: '''пароль_сервера_cloud'''  


'''Готово.'''  
'''Готово.'''  
Строка 100: Строка 294:
<br />
<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&#x20;onenote:https://d.docs.live.net/1ba17484d0963ecc/Документы/Записная%20книжка%20пользователя%20Владимир/Пароли.one#Мои%20сервисы&section-id={8D326A63-2198-4CAE-BC1F-3D883FECEB4F}&page-id={BC1C8534-C0AB-4BE4-B12F-E8197EF2D103}&end Информация, пароли, имена.]===
 
===Первичная настройка===
ОС перезагрузиться, но уже в '''установленном''' виде. С ней бы выполнить стандартный набор операций.  
ОС перезагрузиться, но уже в '''установленном''' виде. С ней бы выполнить стандартный набор операций.  


Строка 118: Строка 314:
  '''apt-get install unzip -y'''
  '''apt-get install unzip -y'''
ОС готова переходим к установке '''Nextcloud'''.
ОС готова переходим к установке '''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

Nextcloud - презентация

Своими словами. Аналог Яндекс, 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

Ура!

Решение проблемм

ист 1