GNU/Linux >> Belajar Linux >  >> Fedora

Cara Menginstal dan Mengonfigurasi Nextcloud di Fedora 32

Nextcloud adalah perangkat lunak sumber terbuka untuk menyimpan dan menyinkronkan data Anda di beberapa perangkat. Anda dapat menganggapnya sebagai klon Dropbox Anda sendiri. Namun selain menyimpan file, ia juga menyediakan fitur tambahan seperti Kalender, Kontak, Tugas Terjadwal, streaming media, dll.

Nextcloud menyediakan aplikasi untuk Windows, Linux, MacOS, dan aplikasi seluler untuk Android dan iOS yang dapat Anda gunakan untuk menyinkronkan file di berbagai perangkat Anda.

Dalam tutorial ini, kita akan belajar cara menginstal dan mengkonfigurasi Nextcloud di server berbasis Fedora 32. Kami juga akan menginstal server web Nginx bersama dengan PHP 7.4 dan MariaDB

Prasyarat

  • Server yang menjalankan Fedora 32.

  • Pengguna sudo non-root.

  • Pastikan semuanya diperbarui.

    $ sudo dnf update
    
  • Paket penting.

    $ sudo dnf install wget curl bzip2 nano unzip policycoreutils-python-utils -y
    

    Beberapa paket ini mungkin sudah ada di sistem Anda.

Konfigurasi Firewall

Langkah pertama adalah mengkonfigurasi firewall. Server Fedora dilengkapi dengan firewall Firewalld yang telah diinstal sebelumnya.

Periksa apakah firewall sedang berjalan.

$ sudo firewall-cmd --state
running

Periksa layanan/port yang diizinkan saat ini.

$ sudo firewall-cmd --permanent --list-services

Ini akan menunjukkan output berikut.

dhcpv6-client mdns ssh

Izinkan port HTTP dan HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Periksa kembali status firewall.

$ sudo firewall-cmd --permanent --list-services

Anda akan melihat keluaran serupa.

dhcpv6-client http https mdns ssh

Muat Ulang Firewall.

$ sudo systemctl reload firewalld

Instal PHP

Fedora 32 secara default dikirimkan dengan PHP 7.4 tetapi untuk memiliki repositori PHP yang diperbarui, kami akan menambahkan repositori REMI.

Instal repositori REMI yang merupakan repositori Fedora resmi untuk menginstal paket PHP.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-32.rpm

Aktifkan remi repositori dan nonaktifkan remi-modular gudang. Ini memungkinkan repositori yang diperlukan untuk menginstal paket PHP 7.4.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-disabled remi-modular

Instal PHP 7.4 bersama dengan beberapa paket tambahan.

$ sudo dnf install php-fpm php-cli php-gd php-mbstring php-intl php-mysqlnd php-imagick php-zip php-json php-process php-xml php-bcmath php-gmp php-ftp php-smbclient php-opcache

Periksa apakah PHP berfungsi dengan benar.

$ php --version
PHP 7.4.11 (cli) (built: Sep 29 2020 10:17:06) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.11, Copyright (c), by Zend Technologies

Konfigurasi PHP

Buka file /etc/php-fpm.d/www.conf .

$ sudo nano /etc/php-fpm.d/www.conf

Kita perlu mengatur pengguna/grup proses PHP Unix ke nginx . Temukan user=apache dan group=apache baris dalam file dan ubah ke nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Batalkan komentar variabel lingkungan PHP di bawah ini.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Batalkan komentar konfigurasi opcache pada baris terakhir.

php_value[opcache.file_cache] = /var/lib/php/opcache

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Sekarang edit konfigurasi opcache PHP /etc/php.d/10-opcache.ini .

$ sudo nano /etc/php.d/10-opcache.ini

Ubah konfigurasi seperti di bawah ini.

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Jalankan perintah berikut untuk meningkatkan unggahan File dan batas Memori untuk PHP.

$ sudo cp /etc/php.ini /etc/php.ini.bak
$ sudo sed -i "s/memory_limit = 128M/memory_limit = 512M/" /etc/php.ini
$ sudo sed -i "s/post_max_size = 8M/post_max_size = 100M/" /etc/php.ini
$ sudo sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 100M/" /etc/php.ini

Secara default, ada 3 file di /var/lib/php/ direktori yang pemilik grupnya disetel ke apache , tapi kami menggunakan Nginx. Jadi kita perlu memberikan izin kepada pengguna nginx untuk membaca dan menulis ke 3 direktori dengan setfacl .

$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/opcache/
$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/session/
$ sudo setfacl -R -m u:nginx:rwx /var/lib/php/wsdlcache/

Aktifkan dan mulai proses php-fpm.

$ sudo systemctl enable php-fpm
$ sudo systemctl start php-fpm

Instal Nginx

Fedora 32 secara default dikirimkan dengan versi Stable terbaru Nginx.

Instal Nginx.

$ sudo dnf install nginx -y

Periksa apakah itu berfungsi dengan benar.

$ nginx -v
nginx version: nginx/1.18.0

