services:
db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_PASSWORD=supersecretpassword
- MYSQL_DATABASE=nextclouddb
- MYSQL_USER=nextclouduser
- MYSQL_RANDOM_ROOT_PASSWORD='yes'
redis:
image: redis
restart: always
command: redis-server --requirepass supersecretpassword2
app:
image: nextcloud:27
restart: always
ports:
- 8080:80
links:
- db
- redis
volumes:
- ./html:/var/www/html
environment:
- MYSQL_PASSWORD=supersecretpassword
- MYSQL_DATABASE=nextclouddb
- MYSQL_USER=nextclouduser
- MYSQL_HOST=db
- REDIS_HOST_PASSWORD=supersecretpassword2
depends_on:
- db
- redis
cron:
image: nextcloud:27
restart: always
volumes:
- ./html:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
To use this you need docker-compose installed. Once thats installed create a nextcloud folder and copy in this file as docker-compose.yaml. Once you are in the working directory run docker-compose up -d
This guide does not include the setup of a secure connection, e.g. with traefic and letsencrypt. This is recommended when the nextcloud instance is reachable from the internet.
That was deliberate. You need to take more security precautions when exposing it to the internet. Firewalls and least privlage are a must
The title says quick and dirty. Besides, you can always keep this kind of thing behind some Nginx proxy like nginx-proxy-manager (and probably should)