Skip to content

Instantly share code, notes, and snippets.

@jamct
Created February 1, 2024 21:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamct/9331f5cc2a470029897906efd779aa55 to your computer and use it in GitHub Desktop.
Save jamct/9331f5cc2a470029897906efd779aa55 to your computer and use it in GitHub Desktop.
Nextcloud + Rocket.Chat
NC_VERSION=28
NC_HOST=cloud.example.org
RC_VERSION=6.5.0
RC_HOST=chat.example.org
MONGO_VERSION=7.0
MYSQL_ROOT_PASSWORD=verySecret
MYSQL_PASSWORD=secret
MYSQL_DATABASE=nextcloud
MYSQL_USER=nc
version: "3.7"
services:
traefik:
image: traefik:v2
command: --providers.docker
restart: always
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
- ./data/traefik/static.yml:/etc/traefik/traefik.yml
- ./data/traefik/dynamic.yml:/etc/traefik/dynamic/dynamic.yml
- ./data/traefik/acme.json:/etc/traefik/acme/acme.json
labels:
- "com.centurylinklabs.watchtower.enable=true"
db:
image: mariadb
volumes:
- ./data/db:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
restart: unless-stopped
nextcloud:
restart: unless-stopped
image: nextcloud:${NC_VERSION}
environment:
- MYSQL_HOST=db
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
depends_on:
- db
- traefik
volumes:
- ./data/nextcloud/www:/var/www/html
- ./data/nextcloud/config:/var/www/html/config
- ./data/nextcloud/custom_apps:/var/www/html/custom_apps
- ./data/nextcloud/themes:/var/www/html/themes
- /etc/localtime:/etc/localtime:ro
labels:
- "traefik.http.routers.nc.rule=Host(`${NC_HOST}`)"
- "traefik.http.routers.nc.tls.certResolver=default"
- "traefik.http.routers.nc.tls=true"
- "traefik.http.services.nc.loadbalancer.server.port=80"
- "com.centurylinklabs.watchtower.enable=true"
rocketchat:
image: rocketchat/rocket.chat:${RC_VERSION}
restart: unless-stopped
command: /bin/sh -c 'INSTANCE_IP=$$(hostname -i) node main.js'
volumes:
- ./data/chat/uploads:/app/uploads
- /tmp:/tmp
environment:
- PORT=3000
- ROOT_URL=https://${RC_HOST}
- MONGO_URL=mongodb://mongo:27017/rocketchat?directConnection=true
- MONGO_OPLOG_URL=mongodb://mongo:27017/local?directConnection=true
depends_on:
- mongo
- traefik
expose:
- "3000"
labels:
- "traefik.http.routers.rc.rule=Host(`${RC_HOST}`)"
- "traefik.http.routers.rc.tls.certResolver=default"
- "traefik.http.routers.rc.tls=true"
- "traefik.http.services.rc.loadbalancer.server.port=3000"
- "com.centurylinklabs.watchtower.enable=true"
mongo:
image: mongo:${MONGO_VERSION}
restart: unless-stopped
command: mongod --oplogSize 128 --replSet rs0
volumes:
- ./data/chat/db:/data/db
- ./data/chat/backups:/dump
labels:
- "com.centurylinklabs.watchtower.enable=true"
watchtower:
image: containrrr/watchtower
command: --cleanup --label-enable
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment