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

Установка ownCloud на OpenSUSE Leap 42.1 с Nginx и MariaDB

• 7 min read • Инфраструктура • Обновлено 27 Nov 2025
Установка ownCloud на OpenSUSE Leap 42.1
Установка ownCloud на OpenSUSE Leap 42.1

В этой инструкции подробно показано, как установить и настроить собственный сервер синхронизации и шаринга файлов на базе ownCloud на OpenSUSE Leap 42.1. Мы используем Nginx как веб-сервер, MariaDB в роли СУБД и php-fpm для обработки PHP. Приведены готовые конфигурации, советы по безопасности, чек-листы для ролей и тесты приёмки.

Важно: перед началом сделайте резервные копии критичных данных и убедитесь, что у вас есть root-доступ.

Цель и варианты решения

Цель: поднять self-hosted платформу для синхронизации и совместного доступа к файлам на ownCloud.

Варианты реализации:

  • Nginx + php-fpm + MariaDB (эта инструкция)
  • Apache + mod_php + MariaDB — альтернативный стек
  • Docker-контейнеры с готовыми образами ownCloud — ускоряет развертывание
  • Snap/пакеты с преднастроенной средой — проще, но менее гибко

Краткое определение терминов

  • ownCloud — Open Source платформа для хранения и совместного доступа к файлам.
  • Nginx — лёгкий веб-сервер и обратный прокси.
  • MariaDB — форк MySQL, реляционная СУБД.
  • php-fpm — FastCGI Process Manager для PHP.

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

Требования:

  • Сервер с OpenSUSE Leap 42.1
  • Root-права (или sudo)
  • Навыки работы с командной строкой и пакетом zypper
  • Доступ в интернет для скачивания пакетов и ownCloud

Рекомендации перед установкой:

  • Обновите систему: zypper refresh && zypper up
  • Настройте резервное копирование конфигураций
  • Подготовьте внешний DNS или файл hosts для домена example-owncloud.co

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

SuSEfirewall2 использует конфигурацию в файле “/etc/sysconfig/SuSEfirewall2”. С его помощью мы откроем порты SSH, HTTP и HTTPS.

Установка:

zypper in SuSEfirewall2

Редактирование конфигурации:

cd /etc/sysconfig/
vim SuSEfirewall2

Измените (пример) строку, добавив сервисы:

FW_SERVICES_EXT_TCP="22 80 443"

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

systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2

Перезапустите SSH:

systemctl restart sshd

Проверка порта SSH (тестовый пример):

telnet 192.168.1.101 22

Важно: при открытии дополнительных портов учитывайте политику безопасности вашей сети.

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

Nginx — лёгкий и эффективный сервер, подходящий для ownCloud.

Установка и запуск:

zypper in nginx
systemctl start nginx
systemctl enable nginx

Создадим тестовую страницу и проверим доступность:

echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html
curl -I 192.168.1.101
curl 192.168.1.101

Проверка nginx с помощью curl, вывод заголовков

Совет: если вы используете внешний брандмауэр, откройте порты 80 и 443.

Шаг 3 — Установка и настройка MariaDB

MariaDB необходима для хранения метаданных ownCloud.

Установка:

zypper in mariadb mariadb-client

Запуск и автозапуск:

systemctl start mysql
systemctl enable mysql

Базовая безопасная настройка (интерактивно):

mysql_secure_installation

Параметры, обычно выбираемые для безопасности:

  • Установить root-пароль — Y
  • Удалить анонимных пользователей — Y
  • Запретить удалённый вход root — Y
  • Перезагрузить таблицы привилегий — Y

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

mysql -u root -p
(введите ваш пароль)
create database owncloud_db;
create user 'ownclouduser'@'localhost' identified by 'ownclouduser@';
grant all privileges on owncloud_db.* to 'ownclouduser'@'localhost';
flush privileges;
exit

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

Примечание: используйте сложный пароль вместо примера ‘ownclouduser@’.

Шаг 4 — Установка и настройка PHP-FPM

php-fpm обрабатывает PHP-запросы безопасно и эффективно.

Установка нужных пакетов:

zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json

Копирование и правка конфигурации:

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf

В php-fpm.conf:

  • Включите логирование ошибок:
error_log = log/php-fpm.log
  • Запустите процессы от пользователя nginx:
user = nginx
group = nginx
  • Слушать unix-сокет:
listen = /var/run/php-fpm.sock
  • Права на сокет:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Измените php.ini для CLI и конфигураций:

cd /etc/php5/cli/
vim php.ini

Установите:

cgi.fix_pathinfo=0

Скопируйте в conf.d:

cp php.ini /etc/php5/conf.d/

Настройте путь для сессий и права:

session.save_path = "/var/lib/php5"
chown -R nginx:nginx /var/lib/php5/

Настройка Nginx для работы с php-fpm — бэкап и правка nginx.conf:

cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf

