---
synapse_svc:
  name: synapse
  domain: matrix.serguzim.me
  docker_host: synapse-admin
  port: 80
  caddy_extra: |
    handle /_matrix/* {
        reverse_proxy synapse:8008
    }
    handle /_synapse/* {
        reverse_proxy synapse:8008
    }
  extra_svcs:
    - domain: matrix.serguzim.me:8448
      additional_domains:
        - serguzim.me:8448
      docker_host: synapse
      port: 8008
  db:
    host: "{{ postgres.host }}"
    database: synapse
    user: "{{ vault_synapse.db.user }}"
    pass: "{{ vault_synapse.db.pass }}"
  config_path: config

synapse_env:
  SYNAPSE_CONFIG_PATH: "{{ ('/', svc.config_path) | path_join }}"
  REACT_APP_SERVER: https://matrix.serguzim.me

synapse_yml:
  server_name: msrg.cc
  pid_file: "{{ (svc.config_path, 'homeserver.pid') | path_join }}"
  public_baseurl: https://matrix.serguzim.me/
  allow_public_rooms_without_auth: true
  allow_public_rooms_over_federation: true

  listeners:
    - port: 8008
      tls: false
      type: http
      x_forwarded: true
      resources:
        - names:
            - client
            - federation
            - metrics
          compress: false

  admin_contact: mailto:{{ admin_email }}

  acme:
    enabled: false

  database:
    name: psycopg2
    args:
      user: "{{ svc.db.user }}"
      password: "{{ svc.db.pass }}"
      database: "{{ svc.db.database }}"
      host: "{{ svc.db.host }}"
      cp_min: 5
      cp_max: 10

  log_config: "{{ (svc.config_path, 'msrg.cc.log.config') | path_join }}"
  media_store_path: /media_store
  max_upload_size: 500M
  enable_registration: false
  enable_metrics: true
  report_stats: true

  macaroon_secret_key: "{{ vault_synapse.macaroon_secret_key }}"
  form_secret: "{{ vault_synapse.form_secret }}"
  signing_key_path: "{{ (svc.config_path, 'msrg.cc.signing.key') | path_join }}"

  trusted_key_servers:
    - server_name: matrix.org
  suppress_key_server_warning: true

  oidc_providers:
    - idp_id: auth_serguzim_me
      idp_name: auth.serguzim.me
      issuer: https://auth.serguzim.me/application/o/matrix_serguzim_me/
      client_id: "{{ vault_synapse.oidc_client.id }}"
      client_secret: "{{ vault_synapse.oidc_client.secret }}"
      scopes:
        - openid
        - profile
        - email
      user_mapping_provider:
        config:
          localpart_template: "{{ '{{ user.preferred_username }}' }}"
          display_name_template: "{{ '{{ user.name }}' }}"

  email:
    smtp_host: mail.serguzim.me
    smtp_port: 587
    smtp_user: matrix@serguzim.me
    smtp_pass: "{{ vault_synapse.mail.pass }}"
    require_transport_security: true
    notif_from: Matrix <matrix@serguzim.me>

synapse_compose:
  watchtower: true
  image: ghcr.io/element-hq/synapse:latest
  volumes:
    - ./config:/config
    - media_store:/media_store
  file:
    services:
      synapse-admin:
        image: awesometechnologies/synapse-admin
        restart: always
        labels:
          com.centurylinklabs.watchtower.enable: true
        env_file:
          - service.env
        networks:
          apps:
            aliases:
              - synapse-admin
    volumes:
      media_store: