Переходим с нуля на 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:
Обновляю систему да самого актуального состояния через свой домашний скрипт настройки:
1 2 3 |
ekzorchik@srv-us2004:~$ hg clone http://srv-wiki/hg/dproject ekzorchik@srv-us2004:~$ sudo ./dproject/default |
Шаг №2:
Устанавливаю Apache2 + MySQL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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
) и устанавливаю:
1 2 3 4 5 6 |
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
через самоподписанный сертификат:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
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
следующие:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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
который выступает как прокси:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
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:
1 2 3 4 5 6 7 |
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 адреса роутера, но только если такая возможность у Вас есть, т. к. я описываю свой опыт и не претендую на универсальность.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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 |
Уведомляем поисковых роботов не индексировать мое хранилище:
1 2 3 4 5 |
ekzorchik@srv-us2004:~$ sudo nano /var/www/owncloud/robots.txt User-agent: * Disallow: / |
Шаг №8:
Небольшой прирост в скорости через кеширование Redis
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
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.