Архив рубрики: Linux

Nextcloud + OnlyOffice + Let’s Encrypt + SMB хранилище

На момент написания, версии устанавливаемых продуктов были следующие: php8.3, nextcloud 31.0.5, onlyoffice 7.2

Установка производилась на Ubuntu 24.04.2 LTS. Процесс самой установки Ubuntu описывать не буду, ее и так много. Скажу лишь что при установке был выбран вариант минимальной установки.

Обновляем систему и устанавливаем вспомогательные утилиты.

sudo apt update & sudo apt upgrade -y
sudo apt install mc nano zip net-tools tcpdump iputils-ping bind9-dnsutils -y

Синхронизируем время и выставляем нужный часовой пояс:

Устанавливаем демона и разрешаем автозапуск

sudo apt install chrony -y
sudo systemctl enable chrony
sudo timedatectl set-timezone Europe/Moscow

Для изменения сервера времени, вносим изменения в файл /etc/ntpsec/ntp.conf

Не забываем про DNS и имя машины

Посмотреть имя машины

sudo hostnamectl

Задать имя

sudo hostnamectl set-hostname новое_имя

Перезагружаемся

# ——————————
# Этот пункт можно пропустить, если настраиваете облако на локальный диск, а не на отдельную машину с доступом по nfs
# ——————-

Устанавливаем nginx и запускаем

sudo apt install nginx -y
sudo nginx -V
sudo systemctl enable nginx
sudo systemctl start nginx

Ставим php

sudo apt install php-fpm php-mysql php php-curl php-gd php-json php-mbstring php-common php-xml php-zip php-opcache php-apcu php-imagick php-gmp php-intl -y

Ставим дополнительные пакеты для повышения производительности

apt install redis-server imagemagick memcached -y

Напомню про версию, на момент написания PHP 8.3

Производим необходимую настройку PHP

Правим /etc/php/8.3/fpm/pool.d/www.conf снимаем комментарии со следующих параметров

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Настраиваем php.ini: файл /etc/php/8.3/fpm/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
post_max_size = 40M
upload_max_filesize = 10M

Разрешаем автозапуск php-fpm и перезапускаем его:

sudo systemctl enable php8.3-fpm
sudo systemctl restart php8.3-fpm

Устанавливаем MariaDB:

sudo apt install mariadb-server -y
sudo systemctl enable mariadb
sudo systemctl start mariadb

Запуск сценария безопасности (здесь можно поменять пароль рута, убрать ненужные разрешения):

sudo mysql_secure_installation

Создаем базу данных для Nextcloud (в примере указан пароль pass_nextcloud, его обязательно заменить на свой) :

sudo mysql -u root -p

Вводим пароль рута для MariaDB и создаем базу

CREATE DATABASE nextcloud;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'pass_nextcloud';
GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'pass_nextcloud' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Теперь создаем файл конфигурации Nginx для Nextcloud

Правим файл /etc/nginx/sites-enable/nextcloud.conf если такового нет, создаем со следующим содержимым (nextcloud.domen заменить на свои)

server {
listen 80;
server_name nextcloud.domen;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name nextcloud.domen;

ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;

root /var/www/html/nextcloud;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
client_max_body_size 10G;
fastcgi_buffers 64 4K;

rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

index index.php;
error_page 403 = /core/templates/403.php;
error_page 404 = /core/templates/404.php;

location = /robots.txt {
  allow all;
  log_not_found off;
  access_log off;
}

location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
    deny all;
}

location / {
    rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
    rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
    rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
    rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
    try_files $uri $uri/ index.php;
}

location ~ ^(.+?\.php)(/.*)?$ {
    try_files $1 = 404;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$1;
    fastcgi_param PATH_INFO $2;
    fastcgi_param HTTPS on;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
    expires modified +30d;
    access_log off;
}
}

Далее получаем сертификаты для ssl

Установка Certbot и его плагина Nginx

sudo apt install certbot python3-certbot-nginx

Получаем сертификаты для всего что есть, я получал для всех поддоменов, которые были

Сначала запускаем с ключом —dry-run, проверяем все ли в порядке

sudo certbot certonly --agree-tos --email почта@администратора -d ваш.домен -d nextcloud.ваш.домен -d cloud.ваш.домен --nginx --dry-run

Если все хорошо, то получаем сертификаты

sudo certbot certonly --agree-tos --email почта@администратора -d ваш.домен -d nextcloud.ваш.домен -d cloud.ваш.домен -d zabbix.ваш.домен -d www.ваш.домен -d mail.ваш.домен --nginx

Сертификаты появятся в папке /etc/letsencrypt/live/ваш.домен cert.pem chain.pem fullchain.pem privkey.pem

Теперь их нужно подключить к сайту, правим файл /etc/nginx/sites-available/nextcloud.conf

ssl_certificate /etc/letsencrypt/live/ваш.домен/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваш.домен/privkey.pem;

Теперь устанавливаем сам Nextcloud:

