With this change, the following roles are now only dependent on the minimal `matrix-base` role: - `matrix-corporal` - `matrix-coturn` - `matrix-mailer` - `matrix-mxisd` - `matrix-postgres` - `matrix-riot-web` - `matrix-synapse` The `matrix-nginx-proxy` role still does too much and remains dependent on the others. Wiring up the various (now-independent) roles happens via a glue variables file (`group_vars/matrix-servers`). It's triggered for all hosts in the `matrix-servers` group. According to Ansible's rules of priority, we have the following chain of inclusion/overriding now: - role defaults (mostly empty or good for independent usage) - playbook glue variables (`group_vars/matrix-servers`) - inventory host variables (`inventory/host_vars/matrix.<your-domain>`) All roles default to enabling their main component (e.g. `matrix_mxisd_enabled: true`, `matrix_riot_web_enabled: true`). Reasoning: if a role is included in a playbook (especially separately, in another playbook), it should "work" by default. Our playbook disables some of those if they are not generally useful (e.g. `matrix_corporal_enabled: false`).
		
			
				
	
	
		
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Django/Jinja
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Django/Jinja
		
	
	
	
	
	
server {
 | 
						|
	listen 80;
 | 
						|
	server_name {{ matrix_nginx_proxy_proxy_riot_hostname }};
 | 
						|
 | 
						|
	server_tokens off;
 | 
						|
 | 
						|
	location /.well-known/acme-challenge {
 | 
						|
		{% if matrix_nginx_proxy_enabled %}
 | 
						|
			{# Use the embedded DNS resolver in Docker containers to discover the service #}
 | 
						|
			resolver 127.0.0.11 valid=5s;
 | 
						|
			set $backend "matrix-certbot:80";
 | 
						|
			proxy_pass http://$backend;
 | 
						|
		{% else %}
 | 
						|
			{# Generic configuration for use outside of our container setup #}
 | 
						|
			proxy_pass http://localhost:{{ matrix_ssl_lets_encrypt_certbot_standalone_http_port }};
 | 
						|
		{% endif %}
 | 
						|
	}
 | 
						|
 | 
						|
	location / {
 | 
						|
		return 301 https://$http_host$request_uri;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
server {
 | 
						|
    listen 443 ssl http2;
 | 
						|
    listen [::]:443 ssl http2;
 | 
						|
 | 
						|
    server_name {{ matrix_nginx_proxy_proxy_riot_hostname }};
 | 
						|
 | 
						|
	server_tokens off;
 | 
						|
	root /dev/null;
 | 
						|
 | 
						|
	gzip on;
 | 
						|
	gzip_types text/plain application/json application/javascript text/css image/x-icon font/ttf image/gif;
 | 
						|
 | 
						|
	ssl_certificate {{ matrix_ssl_config_dir_path }}/live/{{ matrix_nginx_proxy_proxy_riot_hostname }}/fullchain.pem;
 | 
						|
	ssl_certificate_key {{ matrix_ssl_config_dir_path }}/live/{{ matrix_nginx_proxy_proxy_riot_hostname }}/privkey.pem;
 | 
						|
	ssl_protocols {{ matrix_nginx_proxy_ssl_protocols }};
 | 
						|
	ssl_prefer_server_ciphers on;
 | 
						|
	ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
 | 
						|
 | 
						|
    location / {
 | 
						|
		{% if matrix_nginx_proxy_enabled %}
 | 
						|
			{# Use the embedded DNS resolver in Docker containers to discover the service #}
 | 
						|
			resolver 127.0.0.11 valid=5s;
 | 
						|
			set $backend "matrix-riot-web:80";
 | 
						|
			proxy_pass http://$backend;
 | 
						|
		{% else %}
 | 
						|
			{# Generic configuration for use outside of our container setup #}
 | 
						|
			proxy_pass http://localhost:8765;
 | 
						|
		{% endif %}
 | 
						|
 | 
						|
        proxy_set_header X-Forwarded-For $remote_addr;
 | 
						|
    }
 | 
						|
}
 |