1. Устанвливаем и обновляем ubuntu server

2. Проверяем версию php - apt search --names-only '^php[.0-9]{3}$ 

рекомендуемые версии можно посмотреть тут - https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html

если нужно установить версию отличную от имеющейся то по этой инструкции https://www.dmosk.ru/miniinstruktions.php?mini=php-ubuntu

кратко:

apt install software-properties-common

add-apt-repository ppa:ondrej/php

3. Устанавливаем PHP версии 8.3

export PHP_VER=8.3

apt install libapache2-mod-php${PHP_VER} php${PHP_VER}-common php${PHP_VER}-zip php${PHP_VER}-xml php${PHP_VER}-intl php${PHP_VER}-gd php${PHP_VER}-mysql php${PHP_VER}-mbstring php${PHP_VER}-curl php${PHP_VER}-imagick php${PHP_VER}-gmp php${PHP_VER}-bcmath libmagickcore-6.q16-6-extra

4. Устанавливаем севере БД и меняем настройки безопасности

apt install mariadb-server

mysql_secure_installation 

все по умолчанию кроме Switch to unix_socket authentication [Y/n] : n

5. Создаем БД для nextcloud

mariadb

CREATE DATABASE nextcloud;

SHOW DATABASES;

GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'mypassword';

FLUSH PRIVILEGES;

exit

6. Устанавливаем веб сервер

apt install apache2

7. Скачиваем и разворачиваем последнюю версию nextcloud

wget https://download.nextcloud.com/server/releases/latest.zip

unzip latest.zip

sudo mv nextcloud /var/www/

rm latest.zip

8. Меняем права на каталог

chown -R www-data:www-data /var/www/nextcloud/

если данные лежат отдельно то меняем и на каталог с данными

9. Файлы сайта для апача

nano /etc/apache2/sites-available/nextcloud.conf

<VirtualHost *:80>

  ServerName  cloud.domain.ru

  Redirect permanent / https://cloud.domain.ru/

</VirtualHost>

 

nano /etc/apache2/sites-available/nextcloud-ssl.conf

<IfModule mod_ssl.c>

<VirtualHost *:443>

  ServerAdmin Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

  DocumentRoot /var/www/nextcloud/

  ServerName  cloud.domain.ru

Redirect 301 /.well-known/carddav /remote.php/dav

Redirect 301 /.well-known/caldav /remote.php/dav

Redirect 301 /.well-known/webfinger /index.php/.well-known/webfinger

Redirect 301 /.well-known/nodeinfo /index.php/.well-known/nodeinfo

SSLEngine on

SSLCertificateFile /etc/ssl/domain.ru.crt

SSLCertificateKeyFile /etc/ssl/domain.ru.key

<IfModule mod_headers.c>

  Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

</IfModule>

</VirtualHost>

</IfModule>

10. Включаем сайт

a2dissite 000-default.conf

a2ensite nextcloud.conf

a2ensite nextcloud-ssl.conf

a2enmod dir env headers mime rewrite ssl

systemctl restart apache2

11. Переходим по адресу сайта cloud.domain.ru и вводим данные

12. Устраняем ошибки в конфигурации

устанавливаем систему кэширования

apt install redis-server php8.3-redis

в файле /etc/php/8.3/apache2/php.ini

меняем значение memory_limit на 512M и выше

opcache.revalidate_freq = 60

opcache.validate_timestamps = 0

комментируем параметр output_buffering 

добавляем индексы в БД и исправляем MIME

sudo -u www-data php occ db:add-missing-columns

sudo -u www-data php occ db:add-missing-indices

sudo -u www-data php occ db:add-missing-primary-keys

sudo -u www-data php occ maintenance:repair --include-expensive

создаем символьную ссылку osm-provider на osc-provider в каталоге /var/www/nextcloud

