Skip to content

Instantly share code, notes, and snippets.

@g1ibby
Created July 26, 2020 05:13
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save g1ibby/6a3427d5275aeba3b2913d8afd584b73 to your computer and use it in GitHub Desktop.
Save g1ibby/6a3427d5275aeba3b2913d8afd584b73 to your computer and use it in GitHub Desktop.
xBrowserSync self hosted: docker-compose, traefik v2
version: "3.3"
services:
traefik:
image: "traefik:v2.2"
container_name: "traefik"
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.httpchallenge=true"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.myresolver.acme.email=https@your.domain"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web"
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
- "./letsencrypt:/letsencrypt"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
xbs-db:
image: "mongo:4.2.6"
container_name: "xbs-db"
restart: "always"
environment:
- "MONGO_INITDB_DATABASE=xbrowsersync"
- "MONGO_INITDB_ROOT_PASSWORD=password"
- "MONGO_INITDB_ROOT_USERNAME=username"
labels:
- "traefik.enable=false"
volumes:
- "./xbs-db-data:/data/db"
- "./xbs-mongoconfig.js:/docker-entrypoint-initdb.d/mongoconfig.js"
xbs-api:
image: "xbrowsersync/api:1.1.12"
container_name: "xbs-api"
restart: "always"
depends_on:
- "xbs-db"
labels:
- "traefik.enable=true"
- "traefik.http.routers.xbs-api.rule=Host(`xbsapi.your.domain`)"
- "traefik.http.routers.xbs-api.entrypoints=websecure"
- "traefik.http.routers.xbs-api.tls.certresolver=myresolver"
- "traefik.http.services.xbs-api.loadbalancer.server.port=8080"
volumes:
- "./xbs-settings.json:/usr/src/api/config/settings.json"
db.newsynclogs.createIndex( { "expiresAt": 1 }, { expireAfterSeconds: 0 } );
db.newsynclogs.createIndex( { "ipAddress": 1 } );
{
"db": {
"host": "xbs-db",
"name": "xbrowsersync",
"username": "username",
"password": "password"
},
"maxSyncs": 1,
"maxSyncSize": 10240000,
"status": {
"allowNewSyncs": true,
"message": "Welcome to my xBrowserSync service!!!"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment