Переходим с нуля на OwnCloud 10
на Ubuntu Server 20.04 Server
Если использовать новый сервер, то уже и все сервисы нужно перевести с Ubuntu 18.04 Server
на Ubuntu 20.04 Server
и обязательно учесть практический опыт, ошибки в ходе эксплуатации и снова сделано все по уму на новом железе и с другим типом виртуализации, вместо ESXi 6.0
используя Debian 10 + Proxmox 6.4.4
OwnCloud 10
— это инструмент по организации хранения своих наработок, так сказать в собственном облаке на своем железе, как это было сделано следует смотреть заметки
Обновленная установка OwnCloud на Ubuntu 18.04
Обновленная установка OwnCloud 10 + nginx на Ubuntu 18.04
Сперва как всегда на тестовой конфигурации подготавливаю заметку где от и до происходит процесс развертывания.
Шаг №1:
Обновляю систему да самого актуального состояния через свой домашний скрипт настройки:
ekzorchik@srv-us2004:~$ hg clone http://srv-wiki/hg/dproject ekzorchik@srv-us2004:~$ sudo ./dproject/default
Шаг №2:
Устанавливаю Apache2 + MySQL:
ekzorchik@srv-us2004:~$ sudo apt-get install tasksel -y ekzorchik@srv-us2004:~$ sudo tasksel install lamp-server ekzorchik@srv-us2004:~$ echo "ServerName localhost" | sudo tee -a /etc/apache2/apache2.conf ekzorchik@srv-us2004:~$ sudo unlink /etc/apache2/sites-available/000-default.conf ekzorchik@srv-us2004:~$ sudo unlink /etc/apache2/sites-available/default-ssl.conf ekzorchik@srv-us2004:~$ sudo unlink /etc/apache2/sites-enabled/000-default.conf ekzorchik@srv-us2004:~$ sudo rm -Rf /var/www/html/ ekzorchik@srv-us2004:~$ sudo mysqladmin -u root password 712mbddr@ ekzorchik@srv-us2004:~$ sudo mysql_secure_installation ekzorchik@srv-us2004:~$ sudo sed -i "s/Options Indexes FollowSymLinks/Options FollowSymLinks/" /etc/apache2/apache2.conf ekzorchik@srv-us2004:~$ sudo sed -i 's/None/All/g' /etc/apache2/apache2.conf ekzorchik@srv-us2004:~$ sudo apt-get install php7.4-gd php7.4-json php7.4-mysql php7.4-curl php7.4-intl php7.4-imagick curl php7.4-bz2 php7.4-gd php7.4-mbstring php7.4-xml php7.4-zip -y ekzorchik@srv-us2004:~$ sudo a2enmod headers ekzorchik@srv-us2004:~$ sudo a2enmod env ekzorchik@srv-us2004:~$ sudo a2enmod ssl ekzorchik@srv-us2004:~$ sudo a2enmod rewrite ekzorchik@srv-us2004:~$ sudo mysql -u root -p712mbddr@ -e "create database db_owncloud character set utf8" ekzorchik@srv-us2004:~$ sudo mysql -u root -p712mbddr@ -e "create user 'us_own'@'localhost' identified by '612mbddr@'" ekzorchik@srv-us2004:~$ sudo mysql -u root -p712mbddr@ -e "grant all on db_owncloud.* to 'us_own'@'localhost';"
Шаг №3:
Скачиваю пакет OwnCloud
(версия 10.7.0
) и устанавливаю:
ekzorchik@srv-us2004:~$ wget -nv https://download.owncloud.org/download/repositories/production/Ubuntu_20.04/Release.key -O - | sudo apt-key add - echo 'deb http://download.owncloud.org/download/repositories/production/Ubuntu_20.04/ /' | sudo tee -a /etc/apt/sources.list.d/owncloud.list ekzorchik@srv-us2004:~$ sudo apt-get update ekzorchik@srv-us2004:~$ sudo apt install owncloud-complete-files
Шаг №4:
Теперь настраиваю взаимодействие с сервисом OwnCloud
через самоподписанный сертификат:
ekzorchik@srv-us2004:~$ openssl req -new -x509 -days 3650 -keyout srv-focal.key -out srv-focal.pem writing new private key to 'srv-focal.key' Enter PEM pass phrase: 712mbddr@ Verifying - Enter PEM pass phrase: 712mbddr@ Common Name (e.g. server FQDN or YOUR name) []:172.33.33.112 ekzorchik@srv-us2004:~$ cp srv-focal.key{,.orig} ekzorchik@srv-us2004:~$ openssl rsa -in srv-focal.key.orig -out srv-focal.key Enter pass phrase for srv-focal.key.orig: 712mbddr@ writing RSA key ekzorchik@srv-us2004:~$ rm srv-focal.key.orig ekzorchik@srv-us2004:~$ sudo cp srv-focal.pem /etc/ssl/certs/ ekzorchik@srv-us2004:~$ sudo cp srv-focal.key /etc/ssl/private/ ekzorchik@srv-us2004:~$ sudo chmod 0600 /etc/ssl/private/srv-focal.key ekzorchik@srv-us2004:~$ sudo nano /etc/apache2/sites-available/owncloud-ssl.conf <IfModule mod_ssl.c> <VirtualHost _default_:443> Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" ServerAdmin webmaster@localhost DocumentRoot /var/www/owncloud ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLProtocol all -SSLv2 SSLCertificateFile /etc/ssl/certs/srv-focal.pem SSLCertificateKeyFile /etc/ssl/private/srv-focal.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> </VirtualHost> </IfModule> ekzorchik@srv-us2004:~$ sudo a2ensite owncloud-ssl.conf ekzorchik@srv-us2004:~$ sudo apache2ctl configtest Syntax OK ekzorchik@srv-us2004:~$ sudo nano /etc/apache2/ports.conf #Listen 80 <IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule> ekzorchik@srv-us2004:~$ sudo systemctl restart apache2 ekzorchik@srv-us2004:~$ sudo chown -R www-data:www-data /var/www/owncloud/
Шаг №5:
Переходим на страницу первой настройки: https://IP&DNS (https://172.33.33.112)
Создать учетную запись администратора:
Login: ekzorchik
Pass: 712mbddr@
Каталог с данными: /var/www/owncloud/data
Имя пользователя базы данных: us_own
Пароль пользователя базы данных: 612mbddr@
База данных под сервис OwnCloud: db_owncloud
Месторасположение базы данных: localhost
и после нажимаю "Завершить установку"
, ожидаю и через некоторое время меня перекидывает на страницу где нужно авторизоваться с заведенными административными учетными данными:
После ввода связки Логин+Пароль нажимаю клавишу Enter
И сервис безопасного хранения Ваших данных успешно инсталлирован на Вашу подконтрольную только Вам систему Ubuntu 20.04 Server amd64
Шаг №6:
Что дальше? А дальше у же Ваша забота организовать защиту Вашего облака OwnCloud.
К примеру я к нему у себя получаю доступ через отдельно арендованную систему, VPS
систему где у меня поднят OpenVPN
сервер, а домашний роутер через OpenVPN
клиент подключается к OpenVPN
серверу.
Т.е. схема доступа:
vpn.ekzorchik.ru (OpenVPN) — интернет — (OpenVPN) роутер
на vpn.ekzorchik.ru
работает сервис firewalld
и nginx
в качестве прокси на доступ к OwnCloud
.
Настройки firewalld
следующие:
sudo firewall-cmd --zone=public --list-all public target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client ports: 1194/tcp 443/tcp protocols: masquerade: yes source-ports: icmp-blocks: rich rules: root@ekzorchik:~#
А настройки nginx
который выступает как прокси:
root@ekzorchik:~# sudo nano /etc/nginx/nginx.conf user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_prefer_server_ciphers on; client_max_body_size 8192M; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } root@ekzorchik:~# cat /etc/nginx/sites-enabled/owncloud.conf server { server_name vpn.ekzorchik.ru; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { proxy_pass https://172.33.33.112; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/vpn.ekzorchik.ru/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/vpn.ekzorchik.ru/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = vpn.ekzorchik.ru) { return 301 https://$host$request_uri; } # managed by Certbot root@ekzorchik:~#
а чтобы доступ был не через самоподписанный сертификат, устанавливаем получение, выдачу и перерегистрацию сертификата через Let“s Encrypted:
sudo apt-get install python-certbot-nginx root@ekzorchik:~# certbot --nginx root@ekzorchik:~# crontab -e 0 2 * * * /usr/sbin/certbot-auto -q renew
Шаг №7:
Если вы будете использовать проброс порта из вне во внутрь к этому сервису, то Вам потребуется для удобства настроить CNAME
запись для Вашего IP адреса роутера, но только если такая возможность у Вас есть, т. к. я описываю свой опыт и не претендую на универсальность.
ekzorchik@srv-us2004:~$ sudo nano /var/www/owncloud/config/config.php <?php $CONFIG = array ( 'updatechecker' => false, 'instanceid' => 'oc5r1bffxdz7', 'passwordsalt' => 'HHJJp6RyiuJpy+yZOpAoFtHd2sqjys', 'secret' => '4Ra99qEu/lQKeNHs31Ca3I7H3gVvvkcEjIQJ6zyIKL1FnykY', 'trusted_domains' => array ( 0 => '172.33.33.112', 1 => 'cloud.ekzorchik.ru' ), 'datadirectory' => '/var/www/owncloud/data', 'overwrite.cli.url' => 'https://172.33.33.112', 'dbtype' => 'mysql', 'version' => '10.7.0.4', 'dbname' => 'db_owncloud', 'dbhost' => 'localhost', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'us_own', 'dbpassword' => '612mbddr@', 'logtimezone' => 'UTC', 'apps_paths' => array ( 0 => array ( 'path' => '/var/www/owncloud/apps', 'url' => '/apps', 'writable' => false, ), 1 => array ( 'path' => '/var/www/owncloud/apps-external', 'url' => '/apps-external', 'writable' => true, ), ), 'installed' => true, ); ekzorchik@srv-us2004:~$ sudo service apache2 restart ekzorchik@srv-us2004:~$ sudo crontab -u www-data -e */15 * * * * /usr/bin/php -f /var/www/owncloud/cron.php crontab: installing new crontab
Уведомляем поисковых роботов не индексировать мое хранилище:
ekzorchik@srv-us2004:~$ sudo nano /var/www/owncloud/robots.txt User-agent: * Disallow: /
Шаг №8:
Небольшой прирост в скорости через кеширование Redis
:
ekzorchik@srv-us2004:~$ sudo apt-get install php-redis redis-server -y ekzorchik@srv-us2004:~$ sudo nano /etc/sysctl.conf vm.overcommit_memory=1 ekzorchik@srv-us2004:~$ sudo sysctl -p vm.overcommit_memory = 1 ekzorchik@srv-us2004:~$ekzorchik@srv-us2004:~$ sudo sysctl -p vm.overcommit_memory = 1 ekzorchik@srv-us2004:~$ ekzorchik@srv-us2004:~$ sudo find / -name redis.so /usr/lib/php/20190902/redis.so ekzorchik@srv-us2004:~$ ekzorchik@srv-us2004:~$ sudo phpenmod redis ekzorchik@srv-us2004:~$ sudo systemctl restart apache2 ekzorchik@srv-us2004:~$ sudo nano /etc/redis/redis.conf ekzorchik@srv-us2004:~$ sudo bash -c "cat /etc/redis/redis.conf" | grep -v "#\|^$" bind 127.0.0.1 ::1 protected-mode yes port 6379 tcp-backlog 128 timeout 0 tcp-keepalive 300 daemonize yes supervised auto pidfile /var/run/redis/redis-server.pid loglevel notice logfile /var/log/redis/redis-server.log databases 16 always-show-logo yes save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /var/lib/redis replica-serve-stale-data yes replica-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no replica-priority 100 requirepass 712mbddr@ lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no appendonly no appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 stream-node-max-bytes 4096 stream-node-max-entries 100 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 dynamic-hz yes aof-rewrite-incremental-fsync yes rdb-save-incremental-fsync yes ekzorchik@srv-us2004:~$ ekzorchik@srv-us2004:~$ sudo systemctl restart redis-server && sudo systemctl status redis-server | head -n5 ● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-07-04 17:37:03 MSK; 10ms ago Docs: http://redis.io/documentation, man:redis-server(1) ekzorchik@srv-us2004:~$ ekzorchik@srv-us2004:~$ sudo nano /var/www/owncloud/config/config.php <?php $CONFIG = array ( 'updatechecker' => false, 'instanceid' => 'oc5r1bffxdz7', 'passwordsalt' => 'HHJJp6RyiuJpy+yZOpAoFtHd2sqjys', 'secret' => '4Ra99qEu/lQKeNHs31Ca3I7H3gVvvkcEjIQJ6zyIKL1FnykY', 'trusted_domains' => array ( 0 => '172.33.33.112', ), 'datadirectory' => '/var/www/owncloud/data', 'overwrite.cli.url' => 'https://172.33.33.112', 'dbtype' => 'mysql', 'version' => '10.7.0.4', 'dbname' => 'db_owncloud', 'dbhost' => 'localhost', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'us_own', 'dbpassword' => '612mbddr@', 'logtimezone' => 'UTC', 'apps_paths' => array ( 0 => array ( 'path' => '/var/www/owncloud/apps', 'url' => '/apps', 'writable' => false, ), 1 => array ( 'path' => '/var/www/owncloud/apps-external', 'url' => '/apps-external', 'writable' => true, ), ), 'installed' => true, 'memcache.local' => '\\OC\\Memcache\\Redis', 'filelocking.enabled' => 'true', 'memcache.distributed' => '\\OC\\Memcache\\Redis', 'memcache.locking' => '\\OC\\Memcache\\Redis', 'redis' => array ( 'host' => '127.0.0.1', 'port' => 6379, 'timeout' => 0, 'dbindex' => 0, 'password' => '712mbddr@', ) ); ekzorchik@srv-us2004:~$ sudo systemctl restart apache2
Итого я подготовил для себя заметку, по переходу с Ubuntu 18.04 Server
на Ubuntu 20.04 Server
сервис OwnCloud 10
. Остается лишь пересоздать аккаунты, синхронизировать в них файлы, после выключить 18.04
, а вместо нее включить 20.04
изменив IP
-адреса.
На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.