Εγκαταστήστε το NextCloud στο Ubuntu 22.04 LTS – Πλήρης οδηγός

Το Nextcloud είναι ένα σύστημα φιλοξενίας αρχείων που μας επιτρέπει να αποθηκεύουμε το περιεχόμενό μας όπως έγγραφα, εικόνες, βίντεο κ.λπ. και να το μοιραζόμαστε με άλλους.

Εδώ θα δούμε πώς να εγκαταστήσετε το NextCloud στο Ubuntu 22.04 LTS αυτό θα είναι ένας πλήρης οδηγός.

Αντί να βασιζόμαστε σε εξωτερικούς παρόχους υπηρεσιών για τα προσωπικά και επαγγελματικά μας έγγραφα, το Nextcloud μας δίνει την ελευθερία να τα αποθηκεύουμε στους διακομιστές μας ή σε αξιόπιστα κέντρα δεδομένων. είναι ένα αυτοδιαχειριζόμενο κεντρικό σύστημα διαχείρισης εγγράφων και αρχείων.

Είναι ανοιχτού κώδικα, επομένως μας δίνει τη δυνατότητα να χρησιμοποιήσουμε και να προσαρμόσουμε την εφαρμογή όπως χρειαζόμαστε. Έχουμε τον πλήρη έλεγχο της εφαρμογής. Έτσι μπορούμε να παρέχουμε τα μέτρα ασφαλείας μας για την ασφάλεια του περιεχομένου μας.



Σε αυτό το σεμινάριο, θα δούμε πώς να εγκαταστήσετε το NextCloud στο Ubuntu 22.04 LTS. Αυτή θα είναι μια λεπτομερής ρύθμιση, θα αυξήσουμε την απόδοση του Nextcloud και θα εφαρμόσουμε την ασφάλεια. τα βήματα που θα ακολουθήσουμε.

1. Εγκαταστήστε τα πακέτα PHP και MySQL
2. Ρυθμίστε τις παραμέτρους του MySQL Server
3. Λήψη, εξαγωγή και εφαρμογή αδειών
4. Εγκαταστήστε το Nextcloud από τη γραμμή εντολών
5. Εγκαταστήστε και ρυθμίστε τις παραμέτρους PHP-FPM με Apache

6. Δημιουργία σελίδας info.php για έλεγχος δυνατοτήτων php
7 Ενεργοποίηση Opcache σε php
8. Ενεργοποίηση APCu σε php
9. Εγκατάσταση και διαμόρφωση Redis

10. Εγκατάσταση SSL και ενεργοποίηση HTTP2
11. Όμορφες διευθύνσεις URL.


1. Εγκαταστήστε τα απαιτούμενα πακέτα


1. Ενημερώστε και αναβαθμίστε τα πακέτα Ubuntu

# apt update && apt upgrade

2. Εγκαταστήστε τον Apache και τον MySQL Server

# apt install apache2 mariadb-server 

3. Εγκαταστήστε την PHP και άλλες εξαρτήσεις και επανεκκινήστε τον Apache

# apt install libapache2-mod-php php-bz2 php-gd php-mysql php-curl php-mbstring php-imagick php-zip php-ctype php-curl php-dom php-json php-posix php-bcmath php-xml php-intl php-gmp zip unzip wget

4. Ενεργοποιήστε τις απαιτούμενες μονάδες Apache και επανεκκινήστε το Apache:

# a2enmod rewrite dir mime env headers
# systemctl restart apache2

2. Ρυθμίστε τις παραμέτρους του MySQL Server

1. Συνδεθείτε στο MySQL Prompt, απλώς πληκτρολογήστε

# mysql

2. Δημιουργήστε βάση δεδομένων MySQL και χρήστη για το Nextcloud και παρέχετε δικαιώματα.

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'passw@rd';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
quit;

3. Λήψη, Εξαγωγή και Εφαρμογή Δικαιωμάτων.

Τώρα κατεβάστε το πιο πρόσφατο αρχείο αρχείου Nextcloud, Μεταβείτε στο Σελίδα λήψης Nextcloud. Ή μπορείτε να κάνετε λήψη από αυτόν τον άμεσο σύνδεσμο:https://download.nextcloud.com/server/releases/latest.zip

1. Κάντε λήψη και αποσυμπίεση στο φάκελο /var/www

