0
0
Fork 0
mirror of https://github.com/nextcloud/docker.git synced 2024-11-17 18:46:43 +01:00

Create docker-compose.yml

This docker-compose.yml file will create a nextcloud instance with signed certs using the lets encrypt companion and the nginx reverse proxy.  Collabora office will also be deployed using signed certs. To use collabora the app must be installed within nextcloud and configured to use office.DOMAIN.TLD.  There is no need to specify a port, simply the pubilc domain used to create your certs for the office instance.  Ports, 443 and 80 should be forwarded to the server.

Signed-off-by: aarskar <aaronskarcode@gmail.com>
This commit is contained in:
Aaron Skarlupka 2019-01-30 12:06:05 -06:00 committed by aarskar
parent 250802c706
commit 5265049766

View file

@ -0,0 +1,109 @@
version: '3'
services:
proxy:
image: jwilder/nginx-proxy:alpine
labels:
- "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
container_name: nextcloud-proxy
networks:
- nextcloud_network
ports:
- 80:80
- 443:443
volumes:
- ./proxy/conf.d:/etc/nginx/conf.d:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- ./proxy/certs:/etc/nginx/certs:ro
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nextcloud-letsencrypt
depends_on:
- proxy
networks:
- nextcloud_network
volumes:
- ./proxy/certs:/etc/nginx/certs:rw
- ./proxy/vhost.d:/etc/nginx/vhost.d:rw
- ./proxy/html:/usr/share/nginx/html:rw
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
db:
image: mariadb
container_name: nextcloud-mariadb
networks:
- nextcloud_network
volumes:
- db:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
environment:
# Create a root password for the maraiadb instance.
- MYSQL_ROOT_PASSWORD=CREATE-A-SECURE-ROOT-PASSWORD-HERE
# Create a password for the nextcloud users. If you have to manually connect your database you would use the nextcloud user and this password.
- MYSQL_PASSWORD=CREATE-A-SECURE-NEXTCLOUD-USER-PASSWORD-HERE
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
restart: unless-stopped
app:
image: nextcloud:latest
container_name: nextcloud-app
networks:
- nextcloud_network
depends_on:
- letsencrypt
- proxy
- db
volumes:
- nextcloud:/var/www/html
- ./app/config:/var/www/html/config
- ./app/custom_apps:/var/www/html/custom_apps
- ./app/data:/var/www/html/data
- ./app/themes:/var/www/html/themes
- /etc/localtime:/etc/localtime:ro
environment:
# The VIRTUAL_HOST and LETSENCRYPT_HOST should use the same publically reachable domain for your nextlcloud instance.
- VIRTUAL_HOST=cloud.DOMAIN.TLD
- LETSENCRYPT_HOST=cloud.DOMAIN.TLD
# This needs to be a real email as it will be used by let's encrypt for your cert and is used to warn you about renewals.
- LETSENCRYPT_EMAIL=YOUR-EMAIL@DOMAIN.TDL
restart: unless-stopped
collab:
image: collabora/code
container_name: nextcloud-collab
networks:
- nextcloud_network
depends_on:
- proxy
- letsencrypt
cap_add:
- MKNOD
ports:
- 9980:9980
environment:
# This nees to be the same as what you set your app domain too (ex: cloud.domain.tld).
- domain=cloud\\.DOMAIN\\.TDL
- username=admin
# Create a passoword for the collabora office admin page.
- password=CREATE-A-SECURE-PASSWORD-HERE
- VIRTUAL_PROTO=https
- VIRTUAL_PORT=443
# The VIRTUAL_HOST and LETSENCRYPT_HOST should use the same publically reachable domain for your collabora instance (ex: office.domain.tld).
- VIRTUAL_HOST=office.DOMAIN.TLD
- LETSENCRYPT_HOST=office.DOMAIN.TLD
# This needs to be a real email as it will be used by let's encrypt for your cert and is used to warn you about renewals.
- LETSENCRYPT_EMAIL=YOUR-EMAIL@DOMAIN.TDL
restart: unless-stopped
volumes:
nextcloud:
db:
networks:
nextcloud_network: