Установка Nextcloud 13 на Ubuntu 18.04 с Nginx и MySQL
Установка Nextcloud 13 на Ubuntu 18.04 с Nginx, PHP‑FPM и MySQL: пошагово устанавливаем Nginx, PHP 7.1‑FPM, MySQL, генерируем SSL через Let’s Encrypt, настраиваем виртуальный хост и UFW, затем выполняем веб‑настройку. В статье также приведены чек‑листы, рекомендации по безопасности, тесты приёмки и распространённые ошибки.
Important: замените в примерах домен, пароли и timezone на свои значения перед выполнением команд. Все команды выполняйте от имени пользователя с правами sudo или под root.
О чём эта инструкция
Эта подробная инструкция объясняет, как развернуть Nextcloud 13 на Ubuntu 18.04 с использованием Nginx как веб‑сервера, PHP 7.1‑FPM и MySQL. Руководство ориентировано на самохостинг (self‑hosting) и подходит для небольших команд или личного использования. Приведённые настройки рассчитаны на стартовую установку — для продакшен‑окружения рекомендуются дополнительные меры безопасности и резервного копирования.
Ключевые понятия в одну строку:
- Nextcloud — open source платформа для хранения и синхронизации файлов (аналог Dropbox).
- Nginx — лёгкий, быстрый веб‑сервер.
- PHP‑FPM — обработчик PHP для высокопроизводительных приложений.
- MySQL — реляционная база данных.
Предварительные требования
- Сервер с Ubuntu 18.04 LTS.
- Доступ с правами root или sudo.
- Домейн, указывающий на сервер (рекомендуется для Let’s Encrypt).
- Открытые порты 80 и 443 на внешнем фаерволе.
Что будем делать
- Установим Nginx.
- Установим и настроим PHP7.1‑FPM.
- Установим и настроим MySQL и создадим базу.
- Получим SSL сертификат от Let’s Encrypt.
- Скачаем Nextcloud и подготовим права доступа.
- Настроим виртуальный хост Nginx.
- Настроим UFW (фаервол).
- Завершим установку в веб‑интерфейсе и проверим работу.
Шаг 1 — Установка Nginx
Сначала обновим списки пакетов и установим Nginx.
sudo apt update
sudo apt install nginx -yЗапустите сервис и включите автозапуск при старте системы:
systemctl start nginx
systemctl enable nginxПроверка работоспособности:
netstat -plntu
curl -I localhostЕсли всё корректно, Nginx слушает порт 80.

Примечание: если на сервере уже был другой веб‑сервер (например Apache), остановите и отключите его, чтобы избежать конфликта портов.
Шаг 2 — Установка и настройка PHP7.1‑FPM
Nextcloud 13 требует поддержки PHP и ряда расширений. Мы будем использовать PPA от Ondřej Surý, чтобы получить PHP7.1.
Добавляем PPA и устанавливаем PHP‑пакеты:
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php7.1-fpm php7.1-mcrypt php7.1-curl php7.1-cli php7.1-mysql php7.1-gd php7.1-iconv php7.1-xsl php7.1-json php7.1-intl php-pear php-imagick php7.1-dev php7.1-common php7.1-mbstring php7.1-zip php7.1-soap -yПосле установки нужно настроить параметры PHP, важные для Nextcloud. Файлы конфигурации находятся в /etc/php/7.1/. Откройте и отредактируйте php.ini для FPM и CLI:
cd /etc/php/7.1/
vim fpm/php.ini
vim cli/php.iniИзмените timezone на вашу зону (пример):
date.timezone = Europe/MoscowУстановите:
cgi.fix_pathinfo=0В пуле FPM (/etc/php/7.1/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Перезапустите сервис и включите автозапуск:
systemctl restart php7.1-fpm
systemctl enable php7.1-fpmПроверка:
netstat -pl | grep phpДолжен появиться сокет, например /run/php/php7.1-fpm.sock

Совет: для отладки создайте временный файл info.php в веб‑корне с и откройте в браузере (удалите позже).
Шаг 3 — Установка и настройка MySQL
Установим MySQL и выполним первоначальную безопасную настройку.
sudo apt install mysql-server mysql-client -y
systemctl start mysql
systemctl enable mysqlЗапустите сценарий безопасности:
mysql_secure_installationПри появлении запроса политики пароля выберите подходящий уровень (рекомендуется Medium или Strong). На практике выберите 1 для MEDIUM. Следуйте подсказкам (удаление анонимных пользователей, запрет удалённого входа root, удаление тестовой базы и перезагрузка привилегий).
Создайте базу данных и пользователя для Nextcloud. Замените пароль на безопасный.
mysql -u root -p
-- Введите пароль root
create database nextcloud_db;
create user nextclouduser@localhost identified by 'Nextclouduser421@';
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'Nextclouduser421@';
flush privileges;
exitПомните: не используйте пароли из примеров в рабочем окружении.

Шаг 4 — Получение SSL сертификата Let’s Encrypt
Для безопасного доступа к Nextcloud используйте HTTPS. Если у вас есть домен, предпочтительно получить сертификат от Let’s Encrypt.
Установите certbot:
sudo apt install letsencrypt -y
systemctl stop nginxПолучите сертификат (замените домен на ваш):
certbot certonly --standalone -d nextcloud.hakase-labs.ioПри запросе укажите email для уведомлений и согласие с условиями. После успешного получения сертификаты окажутся в /etc/letsencrypt/live/<ваш_домен>/
Если домена нет, можно использовать самоподписанный сертификат через openssl — но мобильные клиенты и браузеры будут предупреждать о ненадёжности.

Шаг 5 — Скачивание Nextcloud
Установите утилиты для загрузки и распаковки, затем загрузите архив Nextcloud в /var/www.
sudo apt install wget unzip zip -y
cd /var/www/
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
mkdir -p nextcloud/data/
chown -R www-data:www-data /var/www/nextcloud/Теперь веб‑корнем будет /var/www/nextcloud.
Шаг 6 — Конфигурация виртуального хоста Nginx
Создайте конфигурационный файл для вашего домена в /etc/nginx/sites-available/nextcloud. Ниже — пример, используйте ваш домен вместо nextcloud.hakase-labs.pw и проверьте пути к сертификатам.
upstream php-handler {
#server 127.0.0.1:9000;
server unix:/run/php/php7.1-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name nextcloud.hakase-labs.pw;
# enforce https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name nextcloud.hakase-labs.pw;
ssl_certificate /etc/letsencrypt/live/nextcloud.hakase-labs.pw/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nextcloud.hakase-labs.pw/privkey.pem;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
root /var/www/nextcloud/;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
client_max_body_size 512M;
fastcgi_buffers 64 4K;
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+)\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
location ~ \.(?:css|js|woff|svg|gif)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=15778463";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
access_log off;
}
location ~ \.(?:png|html|ttf|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
access_log off;
}
}Сохраните файл, затем включите сайт и проверьте конфигурацию:
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx
systemctl restart php7.1-fpm
Важно: проверьте соответствие server_name и путей к сертификатам; ошибки в этих полях приведут к проблемам при старте nginx.
Шаг 7 — Настройка UFW
Включим UFW и откроем SSH, HTTP и HTTPS.
ufw enable
ufw allow ssh
ufw allow http
ufw allow https
ufw statusПроверьте, что правила применились и порты 80 и 443 доступны.

Совет: если вы используете нестандартный SSH‑порт, не забудьте разрешить именно его.
Шаг 8 — Завершение установки через веб‑интерфейс
Откройте браузер и перейдите на ваш домен, например https://nextcloud.hakase-labs.io. Вас перенаправит на HTTPS и отобразится страница установки.
Создайте администратора и укажите папку данных, например /var/www/nextcloud/data. В разделе базы данных укажите параметры, созданные ранее (nextcloud_db, nextclouduser, пароль).

После завершения установки вы увидите панель управления Nextcloud.

Поздравляем — базовая установка завершена.
Рекомендации по безопасности
- Регулярно обновляйте систему и пакеты: sudo apt update && sudo apt upgrade.
- Включите HSTS после тщательного изучения последствий: add_header Strict-Transport-Security “max-age=15552000; includeSubDomains; preload”; — только если уверены.
- Отключите ненужные приложения Nextcloud и ревью прав доступа к папкам.
- Ограничьте доступ к сокету php‑fpm, если используется TCP вместо Unix‑сокета.
- Настройте резервное копирование базы данных и каталога data.
- Рассмотрите использование fail2ban для защиты от болевой подборки паролей.
Короткий чек‑лист безопасности:
- Обновления установлены.
- SSL корректно настроен.
- Пароли сложные, не используются значения по умолчанию.
- Настроено резервное копирование.
- Логи мониторятся.
Производительность и масштабирование
Несколько практических рекомендаций:
- Для больших инсталляций используйте внешний кеш (Redis / APCu) для индексирования и сессий.
- При большом количестве одновременных пользователей используйте отдельный сервер базы данных.
- Настройте регулярную оптимизацию MySQL (оптимизация индексов, параметры буферов).
Пример настройки кэша (в конфиге Nextcloud): включение Redis для файловых блокировок и кэша ускорит работу при многопользовательской нагрузке.
Резервное копирование и восстановление
Рекомендуемая минимальная стратегия:
- Ежедневный дамп базы данных (mysqldump).
- Резерв каталога nextcloud/data и config (rsync или копии в S3 / другой сервер).
- Тестовое восстановление на стенде минимум раз в квартал.
Пример экспорта базы:
mysqldump -u root -p nextcloud_db > /root/backups/nextcloud_db_$(date +%F).sqlТесты и критерии приёмки
Критерии приёмки
- Сайт доступен по HTTPS и сертификат действителен.
- Фронтенд Nextcloud загружается, а вход администратора проходит.
- Можно загрузить и скачать файл > 100 МБ (проверка client_max_body_size).
- Клиенты (Desktop/Mobile) могут синхронизироваться с сервером.
- Резервная копия базы создаётся без ошибок.
Тестовые сценарии
- Попытаться загрузить файл размером 200 МБ через веб: ожидаем успешную загрузку при client_max_body_size >= 200M.
- Импорт контакта/календаря через CardDAV/CalDAV.
- Проверка REST API ответа /status.php — статус OK.
Отладка распространённых проблем
Проблема: 502 Bad Gateway
- Проверьте статус php7.1-fpm: systemctl status php7.1-fpm.
- Убедитесь, что fastcgi_pass указывает на существующий сокет (/run/php/php7.1-fpm.sock) или TCP‑порт.
Проблема: Ошибки прав доступа (Permission denied)
- Убедитесь, что /var/www/nextcloud и подкаталоги принадлежат www-data:www-data: sudo chown -R www-data:www-data /var/www/nextcloud
Проблема: Клиенты не подключаются к HTTPS
- Проверьте, валиден ли сертификат и совпадает ли Common Name/Subject Alternative Names с доменом.
Когда этот метод не подойдёт
- Если нужна поддержка высокой нагрузки и HA — этот простой односерверный вариант не масштабируется без архитектурных изменений.
- Если требуется интеграция с корпоративной аутентификацией (LDAP/AD) — дополнительно настраивается модуль пользователя.
- Для старых ОС или специфичных окружений версии PHP/MySQL могут отличаться, и потребуется адаптация.
Альтернативные подходы
- Использование Apache вместо Nginx — если вы привыкли к mod_php и .htaccess.
- Контейнеризация с Docker / Docker Compose — упрощает развёртывание и переносимость.
- Управляемые облачные инстансы Nextcloud (развертка провайдера) — меньше ручной поддержки.
Советы по миграции с ownCloud или другой версии Nextcloud
- Сначала сделайте бэкап данных и базы.
- Отключите cron и background jobs перед копированием.
- Проверьте совместимость версий приложений и миграционные заметки в официальной документации Nextcloud.
Ролева́я матрица задач (короткий чек‑лист)
Администратор сервера
- Установить систему и доступ.
- Настроить Nginx, PHP‑FPM и MySQL.
- Настроить SSL и фаервол.
Nextcloud администратор
- Создать учётную запись администратора Nextcloud.
- Настроить приложения, политики и внешний кэш.
- Настроить резервное копирование и мониторинг.
Пользователь
- Подключить Desktop/Mobile клиентов.
- Проверить синхронизацию и права доступа к файлам.
Мини‑методология развёртывания
- Подготовка окружения: обновления, DNS, доступы.
- Установка компонентов: Nginx → PHP → MySQL.
- Получение сертификатов.
- Настройка виртуального хоста и прав.
- Тестирование и приёмка.
Mermaid схема разрешения установки
flowchart TD
A[Начало] --> B{Есть домен?}
B -- Да --> C[Получить Let's Encrypt]
B -- Нет --> D[Использовать self-signed]
C --> E[Установить Nginx]
D --> E
E --> F[Установить PHP7.1-FPM]
F --> G[Установить MySQL]
G --> H[Скачать Nextcloud]
H --> I[Настроить Nginx виртуал-хост]
I --> J[Выполнить веб-установку]
J --> K[Готово]Краткая сводка по совместимости и миграциям
- Nextcloud 13 требует PHP 7.0+ (рекомендуется 7.1 для этой инструкции).
- Для баз данных поддерживается MySQL/MariaDB, PostgreSQL и SQLite (не для продакшена).
- Если в будущем будете обновлять Ubuntu, проверьте доступность PPA и версий PHP в новой ОС.
Короткий глоссарий (1 строка)
- PHP‑FPM — FastCGI Process Manager для запуска PHP в качестве отдельного сервиса.
- Let’s Encrypt — бесплатный центр сертификации, выдающий TLS‑сертификаты.
- UFW — упрощённый интерфейс для управления iptables на Ubuntu.
Заключение
В этой инструкции показано, как развернуть Nextcloud 13 на Ubuntu 18.04 с Nginx, PHP7.1‑FPM и MySQL. Следуйте шагам, проверьте настройки безопасности и организуйте резервное копирование. Для продакшен‑окружения дополнительно настройте Redis/APCu для ускорения, мониторинг и регулярные обновления.
Summary
- Установите и настройте Nginx, PHP‑FPM, MySQL.
- Получите SSL через Let’s Encrypt и настройте виртуальный хост.
- Завершите установку через веб‑интерфейс и проверьте работу клиентов.
Reference
Похожие материалы
Доступ к Android с разбитым экраном
Сброс Samsung при заблокированном телефоне
Как разогнать монитор через NVIDIA Control Panel
APC_INDEX_MISMATCH: как исправить BSOD в Windows
Как исправить ошибку Blink 1011