ownCloud в контерйнер върху ProxMox

Създаване на контейнер

За начало е необходим контейнер. Ще ползваме LXC с операционна система Debian със следните параметри: • CPU - 2 • RAM - 2048 • HDD - 77GB • OS - Debian • Hostname - drive.tachko.com • IPv4 - 192.168.11.6/24 Още подробности по контейнера: General - ще ползваме Unprivileged container, защото искаме контейнера да се стартира от root

Настройка преди инсталация

Да дефинираме отдалечения достъп до контейнера. Ще ползваме SSH. Ще го достъпваме с потребител различен от root. За целта е необходим нов потребител.

adduser cccp New password: mypass Retype new password: mypass passwd: password updated successfully Changing the user information for cccp Enter the new value, or press ENTER for the default Full Name []: Enter Room Number []: Enter Work Phone []: Enter Home Phone []: Enter Other []: Enter Is the information correct? [Y/n] Enter

Ако ще се логвате през Интернет то добра практика е да се смени порта на SSH.

nano /etc/ssh/sshd_config #Port 22 Port 2222

Инсталация на ownCloud

Започваме с обновяване на системата. Първо обновяваме каталога на репозиторите, а след това и самия Debian.

su - apt update && apt upgrade

Казват, че е добра практика след обновяване системата да се рестартира. Примерно ако се обнови ядрото тогава има смисъл от рестарт. Лично аз рядко извършвам това действие.

reboot

След рестарта, логваме се пак през потребителя cccp.

Инсталиране на Apache и SQL

su - apt install apache2 mariadb-server -y systemctl enable apache2 systemctl status apache2

Инсталиране на PHP 7.4

Обърнете внимание! Ползваме версия 7.4, с по-нови няма да може да работите. За да инсталираме PHP 7.4 ще са необходими някои допълнителни зависимости.

apt install -y apt-transport-https lsb-release ca-certificates wget curl

Да добавим GPG-ключ за репоритора.

curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg

Да добавим и самия репозитор.

echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list apt update

Обновяваме индекса на пакета за инсталация на PHP 7.4, а след това правим самата инсталация.

apt install php7.4 php7.4-{opcache,gd,curl,mysqlnd,intl,json,ldap,mbstring,mysqlnd,xml,zip} -y

Да проверим каква версия имаме на PHP.

php -v PHP 7.4.33 (cli) (built: Dec 18 2025 23:26:54) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies

Защита на MariaDB

mariadb-secure-installation NOTE: MariaDB is secure by default in Debian. Running this script is useless at best, and misleading at worst. This script will be removed in a future MariaDB release in Debian. Please read mariadb-server.README.Debian for details. Enter root user password or leave blank: Enter current password for root (enter for none): Enter OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] Enter Enabled successfully (or at least no errors was emitted)! Reloading privilege tables.. ... Success! You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] Enter New password: mypass Re-enter new password: mypass Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Enter SQL executed without errors! The operation might have been successful, or it might have not done anything. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Enter SQL executed without errors! The operation might have been successful, or it might have not done anything. By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Enter - Dropping test database... SQL executed without errors! The operation might have been successful, or it might have not done anything. - Removing privileges on test database... SQL executed without errors! The operation might have been successful, or it might have not done anything. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Enter ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!

Създаваме база данни за ownCloud

mysql -u root -p CREATE DATABASE owncloud; CREATE USER 'ocuser'@'localhost' IDENTIFIED BY 'ocpass'; GRANT ALL PRIVILEGES ON owncloud.* TO 'ocuser'@'localhost'; FLUSH PRIVILEGES; EXIT

Смъкваме и разопаковаме ownCloud

apt install bzip2 -y wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 tar -xvf owncloud-complete-latest.tar.bz2 mv owncloud /var/www/ chown -R www-data: /var/www/owncloud rm owncloud-complete-latest.tar.bz2

Създаваме конфигурационен файл за Apache

nano /etc/apache2/sites-available/owncloud.conf Alias / "/var/www/owncloud/" <Directory /var/www/owncloud/> Options +FollowSymlinks AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/owncloud SetEnv HTTP_HOME /var/www/owncloud </Directory>

И да активираме ownCloud.

a2ensite owncloud

За да работи ownCloud са необходими няколко модула на Apache. Да ги включим и рестартираме сървиса Apache.

a2enmod rewrite headers env dir mime unique_id systemctl restart apache2

Можем да направим първата проверка, като в браузъра напишем: http://192.168.11.6

01

Първоначална настройка на ownCLoud

Поглеждайки горната картинка да въведем следните стойности: Username - tachko@tachko.com Password - mypass Data folder - оставяме както е по подразбиране Database user - ocuser Database password - ocpass Database name - owncloud Database host - localhost След като въведем полетата натискаме бутона Finish setup. Изчаква се много дълго време, може да достигне и 5 мин. Нищо не пипаме, само чакаме. След завършване на конфигурацията се появява долната картинка.

02

Влизаме с администраторския потребител.

03

Още в първия екран ни предлага да изтеглим клиентска част за oneDrive. Ще работим под Windows зартова изтегляме приложение за десктоп (Desktop app).

04

Казахме, че ще сме под Windows затова натискаме върху бутона Download for Windows >.

05

Изтегляме клиента и се връщаме в браузъра за да продължим с настройките.

Създаваме кратък URL

Ако по някаква причина сте решили да създадете страницата си примерно на http://192.168.11.6/owncloud. След време решавате, че това owncloud е излишно и искате да изглежда примерно http://192.168.11.6. То тогава:

nano /var/www/html/owncloud/config/config.php // 'overwrite.cli.url' => 'http://192.168.11.6/owncloud', 'overwrite.cli.url' => 'http://localhost/'

