Aby ułatwić sobie automatyczny backup zdjęć z telefonu na swój własny serwer postanowiłem postawić własny serwer Nextcloud używając Docker Compose.
Konfiguracja jest dość prosta, wystarczy użyć poniższego pliku YAML:
version: '3.7'
services:
nextcloud_db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- /mnt/dane/container/nextcloud-mysql:/var/lib/mysql
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=true
- MYSQL_PASSWORD=TWOJEHASLO
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
labels:
- "com.centurylinklabs.watchtower.enable=true"
nextcloud:
image: nextcloud:24-apache
restart: always
ports:
- 4080:80
volumes:
- /mnt/dane/container/nextcloud:/var/www/html
environment:
- NEXTCLOUD_DATA_DIR=/var/www/html/data
- MYSQL_PASSWORD=TWOJEHASLO
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud_db
- REDIS_HOST=redis
- APACHE_DISABLE_REWRITE_IP
- VIRTUAL_HOST=nextcloud.sloniupl.eu
- OVERWRITEPROTOCOL=https
- TRUSTED_PROXIES=NginxProxyManager
- OVERWRITECLIURL=https://nextcloud.sloniupl.eu
labels:
- "com.centurylinklabs.watchtower.enable=true"
cron:
image: rcdailey/nextcloud-cronjob
restart: always
network_mode: none
depends_on:
- app
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
environment:
- NEXTCLOUD_CONTAINER_NAME=nextcloud
- NEXTCLOUD_PROJECT_NAME=nextcloud
labels:
- "com.centurylinklabs.watchtower.enable=true"
redis:
image: redis:alpine
restart: always
labels:
- "com.centurylinklabs.watchtower.enable=true"
Poniżej szybkie objaśnienie niektórych funkcji:
- etykieta wykorzystywana przez watchtower do automatycznego sprawdzania i aktualizacji: labels: – „com.centurylinklabs.watchtower.enable=true”
- zmień wartość na swoje trudne hasło do bazy danych: TWOJEHASLO
- zmień na własne lokalizacje katalogów wartości wskazane w: volumes:
- nextcloud będzie dostępny na porcie 4080
Na koniec w Nginx Proxy Manager dodałem proxy host z dodatkową konfiguracją w sekcji advanced:
location /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
Linkografia:
https://techsparx.com/software-development/docker/self-hosting/nextcloud.html
Witaj,
Mam podobną konfigurację z dwoma wyjątkami.
Nginx mam na oddzielnym dockerze.
Druga sprawa to Volumes, ja mam je odseparowane od dockera. Mam stworzone „pools” na truenas dedykowane do MySQL i Nextcloud. Jest trochę bezpieczniej w razie „W”. Docker sobie odtworzysz a pliki będa bezpieczne.