# cd /var/www/
# wget https://download.nextcloud.com/server/releases/latest.zip
# unzip latest.zip

2. Αφαιρέστε το αρχείο zip, το οποίο δεν είναι απαραίτητο τώρα.

# rm -rf latest.zip

3. Αλλάξτε την ιδιοκτησία του καταλόγου περιεχομένου nextcloud στον χρήστη HTTP.

# chown -R www-data:www-data /var/www/nextcloud/

4. Εγκαταστήστε το NextCloud από τη γραμμή εντολών

Θα εγκαταστήσουμε το Nextcloud στο Ubuntu 22.04 από τη γραμμή εντολών, θα μας εξοικονομήσει χρόνο καθώς παρέχουμε όλη τη βάση δεδομένων και τα διαπιστευτήρια διαχειριστή για εγκατάσταση. Θα εγκαταστήσει το Nextcloud σιωπηλά, δεν χρειάζεται να περάσουμε από τη ρύθμιση web. Για λεπτομερή εγκατάσταση της γραμμής εντολών Nextcloud, επισκεφθείτεαυτή η σελίδα.

1. Εκτελέστε την εντολή CLI

# cd /var/www/nextcloud
# sudo -u www-data php occ  maintenance:install --database \
"mysql" --database-name "nextcloud"  --database-user "nextcloud" --database-pass \
"passw@rd" --admin-user "admin" --admin-pass "admin123"

Εάν όλα πάνε καλά, η εντολή θα εμφανίσει  "Το Nextcloud εγκαταστάθηκε με επιτυχία" . Παρέχαμε έναν πολύ απλό χρήστη/κωδικό πρόσβασης, κατά τη ρύθμιση της παραγωγής, αυτός πρέπει να είναι ένας πολύπλοκος κωδικός πρόσβασης.

2. Το nextcloud επιτρέπει την πρόσβαση μόνο από τον localhost, θα μπορούσε μέσω του σφάλματος  "Πρόσβαση μέσω μη αξιόπιστου τομέα" . πρέπει να επιτρέψουμε την πρόσβαση στο nextcloud χρησιμοποιώντας ip ή όνομα τομέα.

# vi /var/www/nextcloud/config/config.php

  'trusted_domains' =>
  array (
    0 => 'localhost',
    1 => 'nc.mailserverguru.com',     // we Included the Sub Domain
  ),

  .....
:x    // saving the file

3. Ρυθμίστε τις παραμέτρους του Apache ώστε να φορτώνει το Nextcloud από το φάκελο /var/www/nextcloud .

# vi /etc/apache2/sites-enabled/000-default.conf


        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/nextcloud    // Chan
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined


Now, Restart Apache Server

# systemctl restart apache2

Τώρα, μεταβείτε στο πρόγραμμα περιήγησης και πληκτρολογήστε http:// [ ip ή fqdn ] του διακομιστή, θα εμφανιστεί η παρακάτω σελίδα σύνδεσης στο Nextcloud.

Η βασική εγκατάσταση του NextCloud στο Ubuntu 22.04 ολοκληρώθηκε, τώρα θα εργαστούμε για την απόδοση και την ασφάλεια.

5. Εγκαταστήστε και ρυθμίστε το PHP-FPM με Apache

Εδώ θα εγκαταστήσουμε την PHP-FPM, η οποία είναι ταχύτερη από τη μονάδα mpm-prefork, η οποία είναι η προεπιλεγμένη μέθοδος εκτέλεσης αρχείων php στον Apache.

1. Εγκαταστήστε php-fpm

# apt install php8.1-fpm
# service php8.1-fpm status    // Check the php-fpm is running

2. Ελέγξτε την έκδοση php-fpm και το Socket.

# php-fpm8.1 -v
# ls -la /var/run/php/php8.1-fpm.sock

3. Απενεργοποιήστε τη μονάδα Apache prefork

# a2dismod php8.1
# a2dismod mpm_prefork

4. Ενεργοποίηση php-fpm

# a2enmod mpm_event proxy_fcgi setenvif
# a2enconf php8.1-fpm

5. ορίστε τις απαιτούμενες μεταβλητές php.ini

# vi /etc/php/8.1/fpm/php.ini

upload_max_filesize = 64M 
post_max_size = 96M 
memory_limit = 512M 
max_execution_time = 600
max_input_vars = 3000 
max_input_time = 1000

:x

6. Διαμορφώσεις πισίνας php-fpm

# vi /etc/php/8.1/fpm/pool.d/www.conf

pm.max_children = 64
pm.start_servers = 16
pm.min_spare_servers = 16
pm.max_spare_servers = 32

:x

# service php8.1-fpm restart

7. Οδηγίες Apache για επεξεργασία αρχείων php από php-fpm

# vi /etc/apache2/sites-enabled/000-default.conf 



	ServerAdmin webmaster@localhost
	DocumentRoot /var/www/nextcloud


	
          Options Indexes FollowSymLinks
          AllowOverride All
          Require all granted
	

	 
         SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"          
	


	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined



:x

# service apache2 restart

6. Δημιουργήστε σελίδα info.php για έλεγχο χαρακτηριστικών php

Δημιουργήστε μια σελίδα info.php, θα μας δείξει εάν τα php-fpm, opcache, apcu είναι ενεργοποιημένα με το php.

# cd /var/www/nextcloud

# vi info.php
    
:x

Τώρα Περιήγησηhttp://nc.mailserverguru.com/info.php, θα εμφανίσει το "Server API FPM/FastCGI" εάν το php-fpm είναι ενεργοποιημένο στην PHP.


7. Ενεργοποιήστε το Opcache σε php

Το Opcache είναι μια μηχανή προσωρινής αποθήκευσης για PHP. Αποθηκεύει προμεταγλωττισμένο bytecode σεναρίου σε κοινόχρηστη μνήμη, επομένως η ανάλυση σεναρίων PHP σε κάθε αίτημα δεν θα είναι απαραίτητη. Αυξάνει την εκτέλεση αρχείων php και την απόδοση φόρτωσης ιστότοπου.

# vi /etc/php/8.1/fpm/php.ini

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

:x

// Now, Restart apache and php-fpm

# systemctl restart php8.1-fpm
# systemctl restart apache2

Τώρα, Έλεγχοςhttp://nc.mailserverguru.com/info.phpκαι πάλι, θα εμφανίσει το "Opcache είναι σε λειτουργία και εκτελείται"


8. Ενεργοποιήστε το APCu σε php

Το APCu είναι η προσωρινή αποθήκευση δεδομένων χρήστη. Είναι μια τοπική κρυφή μνήμη για συστήματα. Το Nextcloud το χρησιμοποιεί για προσωρινή αποθήκευση μνήμης.

1. Εγκαταστήστε το APCu

# apt install php8.1-apcu

2. Configure Nextcloud to use APCu for memory caching.
# vi /var/www/nextcloud/config/config.php

'memcache.local' => '\OC\Memcache\APCu',

:x

// Restart php-fpm and apache

# systemctl restart php8.1-fpm
# systemctl restart apache2

Τώρα, ελέγξτε τοhttp://nc.mailserverguru.com/info.phpκαι πάλι, θα εμφανίσει την ένδειξη "Ενεργοποιημένη υποστήριξη APCu"

9. Εγκαταστήστε και διαμορφώστε το Redis

Στο Nextcloud, το Redis χρησιμοποιείται για τοπική και κατανεμημένη προσωρινή αποθήκευση καθώς και για κλείδωμα αρχείων συναλλαγών. χρησιμοποιήσαμε APCu για Τοπική Cahing που είναι ταχύτερη από το Redis. Θα χρησιμοποιήσουμε το Redis για κλείδωμα αρχείων. Ο μηχανισμός Transactional File Locking του Nextcloud κλειδώνει τα αρχεία για να αποφευχθεί η καταστροφή των αρχείων κατά την κανονική λειτουργία.

1. Εγκαταστήστε το διακομιστή Redis και την επέκταση php Redis

# apt-get install redis-server php-redis

// Start and Enable Redis Service

# systemctl start redis-server
# systemctl enable redis-server

2. Διαμορφώστε το Redis ώστε να χρησιμοποιεί το Unix Socket από τις θύρες

# vi /etc/redis/redis.conf

port 0
unixsocket /var/run/redis/redis.sock
unixsocketperm 770

:x

3. Προσθέστε χρήστη Apache στην ομάδα Redis

# usermod -a -G redis www-data

4. Διαμορφώστε το Nextcloud για χρήση του Redis για το κλείδωμα αρχείων