Mulai dan aktifkan Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Buka alamat IP server Anda di browser untuk melihat halaman berikut. Itu berarti Nginx bekerja dengan baik.

Instal MariaDB

MariaDB adalah pengganti drop-in untuk MySQL yang berarti perintah untuk menjalankan dan mengoperasikan MariaDB sama dengan perintah untuk MySQL.

Fedora 32 secara default dikirimkan dengan MariaDB 10.4 yang akan kita gunakan.

Instal server MariaDB.

$ sudo dnf install mariadb-server

Periksa apakah MariaDB diinstal dengan benar.

$ mysql --version
mysql  Ver 15.1 Distrib 10.4.14-MariaDB, for Linux (x86_64) using  EditLine wrapper

Aktifkan dan mulai layanan MariaDB.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Jalankan perintah berikut untuk melakukan konfigurasi default seperti memberikan kata sandi root, menghapus pengguna anonim, melarang login root dari jarak jauh, dan menghapus tabel pengujian.

$ sudo mysql_secure_installation

Menekan Enter memilih opsi default (salah satu yang dikapitalisasi, Y dalam hal ini).

Enter current password for root (enter for none): [PRESS ENTER]
Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Change the root password? [Y/n] [ANSWER n]
Remove anonymous users? [Y/n] [PRESS ENTER]
Disallow root login remotely? [Y/n] [PRESS ENTER]
Remove test database and access to it? [Y/n] [PRESS ENTER]
Reload privilege tables now? [Y/n] [PRESS ENTER]

Itu dia. Lain kali Anda ingin login ke MySQL, gunakan perintah berikut

$ sudo mysql

Masukkan kata sandi root Anda saat diminta.

Konfigurasi MariaDB

Masukkan perintah berikut untuk masuk ke shell MySQL.

$ sudo mysql

Buat pengguna MySQL untuk menangani Database NextCloud.

mysql> CREATE USER 'nextuser'@'localhost' IDENTIFIED BY 'yourpassword';

Buat database NextCloud.

mysql> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Berikan semua hak istimewa ke database Nextcloud kepada pengguna yang kita buat.

mysql> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextuser'@'localhost';

Keluar dari Shell MySQL.

mysql> exit

Unduh Nextcloud

Saatnya mengunduh dan menyiapkan folder Nextcloud.

$ wget https://download.nextcloud.com/server/releases/latest.tar.bz2
$ tar -jxvf latest.tar.bz2
$ sudo mv nextcloud /var/www/html/

Selanjutnya, kita perlu membuat folder data.

$ sudo mkdir /var/www/html/nextcloud/data
$ sudo chown -R nginx:nginx /var/www/html/nextcloud

Instal SSL

Kami akan menginstal SSL menggunakan layanan Let's Encrypt.

Untuk itu, instal Certbot.

$ sudo dnf install certbot

Hentikan Nginx karena akan mengganggu proses Certbot.

$ sudo systemctl stop nginx

Menghasilkan sertifikat. Kami juga membuat sertifikat DHParams.

$ export LDOMAIN="nextcloud.example.com"
$ export LEMAIL="[email protected]"
$ sudo certbot certonly --standalone -d $LDOMAIN --preferred-challenges http --agree-tos -n -m $LEMAIL --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Kami juga perlu menyiapkan tugas cron untuk memperbarui SSL secara otomatis. Untuk membuka editor crontab, jalankan perintah berikut

$ sudo EDITOR=nano crontab -e

Perintah di atas membuka Crontab dengan editor Nano, bukan editor Vim default.

Rekatkan baris berikut di bagian bawah.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

Pekerjaan cron di atas akan menjalankan certbot pada pukul 2:25 pagi setiap hari. Anda dapat mengubahnya menjadi apa pun yang Anda inginkan.

Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.

Konfigurasi SELinux/Izin

SELinux perlu dikonfigurasi untuk membuat Nextcloud berfungsi di Fedora. Masukkan perintah berikut ke untuk pengaturan SELinux dasar yang seharusnya berfungsi untuk semua orang.

Pastikan untuk menyesuaikan jalur file jika berbeda dalam kasus Anda.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'

$ sudo restorecon -Rv '/var/www/html/nextcloud/'

Untuk mengaktifkan pembaruan melalui antarmuka web Nextcloud, jalankan juga perintah berikut.

$ sudo setsebool -P httpd_unified on

Konfigurasi Nginx untuk Nextcloud

Selanjutnya, kita perlu mengkonfigurasi Nginx untuk hosting Nextcloud.

Untuk tujuan kami, Nextcloud akan di-host di domain http://nextcloud.example.com ,

Siapkan direktori tempat server memblokir.

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

Buka /etc/nginx/nginx.conf file untuk diedit.

$ sudo nano /etc/nginx/nginx.conf	