# Скачиваем последнюю версию с сайте Nextcloud:
напоминаю, на момент написания статьи, последняя версия была 31.0.5
Перед скачиванием посмотрите текущий релиз

cd /tmp/
sudo wget https://download.nextcloud.com/server/releases/nextcloud-31.0.5.zip
sudo unzip nextcloud-31.0.5.zip
sudo cp -R nextcloud /var/www/nextcloud/
cd /var/www/
sudo chown -R www-data:www-data nextcloud/

Заходим на https://cloud.loc

Прописываем созданную ранее базу данных и пароль к ней.

sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint --no-interaction
sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices

Ставим Memcached Redis и APCu

sudo apt install memcached php-memcache php-memcached php-apcu -y
sudo apt install redis-server php-redis -y

Правим файл /var/www/nextcloud/config/config.php добавляем в конец, перед скобкой

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' =>
array (
  'host' => '127.0.0.1',
  'port' => 6379,
),
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcache.locking' => '\OC\Memcache\Memcached',
'memcached_servers' => [
   [ '127.0.0.1', 11211 ],
 ],

Переиндексация всех файлов и каталогов (если скопировали файлы не через интерфейсы nextcloud, то их надо переиндексировать)

sudo -u www-data php /var/www/nextcloud/occ files:scan --all

Устанавливаем OnlyOffice DocumentServer

Установка PostgreSQL, нужен для OnlyOffice

sudo apt install postgresql -y

После установки PostgreSQL создайте базу данных и пользователя PostgreSQL. Пользователем для созданной базы данных должны быть ‘onlyoffice’, пароль любой.

sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;"
sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'pass_onlyoffice';"
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"

Устанавливаем rabbitmq и nginx-extras для OnlyOffice:

sudo apt install rabbitmq-server -y
sudo apt install nginx-extras -y

Установка ONLYOFFICE Docs
Добавляем GPG-ключ:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
mkdir -p -m 700 ~/.gnupg
curl -fsSL https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE | gpg --no-default-keyring --keyring gnupg-ring:/tmp/onlyoffice.gpg --import
chmod 644 /tmp/onlyoffice.gpg
sudo chown root:root /tmp/onlyoffice.gpg
sudo mv /tmp/onlyoffice.gpg /usr/share/keyrings/onlyoffice.gpg

Добавляем репозиторий ONLYOFFICE Docs:

echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list

Обновляем кэш менеджера пакетов:

sudo apt-get update

Установите mscorefonts:

sudo apt install ttf-mscorefonts-installer

Установливаем ONLYOFFICE Docs

sudo apt install onlyoffice-documentserver -y

На момент статьи версия 8.3.3-18

Переводим onlyoffice на https

sudo cp -f /etc/onlyoffice/documentserver/nginx/ds-ssl.conf.tmpl /etc/onlyoffice/documentserver/nginx/ds.conf
sudo nano /etc/onlyoffice/documentserver/nginx/ds.conf

Меняем порт ssl не забыв пробросить его в роутере

listen 0.0.0.0:7443 ssl;
listen [::]:7443 ssl default_server;

Прописываем сертификат

ssl_certificate /etc/letsencrypt/live/ваш.домен/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваш.домен/privkey.pem;

Перезапускаем nginx

sudo service nginx restart

Ну, вот и все, останется через веб-интерфейс установить плагин ONLYOFFICE в вашем Nextcloud и прописать сервер https://ваш.домен:7443

Секретный ключ OnlyOffice

Что бы посмотреть секретный ключ сгенерированный OnlyOffice:

cat /etc/onlyoffice/documentserver/local.json | grep string

Перезапуск сервисов

systemctl restart ds-docservice
systemctl restart ds-docservice
systemctl restart ds-docservice
systemctl restart nginx

Возможные ошибки

При связке nextcloud и onlyoffice ошибка в лог файле /var/log/onlyoffice/documentserver/nginx.error.log

2025/06/16 10:59:28 [error] 371443#371443: *7 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: , request: "GET /healthcheck HTTP/1.1", upstream: "http://127.0.0.1:8000/healthcheck", host: "ваш.домен.loc:7443"

Правим файл /etc/onlyoffice/documentserver/nginx/includes/http-common.conf

upstream docservice {
server localhost:8000 max_fails=0 fail_timeout=0s;
}

Команда btrfs

btrfs check

  • Проверка файловой системы btrfs:

sudo btrfs check {{path/to/partition}}

  • Проверка и исправление файловой системы btrfs (опасно):

sudo btrfs check --repair {{path/to/partition}}

  • Показывать ход выполнения проверки:
Читать далее

Увеличение размера диска в Proxmox на примере Ubuntu 22.04LTS

Процесс вроде бы достаточно простой, поэтому пробежимся по шагам пока варится кофе.

В консоли виртуальной машины проверяем свободное место:

df -h

Увеличиваем размер диска виртуальной машины:

Указываем объем на который хотим увеличить:

Читать далее