в файле конфигурации nextcloud добавляем след строки

  'maintenance_window_start' => 12,   (окно обслуживания локальное время-UTC +2 (будет в 2 часа ночи)

  'trusted_proxies' => ['192.168.1.1'],    (адрес прокси сервера)

  'default_phone_region' => 'RU',     (страна по умолчанию)

  'default_language' => 'ru', (язык по умолчанию)

  'force_language' => 'ru', (отключить выбор языка)

  'default_locale' => 'ru', (региональные стандарты)

  'defaultapp' => 'files',            (не показывать виджет при входе)

  'mail_from_address' => 'cloud',     (настройка почты)

  'mail_smtpmode' => 'smtp',

  'mail_sendmailmode' => 'smtp',

  'mail_domain' => 'domain.ru',

  'mail_smtphost' => 'mail.domain.ru',

  'mail_smtpport' => '25',

  'mail_smtpauth' => 1,

  'mail_smtpname' => Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.',

  'mail_smtppassword' => 'mail-pass',

  'memcache.local' => '\\OC\\Memcache\\Redis',    (настройка кэширования)

  'memcache.distributed' => '\\OC\\Memcache\\Redis',

  'memcache.locking' => '\\OC\\Memcache\\Redis',

  'redis' => 

      array (

          'host' => 'localhost',

          'port' => 6379,

      ),

systemctl restart apache2

Добавляем задания крон для пользователя www-data

crontab -u www-data -e

*/5  *  *  *  * php -f /var/www/nextcloud/cron.php

меняем тип фоновых заданий в основных параметрах на cron

 

используемые материалы

https://docs.nextcloud.com/server/latest/admin_manual/installation/example_ubuntu.html

https://www.dmosk.ru/miniinstruktions.php?mini=nextcloud-ubuntu

https://shadani.ru/blog/adminam/ustanovka-nextcloud-na-chistuju-vds-ubuntu-22-04/

https://kurazhov.ru/nextcloud-tuning

https://itproblog.ru/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-nextcloud/

https://www.perplexity.ai/search/ustanovka-i-nastroika-nextclou-T6FUqE_PS_OuH8B0U1ljMw

https://itsch.ru/collabora-office-ustanovka-servera-v-debian-11/

 

Добавление Collabora на отдельном сервере

1. устанавливаем и обновляем ubuntu server 22.04LTS

2. добавляем репозиторий и ключ

echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204 ./' | sudo tee /etc/apt/sources.list.d/collabora.list

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D

wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key && sudo apt-key add repomd.xml.key

3. устанавливаем 

sudo apt install coolwsd code-brand

4. отключаем TLS на coolwsd

sudo coolconfig set ssl.enable false

sudo coolconfig set ssl.termination true

5. добавляем адрес WOPI хоста nextcloud

sudo coolconfig set storage.wopi.host cloud.domain.ru

6. перезапускаем службу и проверяем что она работает

sudo systemctl restart coolwsd

sudo systemctl status coolwsd

7. ставим nginx и создаем конфигурационный файл

sudo apt install nginx

sudo nano /etc/nginx/conf.d/collabora.conf

 

server {

    listen      443 ssl;

    server_name  collabora.domain.ru;

    ssl_certificate /etc/ssl/domain.ru.crt;

    ssl_certificate_key /etc/ssl/domain.ru.key;

    # static files

    location ^~ /browser {

        proxy_pass http://localhost:9980;

        proxy_set_header Host $http_host;

    }

    # WOPI discovery URL

    location ^~ /hosting/discovery {

        proxy_pass http://localhost:9980;

        proxy_set_header Host $http_host;

    }

    # Capabilities

    location ^~ /hosting/capabilities {

        proxy_pass http://localhost:9980;

        proxy_set_header Host $http_host;

    }

    # main websocket

    location ~ ^/cool/(.*)/ws$ {

        proxy_pass http://localhost:9980;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

        proxy_set_header Host $http_host;

        proxy_read_timeout 36000s;

    }

    # download, presentation and image upload

    # we accept 'lool' to be backward compatible

    location ~ ^/(c|l)ool {

        proxy_pass http://localhost:9980;

        proxy_set_header Host $http_host;

    }

    # Admin Console websocket

    location ^~ /cool/adminws {

        proxy_pass http://localhost:9980;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "Upgrade";

        proxy_set_header Host $http_host;

        proxy_read_timeout 36000s;

    }

 

по пути /etc/ssl/ должны лежать правильные сертификат и ключ

в файл /etc/nginx/nginx.cfg добавить строку (иначе ошибки при конвертации превью)

http {
    ...
    client_max_body_size 20M;
}   

8. включаем конфигурацию

ln -s /etc/nginx/sites-available/collabora.conf /etc/nginx/sites-enabled/

sudo systemctl reload nginx

 

9. проверяем доступность сервиса

https://collabora.domain.ru/hosting/discovery

должен выдать XML файл

 

10. проверяем доступность сервера по ДНС имени с cloud

 

11. добавляем "Параметры сервера" в настройках Офис на nextcloud

 

используемые материалы

https://www.linuxbabe.com/ubuntu/integrate-collabora-onlinenextcloud-without-docker

https://itproblog.ru/%D0%B8%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%B0%D1%86%D0%B8%D1%8F-nextcloud-%D1%81-collabora-online/

https://sysadminium.ru/nextcloud-integration-with-collabora/

https://firstssl.ru/faq/ssl-installation/ustanovka-ssl-na-nginx

NewMixer (c) 2017