Автоматическая установка и оптимизация Nextcloud 21 с помощью скрипта
Nextcloud — платформа, предлагающая набор программ для создания собственного облачного хранилища.
Вы можете установить Nextcloud с помощью snap пакета: NextCloud: Создаем свое облачное хранилище.
к содержанию ↑Автоматическая установка и оптимизация Nextcloud 21 (nginx, MariaDB)
Скрипт поддерживает установку в операционных системах Debian 10.8+ (AMD64) и Ubuntu 20.04.1+ (AMD64). Для работы скрипта необходима установка пакета sudo.
Рассматривается установка на чистую систему, в которой не установлены другие инструменты, необходимые для веб-приложений.
В ходе работы скрипта будут подключены следующие репозитории для использования последних версий пакетов: ppa ondrej для установки php 7.4, ppa mainline для установки последней версии nginx, а так же репозиторий mariadb для установки MariaDB 10.5.
Важно. В качестве домена скрипт укажет имя хост системы . Поэтому перед началом работы скрипта, измените имя хоста системы и перезагрузите систему.
Имя хоста можно поменять следующим образом:
sudo hostnamectl set-hostname mydomain.ru
Где mydomain.ru – это название вашего домена.
А так же, дополнительно измените имя хоста в файле hosts:
sudo nano /etc/hosts
Перезагрузите систему.
Создайте папку, в которой будут сохраняться все пользовательские файлы Nextcloud:
mkdir -p /nextcloud-data
Необходимые права доступа (www-data) будут заданы скриптом. Эту папку нужно будет указать в ходе работы скрипта, при появлении соответствующего вопроса.
В терминале выполняем следующие команды:
sudo -s
cd /usr/local/src && apt install -y bzip2 wget
Для системы Debian:
wget https://it-services.c-rieger.de/s/QCzDbdip4qM388P/download -O install.zip
Для системы Ubuntu:
wget https://it-services.c-rieger.de/s/G26kaw2bSdqjQeg/download -O install.zip
Разархивируем архив со скриптом:
apt install -y unzip && unzip install.zip
Важно: на сервере не должны быть установлены веб-сервер Apache2 или NGINX, управление базой данных MariaDB / MySQL или PHP.
Отметьте скрипт как «исполняемый»:
chmod +x install.sh
Запуск скрипта:
./install.sh
В ходе установки Nextcloud будут заданы некоторые вопросы.
При создании базы данных MariaDB, соглашаемся со всеми вопросами, выбрав Y, задаем пароль пользователя root для базы данных.
Будет создана база данных с именем пользователя nextcloud, паролем nextcloud.
Задайте имя Администратора Nextcloud и пароль.
Укажите расположение папки, в которой будут сохраняться все пользовательские файлы Nextcloud. Можно указать папку, которую создали в самом начале (/nextcloud-data).
Установка и оптимизация Nextcloud 21 завершены.
Настройка шифрования домена с помощью сертификата SSL от Let’s Encrypt
Для работы по добавлению шифрования создаем технического пользователя и добавляем его в группу www-data:
cd
adduser --disabled-login acmeuser
Можно не добавлять имя пользователя, а оставить по умолчанию, нажав на Enter.
usermod -a -G www-data acmeuser
Задаем техническому пользователю необходимые полномочия для инициирования необходимого запуска веб-сервера при обновлении сертификата:
visudo
Проверяем чтобы в середине файла была следующая запись (если ее нет, то добавляем):
[..] User privilege specification root ALL=(ALL:ALL) ALL [...]
А так же добавляем строку:
acmeuser ALL=NOPASSWD: /bin/systemctl reload nginx.service
Сохраните и закройте файл с помощью комбинации клавиш CTRL+O, затем CTRL + X.
Переключитесь в оболочку технического пользователя (acmeuser), чтобы установить программное обеспечение необходимое для сертификата, а затем снова выйдите из этой оболочки:
su - acmeuser
curl https://get.acme.sh | sh
exit
Настройте соответствующие разрешения, чтобы иметь возможность сохранять в нем новые сертификаты:
chmod -R 775 /var/www/letsencrypt /etc/letsencrypt && chown -R www-data:www-data /var/www/ /etc/letsencrypt
Снова переключитесь в оболочку технического пользователя:
su - acmeuser
А затем подайте заявку на получение сертификатов SSL:
acme.sh --issue -d your.domain.com --keylength 4096 -w /var/www/letsencrypt --key-file /etc/letsencrypt/rsa-certs/privkey.pem --ca-file /etc/letsencrypt/rsa-certs/chain.pem --cert-file /etc/letsencrypt/rsa-certs/cert.pem --fullchain-file /etc/letsencrypt/rsa-certs/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
а так же:
acme.sh --issue -d your.domain.com --keylength ec-384 -w /var/www/letsencrypt --key-file /etc/letsencrypt/ecc-certs/privkey.pem --ca-file /etc/letsencrypt/ecc-certs/chain.pem --cert-file /etc/letsencrypt/ecc-certs/cert.pem --fullchain-file /etc/letsencrypt/ecc-certs/fullchain.pem --reloadcmd "sudo /bin/systemctl reload nginx.service"
Название your.domain.com замените на название своего домена.
Выходим из оболочки нового пользователя:
exit
Затем создайте скрипт, который будет проверять и исправлять разрешения (permissions.sh):
nano /root/permissions.sh
Скопируйте и вставьте все строки в файл (в строке /nextcloud-data измените на расположение вашей пользовательской папки Nextcloud):
#!/bin/bash find /var/www/ -type f -print0 | xargs -0 chmod 0640 find /var/www/ -type d -print0 | xargs -0 chmod 0750 chmod -R 775 /var/www/letsencrypt /etc/letsencrypt chown -R www-data:www-data /var/www /etc/letsencrypt chown -R www-data:www-data /nextcloud-data chmod 0644 /var/www/nextcloud/.htaccess chmod 0644 /var/www/nextcloud/.user.ini exit 0
Сохраните изменения и выйдите из редактора nano с поомщью комбинации клавиш CTRL+0, CTRL+X.
Отметьте скрипт как исполняемый и затем запустите его:
chmod +x /root/permissions.sh
/root/permissions.sh
Удалите использованные ранее самозаверяющие сертификаты из nginx и активируйте новые, полноценные и уже действующие SSL-сертификаты от Let’s Encrypt:
sed -i '/ssl-cert-snakeoil/d' /etc/nginx/conf.d/nextcloud.conf sed -i s/#\ssl/\ssl/g /etc/nginx/conf.d/nextcloud.conf service nginx restart
Задайте задание cron:
crontab -l -u acmeuser
С этого момента ваши SSL-сертификаты будут регулярно и полностью автоматически обновляться.
Пожалуйста, найдите время и проверьте статус безопасности вашего сервера. Целью должно быть как минимум следующий результат «А +»:
Оптимизируйте и обновляйте Nextcloud с помощью скрипта
Создаём скрипт для обновления, оптимизации Nextcloud и установленных приложений:
cd /root
nano upgrade.sh
Вставляем следующее содержимое:
#!/bin/bash /usr/sbin/service nginx stop sudo -u www-data php /var/www/nextcloud/updater/updater.phar sudo -u www-data php /var/www/nextcloud/occ status sudo -u www-data php /var/www/nextcloud/occ -V sudo -u www-data php /var/www/nextcloud/occ db:add-missing-primary-keys sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices sudo -u www-data php /var/www/nextcloud/occ db:add-missing-columns sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint sed -i "s/output_buffering=.*/output_buffering=0/" /var/www/nextcloud/.user.ini chown -R www-data:www-data /var/www/nextcloud redis-cli -s /var/run/redis/redis-server.sock <<EOF FLUSHALL quit EOF sudo -u www-data php /var/www/nextcloud/occ files:scan --all sudo -u www-data php /var/www/nextcloud/occ files:scan-app-data sudo -u www-data php /var/www/nextcloud/occ app:update --all /usr/sbin/service php7.4-fpm restart /usr/sbin/service nginx restart exit 0
Сохраните изменения и закройте редактор nano комбинацией клавиш CTRL+O, CTRL+X.
Отметьте скрипт как исполняемый и периодически запускайте его от имени привилегированного пользователя:
chmod +x /root/upgrade.sh
/root/upgrade.sh
сайт со скриптом не открывается… пишет нет доступа….
Поправил ссылку