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://sysadminium.ru/nextcloud-integration-with-collabora/
https://firstssl.ru/faq/ssl-installation/ustanovka-ssl-na-nginx