Ползване на домйн име и HTTPS

За да се ползва HTTPS протокола е нужно да се включи модула за ssl и да активираме сайта с поддръжка на HTTPS.

a2enmod ssl a2ensite default-ssl systemctl reload apache2

И да пробваме:https://192.168.11.6 Всичко работи нормално, но в локалната мрежа. Ако се пробваме да имаме достъп през Интернет ще има проблем, защото ползваме не публично IP. Има и още една спънка. Имаме друг хост към който са пренасочени портове 80 и 443. За да решим задачата с нашия сървър ще се наложи протоколите HTTP и HTTPS да работят на други портове. Примерно ще ползваме порт 8080 за HTTP и 8443 за HTTPS.

Промяна на портовете за HTTP и HTTPS

Да накараме Apache да "слуша" на портове 8080 и 8443 за сайта на ownCloud.

nano /etc/apache2/ports.conf # Listen 80 Listen 8080 <IfModule ssl_module> # Listen 443 Listen 8443 </IfModule> <IfModule mod_gnutls.c> # Listen 443 Listen 8443 </IfModule> nano /etc/apache2/sites-available/000-default.conf ### Най-отгоре търсим реда: <VirtualHost *:80> ### Променяме на: <VirtualHost *:8080> nano /etc/apache2/sites-available/default-ssl.conf ### Най-отгоре търсим реда: <VirtualHost *:443> ### Променяме на: <VirtualHost *:8443> systemctl restart apache2

Сега би трябвало да се отварят страниците на:http://192.168.11.6:8080 и https://192.168.11.6:8443

Замяна на IP адрес с домейн име

За да имаме достъп до сайта на ownCloud през Интернет ще се наложи да се пренасочат няколко порта към вътрешно IP 192.168.11.6. Трябва да се получи следното: drive.tachko.com:8080 ==> 192.168.11.6:8080 drive.tachko.com:8443 ==> 192.168.11.6:8443 Тези портове се пренасочват в рутера. След като са пренасочени портовете трябва да има достъп до ownCloud по име. http://drive.tachko.com:8080/ https://drive.tachko.com:8443/ Да пробваме:

08

Достъп до сървъра от непознат домейн. За целта:

nano /var/www/owncloud/config/config.php array ( 0 => '192.168.11.6', 1 => 'drive.tachko.com', ), systemctl restart apache2

Проверяваме наново:https://drive.tachko.com:8443/. Всичко работи нормално.

Достъп до ownCloud през друг хост

На практика можем да работим. Има обаче един дребен дефект. Представете си, че минава време и забравяте, че ползвате порт 8443. Пишете примерно https://drive.tachko.com и се отваря друг сайт, защто се обърщате към порт 443, а не към 8443. Трябва да направим така, че когато напишем https://drive.tachko.com, Apache-то което ни посрещне да ни препрати на https://192.168.11.6:8443.

Конфигуриране на Apache на другия хост

Обърнете внимание! Работим върху друг Debian който посреща заявките на портове 80 и 443. Нека примерно да наречем другия хост redirect.tachko.com. Този хост отговаря за домейна tachko.com. Целта ни е да направим два виртуални хоста която задача им е да пренасочат заявките на порт 80 и 443 към IP 192.168.11.6 съответно към портове 8080 и 8443.

nano /etc/apache2/sites-available/drive.tachko.com.conf <VirtualHost *:80> ServerName drive.tachko.com DocumentRoot /var/www/tachko.com/ Redirect permanent / https://drive.tachko.com:8443 </VirtualHost> nano /etc/apache2/sites-available/drive.tachko.com-ssl.conf <VirtualHost *:443> ServerName drive.tachko.com Redirect permanent / https://drive.tachko.com:8443 SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key </VirtualHost> a2ensite drive.tachko.com.conf a2ensite drive.tachko.com-ssl.conf systemctl restart apache2

Така когато напишем http://drive.tachko.com или https://drive.tachko.com винаги ще се отваря https://drive.tachko.com:8443.

CertBot

certbot certonly --standalone --http-01-port 8443 -d drive.tachko.com nano /etc/apache2/sites-available/default-ssl.conf Изтриваме опциите по подразбиране: SSLCertificateFile, SSLCertificateKeyFile и добавяме новите: SSLCertificateFile /etc/letsencrypt/live/tachko.com/cert.pem SSLCertificateChainFile /etc/letsencrypt/live/tachko.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/tachko.com/privkey.pem SSLCACertificateFile /etc/letsencrypt/live/tachko.com/chain.pem

ownCloud клиент за линукс

По-интересната част е как да се инсталира клиента на линука. В случая ще разгледаме за Arch linux но идеята е същата и за други дистрибуции. Първо инсталираме клиента.

sudo pacman -S owncloud-client --noconfirm

След това инсталираме добавка към файловия менажер. Команда за файлов менажер Dolphin.

yay -S owncloud-client-desktop-shell-integration-dolphin-git --noconfirm

И команда за Nautilus.

yay -S owncloud-client-desktop-shell-integration-nautilus --noconfirm

След като инсталирате пакетите е време да се настрои файловия менажер. Settings >> Configure >> Configure Dolphin В новия прозорец в секцията Context Menu търсим ownCloudAction. Трябва да се убедим, че е включена опцията. След всичко това ще се появи папка за синхронизация в /home/ownCloud. Следващия момент е, след рестарт автоматично да се логваме към ownCloud, без да изисква парола.

sudo pacman -S kwallet-pam --noconfirm

KWallet трябва да е със същата парола както е потребителя. Освен това трябва да се изключено автоматичното логване в Arch linux. Settings >> Login Screen (SDDM) >> Behavior >> Automatically log in ==> трябва да е изключен