Переходим с нуля на 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: ekzorchikPass: 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.