Установка ownCloud на OpenSUSE Leap 42.1 с Nginx и MariaDB
В этой инструкции подробно показано, как установить и настроить собственный сервер синхронизации и шаринга файлов на базе 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
Совет: если вы используете внешний брандмауэр, откройте порты 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
Примечание: используйте сложный пароль вместо примера ‘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
Важно: после проверки удалите 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 доступен по 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 при деплое:
- Получить root-доступ к серверу.
- Обновить систему: zypper refresh && zypper up.
- Установить и настроить брандмауэр.
- Поставить Nginx, PHP-FPM и MariaDB.
- Скачать ownCloud, распаковать, установить права владельца.
- Настроить виртуальный хост и SSL.
- Пройти установку через веб и проверить тесты приёмки.
- Настроить ежедневные бэкапы и обновления.
Ролеваые чек-листы
Для системного администратора:
- Проверить логи nginx и php-fpm после запуска
- Настроить мониторинг (CPU, RAM, disk, i/o)
- Настроить бэкап данных и экспорт БД
Для инженера безопасности:
- Проверить SSL-конфигурацию и список шифров
- Запустить сканер уязвимостей для открытых портов
- Настроить двухфакторную аутентификацию для админов ownCloud
Для менеджера по данным:
- Убедиться, что политика хранения данных соответствует GDPR
- Настроить retention policy и журналирование доступа
Технический план отката и инцидент-руководство
Если после обновления или конфигурации что-то пошло не так:
- Откатить nginx конфигурацию из бэкапа: cp /etc/nginx/nginx.conf.backup /etc/nginx/nginx.conf && systemctl restart nginx
- Восстановить базу данных из последнего дампа
- Восстановить директорию owncloud/data из бэкапа
- Проверить логи: /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
- Включите maintenance mode
- Сделайте бэкап БД и данных
- Обновите файлы приложения (через скачивание новой версии)
- Запустите occ upgrade, проверьте логи
- Выключите maintenance mode
Резюме
- Мы установили стек: Nginx + php-fpm + MariaDB и развернули ownCloud на OpenSUSE Leap 42.1.
- Включили SSL (самоподписанный) и настроили виртуальный хост.
- Предложены рекомендации по безопасности, чек-листы для ролей и план отката.
Важно: для production обязательно используйте доверенный сертификат и проверенные процедуры бэкапа.
Если вы хотите, я могу подготовить версию конфигов с учётом реального домена и сгенерировать рекомендации по шифрам TLS и настройке fail2ban.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента