Come installare Pydio Web File Manager su Debian 9
Su questa pagina
- Requisiti
- Prerequisiti
- Installa Apache e PHP
- Configura il firewall
- Installa MariaDB
- Regola le impostazioni PHP
- Scarica e installa Pydio
Pydio è un potente software open source per la sincronizzazione di file Web e la condivisione di file per la collaborazione online, simile a Gdrive o altri servizi di condivisione di file online. Principalmente scritto in linguaggio di programmazione PHP e Ajax, Pydio può essere installato su un server privato virtuale Linux o su un server fisico sotto i server Web Apache/Nginx, il sistema di gestione del database PHP e MySQL/MariaDB (noto anche come stack LAMP o LEMP), oppure può essere distribuito anche nel cloud.
In questo tutorial, tratteremo il processo di installazione e configurazione di Pydio Community Edition dal sorgente sulla versione Debian 9, in cima allo stack LAMP. Copriamo l'intero processo di installazione da zero con tutti i passaggi necessari che devi eseguire sul tuo server Debian per creare un cloud privato online per la condivisione di documenti, film, musica o qualsiasi altro tipo di file.
Requisiti
Devi soddisfare i seguenti requisiti per distribuire una soluzione cloud di condivisione file Pydio presso la tua sede:
- Un server fisico dedicato o una macchina virtuale o un VPS con minimo 2Gb di RAM e l'ultima versione di Debian 9 installata.
- Una delle schede di interfaccia di rete del server deve essere configurata con un indirizzo IP statico oppure il server DHCP deve essere configurato per affittare lo stesso indirizzo IP per la scheda di rete del server
- Privilegi di root della console del server in remoto tramite SSH o localmente o un utente locale o LDAP con privilegi di root sul sistema tramite l'utilità sudo.
- Un nome di dominio registrato pubblicamente o un nome di dominio locale privato configurato tramite il tuo server DNS presso la tua sede. Il nome di dominio deve essere configurato con tutti i record DNS richiesti, ad esempio i record A e CNAME che rimandano a www. Tuttavia, puoi comunque distribuire Pydio e accedere al web cloud tramite l'indirizzo IP del tuo server nel caso in cui non possiedi un nome di dominio.
- Un server di posta elettronica configurato presso la tua sede per utilizzare la registrazione Pydio o altre funzionalità. In questo caso puoi anche utilizzare un servizio di posta pubblico, come Gmail o Yahoo!
Prerequisiti
Per cominciare, accedi alla console del tuo server con l'account root o un account con poteri root ed esegui i seguenti comandi per assicurarti che il tuo sistema Debian sia aggiornato con le ultime patch di sicurezza, software, repository e kernel aggiornamenti.
apt update
apt upgrade
Nel passaggio successivo, imposta un nome descrittivo per il nome host della tua macchina con il comando seguente (sostituisci la variabile del nome host di conseguenza).
hostnamectl set-hostname www.mysharedfiles.com
Verificare il nome host della macchina e il record applicato nel file host di sistema immettendo i seguenti comandi.
hostnamectl
cat /etc/hostname
hostname –f
hostname –s
Infine, riavvia il server per applicare gli aggiornamenti del kernel e il nome host cambia correttamente.
systemctl reboot
Nel passaggio successivo, accedi nuovamente al sistema con privilegi di root e installa le seguenti utilità di sistema, come zip, unzip (per decomprimere archivi zip), curl e wget (scarica file online) e completamento automatico della riga di comando bash-completion.
su -
apt install bash-completion zip unzip curl wget imagemagick unoconv
Per modificare, comporre o convertire diversi formati di immagine e convertire documenti tramite l'interfaccia web Pydio, installa il software ImageMagick e unoconv - Universal Office Converter utility eseguendo il seguente comando.
apt install imagemagick unoconv
Se disponi di condivisioni Samba che devono essere montate negli spazi di lavoro Pydio, installa il client samba in Debian con il seguente comando.
apt-get install smbclient
Installa Apache e PHP
Nella fase successiva, inizieremo con l'installazione dei componenti lato server dello stack LAMP richiesti dal cloud di file di condivisione Web di Pydio: il server HTTP Apache e l'interprete del linguaggio di programmazione PHP. Installeremo anche tutti i moduli e le estensioni Pydio PHP richiesti. Immettere il seguente comando per installare tutti i componenti software descritti di cui abbiamo appena discusso.
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-json php7.0-mbstring php7.0-xml php7.0-cli php7.0-curl php7.0-zip php7.0-xmlrpc php7.0-intl php-imagick php-smbclient
Successivamente, controlla se tutti i moduli PHP installati sono abilitati nel tuo sistema, cosa che puoi fare eseguendo il seguente comando.
php7.0 –m
Nel passaggio successivo, abilita la riscrittura del server Apache HTTP e i moduli SSL che consentiranno l'uso di file .htaccess nel percorso root del documento del server Web in modo da poter costringere i visitatori a navigare in modo sicuro nel sito Web tramite il protocollo HTTPS. Il modulo SSL proteggerà il traffico tra il server e i browser client con un certificato autofirmato emesso automaticamente da Apache. Abilita il file di configurazione Apache SSL affinché il modulo SSL funzioni correttamente. Eseguire il seguente comando per attivare tutte le configurazioni richieste.
a2enmod ssl rewrite
a2ensite default-ssl.conf
Successivamente, apri il file di configurazione del sito SSL predefinito di Apache con un editor di testo e aggiungi le righe di codice delle regole di riscrittura dell'URL dopo la direttiva DocumentRoot, come mostrato nell'esempio seguente.
nano /etc/apache2/sites-enabled/default-ssl.conf
Estratto del file di configurazione del sito SSL:
DocumentRoot /var/www/html
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Salva e chiudi il file conf SSL Apache e apri anche il file conf vhost predefinito per la modifica. Qui, aggiungi le stesse regole di riscrittura dell'URL del file di configurazione SSL. Inserire le righe di codice dopo l'istruzione DocumentRoot come mostrato nell'esempio seguente.
nano /etc/apache2/sites-enabled/000-default.conf
Estratto del file 000-default.conf:
DocumentRoot /var/www/html
<Directory /var/www/html>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
Per poter applicare tutte le modifiche apportate fino ad ora è necessario riavviare il demone Apache eseguendo il comando sottostante.
systemctl restart apache2
Configura il firewall
Prima di visitare il tuo nome di dominio o l'indirizzo IP del server tramite un browser Web aperto in un computer presso la tua sede, aggiungi innanzitutto le regole del firewall richieste per consentire al traffico Web di passare il firewall. Se il tuo server Debian viene fornito con l'applicazione firewall UFW, dovresti aggiungere alcune nuove regole per consentire al traffico HTTP/S di passare attraverso il firewall immettendo i seguenti comandi.
ufw allow 'WWW Full'
O
ufw allow 80/tcp
ufw allow 443/tcp
Dovresti anche consentire al traffico SSH di passare attraverso il firewall UFW in caso di connessioni remote al server.
ufw allow 22/tcp
Se il tuo server Debian è protetto da un firewall iptables, aggiungi le seguenti regole raw di iptables per consentire al traffico in entrata delle porte 80 e 443 di passare il firewall in modo che i visitatori esterni possano navigare nell'applicazione.
apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service
Nel caso in cui tu sia connesso al server Debian in remoto tramite SSH, devi prima aggiungere la regola seguente per consentire al traffico SSH di passare attraverso il firewall di iptables. Altrimenti, verrai bloccato, perché il firewall inizierà a far cadere tutto il traffico in entrata sulla porta 22.
iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
Infine, per verificare se riesci a raggiungere il server Apache HTTP da un computer remoto nella tua LAN, apri un browser e visita il tuo nome di dominio o l'indirizzo IP del server tramite il protocollo HTTPS. Per visualizzare l'indirizzo IP del server, esegui un comando ifconfig o ip nel terminale. Se la tua macchina fa parte della tua rete di infrastruttura interna ed è nascosta dietro una rete NAT, esegui il comando seguente per ottenere l'indirizzo IP pubblico.
curl ipinfo.io/ip
Poiché stai utilizzando le coppie di certificati autofirmati automaticamente emessi da Apache durante l'installazione, il certificato verrebbe contrassegnato come non attendibile dal browser e dovrebbe essere visualizzato un avviso di errore nel browser. Premi su continua per ignorare questo avviso, accetta il certificato non attendibile e continua a essere reindirizzato alla pagina Web predefinita di Apache.
https://tuodominio.tld
Finora, abbiamo installato solo il server web Apache e l'interprete PHP nel nostro server Debian. Per completare lo stack LAMP, necessario per installare la soluzione di condivisione file Pydio, dobbiamo installare un componente finale che manca: un database backend RDBMS.
Installa MariaDB
In questo tutorial, installeremo Pydio con il server di database MariaDB come backend. Nel database MariaDB, l'applicazione Pydio memorizzerà utenti, configurazioni del sito Web e altri vari dati. Per installare il server e il client del database MariaDB e l'estensione PHP MySQL in Debian 9, eseguire il seguente comando.
apt install mariadb-server mariadb-client php7.0-mysql
Per impostazione predefinita, è possibile accedere all'account root del database fornendo una password in Debian 9. Per superare questo problema di sicurezza e proteggere il server del database, accedere prima alla console MySQL ed eseguire i seguenti comandi per proteggere l'account root di MariaDB.
mysql -h localhost
Benvenuto nel monitor MariaDB. I comandi terminano con ; o \g.
Il tuo ID connessione MariaDB è 2
Versione del server: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab e altri.
Digita help; o \h per aiuto. Digita \c per cancellare l'istruzione di input corrente.
MariaDB [(none)]> use mysql;
Lettura delle informazioni sulla tabella per il completamento dei nomi di tabelle e colonne
Puoi disattivare questa funzione per ottenere un avvio più rapido con -A
Database modificato
MariaDB [mysql]> update user set plugin='' where user='root';
Query OK, 1 riga interessata (0,00 sec)
Righe corrispondenti: 1 Modificate: 1 Avvisi: 0
MariaDB [mysql]> flush privileges;
Query OK, 0 righe interessate (0,00 sec)
MariaDB [mysql]> exit
Nel passaggio successivo, inizia a proteggere il server MariaDB eseguendo lo script mysql_secure_installation. Una serie di domande progettate per proteggere il database MariaDB verranno poste da questo script. Rispondi con \sì a tutte le domande: rimuovi gli utenti anonimi, disabilita l'accesso root remoto ed elimina il database di test. Inoltre, assicurati di impostare una password complessa per l'account root del database, come mostrato nell'estratto seguente.
mysql_secure_installation
==========================================================================================
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
======================================================================================
Al termine dello script, prova ad accedere al database dalla console senza password di root. L'accesso al database dovrebbe essere negato se non viene fornita alcuna password per l'account root, come illustrato nell'estratto di comando seguente:
mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Se viene fornita la password, il processo di accesso dovrebbe essere concesso alla console MySQL, come mostrato nell'esempio di comando. Digitare exit per uscire dalla console del database.
mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye
Regola le impostazioni PHP
Successivamente, apri il file di configurazione predefinito PHP per la modifica e modifica le seguenti variabili PHP come descritto di seguito. Imposta l'impostazione del fuso orario PHP in modo che corrisponda alla posizione geografica del tuo sistema. La variabile PHP date.timezone è reperibile consultando l'elenco dei fusi orari fornito da PHP docs al seguente link http://php.net/manual/en/timezones.php
Per prima cosa, fai un backup del file di configurazione PHP.
cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini
Cerca, modifica e modifica le seguenti variabili nel file di configurazione php.ini:
file_uploads = On
memory_limit = 128M
post_max_size = 80M
upload_max_filesize = 80M
output_buffering = 0
date.timezone = Europe/London
Dovresti aumentare la variabile upload_max_file_size nel file di configurazione PHP per supportare file allegati di grandi dimensioni.
Dovresti anche aggiungere le configurazioni del plugin OPCache per PHP7 per aumentare la velocità di caricamento dell'applicazione web. Modifica il file php.ini e aggiungi le seguenti righe di codice in fondo al file, sotto l'istruzione [opcache], come descritto di seguito:
nano /etc/php/7.0/apache2/php.ini
[opcache]
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=1
Dopo aver aggiunto tutte le righe di codice descritte di seguito, chiudi il file di configurazione php.ini e controlla se le variabili OPCache sono state aggiunte correttamente emettendo il seguente comando.
grep opcache /etc/php/7.0/apache2/php.ini
Per crittografare e proteggere i file Pydio tramite la codifica PHP, installa il software Ioncube sul tuo server Debian immettendo i seguenti comandi:
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfz ioncube_loaders_lin_x86-64.tar.gz
cp ioncube/ioncube_loader_lin_7.0.so /usr/lib/php/20151012/
Quindi, modifica il file di configurazione di ioncube e aggiungi la seguente riga.
nano /etc/php/7.0/apache2/conf.d/00-ioncube.ini
Estratto del file 00-ioncube.ini:
zend_extension=ioncube_loader_lin_7.0.so
Riavvia il server Apache per applicare l'estensione Ioncube.
systemctl restart apache2
Come passaggio finale nella configurazione dello stack LAMP, creare un file di informazioni PHP nel percorso webroot del server Web eseguendo il seguente comando.
echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php
Visita il file di script delle informazioni PHP da un browser al seguente URL e controlla se Ioncube Zend è stato caricato correttamente e, inoltre, scorri verso il basso fino all'impostazione della data per controllare la configurazione del fuso orario di PHP. Le impostazioni del fuso orario dovrebbero riflettere la tua posizione geografica PHP configurata in precedenza.
https://domain.tld/info.php
Scarica e installa Pydio
Ora che tutti i requisiti di sistema sono stati soddisfatti per l'installazione del software della comunità Pydio, apri un browser e vai alla pagina di download ufficiale di Pydio su https://pydio.com/en/community e copia il link per il download per ottenere l'ultimo archivio zip in il tuo sistema tramite l'utility wget.
wget https://download.pydio.com/pub/core/archives/pydio-core-8.0.2.zip
Al termine del download dell'archivio zip di Pydio, estrai il file di archivio zip nella directory di lavoro corrente ed elenca i file estratti con il comando ls.
unzip pydio-core-8.0.2.zip
ls
Successivamente, rimuovi il file index.html predefinito installato dal server web Apache nel percorso webroot ed elimina anche il file info.php creato in precedenza.
rm /var/www/html/index.html
rm /var/www/html/public/info.php
Copia i file di installazione di Pydio che si trovano nella tua attuale directory di lavoro nella directory pydio-core-8.0.2/. Emettere il comando ls per elencare i file di questa directory per i file nascosti. Copia tutto il contenuto della directory estratta nel percorso root del documento del tuo server web immettendo il seguente comando. Inoltre, assicurati di copiare il file nascosto .htaccess nel percorso webroot.
ls -al pydio-core-8.0.2
cp -rf pydio-core-8.0.2/* /var/www/html/
cp pydio-core-8.0.2/.htaccess /var/www/html/
Successivamente, concedi all'utente di runtime Apache le autorizzazioni di scrittura complete per il percorso root del documento eseguendo il comando seguente. Utilizzare il comando ls per elencare le autorizzazioni per i file installati dell'applicazione nella directory /var/www/html/.
chown -R www-data:www-data /var/www/html/
ls -al /var/www/html/
Successivamente, apri il file di configurazione Pydio bootstrap_conf.php situato nel percorso webroot e modifica le righe seguenti, come mostrato nell'estratto del file seguente:
nano /var/www/html/conf/bootstrap_conf.php
esempio di file bootstrap_conf.php:
setlocale(LC_ALL, "en_US.UTF-8");
define("AJXP_LOCALE", "en_EN.UTF-8");
Nel passaggio successivo, accedi alla console del database MariaDB e crea il database dell'applicazione Pydio. Inoltre, aggiungi un nuovo utente MySQL per la gestione del database Pydio e imposta una password complessa per questo utente. Immetti i comandi seguenti per creare il database e l'utente e assicurati di sostituire il nome del database, l'utente e la password utilizzati in questa guida con le tue impostazioni.
mysql –u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 305
Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE pydio_db;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on pydio_db.* to 'pydio_user'@'localhost' identified by 'mypass123';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Dopo aver creato il database, apri un browser e vai all'indirizzo IP del tuo server o al nome di dominio tramite il protocollo HTTPS per iniziare con il processo di installazione web di Pydio. Nella prima schermata di installazione, seleziona la lingua e premi il pulsante Avvia procedura guidata per avviare il processo di installazione.
Nella schermata di installazione successiva, aggiungi un titolo dell'applicazione e il messaggio di benvenuto per l'applicazione Pydio e premi il pulsante Avanti per passare alla schermata di configurazione successiva.
Successivamente, aggiungi il nome e il nome completo dell'amministratore dell'applicazione Pydio. Fornisci e conferma una password complessa per l'account amministratore e premi il pulsante Avanti per passare alla schermata di configurazione successiva.
Nella schermata successiva configurare le impostazioni di connessione al database. Selezionare MySQL come tipo di database, utilizzare localhost come host del database e aggiungere il nome del database Pydio, l'utente e la password creati in precedenza per connettersi al database. Premi il pulsante Test DB Connection per accedere al database Pydio e andare avanti con il processo di installazione.
Nella schermata delle opzioni avanzate, modifica il set di dati di codifica dell'applicazione e l'indirizzo URL del server se non sono stati rilevati correttamente, abilita l'impostazione della cache, aggiungi il tuo indirizzo email e la lingua predefinita e premi sul pulsante Installa Pydio per avviare l'installazione.
Al termine del processo di installazione, la procedura guidata di installazione ti reindirizzerà automaticamente al modulo della pagina di accesso di Pydio. Fornisci il nome utente e la password dell'amministratore dell'applicazione configurati durante il processo di installazione per accedere alla dashboard di Pydio.
Puoi anche accedere all'applicazione di condivisione Web Pydio visitando il tuo nome di dominio o l'indirizzo IP del server tramite il protocollo HTTPS.
https://www.tuodominio.tld
Dopo aver effettuato l'accesso alla dashboard di amministrazione di Pydio, puoi seguire il tour della procedura guidata che verrà visualizzato per imparare rapidamente come gestire l'applicazione tramite il pannello di amministrazione web.
Alcuni visitatori potrebbero navigare nell'applicazione Pydio in modo non protetto tramite il protocollo HTTP. Per costringere tutti i visitatori a navigare in modo sicuro nell'interfaccia di Pydio tramite il protocollo HTTPS, torna alla console del tuo server e modifica il file .htaccess che si trova nella directory principale del web emettendo il seguente comando.
nano /var/www/html/public/.htaccess
Una volta aperto il file .htaccess per la modifica, cerca la riga che inizia con RewriteEngine on e aggiungi le seguenti regole di reindirizzamento sotto questa riga.
# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
Inoltre, se desideri modificare le impostazioni del server PHP, in modo da poter aumentare le dimensioni di caricamento dei file o altre variabili PHP, aggiungi le righe seguenti alla fine del file .htaccess, come mostrato nell'estratto seguente.
php_value upload_max_filesize 50M
php_value post_max_size 50M
Congratulazioni! Hai installato con successo la sincronizzazione dei file Pydio e l'applicazione di condivisione nel server Debian 9. Per altri tipi particolari di procedure di installazione e configurazioni relative all'applicazione, visitare la pagina della documentazione di Pydio al seguente indirizzo: https://pydio.com/en/docs/administration-guides