Установка ownCloud в Ubuntu Linux з Nginx

ownCloud – це автономна платформа для синхронізації і обміну файлами з відкритим вихідним кодом, аналогічна Dropbox, OneDrive і іншим пропрієтарним сервісів онлайн-сховища. ownCloud дозволяє використовувати приватні хмарні сервіси на власних серверах користувачів. Його можна розширити за допомогою додатка, яке можна встановити на мобільних і настільних комп’ютерах для доступу і синхронізації ваших файлів, контактів і даних на всіх пристроях і платформах.

Якщо ви шукаєте платформу для автономного обміну файлами і синхронізації, ownCloud стане хорошим місцем для початку. Ми покажемо вам, як встановити та налаштувати ownCloud на вашому власному сервері Ubuntu з посиланням на повідомлення Let’s Encrypt SSL.

Щоб почати установку і настройку ownCloud в Ubuntu Linux, виконайте наступні дії.

Як встановити Nginx в Ubuntu Linux

Як було сказано раніше, ми збираємося використовувати веб-сервер Nginx для запуску ownCloud. ownCloud для роботи потрібна веб-сервер, а Nginx – найпопулярніший веб-сервер з відкритим вихідним кодом, доступний сьогодні.

Щоб встановити Nginx в Ubuntu, виконайте наступні команди:

sudo apt update
sudo apt install nginx

Після установки Nginx наведені нижче команди можна використовувати для зупинки, запуску і включення служб Nginx, щоб вони завжди запускалися при кожному запуску вашого сервера.

sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Щоб перевірити, чи встановлений і працює Nginx, відкрийте свій веб-браузер і перейдіть до IP-адресою або назву сервера.

http://localhost

Якщо ви бачите зазначену вище сторінку в своєму браузері, значить, Nginx працює належним чином.

Як встановити MariaDB в Ubuntu Linux

Для роботи ownCloud потрібно сервер бази даних. ownCloud зберігає свій контент в базі даних, і MariaDB, ймовірно, є найкращим сервером баз даних, доступним для запуску ownCloud.

MariaDB – це швидкий, безпечний сервер за замовчуванням майже для всіх серверів Linux. Щоб встановити MariaDB, виконайте наступні команди:

sudo apt install mariadb-server
sudo apt install mariadb-client

Після установки MariaDB наведені нижче команди можна використовувати для зупинки, запуску і включення служб MariaDB, щоб вони завжди запускалися при завантаженні сервера.

sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Потім виконайте наведені нижче команди, щоб захистити сервер бази даних паролем root, якщо вам не було запропоновано зробити це під час установки.

sudo mysql_secure_installation

У відповідь на запит скористайтеся наведеними нижче керівництвом, щоб відповісти:

If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): PRESS ENTER

Switch to unix_socket authentication [Y/n] n

Change the root password? [Y/n] n

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

All done!

Щоб перевірити і переконатися, що MariaDB встановлений і працює, увійдіть в консоль бази даних, використовуючи такі команди:

sudo mysql -u root -p

Ви повинні автоматично увійти на сервер бази даних, оскільки ми ініціювали запит на вхід як root. Тільки root може увійти без пароля і тільки з консолі сервера.

Якщо ви бачите екран, схожий на показаний вище, значить, сервер успішно встановлено.

Як встановити PHP в Ubuntu Linux

Крім того, для запуску ownCloud потрібно PHP. Пакети PHP додаються в репозиторії Ubuntu. Версії репозиторіїв можуть бути не найостаннішими. Якщо вам потрібно встановити останні версії, вам потрібно буде додати сторонній репозиторій PPA.

У сторонній репозиторій з останніми версіями PHP виконайте наступні команди.

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

На момент написання остання версія PHP 8.0.

sudo apt update

Потім виконайте наведені нижче команди, щоб встановити PHP 8.0 і пов’язані модулі.

sudo apt install php7.4-fpm php7.4-imagick php7.4-common php7.4-mysql php7.4-gmp php7.4-imap php7.4-json php7.4-pgsql php7.4-ssh2 php7.4-sqlite3 php7.4-ldap php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip

Потім ви захочете змінити деякі настройки конфігурації PHP, які відмінно працюють з ownCloud. Виконайте наступні команди, щоб відкрити файл конфігурації PHP за замовчуванням.

sudo nano /etc/php/7.4/fpm/php.ini

Змініть настройки рядка, щоб вони відповідали рядках нижче. Збережіть зміни і вийдіть.

file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 360
date.timezone = America/Chicago

Як створити базу даних ownCloud в Ubuntu

На цьому етапі ми готові створити базу даних ownCloud. Як згадувалося вище, ownCloud використовує бази даних для зберігання свого контенту.

Щоб створити базу даних для ownCloud, виконайте наступні команди:

sudo mysql -u root -p

Потім створіть базу даних під назвою owncloud

