Вместо предисловия

Эта история началась с того, что завалялся на полке 8 Тб жесткий диск. Вообще я больше предпочитаю NAS в виде Synology либо QNAP. Но так как под рукой были только свободное время и желание решил развернуть на базе виртуальной машины. Кроме Owncloud есть еще FileCloud и NextCloud. Может быть они вам больше понравятся. Мне owncloud приглянулся за чистоту дизайна.

Установка на базе Ubuntu 24.04 Server

Сначала начнем с классического обновления системы

sudo apt update 
apt upgrade -y
reboot

После перезагрузки установим веб-сервер и СУБД

sudo su
apt install apache2 mariadb-server -y
systemctl enable --now apache2
systemctl status apache2 --no-page -l

owncloud также требует модуль php7.4 установим

add-apt-repository ppa:ondrej/php
apt update
sudo apt install php7.4 php7.4-{opcache,gd,curl,mysqlnd,intl,json,ldap,mbstring,mysqlnd,xml,zip} -y

Выполним установку СУБД sudo mysql_secure_installation Отвечаем на вопросы:

Switch to unix_socet_authentication: n
Change the root password: n
Remove anonynous users: y
Disallow login remotely: y
Remove test database and access to it: y
Reload privilege tables now: y

Далее созданим базу данных и пользователя.

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

Замените значения пароля ‘password’ на свои так как тут предоставлены тестовые

Далее скачаем и распакуем 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/html/
chown -R www-data: /var/www/html/owncloud
rm owncloud-complete-latest.tar.bz2

Далее создадим конфигурационный файл для веб сервера sudo nano /etc/apache2/sites-available/owncloud.conf Вставим в него следующее содержимое, замените айпи адрес на свой

<VirtualHost *:80>
  ServerAdmin admin@example.com
  DocumentRoot /var/www/html/owncloud
  ServerName 192.168.151.18
  Alias / "/var/www/html/owncloud/"

  <Directory /var/www/html/owncloud/>
    Options +FollowSymlinks
    AllowOverride All

    <IfModule mod_dav.c>
      Dav off
    </IfModule>

    SetEnv HOME /var/www/html/owncloud
    SetEnv HTTP_HOME /var/www/html/owncloud
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/owncloud_error.log
  CustomLog ${APACHE_LOG_DIR}/owncloud_access.log combined
</VirtualHost>

Замените значения ‘example.com’ и ‘your-domain.com’ на свои. Перезагружаем сервер командой reboot Проверим доступность сервера по адресу http://ваш-ip/owncloud

Если все прошло хорошо, то система предложит создать учетную запись администратора. Для подключения к БД вводим значения которые использовали ранее. Процес создания первого пользователя может занять длительное время. У меня примерно 3-5 минут висело окно.

Делаем короткий URL

Даллее отредактируем файл настроек owncloud чтобы наш веб сервис был доступен по прямой ссылке http://192.168.0.22/. вместо http://192.168.0.22/owncloud (ip для примера указан) Для этого откроем файл sudo nano /var/www/html/owncloud/config/config.php заменим значение 'overwrite.cli.url' => 'http://localhost/'

Далее выключим стандартый сайт веб-сервера и включим наш

sudo a2dissite 000-default.conf
sudo a2ensite owncloud.conf
sudo systemctl restart apache2

Подключаем SSL

Далле займемся ssl сертификатами чтобы наш сайт был доступен через 443 порт Для этого нам понадобиться DNS A-запись в виде site.com либо cloud.site.com а также пробросить порты на маршрутизаторе до вашего хоста. Как это делать в данной статье пропускается. (Так как это сильно зависит от регистратора сайта и модели маршрутизатора.)

Установим службу sertbot sudo apt install certbot python3-certbot-apache -y

Далее запустим процедуру регистрации сертификатов. Убедитесь перед этой процедурой что сайт доступен через протокол http. То есть 80 порт должен уже быть проброшен на маршрутизаторе. Также DNS запись также должна уже быть создана.

sudo certbot --apache

Вас попросят ввести электронную почту и согласиться с правилами использования сервиса.

Даллее нужно будет добавить пути к SSL сертификатам в настройках веб-сервера

sudo nano /etc/apache2/sites-available/owncloud.conf замените значения drive.skp.kz на свои

<IfModule mod_ssl.c>
<VirtualHost *:443>
  ServerAdmin admin@example.com
  DocumentRoot /var/www/html/owncloud
  ServerName drive.skp.kz
  Alias / "/var/www/html/owncloud/"

  <Directory /var/www/html/owncloud/>
    Options +FollowSymlinks
    AllowOverride All

    <IfModule mod_dav.c>
      Dav off
    </IfModule>

    SetEnv HOME /var/www/html/owncloud
    SetEnv HTTP_HOME /var/www/html/owncloud
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/owncloud_error.log
  CustomLog ${APACHE_LOG_DIR}/owncloud_access.log combined

  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/drive.skp.kz/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/drive.skp.kz/privkey.pem
  Include /etc/letsencrypt/options-ssl-apache.conf

</VirtualHost>
</IfModule>

Далее в настройках owncloud нужно будет добавить наш домен в доверенные Отредактируем файл sudo nano /var/www/html/owncloud/config/config.php и добавтие в него строчку

'trusted_domains' =>
array (
  0 => 'localhost',
  1 => '192.168.151.19',
  3 => 'drive.skp.kz'
),

Проверяем.

Кастомизация

Owncloud поддерживает кастомные темы оформления. На их сайте есть даже подробная статья на эту тему. Меня в целом стандартая тема более чем устраивает, однако было бы не плохо заменить несколько элементов на свои.

Сделать это очень просто заменив файлы в директории /var/www/html/owncloud/core/img на свои.

Например можно сделать такую хитрость - скопировать все эти файлы себе в папку чтобы можно было со своего компьютера удобно открыть

sudo cp -r /var/www/html/owncloud/core/img /var/www/html/owncloud/data/admin/files
cd /var/www/html/owncloud/
sudo -u www-data php occ files:scan admin

Замените название пользователя ‘admin’ если при создании вы указали другого Данная операция скопирует папку к вам в “облако” и их будет удобно скачать и редактировать. Таким же образом после редактирования можно заменить файлы обратно.