Guida installazione ownCloud su VirtualBox [Linux Server]

Occorrente:

Se non avete mai installato Debian su una virtual machine, potete seguire la guida “Installare Debian server su VirtualBox“.

Appena abbiamo la nostra macchina virtuale pronta, possiamo incominciare. Se non utilizzate VirtualBox, bensì un PC fisico, andate direttamente al punto 2.

Operazioni preliminari su “VirtualBox”

In questa guida per comodità useremo una macchina virtuale con installato Debian Linux.
Su VirtualBox è importante settare la scheda di rete come “Scheda con bridge“, affinchè faccia parte della stessa sottorete del sistema operativo.

Per modificare questa impostazione, apriamo VirtualBox ed individuiamo la nostra virtual machine, facciamo click destro su di essa —> Impostazioni —> Rete –> Connessa a: selezioniamo “Scheda con bridge“.

 

Il primo passaggio è settare, a macchina spenta, la scheda di rete in modalità bridge.

Operazioni preliminari su “Debian”

  • Avviamo la nostra macchina virtuale.
  • Accediamo come root.
  • Installiamo il componente “sudo”:
apt-get update
apt-get install sudo
  • Adesso creiamo un nuovo utente, per esempio chiamiamolo ‘owncloud’ (il nome è personalizzabile, l’importante è ricordarselo e sostituirlo durante la guida):
adduser owncloud
  • Assegniamo una password senza preoccuparti delle altre voci (Stanza, Numero telefono ecc.).

Adesso dobbiamo dare i privilegi al nuovo utente, utilizzando un utility presente nel pacchetto ‘sudo’ appena installato.

  • Digitiamo:
visudo
  • Individuiamo la riga
# User privilege specification
root ALL=(ALL:ALL) ALL
  • Aggiungiamo una riga sotto root:
owncloud ALL=(ALL:ALL) ALL
  • Il risultato sarà:
# User privilege specification
root ALL=(ALL:ALL) ALL
owncloud ALL=(ALL:ALL) ALL
  • Salviamo il file e chiudiamo.
  • Accediamo con il nostro utente, dando il comando:
su - owncloud

D’ora in poi faremo tutti i passaggi con il nostro utente, dando sempre il comando sudo prima di ogni azione. Infatti se installate owncloud con l’utente ‘root’ alcune cose potrebbero non funzionare correttamente.

Impostare un Indirizzo IP statico

Prima di proseguire dobbiamo assicurarci che la nostra macchina abbia un indirizzo IP statico.

  • Installiamo ‘ifconfig‘, digitando:
sudo apt-get install net-tools
  • Adesso diamo il comando:
sudo ifconfig
  • Cerchiamo il nostro ‘indirizzo ip’ (chiamato inet) e la ‘netmask‘.

inet e netmask

  • Dopo aver preso nota, dobbiamo conoscere anche il nostro ‘gateway’, dunque digitiamo:
sudo netstat -rn

gateway debian

Segniamoci anche il ‘gateway’. (quello affianco a “Destination —> 0.0.0.0” come mostrato sopra in figura)

  • Andiamo nel file di configurazione:
sudo nano /etc/network/interfaces
  • Nelle ultime righe dovremo visualizzare una cosa del genere:
# The primary network interface
allow-hotplug eth0
iface enp0s3 inet dhcp
  • Adesso al posto di ‘dhcp‘ scriviamo ‘static
  • Aggiungiamo delle righe in basso con i dati ricavati prima:
# The primary network interface
allow-hotplug eth0
iface enp0s3 inet static
address 192.168.x.x
netmask 255.255.x.x
gateway 192.168.x.x

Address corrisponde ad “inet”. e netmask e gateway li ricopiate uguali (possiamo anche scegliere un indirzzo ip a piacimento, anzi meglio se non facente parte del range DHCP, evitando ogni conflitto).

Nel mio caso sarà:

INET-NETMASK.GATEWAY

  • Adesso facciamo un reboot:
sudo reboot
  • Loggiamoci come utente normale (nel mio caso ‘owncloud’) e testiamo Internet facendo un ping:
ping google.com

Se funziona possiamo proseguire. Stoppiamo il ping (ctrl+c).

  • Controlliamo che effettivamente l’indirizzo ip è quello statico da noi impostato:
sudo ifconfig

se tutto torna, possiamo andare avanti, in caso contrario ricontrolliamo di aver scritto bene tutti i dati.

Utilizziamo SSH (OPZIONALE MA CONSIGLIATO)

Adesso ci conviene comandare la macchina virtuale attraverso il terminale del nostro sistema operativo, avendo anche la possibilità di utilizzare il COPIA e INCOLLA che in alcuni punti ci farà risparmiare del tempo.

  • Se utilizzate Windows, installate PuTTY
  • Se utilizzate macOS, basterà aprire una finestra del Terminale e digitare:
    ssh nome_vostro_utente@indirizzo_ip_statico_debian

Nel mio caso sarà:

ssh [email protected]

Ci sara chiesto se si è sicuri di continuare, scriviamo YES e diamo invio. Inseriamo la password del nostro utente e siamo pronti.

ssh-debian-server

Adesso possiamo controllare tramite il terminale del nostro computer la macchina virtuale, potendo fare veloci copia ed incolla, utili soprattutto per i passaggi successivi.

Ogni qual volta vorremmo accedere alla nostra distribuzione, accendiamola da VirtualBox e poi dal terminale del nostro pc diamo il comando ssh [email protected]_ip

Installiamo LAMP e configuriamolo

  • Per prima cosa digitiamo:
sudo apt-get update
sudo apt-get upgrade
  • Adesso installiamo LAMP sulla nostra distribuzione, ovvero Apache, PHP e Mysql su sistema operativo Linux, diamo i seguenti comandi:
sudo apt-get -y install libapache2-mod-php ufw php-gd php-json php-mysql php-curl php-intl php-imagick php-zip php-xml php-mbstring apache2

sudo systemctl enable apache2
sudo systemctl start apache2
sudo systemctl status apache2

apache-enable-running

(se è scritto running, allora è tutto ok, per uscire premi ‘q‘)

  • Diamo i seguenti comandi:
sudo ufw status
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow ssh/tcp
sudo ufw reload
sudo ufw enable
  • Bene, adesso proviamo tramite browser a collegarci al nostro indirizzo ip:

http://nostro_ip   (per esempio nel mio caso è http://192.168.1.101)
se avete scordato il vostro ip potete recuperarlo con “sudo ifconfig” si chiama inet.

apache2-owncloud

Se visualizzate la pagina di Apache, la configurazione è andata a buon fine, e possiamo procedere con l’installazione del database.

  • Installiamo MariaDB:
sudo apt-get install -y mariadb-server
  • Completata l’installazione attiviamo e controlliamo lo status:
sudo systemctl start mariadb
sudo systemctl status mariadb

mariadb-running-sql

(se è scritto running, allora è tutto ok, per uscire premi ‘q‘)

  • Adesso configuriamo i settaggi di sicurezza, scriviamo:
sudo mysql_secure_installation

E andiamo a rispondere alle domande secondo questo schema, assicuriamoci di inserire una password molto forte con lettere maiuscole e caratteri speciali:

  • Set root password? [Y/n] y
  • 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

Se abbiamo fatto tutto bene vedremo la scritta “All done!“.

  • Adesso facciamo un restart:
sudo systemctl restart apache2
sudo systemctl restart mariadb
  • Per vedere se tutto funziona correttamente facciamo il classico test dell’info.php, per prima cosa creiamo un file:
sudo nano /var/www/html/info.php

All’interno del file copiamo quanto segue:

<?php
 phpinfo();
 ?>

Salviamo e chiudiamo.

  • Raggiungiamo il nostro indirzzo ip inserendoci il percorso del file appena creato:

http://nostro_indirizzo_ip/info.php   (nel mio caso sarà http://192.168.1.101/info.php)

info-php-version

Se visualizziamo la schermata con tutte le informazioni abbiamo fatto tutto bene e possiamo proseguire.

Installiamo ownCloud

Adesso dobbiamo installare ownCloud, abbandoniamo per un attimo il nostro server e apriamo il browser del nostro pc.

  • Rechiamoci nella pagina delle reposity di ownCloud:

https://owncloud.org/download/

  • Andiamo nella sezione Tarball, e individuiamo “Download Tar

  • Clicchiamo con il tasto destro su ‘Download Tar‘ e copiamo l’indirizzo.

Nel mio caso l’ultima versione si chiama ‘owncloud-files_10.0.8.orig.tar.gz’

Adesso torniamo nel nostro server Debian.

  • Digitiamo:
cd /tmp/
  • Dopo il comando wget incolliamo quello che abbiamo copiato poco fa:
wget http://download.owncloud.org/download/repositories/production/Debian_9.0/owncloud-files_10.0.8.orig.tar.gz

(il nome potrebbe variare a seconda della versione)

  • Estraiamo il file e cambiamo i permessi:
tar -xvf owncloud-*.tar.bz2  (il nome può variare) 
sudo mv owncloud /var/www/html/
sudo chown -R www-data:www-data /var/www/html/owncloud
  • Adesso possiamo riprendere con il set-up del nostro database, incominciamo:
sudo mysql -u root -p
  • Una volta loggati con la password di root, creiamo il nostro database e il nostro utente (password a scelta), i nomi che utilizzo nella guida posso essere sostituiti, l’importante è ricordarseli:
CREATE DATABASE db_owncloud;
CREATE USER 'utente_owncloud'@'localhost' IDENTIFIED BY 'LA_TUA_PASSWORD';
GRANT ALL ON db_owncloud.* TO 'utente_owncloud'@'localhost';
FLUSH PRIVILEGES;
exit
  • Adesso dobbiamo configurare Apache con ownCloud, andiamo a creare questo file:
sudo nano /etc/apache2/sites-available/owncloud.conf
  • All’interno incolliamo tutto questo:
Alias /owncloud "/var/www/html/owncloud/"

<Directory /var/www/html/owncloud/>
Options +FollowSymlinks
AllowOverride All

<IfModule mod_dav.c>
Dav off
</IfModule>

SetEnv HOME /var/www/html/owncloud
SetEnv HTTP_HOME /var/www/html/owncloud

</Directory>

Perfetto, salviamo e chiudiamo.

  • Creiamo un collegamento simbolico:
sudo ln -s /etc/apache2/sites-available/owncloud.conf /etc/apache2/sites-enabled/owncloud.conf
  • Adesso assicuriamoci che tutti i servizi siamo attivi, diamo questi comandi:
sudo a2enmod headers
sudo a2enmod dir
sudo a2enmod env
sudo a2enmod mime
sudo /etc/init.d/apache2 restart
  • Possiamo finalmente raggiungere owncloud all’indirizzo:
    http://nostro_indirizzo_ip/owncloud   (nel mio caso http://192.168.1.101/owncloud)

Adesso creiamo un nome utente e password per amministratore, inseriamo i dati del database che abbiamo settato prima:

configurare_owncloud

Siamo pronti ad utilizzare ownCloud sul nostro server in locale.

Raggiungere dall’esterno il nostro server

Volendo possiamo raggiungere il nostro server al di fuori della nostra rete locale LAN e quindi da qualsiasi luogo tramite Internet.

Come requisito necessario BISOGNA POSSEDERE UN HOSTING CON ACCESSO FTP. Vanno bene anche quelli gratuiti come AlterVista.

Infatti utilizzeremo l’hosting per uppare il nostro indirizzo IP pubblico dinamico con aggiornamenti continui, tramite la procedura descritta in questa guida. Se non avete un sito internet e i dati FTP sottomano, procedete prima a recuperarli.

Aggiungiamo una porta di ascolto su Apache

Per prima cosa dobbiamo aggiungere una porta di ascolto al nostro Web Server. Infatti per motivi di sicurezza non utilizzeremo la porta standard del protocollo HTTP (80), inoltre alcuni router non permettono l’ingresso dall’esterno dalla suddetta.

  • Allora accediamo alla nostra macchina virtuale (meglio con SSH).
  • Logghiamoci come utente root.
  • Installiamo questo pacchetto:
    apt-get update
    apt-get install curl
  • Andiamo quindi nelle impostazioni di apache:
nano /etc/apache2/ports.conf

In aggiunta alla porta 80 mettiamone un altra, per non avere conflitti evitiamo di utilizzare una Well-known ports, in questa guida useremo la 60670.

  • Dunque aggiungiamo una riga appena sotto “LISTEN 80”:
LISTEN 60670

Dovrebbe apparire così:

LISTEN-PORT-APACHE

  • Salviamo e chiudiamo.
  • Adesso apriamo un altro file di configurazione:
nano /etc/apache2/sites-enabled/000-default.conf
    • Modificare la prima riga così, cancellando il numero 80 ed inserendo la nostra porta scelta:

 

<VirtualHost *:60670>
Modifichiamo anche qui la porta.
  • Adesso impostiamo una regola firewall che permetta il traffico in entrata dalla porta 60670:
ufw allow 60670/tcp
  • Riavviamo il server Apache:
    systemctl reload apache2
    systemctl restart apache2

Port-forwarding sul Router

Adesso arriva la parte dove per ognuno la procedura differisce leggermente. Infatti dobbiamo aggiungere un impostazione al nostro router di casa. In particolare dobbiamo operare un port-forwarding della porta 60670 sull’indirizzo ip del nostro server (nel mio caso 192.168.1.101).

Vi lascio una screen del mio router.

port-forwarding-router

Se non trovate l’opzione sul vostro router provate a cercare su Google MARCA E MODELLO DEL VOSTRO ROUTER port-forwarding”.

Verificate se il port-forwarding funziona, andate su ipinfo.io/ip copiate l’indirizzo e inseritelo in un broswer aggiungendo alla fine il numero della porta diviso da due punti, esempio http://mio_ip:60670

Se venite reindirizzati sull’Apache del vostro server potete proseguire 🙂

Script per l’IP Pubblico dinamico

Adesso dobbiamo creare uno script che ci permette di inviare al nostro sito internet il nostro IP pubblico aggiornato di continuo, così quando raggiungiamo la pagina HTML che andremo a creare, saremo immediatamente reindirizzati al nostro IP pubblico, quindi al nostro server con ownCloud.

  • Creiamo una cartella in /etc:
mkdir /etc/script
  • Adesso creiamo all’interno un file, che sarà appunto il nostro script:
nano /etc/script/ip-update.sh
  • Incolliamo all’interno questo codice, andando a modificare alcune voci:
#!/bin/bash
IP="$(curl ipinfo.io/ip)"
echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://$IP:60670/owncloud\">" > index.html && curl -T index.html ftp://NOME_UTENTE_FTP:PASSWORD_FTP@miositointernet.com/public_html/server/
API="'"
riga9=`sed -n '9p'  /var/www/html/owncloud/config/config.php | awk -F "=" '{print $1}'`
if [ $riga9 = "1" ]
then
    sed -i '9s/.*/ 1 => '$API''$IP''$API' , /' /var/www/html/owncloud/config/config.php
else
    sed -i '8 a 1 => '$API''$IP''$API' , ' /var/www/html/owncloud/config/config.php
fi

  • Modifichiamo inserendo il nostro nome utente FTP con relativa password, il nostro percorso del sito internet. Bisogna creare una cartella, io l’ho chiamata “server”, così non appena si andrà su www.nostrosito.it/server si verrà direttamente reindirizzati. Per trovare il percorso della cartella da creare potete usare FileZilla, tasto destro, copia URL negli appunti (la parte finale rappresenta il percorso).
  • Diamo i permessi di esecuzione allo script:
    chmod +x /etc/script/ip-update.sh

Proviamo ad aprire lo script ( /etc/script/ip-update.sh), e controlliamo che carica correttamente il file index.html sulla cartella del nostro server, se funziona, una volta visitata la pagina, verremmo immediatamente reindirizzati sul nostro server.

Crontab

Adesso dobbiamo dire a Debian di eseguire questo script ogni 5 minuti. Infatti il nostro IP pubblico, essendo dinamico, può cambiare inaspettatamente.

Utilizzeremo crontab, che esegue operazioni in background pianificate dall’utente.

  • Dunque digitiamo:
nano /etc/crontab
  • Andiamo sull ultima riga ed inseriamo:
*/5 * * * * root cd /etc/script && ./ip-update.sh

Semplicemente stiamo dicendo al sistema operativo che ogni 5 minuti deve eseguire lo script sopra indicato.

Perfetto, adesso da qualsiasi luogo possiamo accedere al nostro server digitando il percorso del nostro sito internet.

Per comodità potete anche utilizzare un sottodominio, esempio server.miosito.it (ricordatevi di modificare il percorso nello script).