# vi /var/www/nextcloud/config/config.php

'filelocking.enabled' => 'true',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
     'host'     => '/var/run/redis/redis.sock',
     'port'     => 0,
     'dbindex'  => 0,
     'password' => '',
     'timeout'  => 1.5,
],

:x

5. Ενεργοποιήστε το κλείδωμα περιόδου λειτουργίας Redis στην PHP

# vi /etc/php/8.1/fpm/php.ini

redis.session.locking_enabled=1
redis.session.lock_retries=-1
redis.session.lock_wait_time=10000

:x

// Now, Restart php-fpm and apache

# systemctl restart php8.1-fpm
# systemctl restart apache2

Τώρα, μπορούμε να ελέγξουμε τη χρήση Redis, (ενεργοποιώντας τη θύρα Redis στη διαμόρφωση Redis) εκτελώντας την εντολή “redis-cli MONITOR”, κατά τη φόρτωση του Nextcloud θα εμφανίζει ζωντανά δεδομένα στην οθόνη.

Τώρα, που ολοκληρώσαμε τα βήματα βελτίωσης της απόδοσης. Θα εργαστούμε για την Ασφάλεια, Πρώτα απ 'όλα, θα εγκαταστήσουμε ένα πιστοποιητικό SSL για το Nextcloud.

10. Εγκαταστήστε το SSL και ενεργοποιήστε το HTTP2

1. Θα εγκαταστήσουμε το πιστοποιητικό LetsEncrypt, επομένως, πρώτα, χρειαζόμαστε τα εργαλεία Certbot.

# apt-get install python3-certbot-apache -y

2. με το εργαλείο Certbot, ας ζητήσουμε ένα Πιστοποιητικό για τον τομέα μας.

# certbot --apache -d nc.mailserverguru.com

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): [email protected]   // Input Email Address

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y   // Press Y here

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y   // Press Y here
Account registered.
Requesting a certificate for nc.mailserverguru.com

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/nc.mailserverguru.com/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/nc.mailserverguru.com/privkey.pem
This certificate expires on 2022-10-13.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for nc.mailserverguru.com to /etc/apache2/sites-available/000-default-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://nc.mailserverguru.com
We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

3. Ενεργοποιήστε τη μονάδα HTTP2 του apache και διαμορφώστε τον ιστότοπο για τα πρωτόκολλα http2

# a2enmod http2

# vi /etc/apache2/sites-enabled/000-default-le-ssl.conf



        Protocols h2 h2c http/1.1

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/nextcloud
  ......

:x

// Now, Restart Apache

# systemctl restart apache2


4. Δοκιμάστε το πρωτόκολλο http2, στέλνοντας ένα αίτημα http2 στον διακομιστή web.

# curl -I --http2 -s https://nc.mailserverguru.com/ | grep HTTP
HTTP/2 200

Ή, μπορούμε να επιθεωρήσουμε το πρόγραμμα περιήγησης κατά την πρόσβαση στη διεύθυνση URL του Nextcloud, μπορούμε εύκολα να δούμε τη στήλη του πρωτοκόλλου από την καρτέλα Δίκτυο και θα εμφανίσει το h2 ως το πρωτόκολλο που είναι το http2.


5. HTTP Strict Transport Security, το οποίο καθοδηγεί τα προγράμματα περιήγησης να μην επιτρέπουν καμία σύνδεση με την παρουσία του Nextcloud χρησιμοποιώντας HTTP, αποτρέπει τις επιθέσεις man-in-the-middle.


  ServerName nc.mailserverguru.com

    
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    

 


11. Όμορφα URL

Οι όμορφες διευθύνσεις URL αφαιρούν το  "index.phpτμήμα " σε όλες τις διευθύνσεις URL του Nextcloud. Θα κάνει τις διευθύνσεις URL μικρότερες και πιο όμορφες.

# vi /var/www/nextcloud/config/config.php

'htaccess.RewriteBase' => '/',
                                 
:x

// This command will update the .htaccess file for the redirection
# sudo -u www-data php --define apc.enable_cli=1 /var/www/nextcloud/occ maintenance:update:htaccess

Λοιπόν, αυτό είναι, κάναμε την πλήρη εγκατάσταση του Nextcloud στο Ubuntu 22.04 LTS. Ευχαριστώ !!