Гид по технологиям

Установка Nextcloud 13 на Ubuntu 18.04 с Nginx и MySQL

8 min read Самохостинг Обновлено 24 Nov 2025
Установка Nextcloud 13 на Ubuntu 18.04
Установка Nextcloud 13 на Ubuntu 18.04

Установка 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 на внешнем фаерволе.

Что будем делать

  1. Установим Nginx.
  2. Установим и настроим PHP7.1‑FPM.
  3. Установим и настроим MySQL и создадим базу.
  4. Получим SSL сертификат от Let’s Encrypt.
  5. Скачаем Nextcloud и подготовим права доступа.
  6. Настроим виртуальный хост Nginx.
  7. Настроим UFW (фаервол).
  8. Завершим установку в веб‑интерфейсе и проверим работу.

Шаг 1 — Установка Nginx

Сначала обновим списки пакетов и установим Nginx.

sudo apt update
sudo apt install nginx -y

Запустите сервис и включите автозапуск при старте системы:

systemctl start nginx
systemctl enable nginx

Проверка работоспособности:

netstat -plntu
curl -I localhost

Если всё корректно, Nginx слушает порт 80.

Установка Nginx

Примечание: если на сервере уже был другой веб‑сервер (например 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

Установка PHP

Совет: для отладки создайте временный файл 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

Помните: не используйте пароли из примеров в рабочем окружении.

Настройка MySQL

Шаг 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 — но мобильные клиенты и браузеры будут предупреждать о ненадёжности.

Генерация SSL

Шаг 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

Настройка Nginx

Важно: проверьте соответствие server_name и путей к сертификатам; ошибки в этих полях приведут к проблемам при старте nginx.

Шаг 7 — Настройка UFW

Включим UFW и откроем SSH, HTTP и HTTPS.

ufw enable
ufw allow ssh
ufw allow http
ufw allow https
ufw status

Проверьте, что правила применились и порты 80 и 443 доступны.

UFW

Совет: если вы используете нестандартный SSH‑порт, не забудьте разрешить именно его.

Шаг 8 — Завершение установки через веб‑интерфейс

Откройте браузер и перейдите на ваш домен, например https://nextcloud.hakase-labs.io. Вас перенаправит на HTTPS и отобразится страница установки.

Создайте администратора и укажите папку данных, например /var/www/nextcloud/data. В разделе базы данных укажите параметры, созданные ранее (nextcloud_db, nextclouduser, пароль).

Вход в Nextcloud

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

Панель 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 клиентов.
  • Проверить синхронизацию и права доступа к файлам.

Мини‑методология развёртывания

  1. Подготовка окружения: обновления, DNS, доступы.
  2. Установка компонентов: Nginx → PHP → MySQL.
  3. Получение сертификатов.
  4. Настройка виртуального хоста и прав.
  5. Тестирование и приёмка.

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Доступ к Android с разбитым экраном
Android.

Доступ к Android с разбитым экраном

Сброс Samsung при заблокированном телефоне
Мобильные устройства

Сброс Samsung при заблокированном телефоне

Как разогнать монитор через NVIDIA Control Panel
Гайды

Как разогнать монитор через NVIDIA Control Panel

APC_INDEX_MISMATCH: как исправить BSOD в Windows
Инструкции

APC_INDEX_MISMATCH: как исправить BSOD в Windows

Как исправить ошибку Blink 1011
Техническая поддержка

Как исправить ошибку Blink 1011

Восстановление удалённых SMS на Samsung
Мобильные

Восстановление удалённых SMS на Samsung