Installazione di ownCloud come container Docker su Raspberry Pi
Negli ultimi anni sta diventando sempre più popolare l’utilizzo di servizi cloud per l’archiviazione di documenti online come ad esempio Dropbox, Google Drive o anche Amazon Drive.
Attraverso questi servizi, gli utenti possono archiviare i propri file in cloud ed inoltre è possibile accederci in qualsiasi momento, purché si abbia a disposizione un dispositivo (pc, tablet o smartphone) connesso ad internet.
Nonostante i benefici offerti da questi servizi, non è raro che gli utenti si preoccupino dell’affidabilità del provider scelto per il cloud hosting. Una critica comune è che i clienti non sanno chi altro, oltre a loro, ha accesso ai dati salvati e se questi vengono realmente cancellati dal server una volta rimossi. Questo è particolarmente importante quando si tratta di archiviare dati sensibili.
Tuttavia, se si vuole avere il pieno controllo dei propri dati è possibile creare e gestire un proprio cloud personale con ownCloud.
OwnCloud è un software sviluppato proprio per questo scopo, ben collaudato, gratuito e facile da utilizzare e in questa guida andremo a configurare il nostro cloud storage personale su un Raspberry Pi.
Il cloud storage è un modello di cloud computing in cui i dati sono memorizzati su server remoti e gestiti da un fornitore di servizi di cloud storage. Questo permette agli utenti di personalizzare i propri dati e di condividerli con amici e parenti tramite internet.
Per poter accedere da remoto ai nostri file dobbiamo avere a disposizione un indirizzo IP pubblico o in alternativa utilizzare un servizio di DDNS che ci consenta di raggiungere la nostra rete tramite un nome di dominio (qui una guida come utilizzare DuckDNS) e, a sua volta, aver girato le porte necessarie verso il nostro Raspberry Pi sul nostro Router (in questo tutorial andrò ad utilizzare la porta TCP 48080).
Fatta questa premessa, possiamo procedere con l’installazione e configurazione di ownCloud come container in Docker. Ovviamente dobbiamo avere a disposizione un Raspberry Pi con il suo sistema operativo installato (preferibilmente la versione Lite in maniera tale da dedicare tutte le risorse ai servizi necessari) e con installato Docker e Docker-compose (qui la guida per installarlo).
Colleghiamoci in SSH sul nostro Raspberry Pi e andiamo a creare una nuova cartella che conterrà tutti i file necessari per il nostro nuovo container.
mkdir /home/pi/ownCloud
Posizioniamoci all’interno di questa cartella e successivamente andremo a creare il file docker-compose.yml che conterrà le istruzioni necessarie per la creazione del container. In realtà ownCloud per poter funzionare avrà bisogno di due ulteriori container, redis e mysql e all’interno del file docker-compose.yml andremo ad integrare anche i comandi per la generazione di questi due container.
cd /home/pi/ownCloud
sudo nano docker-compose.yml
e riportiamo quanto segue:
version: '2.1' volumes: files: driver: local mysql: driver: local backup: driver: local redis: driver: local services: owncloud: image: owncloud/server:${OWNCLOUD_VERSION} restart: always ports: - ${HTTP_PORT}:8080 depends_on: - db - redis environment: - OWNCLOUD_DOMAIN=${OWNCLOUD_DOMAIN} - OWNCLOUD_DB_TYPE=${OWNCLOUD_DB_TYPE} - OWNCLOUD_DB_NAME=${OWNCLOUD_DB_NAME} - OWNCLOUD_DB_USERNAME=${OWNCLOUD_DB_USERNAME} - OWNCLOUD_DB_PASSWORD=${OWNCLOUD_DB_PASSWORD} - OWNCLOUD_DB_HOST=${OWNCLOUD_DB_HOST} - OWNCLOUD_ADMIN_USERNAME=${ADMIN_USERNAME} - OWNCLOUD_ADMIN_PASSWORD=${ADMIN_PASSWORD} - OWNCLOUD_MYSQL_UTF8MB4=${OWNCLOUD_MYSQL_UTF8MB4} - OWNCLOUD_REDIS_ENABLED=${OWNCLOUD_REDIS_ENABLED} - OWNCLOUD_REDIS_HOST=${OWNCLOUD_REDIS_HOST} healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: - ./files:/mnt/data db: image: webhippie/mariadb:latest restart: always environment: - MARIADB_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD} - MARIADB_USERNAME=${OWNCLOUD_DB_USERNAME} - MARIADB_PASSWORD=${OWNCLOUD_DB_PASSWORD} - MARIADB_DATABASE=${OWNCLOUD_DB_NAME} - MARIADB_MAX_ALLOWED_PACKET=128M - MARIADB_INNODB_LOG_FILE_SIZE=64M healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: - ./mysql:/var/lib/mysql - ./backup:/var/lib/backup redis: image: webhippie/redis:latest restart: always environment: - REDIS_DATABASES=1 healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: - ./redis:/var/lib/redis
Una volta incollato il testo, possiamo chiudere il file digitando CRTL+X
dopo di che digitiamo Y
o S
(a seconda della lingua impostata) ed infine premiamo il tasto ENTER
per confermare.
Ora dobbiamo creare un altro file denominato ownCloud_env
che conterrà i dati sensibili che il container di ownCloud per accedere al database e i dati sensibili per MariaDB
sudo nano ownCloud_env
e riportiamo all’interno quanto segue:
OWNCLOUD_DOMAIN=pincopallo.duckdns.org:48080 #modificare con il proprio nome di dominio e scegliere una porta che verrà utilizzata per accedere alla pagina web di ownCloud OWNCLOUD_DB_TYPE=mysql #lasciare invariato OWNCLOUD_DB_NAME=owncloud #nome del database utilizzato da ownCloud OWNCLOUD_DB_USERNAME=owncloud #nome dell'utente utilizzato da ownCloud per accedere al db OWNCLOUD_DB_PASSWORD=owncloud #password dell'utente utilizzato da ownCloud per accedere al db OWNCLOUD_DB_HOST=db #lasciare invariato... è il nome del container per il DB OWNCLOUD_ADMIN_USERNAME=admin #nome dell'utente admin OWNCLOUD_ADMIN_PASSWORD=admin #password per l'utente admin OWNCLOUD_MYSQL_UTF8MB4=true #lasciare invariato... OWNCLOUD_REDIS_ENABLED=true #lasciare invariato... OWNCLOUD_REDIS_HOST=redis #lasciare invariato... MARIADB_ROOT_PASSWORD=owncloud #password dell'utente root all'interno del database
Una volta incollato e modificato il testo, possiamo chiudere il file digitando CRTL+X
dopo di che digitiamo Y
o S
(a seconda della lingua impostata) ed infine premiamo il tasto ENTER
per confermare.
Dopo di che andremo a generare un ulteriore file (nascosto) che conterrà ulteriori dati sensibili
sudo nano .env
e riportiamo all’interno quanto segue:
OWNCLOUD_VERSION=10.7
OWNCLOUD_DOMAIN=pincopallo.duckdns.org:48080 #modificare con il proprio nome di dominio e scegliere una porta che verrà utilizzata per accedere alla pagina web di ownCloud
ADMIN_USERNAME=admin #nome dell'utente admin
ADMIN_PASSWORD=admin #password per l'utente admin
HTTP_PORT=48080 #porta TCP dove verrà pubblicata la pagina web di ownCloud
anche qui, una volta incollato e modificato il testo, possiamo chiudere il file digitando CRTL+X
dopo di che digitiamo Y
o S
(a seconda della lingua impostata) ed infine premiamo il tasto ENTER
per confermare.
Ora prima di lanciare il comando per la generazione dei containers dobbiamo scaricare ed installare un pacchetto necessario al corretto funzionamento di ownCloud, per cui digitiamo:
wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.5.1-1_armhf.deb
sudo dpkg -i libseccomp2_2.5.1-1_armhf.deb
e terminata l’installazione possiamo rimuovere il pacchetto scaricato con il seguente comando:
sudo rm libseccomp2_2.5.1-1_armhf.deb
A questo punto possiamo lanciare il seguente comando per installare ownCloud con i parametri stabiliti:
docker-compose up -d
Una volta terminata l’esecuzione del comando docker-compose attendiamo qualche minuto dopo di che possiamo provare ad accedere all’interfaccia web di ownCloud aprendo un browser internet sul nostro computer e nella barra del percorso digiteremo:
http://[IP-DEL-TUO-RASPBERRY-PI]:48080
Buon Divertimento!
Buongiorno,
provo di lanciare il commando
docker-compose up -d
il messagio dice
bash: docker-compose: comando non trovato
poi provo il commando
sudo apt-get install docker-compose
e purtroppo ricevo
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe0 in position 69: invalid continuation byte
Grazie
Denis
Segui fino in fondo la mia guida su come installare docker su raspberry…nelle ultime righe descrivo come aggiungere docker-compose
ciao di nuovo,
quando lascio il commando
docker-compose up -d
ricevo l errore seguente
~/ownCloud $ docker-compose up -d
ERROR: yaml.parser.ParserError: while parsing a block mapping
in “./docker-compose.yml”, line 1, column 1
expected , but found ”
in “./docker-compose.yml”, line 2, column 2
grazie
ricevo il tuo stesso errore… non riesco a farlo funzionare
trovato il problema … vanno rimossi degli spazi sul file docker-compose.yml in particolare va tolto uno spazio davanti alla voce volumes: e un’altro spazio davanti alla voce services:
cmq ho modificato la sezione del docker-compose.yml nell’articolo
Ciao, passando da sd a ssd ho creato un partizione come sottocartella (/home/pi/Dati) dove andare a mettere dei dati fuori dai 32GB dedicati al sistema. Seguendo la tua guida cosa dovrei modificare rispetto ai comandi riportati sopra affinché il cloud si appoggi a questa parte del disco?
Ciao, se ho ben capito hai collegato un ssd via USB, se fosse così per prima cosa dovresti eseguire il mount del disco (qui ad esempio una guida su come eseguire il mount di un disco formattato in NTFS) dopo di che dovresti sostituire la voce ./files con il percorso del disco “montato” ad esempio /mnt/ntfs/Cartella