CREATE DATABASE owncloud;

Створіть користувача бази даних з ім’ям ownclouduser і встановіть пароль

CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'new_password_here';

Після цього надайте користувачеві повний доступ до бази даних.

GRANT ALL ON owncloud.* TO 'ownclouduser'@'localhost' WITH GRANT OPTION;

Нарешті, збережіть зміни і вийдіть.

FLUSH PRIVILEGES;
EXIT;

Як завантажити ownCloud на Ubuntu

Ми готові завантажити ownCloud і приступити до його налаштуванні. Спочатку виконайте команди, щоб завантажити останню версію ownCloud з його сховища.

Потім вийміть завантажений контент в кореневій каталог Nginx. Це створить папку з ім’ям owncloud.

wget https://download.owncloud.org/community/owncloud-complete-20210721.zip -P /tmp
sudo unzip /tmp/owncloud-complete-20210721.zip -d /var/www

Виконайте команду нижче, щоб дозволити користувачеві www-data володіти новим каталогом owncloud.

sudo chown -R www-data:www-data /var/www/owncloud/
sudo chmod -R 755 /var/www/owncloud/

Як налаштувати Nginx для ownCloud

Ми завантажили вміст ownCloud в нову папку, яку ми назвали ownCloud. Тепер давайте налаштуємо Nginx для створення нового серверного блоку для використання з нашим сайтом ownCloud. Ви можете створити стільки серверних блоків за допомогою Nginx.

Для цього виконайте наведені нижче команди, щоб створити новий файл конфігурації з ім’ям owncloud.conf в каталозі / etc / nginx / sites-available / для розміщення нашого блоку сервера ownCloud.

sudo nano /etc/nginx/sites-available/owncloud.conf

У файлі скопіюйте і вставте вміст нижче в файл і збережіть.

upstream php-handler { 
    server unix:/var/run/php/php7.4-fpm.sock;
}
server {
    listen 80;
    listen [::]:80;
    root /var/www;
    index  index.php index.html index.htm;
    server_name  example.com;


  location ^~ /owncloud {

        client_max_body_size 512M;
        fastcgi_buffers 8 4K;
        fastcgi_ignore_headers X-Accel-Buffering;

        gzip off;

        error_page 403 /owncloud/core/templates/403.php;
        error_page 404 /owncloud/core/templates/404.php;

        location /owncloud {
            rewrite ^ /owncloud/index.php$uri;
        }

        location ~ ^/owncloud/(?:build|tests|config|lib|3rdparty|templates|changelog|data)/ {
            return 404;
        }
        location ~ ^/owncloud/(?:.|autotest|occ|issue|indie|db_|console|core/skeleton/) {
            return 404;
        }
        location ~ ^/owncloud/core/signature.json {
            return 404;
        }

        location ~ ^/owncloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[sm]-provider/.+|core/templates/40[34]).php(?:$|/) {
            fastcgi_split_path_info ^(.+.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param modHeadersAvailable true;
            fastcgi_read_timeout 180;
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }

        location ~ ^/owncloud/(?:updater|oc[sm]-provider)(?:$|/) {
            try_files $uri $uri/ =404;
            index index.php;
        }

        # Adding the cache control header for js and css files
        # Make sure it is BELOW the PHP block
        location ~ /owncloud/.*.(?:css|js) {
            try_files $uri /owncloud/index.php$uri$is_args$args;
            add_header Cache-Control "max-age=15778463" always;
            add_header X-Content-Type-Options "nosniff" always;
            add_header X-Frame-Options "SAMEORIGIN" always;
            add_header X-XSS-Protection "1; mode=block" always;
            add_header X-Robots-Tag "none" always;
            add_header X-Download-Options "noopen" always;
            add_header X-Permitted-Cross-Domain-Policies "none" always;
            access_log off;
        }

        location ~ /owncloud/.*.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map|json) {
            try_files $uri /owncloud/index.php$uri$is_args$args;
            add_header Cache-Control "public, max-age=7200" always;
            access_log off;
        }
    }
}

Збережіть файл і вийдіть.

Після збереження файлу, наведеного вище, виконайте наведені нижче команди, щоб включити новий файл, який містить наш серверний блок ownCloud, а також інші важливі модулі Nginx.

Після цього перезапустіть Nginx.

sudo ln -s /etc/nginx/sites-available/owncloud.conf /etc/nginx/sites-enabled/

Перезавантажте Nginx, коли закінчите настроювання, зазначену вище.

sudo systemctl restart nginx.service

Тепер, коли ownCloud завантажений і необхідні служби налаштовані, відкрийте браузер і запустіть установку ownCloud, відвідавши доменне ім’я або IP-адресу вашого сервера, а потім / owncloud:

http://example.com/owncloud

Однак ми хочемо переконатися, що наш сервер захищений безкоштовними SSL-сертифікатами Let’s Encrypt. Отже, продовжите нижче, щоб дізнатися, як згенерувати SSL-сертифікат Let’s Encrypt для веб-сайтів.

Як налаштувати Let’s Encrypt для ownCloud

Якщо вам вдалося згенерувати сертифікат Let’s Encrypt SSL, вам слід повторно відкрити блок сервера для нашого веб-сайту ownCloud, виконавши наступні команди.

sudo nano /etc/nginx/sites-available/owncloud.conf

Нові конфігурації блоків сервера ownCloud повинні виглядати приблизно так, як показано в рядку нижче. Запишіть виділені рядки.

  • Перший блок сервера прослуховує порт 80. Він містить перенаправлення 301 для перенаправлення HTTP на HTTPS.
  • Другий серверний блок прослуховує порт 443. Він містить перенаправлення 301 для перенаправлення www на домен без www.
upstream php-handler { 
    server unix:/var/run/php/php7.4-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;
    root /var/www;
    index  index.php index.html index.htm;
    server_name  example.com www.example.com;

    include snippets/well-known.conf;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    root /var/www;
    index  index.php index.html index.htm;
    server_name www.example.com;
   
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    add_header Strict-Transport-Security "max-age=31536000;  includeSubDomains";
    
    include snippets/well-known.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    root /var/www;
    index  index.php index.html index.htm;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 30s;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    add_header Strict-Transport-Security "max-age=31536000;  includeSubDomains";


 location / {
        return 301 https://$server_name:443$request_uri;
    }

  location ^~ /owncloud {

        client_max_body_size 512M;
        fastcgi_buffers 8 4K;
        fastcgi_ignore_headers X-Accel-Buffering;

        gzip off;

        error_page 403 /owncloud/core/templates/403.php;
        error_page 404 /owncloud/core/templates/404.php;

        location /owncloud {
            rewrite ^ /owncloud/index.php$uri;
        }

        location ~ ^/owncloud/(?:build|tests|config|lib|3rdparty|templates|changelog|data)/ {
            return 404;
        }
        location ~ ^/owncloud/(?:.|autotest|occ|issue|indie|db_|console|core/skeleton/) {
            return 404;
        }
        location ~ ^/owncloud/core/signature.json {
            return 404;
        }

        location ~ ^/owncloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[sm]-provider/.+|core/templates/40[34]).php(?:$|/) {
            fastcgi_split_path_info ^(.+.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param HTTPS on;
            fastcgi_param modHeadersAvailable true;
            fastcgi_read_timeout 180;
            fastcgi_pass php-handler;
            fastcgi_intercept_errors on;
            fastcgi_request_buffering off;
        }

        location ~ ^/owncloud/(?:updater|oc[sm]-provider)(?:$|/) {
            try_files $uri $uri/ =404;
            index index.php;
        }

        # Adding the cache control header for js and css files
        # Make sure it is BELOW the PHP block
        location ~ /owncloud/.*.(?:css|js) {
            try_files $uri /owncloud/index.php$uri$is_args$args;
            add_header Cache-Control "max-age=15778463" always;
            add_header X-Content-Type-Options "nosniff" always;
            add_header X-Frame-Options "SAMEORIGIN" always;
            add_header X-XSS-Protection "1; mode=block" always;
            add_header X-Robots-Tag "none" always;
            add_header X-Download-Options "noopen" always;
            add_header X-Permitted-Cross-Domain-Policies "none" always;
            access_log off;
        }

        location ~ /owncloud/.*.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map|json) {
            try_files $uri /owncloud/index.php$uri$is_args$args;
            add_header Cache-Control "public, max-age=7200" always;
            access_log off;
        }
    }
}

Збережіть файл вище, а після перезапуску Nginx і PHP, використовуючи наведені нижче команди.

sudo systemctl reload nginx

Нарешті, якщо все піде за планом, ви зможете запустити майстер настройки ownCloud, перейшовши до імені хоста сервера або IP-адресою через HTTPS.

https://example.com/owncloud

Повинен з’явитися майстер установки ownCloud. Дотримуйтесь інструкцій майстра, щоб завершити настройку.

  • Створіть обліковий запис адміністратора і пароль
  • Залиште папку даних за замовчуванням
  • Виберіть MySQL / MariaDB
  • Введіть ім’я користувача бази даних
  • Введіть пароль користувача бази даних
  • Введіть ім’я бази даних
  • Залиште вузол бази даних в якості локального, якщо ownCloud і сервер бази даних знаходяться на одному вузлі.

Натисніть Завершити налаштування.

Дочекайтеся завершення налаштування. Потім увійдіть в систему і перезавантаження маршрутизатор поміж себе.

Це має спрацювати!

Поділіться своєю любов'ю

Залишити відповідь

0 комментариев
Новіші
Старіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x