# conduwuit - Behind Traefik Reverse Proxy

services:
  homeserver:
    ### If you already built the conduduwit image with 'docker build' or want to use the Docker Hub image,
    ### then you are ready to go.
    image: girlbossceo/conduwuit:v0.5.0-rc3-b6e9dc3d98704c56027219d3775336910a0136c6
    restart: unless-stopped
    volumes:
      - db:/var/lib/conduwuit
      #- ./conduwuit.toml:/etc/conduwuit.toml
    ports:
      - 6167:6167
    networks:
      - proxy
    environment:
      CONDUWUIT_SERVER_NAME: matrix.gnous.eu
      CONDUWUIT_DATABASE_PATH: /var/lib/conduwuit
      CONDUWUIT_PORT: 6167 # pas touche, c'est le port de Docker
      CONDUWUIT_MAX_REQUEST_SIZE: 20000000 # in bytes, ~20 MB
      CONDUWUIT_ALLOW_REGISTRATION: 'true'
      CONDUWUIT_ALLOW_FEDERATION: 'true'
      CONDUWUIT_ALLOW_CHECK_FOR_UPDATES: 'true'
      CONDUWUIT_TRUSTED_SERVERS: '["matrix.org"]'
      CONDUWUIT_LOG: warn,state_res=warn
      CONDUWUIT_ADDRESS: 0.0.0.0 # because in a container
    env_file:
      - .env
    #cpuset: "0-4" # Uncomment to limit to specific CPU cores
    ulimits: # conduwuit uses quite a few file descriptors, and on some systems it defaults to 1024, so you can tell docker to increase it
      nofile:
        soft: 1048567
        hard: 1048567
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.mastodon-web.entrypoints=websecure"
      - "traefik.http.routers.mastodon-web.rule=Host(`matrix.gnous.eu`)"
      - "traefik.http.routers.mastodon-web.middlewares=proxyHeader@file,proxyError@file"

      # volé depuis https://community.traefik.io/t/setting-up-conduit-matrix-server-with-traefik/19394
      - "traefik.http.routers.to-conduit.middlewares=cors-headers@docker"
      - "traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=*"
      - "traefik.http.middlewares.cors-headers.headers.accessControlAllowHeaders=Origin, X-Requested-With, Content-Type, Accept, Authorization"
      - "traefik.http.middlewares.cors-headers.headers.accessControlAllowMethods=GET, POST, PUT, DELETE, OPTIONS"


  ### 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 conduwuit
  ### 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
  #    ports:
  #      - 3000:80
  #    depends_on:
  #        - homeserver

volumes:
  db:
    driver: local

networks:
  # This is the network Traefik listens to, if your network has a different
  # name, don't forget to change it here and in the docker-compose.override.yml
  proxy:
    external: true

# vim: ts=2:sw=2:expandtab