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 і сервер бази даних знаходяться на одному вузлі.
Натисніть Завершити налаштування.
Дочекайтеся завершення налаштування. Потім увійдіть в систему і перезавантаження маршрутизатор поміж себе.
Це має спрацювати!