Τα official docker images του nextcloud έρχονται σε 2 εκδόσεις . Ένα με έναν ενσωματωμένο apache web server και ένα fpm για χρήση με οποίον web server εμείς θέλουμε και το οποίο βασίζετε στο php-fpm docker image και τρέχει fastCGI-Process οι οποίες εξυπηρετούν τις σελίδες του Nextcloud .Στα example δίνουν και ένα παράδειγμα με χρήση nginx docker image.
Εδώ θα δούμε πως να το χρησιμοποιούμε με ένα caddy2 webserver docker container το οποίο θα γυρνάει τα http requests στην FastCGI-port του container.
*Τώρα όλα αυτά προσωπικά μου φαίνονται και λίγο κινέζικα . ο βασικός λόγος που το έκανα ήταν γιατί ήθελα dockerised nextcloud και όλα όσα δοκίμασα official με apache , του linuxserver , του nextcloudpi δεν κατάφερα να τα δουλέψω όπως ήθελα . *
Πολύ πιθανόν και λόγο απειρίας
anyway αυτό το config μου δουλεψε απροβλημάτιστα με χρήση caddy2 server στο dietpi
Δημιουργια του docker-compose.yml
mkdir ncfpm
cd ncfpm
nano docker-compose.yml
paste
version: '2'
volumes:
nextcloud:
db:
caddy_data:
services:
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_PASSWORD=
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:fpm
links:
- db
volumes:
- nextcloud:/var/www/html
restart: always
web:
image: caddy
ports:
- 8080:80
links:
- app
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
volumes_from:
- app
restart: always
ctrl + x
y
enter
Δημιουργία του Caddyfile στο dir που βρισκομαστε (ncfpm στο παράδειγμα μας ή όπως αλλιώς το έχεις ονομάσει)
nano Caddyfile
:80 {
root * /var/www/html
file_server
php_fastcgi app:9000
header {
# enable HSTS
# Strict-Transport-Security max-age=31536000;
}
redir /.well-known/carddav /remote.php/dav 301
redir /.well-known/caldav /remote.php/dav 301
# .htaccess / data / config / ... shouldn't be accessible from outside
@forbidden {
path /.htaccess
path /data/*
path /config/*
path /db_structure
path /.xml
path /README
path /3rdparty/*
path /lib/*
path /templates/*
path /occ
path /console.php
}
respond @forbidden 404
}
ctrl + x
y
enter
Δημιουργούμε τα container
docker-compose up -d
πάμε στην localhost:8080
δημιουργούμε admin acount
σημειώνουμε τα user name / password εγώ τουλάχιστον δεν έχω βρει τρόπο να τα επαναφέρω και χρειάστηκε να κάνω rebuild όταν τα ξέχασα
allowed domains
Το container υποστηρίζει όλες τις php occ εντολές αλλά πρέπει πρώτα να δηλώσουμε user και όνομα container.
docker ps
copy container id of nextcloud:fpm
docker exec --user www-data container_id php occ config:system:set trusted_domains 2 --value=your_domain_name_here
docker stop container_id
docker start container_id
reverse proxy
αν εχεις caddy2 στο host
nano /etc/caddy/Caddyfile
add
your_domain_name:an_open_port {
reverse_proxy localhost:8080
}
rebuild
Σε περιπτωση που χρειαστει να κανεις rebuild τα container πρέπει να διαγράψεις οτι εχουν δημιουρησει
docker ps -a
copy cotnainer id
docker kill container_id
docker rm container_id
docker volume ls
copy volume id
docker volume inspect volume_id
copy mount point
ls mount_point
check τι εχει μεσα αν ειναι αυτο που θες να σβησεις
docker volume rm volume_id
επαναλαμβάνουμε για ncfpm_web_1 , ncfpm_app_1 , ncfpm_db_1
rebuild με
docker-compose up -d
Τα images αν θέλουμε να ξαναχτίσουμε τα ιδια δε τα διαγράφουμε προφανώς αλλά αν αφού έχουμε μια λειτουργική εγκατάσταση θέλουμε να εξοικονομήσουμε χώρο:
docker images
docker rmi image_id
Aν οι android client δεν μπορούν να κάνουν sign in ή να κανουν grant access
nano /var/lib/docker/volumes/ncfpm_nextcloud/_data/config/config.php
προσθέτουμε
'overwriteprotocol' => 'https'
mount external storage on nextcloud:fpm docker container
Το external storage app μέσα απο το nextcloud δε δούλεψε σε μένα τουλάχιστον σε κανένα container που δοκίμασα
θέλει bind mound
το επίσημο συντακτικό του docker Λινκ επίσης δε μου δούλεψε έκανα mount --bind χειροκίνητα
docker volume ls
docker volume inspect ncfpm_nextcloud
copy path
ls path/data/user_name/files/
mkdir /var/lib/docker/volumes/ncfpm_nextcloud/_data/data/user_name/files/folder_name
mount --bind /mnt/storage_name/photos /var/lib/docker/volumes/ncfpm_nextcloud/_data/data/user_name/files/folder_name
docker exec --user www-data container_id php occ files:scan --all
un mount
umount /var/lib/docker/volumes/ncfpm_nextcloud/_data/data/user_name/files/folder_name