[MySQL, Nginx, *nix, Облачные сервисы] Быстрый запуск Nextcloud и Onlyoffice на Ubuntu + SSL от Letsencrypt
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Мало того, что многие не доверяют общедоступным облакам, так они еще и предлагают непозволительно малые объемы дискового пространства.Однажды мне понадобилось 1Tb облачного хранилища и выбор пал на Nextcloud, который и было решено развернуть на собственном домашнем сервереВ данной статье я опишу как быстро и безболезненно установить и настроить облако Nextcloud и облачный редактор Onlyoffice Статья предполагает, что у вас уже установлен и настроен Ubuntu. Все действия были проверены на Ubuntu Server 20.04 Что будем делать:
1. Установим Apache, PHP и MySQL
2. Добавим бесплатный SSL-сертификат Let's Encrypt
3. Развернем NextCloud
4. Произведем тонкие настройки сервера
5. Установим OnlyofficeБесплатные доменные имена в домене .tk можно получить на www.freenom.comПервым делом, устанавливаем вспомогательные утилиты
sudo apt-get install nano mc zip -y
Этот пункт можно пропустить, если настраиваете облако на локальный диск, а не на отдельную машину с доступом по nfs, мне понадобилось сделать это именно на nfs
# Ставим nfs-client
sudo apt install nfs-common -y
# -------------------
# Монтируем папку nfs# Ставим nginx
sudo mkdir -p /nfs/nc
sudo mount your_host_ip:/папка_шары_nfs/ /nfs/nc
sudo ls -l /nfs/nc/
sudo df -h
sudo du -sh /nfs/nc/
# -------------------
# Монтируем nfs при загрузке
sudo nano /etc/fstab
# Добавим такую строку в конец файла
your_host_ip:/папка_шары_nfs/ /nfs/nc nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Ставим nginx
sudo apt install nginx -y
sudo nginx -V
sudo systemctl enable nginx
sudo systemctl start nginx
Ставим php 7.4
sudo apt install php7.4-fpm php7.4-mysql php7.4 php7.4-curl php7.4-gd php7.4-json php7.4-mbstring php7.4-common php7.4-xml php7.4-zip php7.4-opcache php-apcu php-imagick -y
Настраиваем php 7.4sudo nano /etc/php/7.4/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:sudo nano /etc/php/7.4/fpm/php.iniopcache.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Разрешаем автозапуск php-fpm и перезапускаем его:
sudo systemctl enable php7.4-fpm
sudo systemctl restart php7.4-fpm
Устанавливаем MariaDB:
sudo apt install mariadb-server
sudo systemctl enable mariadb
sudo systemctl start mariadb
Запуск сценария безопасности (здесь можно поменять пароль рута, убрать ненужные разрешения):
sudo mysql_secure_installation
Создаем базу данных для Nextcloud (в примере указан пароль nextcloud, его лучше заменить на свой) :
sudo mysql -u root -p
Вводим пароль рута для MariaDB
>
CREATE DATABASE nextcloud;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud';
GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Теперь надо создать файл конфигурации Nginx для Nextcloud
sudo nano /etc/nginx/sites-enable/nextcloud.conf
И вставляем в него следующий текст, естественно, заменив nc.myhost.com на свои сервера
server {
listen 80;
server_name nc.33rus.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name nc.33rus.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
root /var/www/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/php7.4-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
Получаем сертификаты для всего (я получал для всех поддоменов, которые прописал на freenom, в т.ч. для почты, заббикса, и т.п., у вас могут быть и должны быть свои) Сначала с ключом --dry-run проверяем все ли в порядке
sudo certbot certonly --agree-tos --email you@mail -d nc.myhost.com-d www.myhost.com -d zabbix.myhost.com --nginx --dry-run --d
Если все хорошо, то получаем сертификаты
sudo certbot certonly --agree-tos --email почта@администратора -d myhost.com-d nc.myhost.com-d cloud.myhost.com-d zabbix.myhost.com-d www.myhost.com-d mail.myhost.com sudo certbot certonly --agree-tos --email your@mail -d nc.myhost.com-d www.33rus.com -d zabbix.33rus.com --nginx n
Сертификаты появятся в папке /etc/letsencrypt/live/myhost.com cert.pem chain.pem fullchain.pem privkey.pem Подключаем сертификаты к сайту
sudo nano /etc/nginx/sites-available/nextcloud.conf
ssl_certificate /etc/letsencrypt/live/myhost.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myhost.com/privkey.pem;Устанавливаем Nextcloud: Скачиваем последнюю версию с сайте Nextcloud:
cd /tmp/
sudo wget https://download.nextcloud.com/server/releases/nextcloud-21.0.0.zip
sudo unzip nextcloud-21.0.0.zip
sudo cp -R nextcloud /var/www/nextcloud/
cd /var/www/
sudo chown -R www-data:www-data nextcloud/
sudo chown -R www-data:www-data /nfs/nc
Обратите внимание, в данном случае я использую папку на nfs, вам необходимо использовать папку в соответствии с вашими настройкамиПочти все. Заходим на https://nc.myhost.com
Создаем пользователя, пароль, прописываем доступ к каталогу /nfs/nc/
Прописываем созданную ранее базу данных и пароль к ней. Теперь тонкая настройка Nextcloud и установка OnlyofficeСтавим Redis и APCu
sudo apt install memcached php-memcached -y
sudo apt install php-apcu redis-server php-redis -y
sudo nano /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.locking' => '\OC\Memcache\Redis',Переиндексация файлов (если вдруг вы скопировали файлы в папку nexcloud не через интерфейсы nextcloud, то их надо переиндексировать)
sudo -u www-data php /var/www/nextcloud/occ files:scan --all
Устанавливаем OnlyOffice DocumentServer Первым делом устанавливаем версию PostgreSQL, включенную в вашу версию Ubuntu:
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 'onlyoffice';"
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"
Установка rabbitmq и nginx-extras:
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
Добавьте репозиторий ONLYOFFICE Docs:
sudo echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
sudo apt update
Устанавливаем mariadb-client!
sudo apt install mariadb-client -y
Устанавливаем ONLYOFFICE Docs. Не ошибитесь с вводом пароля. Это должен быть onlyoffice
sudo apt install onlyoffice-documentserver -y
Переводим 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; Перезапускаем nginx
sudo service nginx restart
Настраиваем cron
sudo crontab -u www-data -e
# Добавляем строчку */5 * * * * php -f /var/www/nextcloud/cron.php Ну, вот и все, останется через веб-интерфейс установить плагин ONLYOFFICE в вашем Nextcloud и прописать сервер https://myhost.com:7443
===========
Источник:
habr.com
===========
Похожие новости:
- [Высокая производительность, Разработка веб-сайтов, MySQL, Go, Big Data] Как мы весь интернет сканировали
- [Облачные вычисления, Облачные сервисы] Руководство по пограничным вычислениям для архитектора. Самое важное (перевод)
- [Законодательство в IT, Облачные сервисы, Финансы в IT, Звук] Стимул для изменений: как борьба с «яблочниками» отразилась на крупнейшей стриминговой платформе
- [*nix, Лайфхаки для гиков] Mein Konfig: экскурсия по dotfiles (часть 2)
- [*nix, Лайфхаки для гиков] Mein Konfig: экскурсия по dotfiles
- [JavaScript, Программирование, Разработка систем связи, Облачные сервисы] Скрываем номера курьеров и клиентов с помощью key-value хранилища
- [Облачные сервисы, IT-компании] «Ростелеком» и Яндекс представят совместные облачные сервисы для бизнеса и госсектора
- [Информационная безопасность, Облачные сервисы] Идеальный пароль по науке: трудно взломать, невозможно забыть
- [Разработка под Linux, Облачные сервисы, Разработка на Raspberry Pi, Компьютерное железо] Поддержка Raspberry Pi 400 появится в Linux 5.14 на уровне ядра
- [Хостинг, Хранение данных, Облачные сервисы] К чёрту всё, я буду сам себе хостер (перевод)
Теги для поиска: #_mysql, #_nginx, #_*nix, #_oblachnye_servisy (Облачные сервисы), #_nextcloud, #_ubuntuserver, #_ubuntu, #_nginx, #_mysql, #_nginx, #_*nix, #_oblachnye_servisy (
Облачные сервисы
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 11:50
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Мало того, что многие не доверяют общедоступным облакам, так они еще и предлагают непозволительно малые объемы дискового пространства.Однажды мне понадобилось 1Tb облачного хранилища и выбор пал на Nextcloud, который и было решено развернуть на собственном домашнем сервереВ данной статье я опишу как быстро и безболезненно установить и настроить облако Nextcloud и облачный редактор Onlyoffice Статья предполагает, что у вас уже установлен и настроен Ubuntu. Все действия были проверены на Ubuntu Server 20.04 Что будем делать: 1. Установим Apache, PHP и MySQL 2. Добавим бесплатный SSL-сертификат Let's Encrypt 3. Развернем NextCloud 4. Произведем тонкие настройки сервера 5. Установим OnlyofficeБесплатные доменные имена в домене .tk можно получить на www.freenom.comПервым делом, устанавливаем вспомогательные утилиты sudo apt-get install nano mc zip -y
# Ставим nfs-client
sudo apt install nfs-common -y # ------------------- # Монтируем папку nfs# Ставим nginx sudo mkdir -p /nfs/nc sudo mount your_host_ip:/папка_шары_nfs/ /nfs/nc sudo ls -l /nfs/nc/ sudo df -h sudo du -sh /nfs/nc/ # ------------------- # Монтируем nfs при загрузке sudo nano /etc/fstab # Добавим такую строку в конец файла your_host_ip:/папка_шары_nfs/ /nfs/nc nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0 sudo apt install nginx -y
sudo nginx -V sudo systemctl enable nginx sudo systemctl start nginx sudo apt install php7.4-fpm php7.4-mysql php7.4 php7.4-curl php7.4-gd php7.4-json php7.4-mbstring php7.4-common php7.4-xml php7.4-zip php7.4-opcache php-apcu php-imagick -y
env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp # Настраиваем php.ini:sudo nano /etc/php/7.4/fpm/php.iniopcache.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Разрешаем автозапуск php-fpm и перезапускаем его: sudo systemctl enable php7.4-fpm
sudo systemctl restart php7.4-fpm sudo apt install mariadb-server
sudo systemctl enable mariadb sudo systemctl start mariadb sudo mysql_secure_installation
sudo mysql -u root -p
>
CREATE DATABASE nextcloud; CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud'; GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloud' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT; sudo nano /etc/nginx/sites-enable/nextcloud.conf
server {
listen 80; server_name nc.33rus.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name nc.33rus.com; ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/cert.key; root /var/www/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/php7.4-fpm.sock; } location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ { expires modified +30d; access_log off; } } sudo apt install certbot python3-certbot-nginx
sudo certbot certonly --agree-tos --email you@mail -d nc.myhost.com-d www.myhost.com -d zabbix.myhost.com --nginx --dry-run --d
sudo certbot certonly --agree-tos --email почта@администратора -d myhost.com-d nc.myhost.com-d cloud.myhost.com-d zabbix.myhost.com-d www.myhost.com-d mail.myhost.com sudo certbot certonly --agree-tos --email your@mail -d nc.myhost.com-d www.33rus.com -d zabbix.33rus.com --nginx n
sudo nano /etc/nginx/sites-available/nextcloud.conf
ssl_certificate_key /etc/letsencrypt/live/myhost.com/privkey.pem;Устанавливаем Nextcloud: Скачиваем последнюю версию с сайте Nextcloud: cd /tmp/
sudo wget https://download.nextcloud.com/server/releases/nextcloud-21.0.0.zip sudo unzip nextcloud-21.0.0.zip sudo cp -R nextcloud /var/www/nextcloud/ cd /var/www/ sudo chown -R www-data:www-data nextcloud/ sudo chown -R www-data:www-data /nfs/nc Создаем пользователя, пароль, прописываем доступ к каталогу /nfs/nc/ Прописываем созданную ранее базу данных и пароль к ней. Теперь тонкая настройка Nextcloud и установка OnlyofficeСтавим Redis и APCu sudo apt install memcached php-memcached -y
sudo apt install php-apcu redis-server php-redis -y sudo nano /var/www/nextcloud/config/config.php 'memcache.distributed' => '\OC\Memcache\Redis', 'redis' => array ( 'host' => '127.0.0.1', 'port' => 6379, ), 'memcache.locking' => '\OC\Memcache\Redis',Переиндексация файлов (если вдруг вы скопировали файлы в папку nexcloud не через интерфейсы nextcloud, то их надо переиндексировать) sudo -u www-data php /var/www/nextcloud/occ files:scan --all
sudo apt install postgresql -y
sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;"
sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';" sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;" sudo apt install rabbitmq-server -y
sudo apt install nginx-extras -y sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
sudo echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
sudo apt update sudo apt install mariadb-client -y
sudo apt install onlyoffice-documentserver -y
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 listen [::]:7443 ssl default_server; Перезапускаем nginx sudo service nginx restart
sudo crontab -u www-data -e
=========== Источник: habr.com =========== Похожие новости:
Облачные сервисы ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 11:50
Часовой пояс: UTC + 5