Добавьте (обеспечьте корректные отступы в конфиге):

       location ~ \.php$ {
               root /srv/www/htdocs;
               try_files $uri =404;
               include /etc/nginx/fastcgi_params;
               fastcgi_pass unix:/var/run/php-fpm.sock;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

Проверка конфига nginx:

nginx -t

Запуск сервисов:

systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx

Тест PHP:

cd /srv/www/htdocs/
echo "" > info.php

Откройте http://192.168.1.101/info.php или используйте curl:

curl -I 192.168.1.101/info.php

Вывод phpinfo() в браузере

Важно: после проверки удалите info.php из веб-корня по соображениям безопасности.

Шаг 5 — Генерация SSL сертификата

Для безопасности ownCloud должен работать через HTTPS. Здесь показан способ с самоподписанным сертификатом.

Создаём папку и генерируем сертификат:

cd /etc/nginx/
mkdir ssl; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/example-owncloud.crt -keyout /etc/nginx/ssl/example-owncloud.key

Ограничим права на ключ:

chmod 600 example-owncloud.key

Совет: для production используйте сертификаты от Let’s Encrypt или коммерческих CA.

Шаг 6 — Установка ownCloud

Мы развернём ownCloud в /srv/www/owncloud/ и настроим виртуальный хост.

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

cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip

Создаём папку для данных и корректируем владельца:

mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/

Настройка виртуального хоста Nginx

cd /etc/nginx/
mkdir vhosts.d/
cd vhosts.d/
vim example-owncloud.conf

Вставьте конфигурацию (как в исходном материале):

upstream php-handler {
  #server 127.0.0.1:9000;
  server unix:/var/run/php-fpm.sock;
}

server {
  listen 80;
  server_name example-owncloud.co;
  # enforce https
  return 301 https://$server_name$request_uri;
}

server {
  listen 443 ssl;
  server_name example-owncloud.co;

  ssl_certificate /etc/nginx/ssl/example-owncloud.crt;
  ssl_certificate_key /etc/nginx/ssl/example-owncloud.key;

  # Path to the root of your installation
  root /srv/www/owncloud/;
  # set max upload size
  client_max_body_size 10G;
  fastcgi_buffers 64 4K;

  # Disable gzip to avoid the removal of the ETag header
  gzip off;

  # Uncomment if your server is build with the ngx_pagespeed module
  # This module is currently not supported.
  #pagespeed off;

  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 ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
    deny all;
  }

  location / {
    # The following 2 rules are only needed with webfinger
    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/ =404;
  }

  location ~ \.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_pass php-handler;
    fastcgi_intercept_errors on;
  }

  # Adding the cache control header for js and css files
  # Make sure it is BELOW the location ~ \.php(?:$|/) { block
  location ~* \.(?:css|js)$ {
    add_header Cache-Control "public, max-age=7200";
    # Add headers to serve security related headers
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    # Optional: Don't log access to assets
    access_log off;
  }

  # Optional: Don't log access to other assets
  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
    access_log off;
  }
}

Проверка и перезагрузка сервисов:

nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql

Тестирование установки

Откройте браузер и перейдите на https://example-owncloud.co. При первом подключении браузер может выдать предупреждение из-за самоподписанного сертификата.

Задайте администратора, укажите данные БД (owncloud_db, ownclouduser, пароль) и место хранения данных.

Конфигурация базы данных ownCloud в веб-интерфейсе

После успешной настройки вы увидите файловый интерфейс:

Главная страница файлового менеджера ownCloud

Поздравляем — установка завершена.

Проверки и критерии приёмки

Критерии приёмки:

  • Веб-интерфейс ownCloud доступен по HTTPS без ошибок серверной части
  • Пользователь admin может зарегистрировать аккаунт и загрузить файл
  • Файлы сохраняются в /srv/www/owncloud/data/ и принадлежат nginx
  • MariaDB отвечает на запросы и содержит базу owncloud_db
  • php-fpm обрабатывает PHP-скрипты корректно

Тесты приёмки (короткие):

  • curl -I https://example-owncloud.co -> код 200/302
  • Загрузка файла 10 МБ через веб-интерфейс
  • Авторизация на мобильном клиенте ownCloud

Рекомендации по безопасности

Базовый список hardening-мер:

  • Используйте сертификаты Let’s Encrypt для доверия браузера
  • Настройте бэкапы данных и базы данных
  • Ограничьте SSH доступ по ключам и через VPN
  • Настройте SELinux/AppArmor, если применимо
  • Регулярно обновляйте пакеты и ownCloud
  • Установите fail2ban для защиты от брутфорса
  • Храните ключи и сертификаты с правами 600

Пример настройки HSTS в nginx уже добавлен для статичных ресурсов. Рассмотрите добавление HSTS для всего сайта, но с осторожностью при тестировании.

Отказ и альтернативные подходы

Когда этот метод может не подойти:

  • Если вы хотите мгновенно развернуть сервис — Docker-контейнеры дадут более быстрый результат
  • В средах с ограниченным аптаймом и специфичными требованиями к пакетам — может потребоваться использование другой версии PHP
  • Для больших предприятий лучше использовать кластеризацию СУБД и shared storage

