Installazione di nextcloud su nas QNAP TS-431P2 – piattaforma arm32v7

Installazione di nextcloud su nas QNAP TS-431P2 – piattaforma arm32v7

simile a questa guida

https://github.com/dtscott2/qnap-nextcloud-https

ma più facile e adattato al mio nas che è un modello arm32v7 e monta una cpu:

Annapurna Labs Alpine AL314 Quad-core ARM Cortex-A15 CPU @ 1.70GHz

e quindi servono immagini docker apposite

nb: usare immagini docker per la piattaforma arm32v7

nell’esempio ipotizziamo che il nome del qnap registato sia

YOURQNAPNAME.myqnapcloud.com

e che abbia ip interno

YOURLOCALIP

e che docker sia installato in

/share/CACHEDEV3_DATA/.qpkg/container-station/bin/docker

sistemate i valori come opportuno

1

(come guida originale)

creare utente da interfaccia web del qnap

dockernextcloud

trovare l’id dell’utente creato, da shell:

id dockernextcloud

oppure

cat /etc/passwd

dockernextcloud:x:1003:100:Linux User,,,:/share/homes/dockernextcloud:/bin/sh

2

(come guida originale)

creare una dir condivisa per questo utente, da interfaccia web qnap

es:

/share/CACHEDEV3_DATA/yournextcloudpath/

3

scegliere una porta da esporre sul firewall/router

es: 32768

usate questi valori (id utente e percorso) nel file .yml

es:

- PUID=1003
- /share/CACHEDEV3_DATA/yournextcloudpath/:/var/www/html
- 32768:80
-POSTGRES_xxxx

4

installare container service da interfaccia web qnap

5

registrare il qnap sul portale apposito myqnapcloud.com per avere i certificati ssl e il nome dns dinamico

es:

YOURQNAPNAME.myqnapcloud.com

6

creare il file yaml sistemando i valori nell’esempio, chiamarlo ad esempio: docker-compose.yml

services:
  nextcloud:
    image: arm32v7/nextcloud:latest
    container_name: nextcloud
    hostname: nc.YOURQNAPNAME.myqnapcloud.com #fix smtp localhost.localdomain error
    environment:
      - PUID=1003
      - PGID=100
      - TZ=Europe/Rome
      - POSTGRES_HOST=nextcloud_db
      # NOT the same db, user and password of postgres root
      # nextcloud db, user and password here
      - POSTGRES_DB=your_nextcloud_db
      - POSTGRES_USER=your_nextcloud_user
      - POSTGRES_PASSWORD="your_nextcloud_random_pass"
    volumes:
      - /share/CACHEDEV3_DATA/yournextcloudpath/:/var/www/html
    restart: unless-stopped
    ports:
      - 32768:80

  db: # The database service
    image: arm32v7/postgres:18-alpine
    container_name: nextcloud_db # Name the container as nextcloud_db
    environment: # Set the environment variables for the container
      - POSTGRES_HOST=nextcloud_db
      # NOT the same db, user password of nextcloud instance
      # postgres main db + root user and password HERE
      - POSTGRES_DB=mainnextcloud_db
      - POSTGRES_USER=mainnextcloud_user
      - POSTGRES_PASSWORD="postgres root password here"
    volumes: # Mount the volumes for the container
      - /share/CACHEDEV3_DATA/yournextcloudpath/db/:/var/lib/postgresql/data/pgdata
    restart: unless-stopped

questa configurazione mappa una dir del qnap (persistente) sulle macchine docker, quindi sopravvive a restart e upgrade

lanciare da linea di comando:

docker compose -f docker-compose.yml up -d

(nella app qnap container service si vedrà la app e i container creati)

7

creare db e utente

docker compose -f docker-compose.yml exec db bash

psql -U mainnextcloud_user mainnextcloud_db

(non dovrebbe chiedere la password)

create user your_nextcloud_user with password 'your_nextcloud_random_pass';

create database your_nextcloud_db owner your_nextcloud_user;

8

ora siamo pronti a lanciare l’installazione di nextcloud

aprire l’url (usando l’ip del qnap e la porta configurata):

http://YOURLOCALIP:32768/

es:

