Найти в Дзене

Инструкция по установке Nextcloud на Debian 13 с PostgreSQL и самоподписанным SSL-сертификатом

Nextcloud — одно из лучших решений для создания приватного облачного хранилища в образовательной или корпоративной среде. Рассмотрим развертывание Nextcloud на чистом Debian 13, используя стандартные конфигурации Apache. Nextcloud Hub — предоставляет самодостаточное решение для организации совместной работы сотрудников предприятий и команд, развивающих различные проекты. По решаемым задачам Nextcloud Hub напоминает Google Docs и Microsoft 365, но позволяет развернуть полностью контролируемую инфраструктуру совместной работы, функционирующую на своих серверах и не привязанную к внешним облачным сервисам. Исходные тексты Nextcloud распространяются под лицензией AGPL.
Nextcloud Hub объединяет в единую среду несколько открытых приложений-надстроек над облачной платформой Nextcloud, позволяющих совместно работать с офисными документами, файлами и информацией для планирования задач и мероприятий. Платформа также включает надстройки для доступа к электронной почте, обмена сообщениями, организ
Оглавление

Nextcloud — одно из лучших решений для создания приватного облачного хранилища в образовательной или корпоративной среде. Рассмотрим развертывание Nextcloud на чистом Debian 13, используя стандартные конфигурации Apache.

Nextcloud Hub — предоставляет самодостаточное решение для организации совместной работы сотрудников предприятий и команд, развивающих различные проекты. По решаемым задачам Nextcloud Hub напоминает Google Docs и Microsoft 365, но позволяет развернуть полностью контролируемую инфраструктуру совместной работы, функционирующую на своих серверах и не привязанную к внешним облачным сервисам. Исходные тексты Nextcloud распространяются под лицензией AGPL.
Nextcloud Hub объединяет в единую среду несколько открытых приложений-надстроек над облачной платформой Nextcloud, позволяющих совместно работать с офисными документами, файлами и информацией для планирования задач и мероприятий. Платформа также включает надстройки для доступа к электронной почте, обмена сообщениями, организации видеоконференций и чатов.

Предварительная подготовка

  • Сервер с Debian 13 (минимум 2 ГБ ОЗУ, 20 ГБ диска)
  • Статический IP-адрес в локальной сети
  • Доступ с правами root

1. Обновление системы и установка базовых пакетов

apt update && apt upgrade -y
apt install -y curl wget gnupg2 mc

2. Установка и настройка PostgreSQL

Установка PostgreSQL:

apt install -y postgresql postgresql-contrib

Создание базы данных и пользователя:

su - postgres -c "createuser --createdb --login --pwprompt nextclouduser"
su - postgres -c "createdb --owner=nextclouduser nextcloud"

Сохраняем пароль для пользователя nextclouduser — он понадобится позже.

3. Установка Apache2 и PHP

Установка Apache2 и модулей:

apt install -y apache2 libapache2-mod-php
a2enmod rewrite headers env dir mime ssl

Установка PHP и расширений для Debian 13:

apt install -y php php-cli php-common php-curl php-gd php-json \
php-mbstring php-xml php-zip php-pgsql php-bcmath php-gmp \
php-imagick php-bz2 php-intl php-opcache

4. Загрузка и установка Nextcloud

Скачивание и проверка Nextcloud:

cd /tmp
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
wget https://download.nextcloud.com/server/releases/latest.tar.bz2.sha256
sha256sum -c latest.tar.bz2.sha256

Распаковка и настройка прав:

tar -xjf latest.tar.bz2 -C /var/www/html/ --strip-components=1
chown -R www-data:www-data /var/www/html/

5. Настройка дефолтных конфигов Apache2

Резервное копирование оригинальных конфигов:

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.backup
cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.backup

Редактирование основного конфига (/etc/apache2/sites-available/000-default.conf):

Открываем файл на редактирование в mcedit:

mcedit /etc/apache2/sites-available/000-default.conf

Меняем содержимое на:

<VirtualHost *:80>
ServerAdmin admin@localhost
DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined

<Directory /var/www/html/>
Options +FollowSymlinks
AllowOverride All
Require all granted

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/html
SetEnv HTTP_HOME /var/www/html
</Directory>

<Directory /var/www/html/data/>
Require all denied
</Directory>

<Directory /var/www/html/config/>
Require all denied
</Directory>

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

Редактирование SSL конфига (/etc/apache2/sites-available/default-ssl.conf):

mcedit /etc/apache2/sites-available/default-ssl.conf

Меняем содержимое на:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin admin@localhost
DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/nextcloud_ssl_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud_ssl_access.log combined

SSLEngine on
SSLCertificateFile /etc/ssl/certs/nextcloud-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/nextcloud-selfsigned.key

SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLProtocol All -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder Off
SSLSessionTickets Off

<Directory /var/www/html/>
Options +FollowSymlinks
AllowOverride All
Require all granted

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/html
SetEnv HTTP_HOME /var/www/html
</Directory>

<Directory /var/www/html/data/>
Require all denied
</Directory>

<Directory /var/www/html/config/>
Require all denied
</Directory>

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Robots-Tag "none"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "no-referrer"
</VirtualHost>
</IfModule>

6. Настройка PHP для Nextcloud

Определяем версию PHP и настраиваем php.ini:

php_version=$(php -v | head -n 1 | cut -d " " -f 2 | cut -d '.' -f 1,2)
cat >> /etc/php/$php_version/apache2/php.ini << 'EOF'

; Nextcloud configuration
memory_limit = 512M
upload_max_filesize = 10G
post_max_size = 10G
max_execution_time = 360
max_input_time = 360
output_buffering = 0
date.timezone = Europe/Moscow

; PostgreSQL
extension = pgsql
extension = pdo_pgsql

; OPcache для производительности
opcache.enable = 1
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.memory_consumption = 128
opcache.save_comments = 1
opcache.revalidate_freq = 1
EOF

7. Создание самоподписанного SSL-сертификата

mkdir -p /etc/ssl/private /etc/ssl/certs
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/ssl/private/nextcloud-selfsigned.key \
-out /etc/ssl/certs/nextcloud-selfsigned.crt \
-subj "/C=RU/ST=SPb/L=Saint-Petersburg/O=IT-SCH/CN=nextcloud" \
-addext "subjectAltName=DNS:localhost,IP:127.0.0.1"

8. Активация SSL и перезапуск служб

a2ensite default-ssl.conf
apache2ctl configtest
systemctl restart apache2
systemctl enable apache2

9. Настройка cron для фоновых задач

echo "*/5 * * * * /usr/bin/php /var/www/html/cron.php" | crontab -u www-data -

Завершение установки через веб-интерфейс

  1. Открываем браузер и переходим по адресу вашего сервера: https://IP-АДРЕС-СЕРВЕРА
  2. Создаём учетную запись администратора
  3. В настройках базы данных указываем:Тип БД: PostgreSQL
    Пользователь БД: nextclouduser
    Пароль БД: [пароль из Шага 2]
    Имя БД: nextcloud
    Хост БД: localhost
  4. Нажимаем "Завершить настройку"

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

# Проверка статуса служб
systemctl status apache2
systemctl status postgresql

# Проверка доступности Nextcloud
curl -k https://localhost/status.php

Важные замечания

  • Nextcloud будет доступен по любому IP-адресу сервера
  • При первом подключении браузер покажет предупреждение о самоподписанном сертификате — это нормально