Альтернативы:

  • Apache вместо Nginx (если привычнее или необходим мод_php)
  • Использовать PostgreSQL вместо MariaDB
  • Хостинг через управляемые сервисы, если нет ресурсов для администрирования

Операционный SOP для администратора

SOP при деплое:

  1. Получить root-доступ к серверу.
  2. Обновить систему: zypper refresh && zypper up.
  3. Установить и настроить брандмауэр.
  4. Поставить Nginx, PHP-FPM и MariaDB.
  5. Скачать ownCloud, распаковать, установить права владельца.
  6. Настроить виртуальный хост и SSL.
  7. Пройти установку через веб и проверить тесты приёмки.
  8. Настроить ежедневные бэкапы и обновления.

Ролеваые чек-листы

  • Для системного администратора:

    • Проверить логи nginx и php-fpm после запуска
    • Настроить мониторинг (CPU, RAM, disk, i/o)
    • Настроить бэкап данных и экспорт БД
  • Для инженера безопасности:

    • Проверить SSL-конфигурацию и список шифров
    • Запустить сканер уязвимостей для открытых портов
    • Настроить двухфакторную аутентификацию для админов ownCloud
  • Для менеджера по данным:

    • Убедиться, что политика хранения данных соответствует GDPR
    • Настроить retention policy и журналирование доступа

Технический план отката и инцидент-руководство

Если после обновления или конфигурации что-то пошло не так:

  1. Откатить nginx конфигурацию из бэкапа: cp /etc/nginx/nginx.conf.backup /etc/nginx/nginx.conf && systemctl restart nginx
  2. Восстановить базу данных из последнего дампа
  3. Восстановить директорию owncloud/data из бэкапа
  4. Проверить логи: /var/log/nginx/error.log, /var/log/php-fpm.log, /var/log/mysql/error.log

Критические шаги при инциденте:

  • Перевести сайт в maintenance mode: php occ maintenance:mode –on
  • Ограничить доступ firewall-ом до тех, кто занимается восстановлением

Траблшутинг — распространённые ошибки и решения

Проблема: Белая страница при открытии ownCloud или error 500

  • Проверьте логи php-fpm и nginx
  • Убедитесь, что fastcgi_pass указывает на рабочий сокет
  • Проверьте права на директорию данных

Проблема: Не удаётся подключиться к базе данных

  • Подтвердите, что MariaDB запущена
  • Попробуйте подключиться из shell: mysql -u ownclouduser -p
  • Проверьте привилегии пользователя и хост прописан как ‘localhost’

Проблема: Большие файлы не загружаются

  • Увеличьте client_max_body_size в конфиге Nginx
  • Проверьте upload_max_filesize и post_max_size в php.ini

Совместимость и миграция

  • Версии PHP и модулей критичны для совместимости ownCloud 9.x
  • При миграции с другой ОС проверьте файловые пути и права
  • При переходе на контейнеры Docker — экспортируйте базу и данные, затем импортируйте в новый контейнер

Конфиденциальность и соответствие GDPR

Если вы обрабатываете персональные данные пользователей, учтите:

  • Храните журнал доступа и определите retention policy
  • Шифруйте каналы связи (HTTPS) и, при возможности, данные на диске
  • Реализуйте процедуру удаления аккаунтов и данных по запросу пользователя
  • Документируйте, где и как хранятся резервные копии

Минимальная таблица с ключевыми параметрами

  • Рекомендуемая RAM для small deployment: 2–4 ГБ
  • Рекомендуемое дисковое пространство: зависит от объёма данных; для теста — 20 ГБ
  • Максимальный размер загрузки указан в конфиге как client_max_body_size: 10G

Шпаргалка команд и сниппеты

  • Проверка статуса сервисов:
systemctl status nginx
systemctl status php-fpm
systemctl status mysql
  • Просмотр логов в реальном времени:
tail -f /var/log/nginx/error.log /var/log/php-fpm.log /var/log/mysql/error.log
  • Бэкап БД:
mysqldump -u root -p owncloud_db > /root/owncloud_db_$(date +%F).sql
  • Включение maintenance mode:
cd /srv/www/owncloud
sudo -u nginx php occ maintenance:mode --on

Короткое руководство по обновлению ownCloud

  1. Включите maintenance mode
  2. Сделайте бэкап БД и данных
  3. Обновите файлы приложения (через скачивание новой версии)
  4. Запустите occ upgrade, проверьте логи
  5. Выключите maintenance mode

Резюме

  • Мы установили стек: Nginx + php-fpm + MariaDB и развернули ownCloud на OpenSUSE Leap 42.1.
  • Включили SSL (самоподписанный) и настроили виртуальный хост.
  • Предложены рекомендации по безопасности, чек-листы для ролей и план отката.

Важно: для production обязательно используйте доверенный сертификат и проверенные процедуры бэкапа.

Если вы хотите, я могу подготовить версию конфигов с учётом реального домена и сгенерировать рекомендации по шифрам TLS и настройке fail2ban.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро