Linux
Installazione di ownCloud come container Docker su Raspberry Pi

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!

7 thoughts on “Installazione di ownCloud come container Docker su Raspberry Pi

    • Author gravatar

      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

    • Author gravatar

      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

    • Author gravatar

      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?

      • Author gravatar

        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

Rispondi a denis Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *