Occorrente:
- Pc con installato VirtualBox
- Una virtual machine preferibilmente con Debian Server
- Software ownCloud
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“.

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‘.
- Dopo aver preso nota, dobbiamo conoscere anche il nostro ‘gateway’, dunque digitiamo:
sudo netstat -rn
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à:
- 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à:
Ci sara chiesto se si è sicuri di continuare, scriviamo YES e diamo invio. Inseriamo la password del nostro utente e siamo pronti.
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
(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.
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
(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)
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:
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ì:
- 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>

- 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.
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).