Skip to content

Commit 4e9f682

Browse files
JadedBlueEyesthomwiggers
authored andcommitted
Add traefik config
1 parent 8b98335 commit 4e9f682

File tree

5 files changed

+86
-1
lines changed

5 files changed

+86
-1
lines changed

group_vars/matrix_servers

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,8 @@ matrix_appservice_irc_container_additional_networks_auto: |-
934934
([] if matrix_addons_homeserver_container_network == '' else [matrix_addons_homeserver_container_network])
935935
+
936936
([postgres_container_network] if (postgres_enabled and matrix_appservice_irc_database_hostname == postgres_connection_hostname and matrix_appservice_irc_container_network != postgres_container_network) else [])
937+
+
938+
[matrix_playbook_reverse_proxyable_services_additional_network] if (matrix_appservice_irc_container_labels_traefik_enabled and matrix_playbook_reverse_proxyable_services_additional_network) else []
937939
) | unique
938940
}}
939941

@@ -951,6 +953,11 @@ matrix_appservice_irc_database_hostname: "{{ postgres_connection_hostname if pos
951953
matrix_appservice_irc_database_password: "{{ '%s' | format(matrix_homeserver_generic_secret_key) | password_hash('sha512', 'as.irc.db', rounds=655555) | to_uuid }}"
952954
matrix_appservice_irc_database_container_network: "{{ postgres_container_network if postgres_enabled else '' }}"
953955

956+
matrix_appservice_irc_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}"
957+
matrix_appservice_irc_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
958+
matrix_appservice_irc_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
959+
matrix_appservice_irc_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"
960+
954961
######################################################################
955962
#
956963
# /matrix-bridge-appservice-irc

roles/custom/matrix-bridge-appservice-irc/defaults/main.yml

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,11 +463,16 @@ matrix_appservice_irc_ircService_servers: [] # noqa var-naming
463463
# # Kick a Matrix user from ALL rooms if they choose to QUIT the IRC network.
464464
# userQuit: true
465465

466-
# Controls whether the matrix-appservice-discord container exposes its HTTP port (tcp/9999 in the container).
466+
# Controls whether the matrix-appservice-irc container exposes its HTTP port (tcp/9999 in the container).
467467
#
468468
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:9999"), or empty string to not expose.
469469
matrix_appservice_irc_container_http_host_bind_port: ''
470470

471+
# Controls whether the matrix-appservice-irc container exposes its media proxy HTTP port (tcp/11111 in the container).
472+
#
473+
# Takes an "<ip>:<port>" or "<port>" value (e.g. "127.0.0.1:11111"), or empty string to not expose.
474+
matrix_appservice_irc_container_media_proxy_host_bind_port: ''
475+
471476
matrix_appservice_irc_container_network: ""
472477

473478
matrix_appservice_irc_container_additional_networks: "{{ matrix_appservice_irc_container_additional_networks_auto + matrix_appservice_irc_container_additional_networks_custom }}"
@@ -477,6 +482,24 @@ matrix_appservice_irc_container_additional_networks_custom: []
477482
# A list of extra arguments to pass to the container
478483
matrix_appservice_irc_container_extra_arguments: []
479484

485+
# matrix_appservice_irc_container_labels_traefik_enabled controls whether labels to assist a Traefik reverse-proxy will be attached to the container.
486+
# To inject your own other container labels, see `matrix_appservice_irc_container_labels_additional_labels`.
487+
matrix_appservice_irc_container_labels_traefik_enabled: "{{ matrix_playbook_reverse_proxy_type in ['playbook-managed-traefik', 'other-traefik-container'] }}"
488+
matrix_appservice_irc_container_labels_traefik_docker_network: "{{ matrix_playbook_reverse_proxyable_services_additional_network }}"
489+
matrix_appservice_irc_container_labels_traefik_entrypoints: "{{ traefik_entrypoint_primary }}"
490+
matrix_appservice_irc_container_labels_traefik_tls_certResolver: "{{ traefik_certResolver_primary }}"
491+
492+
# Controls whether Traefik labels for the media proxy will be applied
493+
matrix_appservice_irc_container_labels_media_proxy_enabled: true
494+
matrix_appservice_irc_container_labels_media_proxy_traefik_rule: "Host(`{{ matrix_domain }}`) && PathPrefix(`/irc/`)"
495+
matrix_appservice_irc_container_labels_media_proxy_traefik_priority: 2000
496+
matrix_appservice_irc_container_labels_media_proxy_traefik_entrypoints: "{{ matrix_appservice_irc_container_labels_traefik_entrypoints }}"
497+
matrix_appservice_irc_container_labels_media_proxy_traefik_tls: "{{ matrix_appservice_irc_container_labels_media_proxy_traefik_entrypoints != 'web' }}"
498+
matrix_appservice_irc_container_labels_media_proxy_traefik_tls_certResolver: "{{ matrix_appservice_irc_container_labels_traefik_tls_certResolver }}"
499+
500+
# matrix-appservice-irc container additional labels
501+
matrix_appservice_irc_container_labels_additional_labels: ''
502+
480503
# List of systemd services that matrix-appservice-irc.service depends on.
481504
matrix_appservice_irc_systemd_required_services_list: "{{ matrix_appservice_irc_systemd_required_services_list_default + matrix_appservice_irc_systemd_required_services_list_auto + matrix_appservice_irc_systemd_required_services_list_custom }}"
482505
matrix_appservice_irc_systemd_required_services_list_default: "{{ [devture_systemd_docker_base_docker_service_name] if devture_systemd_docker_base_docker_service_name else [] }}"

roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,14 @@
121121
owner: "{{ matrix_user_name }}"
122122
group: "{{ matrix_group_name }}"
123123

124+
- name: Ensure Matrix Appservice IRC labels file installed
125+
ansible.builtin.template:
126+
src: "{{ role_path }}/templates/labels.j2"
127+
dest: "{{ matrix_appservice_irc_base_path }}/labels"
128+
mode: 0644
129+
owner: "{{ matrix_user_name }}"
130+
group: "{{ matrix_group_name }}"
131+
124132
- name: Generate Appservice IRC passkey if it doesn't exist
125133
ansible.builtin.shell:
126134
cmd: "{{ matrix_host_command_openssl }} genpkey -out {{ matrix_appservice_irc_data_path }}/passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:2048"
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{#
2+
SPDX-FileCopyrightText: 2025 Jade Ellis
3+
4+
SPDX-License-Identifier: AGPL-3.0-or-later
5+
#}
6+
7+
{% if matrix_appservice_irc_container_labels_traefik_enabled and matrix_appservice_irc_container_labels_media_proxy_enabled %}
8+
traefik.enable=true
9+
10+
{% if matrix_appservice_irc_container_labels_traefik_docker_network %}
11+
traefik.docker.network={{ matrix_appservice_irc_container_labels_traefik_docker_network }}
12+
{% endif %}
13+
14+
traefik.http.services.matrix-appservice-irc-media-proxy.loadbalancer.server.port={{ matrix_appservice_irc_homeserver_media_bind_port }}
15+
16+
############################################################
17+
# #
18+
# IRC Bridge Media Proxy #
19+
# #
20+
############################################################
21+
22+
traefik.http.routers.matrix-appservice-irc-media-proxy.rule={{ matrix_appservice_irc_container_labels_media_proxy_traefik_rule }}
23+
24+
{% if matrix_appservice_irc_container_labels_media_proxy_traefik_priority | int > 0 %}
25+
traefik.http.routers.matrix-appservice-irc-media-proxy.priority={{ matrix_appservice_irc_container_labels_media_proxy_traefik_priority }}
26+
{% endif %}
27+
28+
traefik.http.routers.matrix-appservice-irc-media-proxy.service=matrix-appservice-irc-media-proxy
29+
traefik.http.routers.matrix-appservice-irc-media-proxy.entrypoints={{ matrix_appservice_irc_container_labels_media_proxy_traefik_entrypoints }}
30+
31+
traefik.http.routers.matrix-appservice-irc-media-proxy.tls={{ matrix_appservice_irc_container_labels_media_proxy_traefik_tls | to_json }}
32+
{% if matrix_appservice_irc_container_labels_media_proxy_traefik_tls %}
33+
traefik.http.routers.matrix-appservice-irc-media-proxy.tls.certResolver={{ matrix_appservice_irc_container_labels_media_proxy_traefik_tls_certResolver }}
34+
{% endif %}
35+
36+
############################################################
37+
# #
38+
# /IRC Bridge Media Proxy #
39+
# #
40+
############################################################
41+
{% endif %}
42+
43+
{{ matrix_appservice_irc_container_labels_additional_labels }}

roles/custom/matrix-bridge-appservice-irc/templates/systemd/matrix-appservice-irc.service.j2

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,12 @@ ExecStartPre={{ devture_systemd_docker_base_host_command_docker }} create \
2626
{% if matrix_appservice_irc_container_http_host_bind_port %}
2727
-p {{ matrix_appservice_irc_container_http_host_bind_port }}:9999 \
2828
{% endif %}
29+
{% if matrix_appservice_irc_container_media_proxy_host_bind_port %}
30+
-p {{ matrix_appservice_irc_container_media_proxy_host_bind_port }}:{{ matrix_appservice_irc_homeserver_media_bind_port }} \
31+
{% endif %}
2932
--mount type=bind,src={{ matrix_appservice_irc_config_path }},dst=/config \
3033
--mount type=bind,src={{ matrix_appservice_irc_data_path }},dst=/data \
34+
--label-file={{ matrix_appservice_irc_base_path }}/labels \
3135
{% for arg in matrix_appservice_irc_container_extra_arguments %}
3236
{{ arg }} \
3337
{% endfor %}

0 commit comments

Comments
 (0)