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