Skip to content
Snippets Groups Projects
docker-compose.with-traefik.yml 4.12 KiB
Newer Older
  • Learn to ignore specific revisions
  • # Conduit - Behind Traefik Reverse Proxy
    version: '3'
    
    services:
        homeserver:
    
            ### If you already built the Conduit image with 'docker build' or want to use the Docker Hub image,
            ### then you are ready to go.
            image: matrixconduit/matrix-conduit:latest
            ### If you want to build a fresh image from the sources, then comment the image line and uncomment the
            ### build lines. If you want meaningful labels in your built Conduit image, you should run docker-compose like this:
    
            ### CREATED=$(date -u +'%Y-%m-%dT%H:%M:%SZ') VERSION=$(grep -m1 -o '[0-9].[0-9].[0-9]' Cargo.toml) docker-compose up -d
    
            #         CREATED: '2021-03-16T08:18:27Z'
            #         VERSION: '0.1.0'
    
            #         GIT_REF: origin/master
    
            restart: unless-stopped
            volumes:
                - db:/srv/conduit/.local/share/conduit
    
                ### Uncomment if you want to use conduit.toml to configure Conduit
                ### Note: Set env vars will override conduit.toml values
                # - ./conduit.toml:/srv/conduit/conduit.toml
    
                CONDUIT_SERVER_NAME: localhost:6167  # replace with your own name
    
                CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'
    
                CONDUIT_ALLOW_REGISTRATION : 'true'
    
                ### Uncomment and change values as desired
    
                # CONDUIT_ADDRESS: 0.0.0.0
    
                # CONDUIT_PORT: 6167
    
                # CONDUIT_CONFIG: '/srv/conduit/conduit.toml'  # if you want to configure purely by env vars, set this to an empty string ''
    
                # Available levels are: error, warn, info, debug, trace - more info at: https://docs.rs/env_logger/*/env_logger/#enabling-logging
    
                # CONDUIT_LOG: info  # default is: "warn,_=off,sled=off"
    
                # CONDUIT_ALLOW_JAEGER: 'false'
                # CONDUIT_ALLOW_ENCRYPTION: 'false'
                # CONDUIT_ALLOW_FEDERATION: 'false'
                # CONDUIT_DATABASE_PATH: /srv/conduit/.local/share/conduit
                # CONDUIT_WORKERS: 10
                # CONDUIT_MAX_REQUEST_SIZE: 20_000_000  # in bytes, ~20 MB
    
        # We need some way to server the client and server .well-known json. The simplest way is to use a nginx container
        # to serve those two as static files. If you want to use a different way, delete or comment the below service, here
        # and in the docker-compose override file.
        well-known:
            image: nginx:latest
            restart: unless-stopped
            volumes:
                - ./nginx/matrix.conf:/etc/nginx/conf.d/matrix.conf # the config to serve the .well-known/matrix files
                - ./nginx/www:/var/www/ # location of the client and server .well-known-files
    
    
        ### Uncomment if you want to use your own Element-Web App.
        ### Note: You need to provide a config.json for Element and you also need a second
        ###       Domain or Subdomain for the communication between Element and Conduit
        ### Config-Docs: https://github.com/vector-im/element-web/blob/develop/docs/config.md
        # element-web:
    
        #     image: vectorim/element-web:latest
    
        #     restart: unless-stopped
        #     volumes:
        #         - ./element_config.json:/app/config.json
        #     networks:
        #         - proxy
        #     depends_on:
        #         - homeserver
    
    
        traefik:
            image: "traefik:latest"
            container_name: "traefik"
            restart: "unless-stopped"
            ports:
                - "80:80"
                - "443:443"
            volumes:
                - "/var/run/docker.sock:/var/run/docker.sock"
                # - "./traefik_config:/etc/traefik"
                - "acme:/etc/traefik/acme"
            labels:
                - "traefik.enable=true"
    
                # middleware redirect
                - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
                # global redirect to https
                - "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
                - "traefik.http.routers.redirs.entrypoints=http"
                - "traefik.http.routers.redirs.middlewares=redirect-to-https"
    
            networks:
                - proxy