Paste baris berikut setelah baris include /etc/nginx/conf.d/*.conf

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.

Buat file /etc/nginx/sites-available/nextcloud.conf menggunakan editor Nano.

$ sudo nano /etc/nginx/sites-available/nextcloud.conf

Rekatkan kode berikut di editor. Pastikan untuk mengganti domain contoh dengan domain asli Anda sebelum menempel.

upstream php-handler {
    #server 127.0.0.1:9000;
    server unix:/run/php-fpm/www.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name nextcloud.example.com;
    # enforce https
    return 301 https://$server_name:443$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name nextcloud.example.com;
	
	access_log /var/log/nginx/nextcloud.access.log;
    error_log /var/log/nginx/nextcloud.error.log;

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # NOTE: some settings below might be redundant
    ssl_certificate /etc/letsencrypt/live/nextcloud.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.example.com/privkey.pem;
	ssl_protocols TLSv1.2 TLSv1.3;
	ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;
	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 off;
	ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this
    # topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
    #
    # WARNING: Only add the preload option once you read about
    # the consequences in https://hstspreload.org/. This option
    # will add the domain to a hardcoded list that is shipped
    # in all major browsers and getting removed from this list
    # could take several months.
    add_header Referrer-Policy "no-referrer" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Download-Options "noopen" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag "none" always;
    add_header X-XSS-Protection "1; mode=block" always;
	
	# Remove X-Powered-By, which is an information leak
    fastcgi_hide_header X-Powered-By;

    # Path to the root of your installation
    root /var/www/html/nextcloud;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

    # The following rule is only needed for the Social app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/webfinger /public.php?service=webfinger last;

    location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }

    # set max upload size
    client_max_body_size 100M;
    fastcgi_buffers 64 4K;

    # Enable gzip but do not remove ETag headers
    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    location / {
        rewrite ^ /index.php;
    }

    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
        deny all;
    }
    location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy)\.php(?:$|\/) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        set $path_info $fastcgi_path_info;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param HTTPS on;
        # Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        # Enable pretty urls
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

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

    # Adding the cache control header for js, css and map files
    # Make sure it is BELOW the PHP block
    location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        add_header Referrer-Policy "no-referrer" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Download-Options "noopen" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Permitted-Cross-Domain-Policies "none" always;
        add_header X-Robots-Tag "none" always;
        add_header X-XSS-Protection "1; mode=block" always;

        # Optional: Don't log access to assets
        access_log off;
    }

    location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {
        try_files $uri /index.php$request_uri;
        # Optional: Don't log access to other assets
        access_log off;
    }
}

Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.

Aktifkan file konfigurasi ini dengan menautkannya ke sites-enabled direktori.

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

Uji konfigurasi Nginx.

$ sudo nginx -t

Muat ulang layanan Nginx jika semuanya baik-baik saja.

$ sudo systemctl reload nginx

Instal Nextcloud

Ada dua cara untuk mengkonfigurasi Nextcloud - melalui baris perintah atau melalui antarmuka grafis. Kami akan memilih metode baris perintah.

Masuk ke direktori Nextcloud.

$ cd /var/www/html/nextcloud

Jalankan perintah berikut untuk menginstal Nextcloud.

$ sudo -u nginx php occ  maintenance:install --database "mysql" --database-name "nextcloud"  --database-user "nextuser" --database-pass "yourpassword" --admin-user "admin" --admin-pass "password"

Perintah ini dijalankan sebagai nginx pengguna karena memiliki izin menulis ke folder Nextcloud.

Selanjutnya, kita perlu menambahkan domain kita ke daftar domain tepercaya. Buka /var/www/html/nextcloud/config/config.php berkas.

$ sudo nano config/config.php

Ubah Nilai trusted_domains variabel dengan menambahkan alamat IP Server Anda dan domain Nextcloud Anda nextcloud.example.com ke sana sehingga Anda dapat mengakses penginstalan dari domain Anda.

'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => '167.172.35.56',
    2 => 'nextcloud.example.com',
  ),

Tekan Ctrl + X untuk menutup editor dan tekan Y saat diminta untuk menyimpan file.

Luncurkan instalasi Nextcloud Anda dengan membuka https://nextcloud.example.com di browser Anda dan Anda akan melihat layar berikut.

Masukkan Detail Login Administrasi Anda. Gulir melalui spanduk pengantar Nextcloud, atur lokasi dan status cuaca Anda dan pilih wallpaper dan setelah selesai Anda akan disambut dengan layar yang sama.

Kesimpulan

Ini menyimpulkan tutorial kami tentang menginstal Nextcloud di server Fedora 32. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.


Fedora
  1. Cara menginstal dan mengkonfigurasi Redis 6 di Fedora 34

  2. Cara Menginstal dan Mengonfigurasi Ansible di Fedora 35

  3. Cara menginstal dan Konfigurasi Mariadb di Fedora 35

  1. Cara Menginstal dan Mengonfigurasi Nextcloud dengan Apache di Ubuntu 18.04

  2. Cara Menginstal Phorum dengan Nginx di Fedora 30

  3. Cara Menginstal PHP 8 di Fedora 35

  1. Cara Menginstal dan Mengonfigurasi Nextcloud dengan Apache di CentOS 7

  2. Cara Memasang Bolt CMS di Fedora 29

  3. Cara Memasang Anchor CMS di Fedora 29