PROXMOX. ОТКЛЮЧАЕМ КОММЕРЧЕСКИЙ РЕПОЗИТОРИЙ, ПОДКЛЮЧАЕМ БЕСПЛАТНЫЙ

Proxmox 8 и выше:

nano /etc/apt/sources.list.d/pve-enterprise.list
#deb https://enterprise.proxmox.com/debian/pve bookworm enterprise
deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
nano /etc/apt/sources.list.d/ceph.list
#deb https://enterprise.proxmox.com/debian/ceph-quincy bookworm enterprise
deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription

После обновляем:

apt update && apt upgrade -y
Читать далее

Меняем размер дисков KVM гостевых систем.

Первым действием увеличь размер нашей ВМ в WEB-интерфейсе Proxmox. Выбираем нашу ВМ (у меня это ВМ-108 “Kodi” с Ubuntu 20.04 на борту) переходим во вкладку Оборудование и выбираем наш диск, а далее Disk Action – Resize.

Я увеличил диск на 5 Гб. На изображение ниже размер Жесткого диска изменился на 20G

df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 15G 13G 1,8G 88% /
Читать далее

Бесплатный KMS сервер⁠⁠

Для активации корпоративных лицензий Microsoft в локальной сети организации рекомендуют использовать KMS сервер. Сервер многопользовательской активации KMS позволяет активировать продукты Microsoft Windows и Office без доступа в Интернет. Принцип активации такой, клиент подключившись к сети организации, выполняет запрос к серверу DNS, на предмет наличия записи SRV_VLMCS._TCP и если такая запись имеется, то клиент отправляет запрос KMS серверу для активации. Если запись в DNS сервере отсутствует или же в организации отсутствует DNS сервер, то сервер активации на клиенте указывается вручную. Для проверки наличия DNS записи необходимо ввести команду nslookup -type=srv _vlmcs._tcp. Далее сервер активации, в зависимости от установленного KMS ключа, либо активирует лицензию на 180 дней, либо нет. Через 180 дней процедура активации повторяется, хотя клиенты по умолчанию пытаются возобновить активацию через каждые семь дней. После возобновления активации клиента отсчет срока активации начинается заново. Установленный KMS ключ на сервере может активировать нижестоящие версии продуктов Microsoft. Таблицу активации клиентов можно посмотреть здесь. Можно активировать и вышестоящие версии, но для этого на сервере потребуется установить необходимые обновления.

Читать далее

Мониторинг дисков используя arcconf

Для начала нужно убедиться, что у нас именно Adaptec AAC-Raid

root@s05:~# lspci | grep -i raid
04:00.0 RAID bus controller: Adaptec AAC-RAID (Rocket) (rev 02)

Вывод может быть и такого типа

RAID bus controller [0104]: Adaptec AAC-RAID
RAID bus controller [0104]: Dell PowerEdge Expandable RAID Controller 3/Di
RAID bus controller [0104]: Adaptec AAC-RAID (Rocket)

Следующим шагом нужно установить opensource утилиту arcconf с моего любимого репозитория.

Читать далее

Добавление диска LVM в ProxMox

Рассмотрим два варианта добавления физических дисков в гипервизоре Proxmox.

После физического подключения диска к серверу необходимо получить информацию об аппаратной части в Proxmox, а точнее проверить наличие диска (рис.1). Чтобы узнать информацию о всех блочных устройствах воспользуемся командой «lsblk»

1. Создаем раздел на новом диске (В первый раз будет предложено создать файловую систему gpt):

cfdisk /dev/sdb
Читать далее

Файлы конфигураций виртуальных машин ProxMox

В ProxMox 5 и 6 файлы конфигурации контейнеров переехали в /etc/pve/lxc.
А файлы конфигураций виртуальных машин в ProxMox 5 лежат в директории /etc/pve/qemu-server/.

Proxmox 2.x

Файлы конфигураций машин qemu лежат в папке:

/etc/pve/nodes/proxmox/qemu-server/

Файлы конфигураций контейнеров OpenVZ лежат в папке:

 /etc/vz/conf/

В этих папках лежат файлы *.conf, а в файлах лежат все параметры виртуальных машин.

Как работать с LVM

В статье описаны основные моменты использования LVM для организации дисковой системы в Linux. Она поможет как чайникам разобраться с принципами ее работы, так и уже знающим LVM в качестве шпаргалки.

Используемые команды одинаково подойдут как для систем Red Hat / CentOS, так и Debian / Ubuntu.

Уровни абстракции

Работа с томами с помощью LVM происходит на 3-х уровнях абстракции:

  1. Физический уровень (PV). Сначала диск инициализируется командой pvcreate — в начале диска создается дескриптор группы томов. При этом важно заметить, что диск не обязательно должен быть физическим — мы можно отметить на использование обычный раздел диска.
  2. Группа томов (VG). С помощью команды vgcreate создается группа томов из инициализированных на предыдущем этапе дисков.
  3. Логический том (LV). Группы томов нарезаются на логические тома командой lvcreate.
Читать далее