ownCloud — система для организации хранения, синхронизации и обмена данными, размещенными на внешних серверах.
В отличии от Dropbox и ему подобных, ownCloud отличается предоставлением пользователю полного контроля над своими данными — информация размещается на подконтрольных пользователю системах. Доступ к данным в ownCloud может осуществляться при помощи web-интерфейса или протокола WebDAV.
Необходимые Пакеты
yum -y install wget httpd curl openssl mod_ssl
Удалим PHP5.4 и установим PHP7.0
yum -y remove php*
yum -y install php70w php70w-php php70w-pdo php70w-dom php70w-gd php70w-mbstring php70w-json php70w-xml php70w-zip php70w-curl php70w-mcrypt php70w-pear
Удалим PHP5.4 и установим PHP7.0
yum -y remove php*
yum -y install php70w php70w-php php70w-pdo php70w-dom php70w-gd php70w-mbstring php70w-json php70w-xml php70w-zip php70w-curl php70w-mcrypt php70w-pear
Установка и настройка SQL-сервера
$ yum -y install mariadb-server
$ systemctl start mariadb.service
$ systemctl start httpd.service
$ systemctl enable mariadb.service
$ systemctl enable httpd.service
Настраиваем:
$ mysql_secure_installation
Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: ENTER YOUR NEW PASSWORD
Re-enter new password: RE-ENTER YOUR NEW PASSWORD
Password updated successfully!
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] Y
... Success!
Thanks for using MariaDB!
Создаём базу данных:
$ mysql -u root -p
CREATE DATABASE owncloud;
GRANT ALL PRIVILEGES ON owncloud.* TO root@localhost IDENTIFIED BY 'ROOT PASSWORD';
FLUSH PRIVILEGES;
exit;
Установка и настройка Apache
Настраиваем conf файл для VirtualHost Нашего сайта:
vi /etc/httpd/conf.d/disk.conf
*сделаем так, чтобы все запросы на http переправлялись автоматом на https
<VirtualHost *:80>
ServerName disk.river..ru
Redirect / https://disk.pdlx.ru
ErrorLog /var/www/disk/error.log
CustomLog /var/www/disk/requests.log combined
</VirtualHost>
ServerName disk.river..ru
Redirect / https://disk.pdlx.ru
ErrorLog /var/www/disk/error.log
CustomLog /var/www/disk/requests.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName disk.river.ru
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyVia full
SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /var/www/cert/fullchain.pem
SSLCertificateKeyFile /var/www/cert/privkey.pem
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
DocumentRoot /var/www/disk
<Directory /var/www/>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/www/disk/error.log
CustomLog /var/www/disk/requests.log combined
</VirtualHost>
ServerName disk.river.ru
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyVia full
SSLEngine On
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /var/www/cert/fullchain.pem
SSLCertificateKeyFile /var/www/cert/privkey.pem
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
DocumentRoot /var/www/disk
<Directory /var/www/>
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/www/disk/error.log
CustomLog /var/www/disk/requests.log combined
</VirtualHost>
Создаём директорию для сертификатов:
mkdir /var/www/cert
Создаём самоподписанный сертификат с помощью openssl:
(также можете воспользоваться бесплатным от StartSSL.com)
cp /etc/pki/tls/openssl.cnf /var/www/cert/river.ru.cnf
vi /var/www/river.ru/cert/river.ru.cnf
В секции [ req ] раскомментируем:
req_extensions = v3_req
В секции [ v3_req ] добавляем:
subjectAltName = @alt_names
Выглядеть будет так:
[ v3_req ]# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
В конце файла добавляем (все имена и IP, которые будет покрывать сертификат):
[ alt_names ]DNS.1 = disk.river.ru
DNS.2 = d.river.ru
cd /var/www/cert/
openssl genrsa -out river.ru.key 2048
openssl req -new -out river.ru.csr -key river.ru.key -config river.ru.cnf
openssl req -in river.ru.csr -noout -text
openssl x509 -req -days 3650 -in river.ru.csr -signkey river.ru.key -out river.ru.crt -extensions v3_req -extfile river.ru.cnf
подробнее тут:
Перезагружаем Apache:
systemctl restart httpd.service
Установка и настройка OwnCloud
Скачиваем дистрибутив:
wget https://download.owncloud.org/community/owncloud-9.1.2.tar.bz2
wget https://download.owncloud.org/community/owncloud-9.1.2.tar.bz2
Распаковываем в директорию где хранятся сайты:
tar -xjvf owncloud-9*
Переименуем директорию как нам нравится:
cp -r ./owncloud /var/www/disk
(директория disk не должна существовать на момент копирования)
Переименуем директорию как нам нравится:
cp -r ./owncloud /var/www/disk
(директория disk не должна существовать на момент копирования)
Назначаем права Apache к директории сайта и всему содержимому:
chown -R apache.apache /var/www/disk
Создаём в корне директорию, где будут хранится все пользовательские файлы пользователей OwnCloud:
mkdir /DISK
Назначаем Apache владельцем директории и прописываем права доступа:
chown apache.apache /DISK; chmod 775 /DISK
Первый запуск OwnCloud
Открываем браузер и пробуем http://disk.river.ru и https://disk.river.ru:Чтобы из локальной сети имя disk.river.ru разрешалось в IP адрес из локальной подсети, нужно где-нибудь на сервере в локальной сети создать DNS зону river.ru и добавить туда A запись для disk.river.ru.
Как быстрое решение можно добавить в файл C:\Windows\system32\drivers\etc\hosts строку вида:
192.168.1.2 disk.river.ru
Чтобы увеличить лимит загружаемых файлов через WEB интерфейс:
vi /var/www/disk/.htaccess
меняем строки:
php_value upload_max_filesize = 16G
php_value post_max_size = 16G
добавляем строки:
php_value max_input_time 3600
php_value max_execution_time 3600
Включить HSTS на nginx
https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/
php_value max_input_time 3600
php_value max_execution_time 3600
Включить HSTS на nginx
https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/
Установка SSL сертификата для OwnCloud
Регистрируемся на starssl.com
Проходим проверку что домен, под который вам нужен SSL сертификат, ваш.
Вам вышлют на почтовый ящик webmaster@<вашдомен>.com письмо с кодом.
Запрашиваем бесплатный сертификат
Скачиваем ssl.key и ssl.crt файлы
Для Apache всё просто, подставляете в конфиге вашего сайта ssl.key и ssl.crt и всё. При перезапуске сервиса Apache, последний спросит у вас пароль от сертификата (вы его вводили при генерации сертификата на StarSSL)
Для Nginx нужно будет немного поклацать по клаве:
Копируете сертификат на ваш сервер
Расшифровываете сертификат, введя пароль (всё тот же)
openssl rsa -in ssl.key -out /etc/nginx/conf/ssl.key
Подставляете расшифрованный ssl.key файл в конфиг сайта.
С ssl.crt ничего делать не нужно. Подставляете его в конфиг и всё.
Ошибки и проблемы которые возникают с OwnCloud.
Оптимизация работы OwnCloud.
Ставил все по вашей инструкции но после изменения и добавления конфигов HTTPD выдает ошибку - Starting The Apache HTTP Server...
ОтветитьУдалитьиюл 14 14:18:23 owncloud httpd[25027]: AH00526: Syntax error on line 5 of /etc/httpd/sites-enabled/disk.conf:
июл 14 14:18:23 owncloud httpd[25027]: Invalid command 'SSLProxyEngine', perhaps misspelled or defined by a module not included in the server configuration
июл 14 14:18:24 owncloud systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
июл 14 14:18:24 owncloud kill[25028]: kill: cannot find process ""
июл 14 14:18:24 owncloud systemd[1]: httpd.service: control process exited, code=exited status=1
июл 14 14:18:24 owncloud systemd[1]: Failed to start The Apache HTTP Server.
июл 14 14:18:24 owncloud systemd[1]: Unit httpd.service entered failed state.
июл 14 14:18:24 owncloud systemd[1]: httpd.service failed.
SOLVED.. решено установкой доп.мдуля - yum install mod_ssl -y
ОтветитьУдалитьДобрый день.
ОтветитьУдалитьНе подскажете как настроить, чтобы почта различных уведомлений успешно отправлялась на внешние почтовые домены (mail.ru, gmail.com и др.)?
Если, например, название хоста Owncloud звучит как server.test.ru, в настройках почтового сервера указан домен отправителя также как test.ru, то все получатели в test.ru успешно получают уведомления.
А вот если сделать публичную ссылку для пользователя, ящик которого указан как user@mail.ru, то ему на mail.ru не приходят никакие уведомления.
Не сталкивался - посоветовать нечего.. Опыта с эти нет.
УдалитьКак защищаться от атак?
ОтветитьУдалитьПодборов и т.п...
SSL + CBAC
ОтветитьУдалитьhttp://it.kuchuk.net/2013/05/cbac-cisco.html
И в ACL на вход разрешить HTTP/HTTPS только из указанного вами списка статических IP адресов.