http://192.168.178.123:32768/

scegliere db postgres, usare il nome del db e le credenziali del db creato prima

installare

creare un utente non-admin per usare i servizi nextcloud

provare a loggarsi con questo utente:

http://YOURLOCALIP:32768/

9

abilitare ssl/https

da interfaccia web qnap

control panel -> network & file services -> network access -> reverse proxy

creare la regola reverse proxy

rule name: nextcloud https

source

protocol: https

domain name: YOURQNAPNAME.myqnapcloud.com

port number: 32769 (external https port)

allow all connections

destination

protocol:http

hostname: localhost

port number: 32768 (la porta http – non https – che è nel docker file yml)

aprire le porte del firewall per la porta 32769

modificare il config.php di nextcloud

da ssh:

sudo nano /share/CACHEDEV3_DATA/yournextcloudpath/config/config.php

'trusted_domains' =>

array (

0 => '192.168.178.YOURLOCALIP:32768',

1 => "YOURQNAPNAME.myqnapcloud.com:32768", //aggiungere questo

2 => "YOURQNAPNAME.myqnapcloud.com:32769", //aggiungere questo

),

'datadirectory' => '/var/www/html/data',

'dbtype' => 'pgsql',

'version' => '34.0.4.1',

'overwrite.cli.url' => 'http://192.168.178.YOURLOCALIP:32768', //aggiungere questo

'overwriteprotocol' => 'https', //aggiungere questo

adesso dovrebbe andare l’url https con il nome dns e il certificato valido:

https://YOURQNAPNAME.myqnapcloud.com:32769/login

10

cron

per lanciare i cron:

docker compose -f docker-compose.yml exec --user www-data nextcloud php cron.php

aggiungere al crontab:

https://www.qnap.com/en/how-to/faq/article/how-to-add-jobs-to-crontab-to-schedule-a-job

da ssh

sudo nano /etc/config/crontab

*/7 10-17 * * * cd /share/CACHEDEV1_DATA/homes/YOURSSHHOME/ && docker compose -f docker-compose.yml exec --user www-data nextcloud php cron.php

#questo dump del db lo vediamo sotto

13 6 */5 * * /share/CACHEDEV1_DATA/homes/YOURSSHHOME/nextcloud_dumpdb.sh

sudo crontab /etc/config/crontab

sudo /etc/init.d/crond.sh restart

potete vedere i log dalla app qnap per i container o da shell:

docker compose -f docker-compose.yml exec --user www-data nextcloud php occ log:tail 5

sudo tail -f /share/CACHEDEV3_DATA/yournextcloudpath/data/nextcloud.log

11

configurare gli alert via email

loggarsi su nextcloud come admin, impostare l’email, poi andare in system/…

smtp config:

smtp

ssl/TLS

email:namepartofemail domain@: domainpartofemail.it

host

yoursmtphostname.it

port 465

auth required:

__set username__

__set the password__

provare “test email”

nb: il docker file deve contenere un hostname altrimenti i comandi smtp daranno errore: localhost.localdomain not supported

io ho usato un nome plausibile che non deve essere necessariamente registrato

nc.YOURQNAPNAME.myqnapcloud.com

basta che sia del tipo:

qualsiasihostname.YOURQNAPNAME.myqnapcloud.com

12

backup del database

docker compose -f docker-compose.yml exec db pg_dumpall -U mainnextcloud_user |gzip -c > nextcloud_db_dumpall.sql.gz

creare da shell un file: nextcloud_dumpdb.sh e renderlo eseguibile

nano nextcloud_dumpdb.sh


contenuto:

#!/bin/sh

MYDAY=`date +\%a`

#fix the docker executable path: mine is: /share/CACHEDEV3_DATA/.qpkg/container-station/bin/docker

#use: `which docker` to show the path

cd /share/CACHEDEV1_DATA/homes/YOURSSHHOME/ && /share/CACHEDEV3_DATA/.qpkg/container-station/bin/docker compose -f docker-compose.yml exec db pg_dumpall -U mainnextcloud_user |gzip -c > nextcloud_db_dumpall.$MYDAY.sql.gz

uscire e rendere eseguibile
chmod a+x nextcloud_dumpdb.sh