mirror of
				https://github.com/ruanbekker/docker-selfhosted-server.git
				synced 2025-11-04 01:11:15 +01:00 
			
		
		
		
	
						commit
						22fca48f2c
					
				
							
								
								
									
										20
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								.drone.yml
									
									
									
									
									
								
							@ -8,3 +8,23 @@ steps:
 | 
				
			|||||||
  image: busybox
 | 
					  image: busybox
 | 
				
			||||||
  commands:
 | 
					  commands:
 | 
				
			||||||
  - echo hi
 | 
					  - echo hi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: gotify
 | 
				
			||||||
 | 
					  image: fredix/drone-gotify
 | 
				
			||||||
 | 
					  settings:
 | 
				
			||||||
 | 
					    gotifytoken:
 | 
				
			||||||
 | 
					      from_secret: plugin_gotifytoken
 | 
				
			||||||
 | 
					    gotifyendpoint:
 | 
				
			||||||
 | 
					      from_secret: plugin_gotifyendpoint
 | 
				
			||||||
 | 
					    gotifytitle:
 | 
				
			||||||
 | 
					      from_secret: plugin_gotifytitle
 | 
				
			||||||
 | 
					    gotifypriority:
 | 
				
			||||||
 | 
					      from_secret: plugin_gotifypriority
 | 
				
			||||||
 | 
					    message: >
 | 
				
			||||||
 | 
					      {{#success build.status}}
 | 
				
			||||||
 | 
					        build {{build.number}} succeeded on {{repo.name}}. Good job {{build.author}}  {{build.link}}
 | 
				
			||||||
 | 
					      {{else}}
 | 
				
			||||||
 | 
					        build {{build.number}} failed on {{repo.name}}. Fix me please {{build.author}}  {{build.link}}
 | 
				
			||||||
 | 
					      {{/success}}
 | 
				
			||||||
 | 
					  when:
 | 
				
			||||||
 | 
					    status: [ success, failure ]
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										19
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								README.md
									
									
									
									
									
								
							@ -1,2 +1,21 @@
 | 
				
			|||||||
# docker-selfhosted-server
 | 
					# docker-selfhosted-server
 | 
				
			||||||
My Hobby Server for Self-Hosted Applications on Docker
 | 
					My Hobby Server for Self-Hosted Applications on Docker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In each application directory resides a `sample-env` file, which includes the required environment variables that you can copy to `.env`:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					$ cd folder/
 | 
				
			||||||
 | 
					$ cp sample-env .env
 | 
				
			||||||
 | 
					# modify .env to desired values
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Included Applications
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					I will add more over time:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `traefik`
 | 
				
			||||||
 | 
					- `bitwarden`
 | 
				
			||||||
 | 
					- `rocket-chat`
 | 
				
			||||||
 | 
					- `grafana loki`
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										23
									
								
								bitwarden/bitwarden/frontend/bitwarden.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								bitwarden/bitwarden/frontend/bitwarden.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					server {
 | 
				
			||||||
 | 
					    listen         80;
 | 
				
			||||||
 | 
					    server_name    _;
 | 
				
			||||||
 | 
					    client_max_body_size 128M;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    location / {
 | 
				
			||||||
 | 
					        proxy_pass http://bitwarden-backend:80;
 | 
				
			||||||
 | 
					        proxy_set_header Host $host;
 | 
				
			||||||
 | 
					        proxy_set_header X-Real-IP $remote_addr;
 | 
				
			||||||
 | 
					        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 | 
				
			||||||
 | 
					        proxy_set_header X-Forwarded-Proto $scheme;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    location /notifications/hub {
 | 
				
			||||||
 | 
					        proxy_pass http://bitwarden-backend:3012;
 | 
				
			||||||
 | 
					        proxy_set_header Upgrade $http_upgrade;
 | 
				
			||||||
 | 
					        proxy_set_header Connection "upgrade";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    location /notifications/hub/negotiate {
 | 
				
			||||||
 | 
					        proxy_pass http://bitwarden-backend:80;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										80
									
								
								bitwarden/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								bitwarden/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,80 @@
 | 
				
			|||||||
 | 
					# resource
 | 
				
			||||||
 | 
					# https://github.com/JulianRunnels/Bitwarden_Self_Host/blob/master/docker-compose.yml
 | 
				
			||||||
 | 
					# https://medium.com/swlh/set-up-your-own-personal-password-vault-313d76374046
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# to use grafana loki for logging:
 | 
				
			||||||
 | 
					#    logging:
 | 
				
			||||||
 | 
					#      driver: loki
 | 
				
			||||||
 | 
					#      options:
 | 
				
			||||||
 | 
					#        loki-url: http://$SERVER_IP:3100/loki/api/v1/push
 | 
				
			||||||
 | 
					#        loki-external-labels: job=dockerlogs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version: "3.8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  bitwarden-frontend:
 | 
				
			||||||
 | 
					    image: nginx:1.15-alpine
 | 
				
			||||||
 | 
					    container_name: bitwarden-frontend
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/bitwarden/frontend/bitwarden.conf:/etc/nginx/conf.d/bitwarden.conf
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - bitwarden-backend
 | 
				
			||||||
 | 
					    labels:
 | 
				
			||||||
 | 
					      - "traefik.enable=true"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.bitwarden.rule=Host(`bitwarden.$DOMAIN`)"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.bitwarden.entrypoints=https"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.bitwarden.tls.certresolver=dns-cloudflare"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.bitwarden.service=bitwarden-service"
 | 
				
			||||||
 | 
					      - "traefik.http.services.bitwarden-service.loadbalancer.server.port=80"
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bitwarden-backend:
 | 
				
			||||||
 | 
					    image: vaultwarden/server:latest
 | 
				
			||||||
 | 
					    container_name: bitwarden-backend
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/bitwarden/backend/data:/data
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - WEBSOCKET_ENABLED=true
 | 
				
			||||||
 | 
					      - SIGNUPS_ALLOWED=false
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bitwarden-backup:
 | 
				
			||||||
 | 
					    image: bruceforce/bw_backup:latest
 | 
				
			||||||
 | 
					    container_name: bitwarden-backup
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - bitwarden-backend
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/bitwarden/backend/data:/data
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/bitwarden/backend/backup:/backup
 | 
				
			||||||
 | 
					      - /etc/timezone:/etc/timezone:ro
 | 
				
			||||||
 | 
					      - /etc/localtime:/etc/localtime:ro
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - DB_FILE=/data/db.sqlite3
 | 
				
			||||||
 | 
					      - BACKUP_FILE=/backup/backup.sqlite3
 | 
				
			||||||
 | 
					      - CRON_TIME=0 1 * * *
 | 
				
			||||||
 | 
					      - TIMESTAMP=false
 | 
				
			||||||
 | 
					      - UID=0
 | 
				
			||||||
 | 
					      - GID=0
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					networks:
 | 
				
			||||||
 | 
					  public:
 | 
				
			||||||
 | 
					    name: public
 | 
				
			||||||
							
								
								
									
										2
									
								
								bitwarden/sample-env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								bitwarden/sample-env
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					DOCKER_VOLUME_PATH=.
 | 
				
			||||||
 | 
					DOMAIN=
 | 
				
			||||||
							
								
								
									
										175
									
								
								logging-loki/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								logging-loki/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,175 @@
 | 
				
			|||||||
 | 
					version: '3.8'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  loki-redis:
 | 
				
			||||||
 | 
					    image: bitnami/redis:latest
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    container_name: loki-redis
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      ALLOW_EMPTY_PASSWORD: "yes"
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 6379
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  loki-minio:
 | 
				
			||||||
 | 
					    image: minio/minio:latest
 | 
				
			||||||
 | 
					    container_name: loki-minio
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/minio/data:/data
 | 
				
			||||||
 | 
					    env_file: .env
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - MINIO_ROOT_USER=${MINIO_ROOT_USER:-EXAMPLEACCESSKEY}
 | 
				
			||||||
 | 
					      - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-EXAMPLEACCESSSECRET}
 | 
				
			||||||
 | 
					    command: server /data
 | 
				
			||||||
 | 
					    healthcheck:
 | 
				
			||||||
 | 
					      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
 | 
				
			||||||
 | 
					      interval: 30s
 | 
				
			||||||
 | 
					      timeout: 20s
 | 
				
			||||||
 | 
					      retries: 3
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  loki-consul:
 | 
				
			||||||
 | 
					    container_name: loki-consul
 | 
				
			||||||
 | 
					    image: consul:1.9
 | 
				
			||||||
 | 
					    command: agent -log-level=info -dev -client 0.0.0.0
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/consul/config:/consul/config
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/consul/data:/consul/data
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  loki-distributor:
 | 
				
			||||||
 | 
					    image: grafana/loki:2.2.1
 | 
				
			||||||
 | 
					    container_name: loki-distributor
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 3100:3100
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - loki-redis
 | 
				
			||||||
 | 
					      - loki-consul
 | 
				
			||||||
 | 
					      - loki-minio
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/configs/loki/consul_config.yaml:/etc/loki/config.yaml
 | 
				
			||||||
 | 
					    command: -config.file=/etc/loki/config.yaml -target=distributor
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  loki-querier:
 | 
				
			||||||
 | 
					    image: grafana/loki:2.2.1
 | 
				
			||||||
 | 
					    container_name: loki-querier
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 3100
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - loki-redis
 | 
				
			||||||
 | 
					      - loki-consul
 | 
				
			||||||
 | 
					      - loki-minio
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/configs/loki/consul_config.yaml:/etc/loki/config.yaml
 | 
				
			||||||
 | 
					    command: -config.file=/etc/loki/config.yaml -target=querier
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  loki-ingester:
 | 
				
			||||||
 | 
					    image: grafana/loki:2.2.1
 | 
				
			||||||
 | 
					    container_name: loki-ingester
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 3100
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - loki-redis
 | 
				
			||||||
 | 
					      - loki-consul
 | 
				
			||||||
 | 
					      - loki-minio
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/configs/loki/consul_config.yaml:/etc/loki/config.yaml
 | 
				
			||||||
 | 
					    command: -config.file=/etc/loki/config.yaml -target=ingester
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  loki-table-manager:
 | 
				
			||||||
 | 
					    image: grafana/loki:2.2.1
 | 
				
			||||||
 | 
					    container_name: loki-table-manager
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 3100
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - loki-redis
 | 
				
			||||||
 | 
					      - loki-consul
 | 
				
			||||||
 | 
					      - loki-minio
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/configs/loki/consul_config.yaml:/etc/loki/config.yaml
 | 
				
			||||||
 | 
					    command: -config.file=/etc/loki/config.yaml -target=table-manager
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  promtail:
 | 
				
			||||||
 | 
					    image:  grafana/promtail:latest
 | 
				
			||||||
 | 
					    container_name: promtail
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/configs/promtail/promtail-config.yaml:/etc/promtail/docker-config.yaml
 | 
				
			||||||
 | 
					      - /var/log:/var/log
 | 
				
			||||||
 | 
					      - /var/lib/docker/:/var/lib/docker:ro
 | 
				
			||||||
 | 
					    command: -config.file=/etc/promtail/docker-config.yaml
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - loki-ingester
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  fluent-bit:
 | 
				
			||||||
 | 
					    image: grafana/fluent-bit-plugin-loki:latest
 | 
				
			||||||
 | 
					    container_name: fluent-bit
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - LOKI_URL=http://loki-distributor:3100/loki/api/v1/push
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/loki/configs/fluentbit/fluent-bit.conf:/fluent-bit/etc/fluent-bit.conf
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - "24224:24224"
 | 
				
			||||||
 | 
					      - "24224:24224/udp"
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					networks:
 | 
				
			||||||
 | 
					  public:
 | 
				
			||||||
 | 
					    name: public
 | 
				
			||||||
							
								
								
									
										15
									
								
								logging-loki/loki/configs/fluentbit/fluent-bit.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								logging-loki/loki/configs/fluentbit/fluent-bit.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					[INPUT]
 | 
				
			||||||
 | 
					    Name        forward
 | 
				
			||||||
 | 
					    Listen      0.0.0.0
 | 
				
			||||||
 | 
					    Port        24224
 | 
				
			||||||
 | 
					[Output]
 | 
				
			||||||
 | 
					    Name grafana-loki
 | 
				
			||||||
 | 
					    Match *
 | 
				
			||||||
 | 
					    Url ${LOKI_URL}
 | 
				
			||||||
 | 
					    RemoveKeys source,container_id
 | 
				
			||||||
 | 
					    Labels {job="fluentbit"}
 | 
				
			||||||
 | 
					    LabelKeys container_name
 | 
				
			||||||
 | 
					    BatchWait 1s
 | 
				
			||||||
 | 
					    BatchSize 1001024
 | 
				
			||||||
 | 
					    LineFormat json
 | 
				
			||||||
 | 
					    LogLevel info
 | 
				
			||||||
							
								
								
									
										82
									
								
								logging-loki/loki/configs/loki/consul_config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								logging-loki/loki/configs/loki/consul_config.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,82 @@
 | 
				
			|||||||
 | 
					auth_enabled: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					server:
 | 
				
			||||||
 | 
					  http_listen_port: 3100
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ingester:
 | 
				
			||||||
 | 
					  lifecycler:
 | 
				
			||||||
 | 
					    ring:
 | 
				
			||||||
 | 
					      kvstore:
 | 
				
			||||||
 | 
					        store: consul
 | 
				
			||||||
 | 
					        consul:
 | 
				
			||||||
 | 
					          host: loki-consul:8500
 | 
				
			||||||
 | 
					      heartbeat_timeout: 1m
 | 
				
			||||||
 | 
					      replication_factor: 1
 | 
				
			||||||
 | 
					    num_tokens: 128
 | 
				
			||||||
 | 
					    heartbeat_period: 5s
 | 
				
			||||||
 | 
					    join_after: 0s
 | 
				
			||||||
 | 
					    min_ready_duration: 10s
 | 
				
			||||||
 | 
					    interface_names:
 | 
				
			||||||
 | 
					      - "eth0"
 | 
				
			||||||
 | 
					    final_sleep: 30s
 | 
				
			||||||
 | 
					  chunk_idle_period: 5m
 | 
				
			||||||
 | 
					  chunk_retain_period: 30s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					schema_config:
 | 
				
			||||||
 | 
					  configs:
 | 
				
			||||||
 | 
					    - from: 2020-05-15
 | 
				
			||||||
 | 
					      store: boltdb-shipper
 | 
				
			||||||
 | 
					      object_store: s3
 | 
				
			||||||
 | 
					      schema: v11
 | 
				
			||||||
 | 
					      index:
 | 
				
			||||||
 | 
					        prefix: loki_
 | 
				
			||||||
 | 
					        period: 24h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					storage_config:
 | 
				
			||||||
 | 
					  aws:
 | 
				
			||||||
 | 
					    bucketnames: loki
 | 
				
			||||||
 | 
					    endpoint: minio.$DOMAIN
 | 
				
			||||||
 | 
					    access_key_id: EXAMPLEACCESSKEY
 | 
				
			||||||
 | 
					    secret_access_key: EXAMPLEACCESSSECRET
 | 
				
			||||||
 | 
					    insecure: false
 | 
				
			||||||
 | 
					    s3forcepathstyle: true
 | 
				
			||||||
 | 
					    #s3: s3://EXAMPLEACCESSKEY:EXAMPLEACCESSSECRET@minio.:3000/loki
 | 
				
			||||||
 | 
					    #s3forcepathstyle: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  boltdb_shipper:
 | 
				
			||||||
 | 
					    active_index_directory: /loki/index
 | 
				
			||||||
 | 
					    cache_location: /loki/index_cache
 | 
				
			||||||
 | 
					    resync_interval: 5s
 | 
				
			||||||
 | 
					    shared_store: s3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					limits_config:
 | 
				
			||||||
 | 
					  enforce_metric_name: false
 | 
				
			||||||
 | 
					  reject_old_samples: true
 | 
				
			||||||
 | 
					  reject_old_samples_max_age: 168h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					chunk_store_config:
 | 
				
			||||||
 | 
					  chunk_cache_config:
 | 
				
			||||||
 | 
					    redis:
 | 
				
			||||||
 | 
					        endpoint: "loki-redis:6379"
 | 
				
			||||||
 | 
					        timeout: 100ms
 | 
				
			||||||
 | 
					        expiration: 0s
 | 
				
			||||||
 | 
					  max_look_back_period: 0s
 | 
				
			||||||
 | 
					  write_dedupe_cache_config:
 | 
				
			||||||
 | 
					    redis:
 | 
				
			||||||
 | 
					      endpoint: "loki-redis:6379"
 | 
				
			||||||
 | 
					      timeout: 100ms
 | 
				
			||||||
 | 
					      expiration: 0s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					table_manager:
 | 
				
			||||||
 | 
					  chunk_tables_provisioning:
 | 
				
			||||||
 | 
					    inactive_read_throughput: 1
 | 
				
			||||||
 | 
					    inactive_write_throughput: 1
 | 
				
			||||||
 | 
					    provisioned_read_throughput: 5
 | 
				
			||||||
 | 
					    provisioned_write_throughput: 5
 | 
				
			||||||
 | 
					  index_tables_provisioning:
 | 
				
			||||||
 | 
					    inactive_read_throughput: 1
 | 
				
			||||||
 | 
					    inactive_write_throughput: 1
 | 
				
			||||||
 | 
					    provisioned_read_throughput: 5
 | 
				
			||||||
 | 
					    provisioned_write_throughput: 5
 | 
				
			||||||
 | 
					  retention_deletes_enabled: false
 | 
				
			||||||
 | 
					  retention_period: 0s
 | 
				
			||||||
							
								
								
									
										55
									
								
								logging-loki/loki/configs/promtail/promtail-config.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								logging-loki/loki/configs/promtail/promtail-config.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					server:
 | 
				
			||||||
 | 
					  http_listen_port: 9080
 | 
				
			||||||
 | 
					  grpc_listen_port: 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					positions:
 | 
				
			||||||
 | 
					  filename: /tmp/positions.yaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					clients:
 | 
				
			||||||
 | 
					  - url: http://loki-distributor:3100/loki/api/v1/push
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					scrape_configs:
 | 
				
			||||||
 | 
					- job_name: logs
 | 
				
			||||||
 | 
					  pipeline_stages:
 | 
				
			||||||
 | 
					  static_configs:
 | 
				
			||||||
 | 
					  - targets:
 | 
				
			||||||
 | 
					      - localhost
 | 
				
			||||||
 | 
					    labels:
 | 
				
			||||||
 | 
					      job: hostlogs
 | 
				
			||||||
 | 
					      environment: home
 | 
				
			||||||
 | 
					      __path__: /var/log/*.log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- job_name: containers
 | 
				
			||||||
 | 
					  static_configs:
 | 
				
			||||||
 | 
					  - targets:
 | 
				
			||||||
 | 
					      - localhost
 | 
				
			||||||
 | 
					    labels:
 | 
				
			||||||
 | 
					      job: containerlogs
 | 
				
			||||||
 | 
					      __path__: /var/lib/docker/containers/*/*log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  pipeline_stages:
 | 
				
			||||||
 | 
					  - json:
 | 
				
			||||||
 | 
					      expressions:
 | 
				
			||||||
 | 
					        output: log
 | 
				
			||||||
 | 
					        stream: stream
 | 
				
			||||||
 | 
					        attrs:
 | 
				
			||||||
 | 
					  - json:
 | 
				
			||||||
 | 
					      expressions:
 | 
				
			||||||
 | 
					        tag:
 | 
				
			||||||
 | 
					      source: attrs
 | 
				
			||||||
 | 
					  - regex:
 | 
				
			||||||
 | 
					      expression: (?P<image_name>(?:[^|]*[^|])).(?P<container_name>(?:[^|]*[^|])).(?P<image_id>(?:[^|]*[^|])).(?P<container_id>(?:[^|]*[^|]))
 | 
				
			||||||
 | 
					      source: tag
 | 
				
			||||||
 | 
					  - timestamp:
 | 
				
			||||||
 | 
					      format: RFC3339Nano
 | 
				
			||||||
 | 
					      source: time
 | 
				
			||||||
 | 
					  - labels:
 | 
				
			||||||
 | 
					      tag:
 | 
				
			||||||
 | 
					      stream:
 | 
				
			||||||
 | 
					      image_name:
 | 
				
			||||||
 | 
					      container_name:
 | 
				
			||||||
 | 
					      image_id:
 | 
				
			||||||
 | 
					      container_id:
 | 
				
			||||||
 | 
					  - output:
 | 
				
			||||||
 | 
					      source: output
 | 
				
			||||||
							
								
								
									
										4
									
								
								logging-loki/sample-env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								logging-loki/sample-env
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					DOMAIN=
 | 
				
			||||||
 | 
					MINIO_ROOT_USER=
 | 
				
			||||||
 | 
					MINIO_ROOT_PASSWORD=
 | 
				
			||||||
 | 
					DOCKER_VOLUME_PATH=.
 | 
				
			||||||
							
								
								
									
										128
									
								
								rocket-chat/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								rocket-chat/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,128 @@
 | 
				
			|||||||
 | 
					version: "3.7"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  rocketchat:
 | 
				
			||||||
 | 
					    image: rocketchat/rocket.chat:latest
 | 
				
			||||||
 | 
					    container_name: rocketchat
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    command: >
 | 
				
			||||||
 | 
					      bash -c
 | 
				
			||||||
 | 
					        "for i in `seq 1 30`; do
 | 
				
			||||||
 | 
					          INSTANCE_IP=$$(hostname -i) node main.js &&
 | 
				
			||||||
 | 
					          s=$$? && break || s=$$?;
 | 
				
			||||||
 | 
					          echo \"Tried $$i times. Waiting 5 secs...\";
 | 
				
			||||||
 | 
					          sleep 5;
 | 
				
			||||||
 | 
					        done; (exit $$s)"
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ${DOCKER_VOLUME_PATH}/rocketchat/app/data/uploads:/app/uploads
 | 
				
			||||||
 | 
					      - /tmp:/tmp
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - PORT=3000
 | 
				
			||||||
 | 
					      - ROOT_URL=http://chat.$DOMAIN
 | 
				
			||||||
 | 
					      - MONGO_URL=mongodb://rocketchat-mongo:27017/rocketchat
 | 
				
			||||||
 | 
					      - MONGO_OPLOG_URL=mongodb://rocketchat-mongo:27017/local
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 9458:9458 # prometheus
 | 
				
			||||||
 | 
					    labels:
 | 
				
			||||||
 | 
					      - "traefik.enable=true"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.rocketchat-app.rule=Host(`chat.$DOMAIN`)"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.rocketchat-app.entrypoints=https"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.rocketchat-app.tls.certresolver=dns-cloudflare"
 | 
				
			||||||
 | 
					      - "com.centurylinklabs.watchtower.enable=true"
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - rocketchat-mongo
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  rocketchat-mongo:
 | 
				
			||||||
 | 
					    image: mongo:4.0
 | 
				
			||||||
 | 
					    container_name: rocketchat-mongo
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    command: mongod --oplogSize 128 --replSet rs0
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ${DOCKER_VOLUME_PATH}/rocketchat/mongo/data/db:/data/db
 | 
				
			||||||
 | 
					      - ${DOCKER_VOLUME_PATH}/rocketchat/mongo/data/backups:/dump
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  rocketchat-mongo-init-replica:
 | 
				
			||||||
 | 
					    image: mongo:4.0
 | 
				
			||||||
 | 
					    container_name: rocketchat-mono-init-replica
 | 
				
			||||||
 | 
					    command: >
 | 
				
			||||||
 | 
					      bash -c
 | 
				
			||||||
 | 
					        "for i in `seq 1 30`; do
 | 
				
			||||||
 | 
					          mongo rocketchat-mongo/rocketchat --eval \"
 | 
				
			||||||
 | 
					            rs.initiate({
 | 
				
			||||||
 | 
					              _id: 'rs0',
 | 
				
			||||||
 | 
					              members: [ { _id: 0, host: 'localhost:27017' } ]})\" &&
 | 
				
			||||||
 | 
					          s=$$? && break || s=$$?;
 | 
				
			||||||
 | 
					          echo \"Tried $$i times. Waiting 5 secs...\";
 | 
				
			||||||
 | 
					          sleep 5;
 | 
				
			||||||
 | 
					        done; (exit $$s)"
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - rocketchat-mongo
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  rocketchat-hubot:
 | 
				
			||||||
 | 
					    image: rocketchat/hubot-rocketchat:v1.0.11
 | 
				
			||||||
 | 
					    container_name: rocketchat-hubot
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - MONGODB_URL=mongodb://rocketchat-mongo:27017/hubot-brain
 | 
				
			||||||
 | 
					      - ROCKETCHAT_URL=rocketchat:3000
 | 
				
			||||||
 | 
					      - ROCKETCHAT_ROOM=GENERAL
 | 
				
			||||||
 | 
					      - ROCKETCHAT_USER=${ROCKETCHAT_USER}
 | 
				
			||||||
 | 
					      - ROCKETCHAT_PASSWORD=${ROCKETCHAT_PASSWORD}
 | 
				
			||||||
 | 
					      - BOT_NAME=${ROCKETCHAT_BOT_NAME}
 | 
				
			||||||
 | 
					      - RESPOND_TO_DM=true
 | 
				
			||||||
 | 
					      - LISTEN_ON_ALL_PUBLIC=true
 | 
				
			||||||
 | 
					      - EXTERNAL_SCRIPTS=${ROCKETCHAT_EXTERNAL_SCRIPTS}
 | 
				
			||||||
 | 
					      - TZ=${TZ}
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - rocketchat
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - ${DOCKER_VOLUME_PATH}/rocketchat/hubot/data/hubotscripts:/home/hubot/scripts
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 3011:8081
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  rocketchat-mongo-express:
 | 
				
			||||||
 | 
					    image: mongo-express
 | 
				
			||||||
 | 
					    container_name: roccketchat-mongo-express
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - ME_CONFIG_MONGODB_URL=mongodb://rocketchat-mongo:27017/
 | 
				
			||||||
 | 
					      - ME_CONFIG_MONGODB_ENABLE_ADMIN=true
 | 
				
			||||||
 | 
					      - ME_CONFIG_BASICAUTH_USERNAME=admin
 | 
				
			||||||
 | 
					      - ME_CONFIG_BASICAUTH_PASSWORD=$ME_CONFIG_BASICAUTH_PASSWORD
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 18087:8081
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    depends_on:
 | 
				
			||||||
 | 
					      - rocketchat-mongo
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					networks:
 | 
				
			||||||
 | 
					  public:
 | 
				
			||||||
 | 
					    name: public
 | 
				
			||||||
							
								
								
									
										10
									
								
								rocket-chat/sample-env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								rocket-chat/sample-env
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					DOMAIN=
 | 
				
			||||||
 | 
					ME_CONFIG_BASICAUTH_PASSWORD=
 | 
				
			||||||
 | 
					DOCKER_VOLUME_PATH=.
 | 
				
			||||||
 | 
					ROCKETCHAT_ROOM=GENERAL
 | 
				
			||||||
 | 
					ROCKETCHAT_USER=hubot
 | 
				
			||||||
 | 
					ROCKETCHAT_PASSWORD=
 | 
				
			||||||
 | 
					ROCKETCHAT_BOT_NAME=hubot
 | 
				
			||||||
 | 
					# https://developer.rocket.chat/guides/bots-guides/create-and-run-a-bot/run-a-hubot-bot
 | 
				
			||||||
 | 
					ROCKETCHAT_EXTERNAL_SCRIPTS=hubot-help,hubot-diagnostics,hubot-seen,hubot-links,hubot-pugme,hubot-memes,hubot-isup
 | 
				
			||||||
 | 
					TZ=/usr/share/zoneinfo/Africa/Johannesburg
 | 
				
			||||||
							
								
								
									
										82
									
								
								traefik/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								traefik/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,82 @@
 | 
				
			|||||||
 | 
					# Resources
 | 
				
			||||||
 | 
					# - https://www.smarthomebeginner.com/cloudflare-settings-for-traefik-docker/
 | 
				
			||||||
 | 
					# - https://www.smarthomebeginner.com/traefik-2-docker-tutorial/
 | 
				
			||||||
 | 
					# - https://gist.github.com/coltenkrauter/124ec31d616fa4c0dcf25d79462a6237
 | 
				
			||||||
 | 
					# - https://faun.pub/deploy-nextcloud-with-docker-compose-traefik-2-postgresql-and-redis-fd1ffc166173
 | 
				
			||||||
 | 
					# - https://github.com/jnsgruk/nextcloud-docker-compose/blob/master/traefik/docker-compose.yml
 | 
				
			||||||
 | 
					# - https://doc.traefik.io/traefik/middlewares/basicauth/
 | 
				
			||||||
 | 
					# Generate auth:
 | 
				
			||||||
 | 
					# echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g
 | 
				
			||||||
 | 
					# https://gist.github.com/coltenkrauter/124ec31d616fa4c0dcf25d79462a6237
 | 
				
			||||||
 | 
					version: '3.8'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  traefik:
 | 
				
			||||||
 | 
					    image: traefik:livarot
 | 
				
			||||||
 | 
					    container_name: traefik
 | 
				
			||||||
 | 
					    restart: unless-stopped
 | 
				
			||||||
 | 
					    env_file: .env
 | 
				
			||||||
 | 
					    command:
 | 
				
			||||||
 | 
					      - "--api=true"
 | 
				
			||||||
 | 
					      - "--api.dashboard=true"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=http"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.letsencrypt.acme.email=$EMAIL"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.dns-cloudflare.acme.email=$EMAIL"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.dns-cloudflare.acme.storage=/cloudflare/acme.json"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.dns-cloudflare.acme.dnsChallenge.provider=cloudflare"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.dns-cloudflare.acme.dnsChallenge.resolvers=1.1.1.1:53,1.0.0.1:53"
 | 
				
			||||||
 | 
					      - "--certificatesresolvers.dns-cloudflare.acme.dnsChallenge.delayBeforeCheck=90"
 | 
				
			||||||
 | 
					      - "--entrypoints.http.address=:80"
 | 
				
			||||||
 | 
					      - "--entrypoints.https.address=:443"
 | 
				
			||||||
 | 
					      - "--entrypoints.https.forwardedHeaders.trustedIPs=173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22,104.16.0.0/13,104.24.0.0/14" # allow cloudflare source ips to set x-forwarded-for headers - https://www.cloudflare.com/ips-v4
 | 
				
			||||||
 | 
					      - "--entrypoints.https.http.tls.certresolver=dns-cloudflare"
 | 
				
			||||||
 | 
					      - "--entrypoints.https.http.tls.domains[0].main=$DOMAIN"
 | 
				
			||||||
 | 
					      - "--entrypoints.https.http.tls.domains[0].sans=*.$DOMAIN"
 | 
				
			||||||
 | 
					      - "--entrypoints.https.http.tls.domains[1].main=$DOMAIN2"
 | 
				
			||||||
 | 
					      - "--entrypoints.https.http.tls.domains[1].sans=*.$DOMAIN2"
 | 
				
			||||||
 | 
					      - "--entrypoints.https.http.tls.options=tls-opts@file"
 | 
				
			||||||
 | 
					      - "--log.level=INFO"
 | 
				
			||||||
 | 
					      - "--log.format=json"
 | 
				
			||||||
 | 
					      - "--metrics.prometheus=true"
 | 
				
			||||||
 | 
					      - "--ping=true"
 | 
				
			||||||
 | 
					      - "--providers.docker=true"
 | 
				
			||||||
 | 
					      - "--providers.docker.endpoint=unix:///var/run/docker.sock"
 | 
				
			||||||
 | 
					      - "--providers.docker.exposedbydefault=false"
 | 
				
			||||||
 | 
					      - "--providers.docker.network=public"
 | 
				
			||||||
 | 
					      - "--providers.docker.swarmMode=false"
 | 
				
			||||||
 | 
					    environment:
 | 
				
			||||||
 | 
					      - CF_API_EMAIL=$CF_API_EMAIL
 | 
				
			||||||
 | 
					      - CF_API_KEY=$CF_API_KEY
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					      - 80:80
 | 
				
			||||||
 | 
					      - 443:443
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - /var/run/docker.sock:/var/run/docker.sock
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/traefik/auth:/auth
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/traefik/letsencrypt:/letsencrypt
 | 
				
			||||||
 | 
					      - $DOCKER_VOLUME_PATH/traefik/cloudflare:/cloudflare
 | 
				
			||||||
 | 
					    labels:
 | 
				
			||||||
 | 
					      - "traefik.enable=true"
 | 
				
			||||||
 | 
					      # catchall for redirecting http to https
 | 
				
			||||||
 | 
					      - "traefik.http.routers.http-catchall.entrypoints=http"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.http-catchall.rule=HostRegexp(`{host:.+}`)"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
 | 
				
			||||||
 | 
					      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.traefik-rtr.entrypoints=https"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.traefik-rtr.rule=Host(`traefik.$DOMAIN`)"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.traefik-rtr.service=api@internal"
 | 
				
			||||||
 | 
					      - "traefik.http.routers.traefik-rtr.middlewares=dashboard-auth"
 | 
				
			||||||
 | 
					      - "traefik.http.middlewares.dashboard-auth.basicauth.usersfile=/auth/passwords"
 | 
				
			||||||
 | 
					      - "traefik.http.services.api@internal.loadbalancer.server.port=8080"
 | 
				
			||||||
 | 
					    networks:
 | 
				
			||||||
 | 
					      - public
 | 
				
			||||||
 | 
					    logging:
 | 
				
			||||||
 | 
					      driver: "json-file"
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					        max-size: "1m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					networks:
 | 
				
			||||||
 | 
					  public:
 | 
				
			||||||
 | 
					    name: public
 | 
				
			||||||
							
								
								
									
										3
									
								
								traefik/sample-env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								traefik/sample-env
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					DOCKER_VOLUME_PATH=.
 | 
				
			||||||
 | 
					DOMAIN=
 | 
				
			||||||
 | 
					DOMAIN2=
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user