#howto - Nextcloud su Docker

Scritto da il
linux
docker
yaml

Come già visto in articoli precedenti Docker si ritrova ad essere un tool molto comondo per fare il deploy di alcune applicazioni, oggi parliamo di Nextcloud su Docker.

Prerequisiti

Alcuni articoli utili per i neofiti sono

Creazione yaml

Installeremo due immagini:

  • Nextcloud.
  • Mysql (anche mariadb va benissimo). e connetteremo il database direttamente a nextcloud tramite il file yaml.

Iniziamo creando la configurazione di nextcloud:

services:
    nextcloud:
        image: nextcloud
        container_name: nextcloud
        restart: always
        environment:
            NEXTCLOUD_ADMIN_USER: <your-username>
            NEXTCLOUD_ADMIN_PASSWORD: <your-password>
        volumes:
            - nextcloud-data:/var/www/html
        ports:
            - <port>:80

volumes:
    nextcloud-data: {}

In questo modo creeremo un semplice container con le configurazioni base di nextcloud, nella sezione environment: andremmo a impostare le lo user e la password del nostro account nextcloud. Inoltre creeremo un volume persistente di nome nextcloud-data: nel quale verranno archiviati i nostri dati. Infine la porta di uscita di nextcloud andrà mappata.

Perfetto adesso settiamo invece il database:

services:
    database:
        image: mariadb
        container_name: nextcloud_db
        restart: always
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
        environment: 
            MYSQL_ROOT_PASSWORD: <root-password>
            MYSQL_USER: <your-user>
            MYSQL_PASSWORD: <your-password>
            MYSQL_DATABASE: <database-name>
        volumes:
            - nextcloud_db-data:/var/lib/mysql
        ports:
            - <port>:3306
            
volumes:
    nextcloud_db-data: {}

Anche in questo caso abbiamo configurato user, password, root, root-password, creato il volume persistente e mappato la porta, inoltre eseguiamo un comando alla creazione del container --transaction-isolation=READ-COMMITTED --binlog-format=ROW che serve ad evitare problematiche quando il database effettuerà DELETE e UPDATE, per maggiori informazioni leggere qui.

Perfetto, ora uniamo in unico docker-compose.yml:

services:
    database:
        image: mariadb
        container_name: nextcloud_db
        restart: always
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
        environment: 
            MYSQL_ROOT_PASSWORD: <root-password>
            MYSQL_USER: <your-user>
            MYSQL_PASSWORD: <your-password>
            MYSQL_DATABASE: <database-name>
        volumes:
            - nextcloud_db-data:/var/lib/mysql
        ports:
            - <port>:3306
        
   nextcloud:
        image: nextcloud
        container_name: nextcloud
        restart: always
        links: 
            - database
        environment:
            #  CONFIGURAZIONE DATABASE
            MYSQL_HOST: database 
            MYSQL_USER: <your-user>                       
            MYSQL_PASSWORD: <your-password> 
            MYSQL_DATABASE: <database-name> 
            
            NEXTCLOUD_ADMIN_USER: <your-username>
            NEXTCLOUD_ADMIN_PASSWORD: <your-password>
        volumes:
            - nextcloud-data:/var/www/html
        ports:
            - <port>:80

volumes:
    nextcloud-data: {}
    nextcloud_db-data: {}

Possiamo notare alcune differenze, iniziamo con link: che come dice il nome collega il container del database a quello di nextcloud, poi abbiamo la configurazione del database nella sezione di nextcloud, questo serve per collegare in automatico il database quando noi eseguiamo il login.

Utilizzo

Perfetto a questo punto possiamo “comporre” il tutto con:

docker-compose up -d

Per vedere se tutto è andato a buon fine eseguite:

docker ps

dovreste ottenere un output simile a questo:

CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS         PORTS                                       NAMES
3388361f5f24   nextcloud   "/entrypoint.sh apac…"   9 seconds ago    Up 8 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp       nextcloud
31ad74931a49   mariadb     "docker-entrypoint.s…"   10 seconds ago   Up 8 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   nextcloud_db

Perfetto ora sul vostro browser se andate su localhost:<porta> o 127.0.0.1:8080 accederete al vostro nuovo cloud containerizzato.

Conclusione

Prima di concludere aggiungo che potrebbe essere necessario apportare modifiche ai file di configurazione di Nextcloud, per farlo entriamo nel container:

docker exec -it <nome-container-nextcloud> bash

Da qui ci si aprirà una shell in /var/www/html, dove troviamo tutti i file che compongono Nextcloud.

Possiamo modificare a nostro piacimento i file che ci interessano, dopodichè usciamo dal container con exit e ricarichiamo il container con:

docker restart <nome-container>
history_edu Revisioni