{% include 'roles/docker-compose/templates/base.yml.j2' %} synapse: {% set container_port = 8008 %} image: "{{ MATRIX_SYNAPSE_IMAGE }}:{{ MATRIX_SYNAPSE_VERSION }}" container_name: {{ MATRIX_SYNAPSE_NAME }} restart: {{ DOCKER_RESTART_POLICY }} logging: driver: journald volumes: - synapse_data:/data - {{ MATRIX_SYNAPSE_CONFIG_PATH_HOST }}:{{ MATRIX_SYNAPSE_CONFIG_PATH_CONTAINER }}:ro - {{ MATRIX_SYNAPSE_LOG_PATH_HOST }}:{{ MATRIX_SYNAPSE_LOG_PATH_CONTAINER }}:ro {% for item in MATRIX_BRIDGES %} - {{ docker_compose.directories.instance }}mautrix/{{ item.bridge_name }}/registration.yaml:{{ MATRIX_REGISTRATION_FILE_FOLDER }}{{ item.bridge_name }}.registration.yaml:ro {% endfor %} environment: - SYNAPSE_SERVER_NAME={{ MATRIX_SYNAPSE_DOMAIN }} - SYNAPSE_REPORT_STATS=no ports: - "127.0.0.1:{{ports.localhost.http['web-app-matrix_synapse']}}:{{ container_port }}" {% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %} {% if MATRIX_BRIDGES | length > 0 %} {% for item in MATRIX_BRIDGES %} mautrix-{{ item.bridge_name }}: condition: service_healthy {% endfor %} {% else %} {% endif %} {% include 'roles/docker-container/templates/depends_on/dmbs_excl.yml.j2' %} {% include 'roles/docker-container/templates/networks.yml.j2' %} element: {% set container_port = 80 %} image: "{{ MATRIX_ELEMENT_IMAGE }}:{{ MATRIX_ELEMENT_VERSION }}" container_name: {{ MATRIX_ELEMENT_NAME }} restart: {{ DOCKER_RESTART_POLICY }} volumes: - {{ MATRIX_ELEMENT_CONFIG_PATH_HOST }}:/app/config.json ports: - "127.0.0.1:{{ MATRIX_ELEMENT_PORT }}:{{ container_port }}" {% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %} {% include 'roles/docker-container/templates/networks.yml.j2' %} {% for item in MATRIX_BRIDGES %} mautrix-{{ item.bridge_name }}: container_name: matrix-{{ item.bridge_name }} image: dock.mau.dev/mautrix/{{ item.bridge_name }}:latest restart: {{ DOCKER_RESTART_POLICY }} volumes: - ./mautrix/{{ item.bridge_name }}:/data healthcheck: test: ["CMD-SHELL", "test -f {{ MATRIX_REGISTRATION_FILE_FOLDER }}registration.yaml || exit 1"] interval: 1m timeout: 10s retries: 3 {% include 'roles/docker-container/templates/networks.yml.j2' %} {% endfor %} {% if applications | get_app_conf(application_id, 'plugins.chatgpt', True) | bool %} matrix-chatgpt-bot: restart: {{ DOCKER_RESTART_POLICY }} container_name: matrix-chatgpt image: ghcr.io/matrixgpt/matrix-chatgpt-bot:latest volumes: - chatgpt_data:/storage environment: OPENAI_API_KEY: '{{applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_openai_api_key', True)}}' # Uncomment the next two lines if you are using Azure OpenAI API # OPENAI_AZURE: 'false' # CHATGPT_REVERSE_PROXY: 'your-completion-endpoint-here' CHATGPT_CONTEXT: 'thread' CHATGPT_API_MODEL: 'gpt-3.5-turbo' # Uncomment and edit the next line if needed # CHATGPT_PROMPT_PREFIX: 'Instructions:\nYou are ChatGPT, a large language model trained by OpenAI.' # CHATGPT_IGNORE_MEDIA: 'false' CHATGPT_REVERSE_PROXY: 'https://api.openai.com/v1/chat/completions' # Uncomment and edit the next line if needed # CHATGPT_TEMPERATURE: '0.8' # Uncomment and edit the next line if needed #CHATGPT_MAX_CONTEXT_TOKENS: '4097' CHATGPT_MAX_PROMPT_TOKENS: '3000' KEYV_BACKEND: 'file' KEYV_URL: '' KEYV_BOT_ENCRYPTION: 'false' KEYV_BOT_STORAGE: 'true' MATRIX_HOMESERVER_URL: '{{ MATRIX_SYNAPSE_URL }}' MATRIX_BOT_USERNAME: '@chatgptbot:{{ MATRIX_SERVER_NAME }}' MATRIX_ACCESS_TOKEN: '{{ applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_access_token', True) | default('') }}' MATRIX_BOT_PASSWORD: '{{ applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_user_password', True) }}' MATRIX_DEFAULT_PREFIX: '!chatgpt' MATRIX_DEFAULT_PREFIX_REPLY: 'false' #MATRIX_BLACKLIST: '' MATRIX_WHITELIST: ':{{ MATRIX_SERVER_NAME }}' MATRIX_AUTOJOIN: 'true' MATRIX_ENCRYPTION: 'true' MATRIX_THREADS: 'true' MATRIX_PREFIX_DM: 'false' MATRIX_RICH_TEXT: 'true' {% endif %} {% include 'roles/docker-compose/templates/volumes.yml.j2' %} synapse_data: name: {{ MATRIX_SYNAPSE_VOLUME }} {% if applications | get_app_conf(application_id, 'plugins.chatgpt', True) | bool %} chatgpt_data: {% endif %} {% include 'roles/docker-compose/templates/networks.yml.j2' %}