mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-07-19 15:04:23 +02:00
Semi bsr for applications[] to prevent heavy to debug bugs in j2 - part 1
This commit is contained in:
parent
4cc4195fab
commit
756597668c
0
cli/fix/replace_by_get_app_config.sh
Normal file → Executable file
0
cli/fix/replace_by_get_app_config.sh
Normal file → Executable file
@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"ExtensionInstallForcelist": [
|
"ExtensionInstallForcelist": [
|
||||||
{% for plugin in applications[application_id].chromium.plugins -%}
|
{% for plugin in applications | get_app_conf(application_id, 'chromium.plugins', True) -%}
|
||||||
"{{ plugin.id }};{{ plugin.update_url }}"{% if not loop.last %},{% endif %}
|
"{{ plugin.id }};{{ plugin.update_url }}"{% if not loop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
],
|
],
|
||||||
"ExtensionSettings": {
|
"ExtensionSettings": {
|
||||||
"*": {
|
"*": {
|
||||||
"installation_mode": "{{ applications[application_id].default_installation_mode }}"
|
"installation_mode": "{{ applications | get_app_conf(application_id, 'default_installation_mode', True) }}"
|
||||||
}
|
}
|
||||||
{% for plugin in applications[application_id].chromium.plugins -%},
|
{% for plugin in applications | get_app_conf(application_id, 'chromium.plugins', True) -%},
|
||||||
"{{ plugin.id }}": {
|
"{{ plugin.id }}": {
|
||||||
"installation_mode": "{{ plugin.installation_mode }}",
|
"installation_mode": "{{ plugin.installation_mode }}",
|
||||||
"update_url": "{{ plugin.update_url }}",
|
"update_url": "{{ plugin.update_url }}",
|
||||||
@ -16,5 +16,5 @@
|
|||||||
}
|
}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
},
|
},
|
||||||
"PasswordManagerEnabled": {{ applications[application_id].password_manager_enabled }}
|
"PasswordManagerEnabled": {{ applications | get_app_conf(application_id, 'password_manager_enabled', True) }}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"policies": {
|
"policies": {
|
||||||
"Extensions": {
|
"Extensions": {
|
||||||
"Install": [
|
"Install": [
|
||||||
{% for plugin in applications[application_id].plugins -%}
|
{% for plugin in applications | get_app_conf(application_id, 'plugins', True) -%}
|
||||||
"{{ plugin }}"{% if not loop.last %},{% endif %}
|
"{{ plugin }}"{% if not loop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
]
|
]
|
||||||
|
@ -10,5 +10,5 @@
|
|||||||
|
|
||||||
- name: Execute CLI GNOME Extension manager script
|
- name: Execute CLI GNOME Extension manager script
|
||||||
ansible.builtin.shell: cli-gnome-extension-manager "{{ item[0] }}" "{{ item[1] }}" "{{ item[2] }}"
|
ansible.builtin.shell: cli-gnome-extension-manager "{{ item[0] }}" "{{ item[1] }}" "{{ item[2] }}"
|
||||||
loop: "{{ applications[application_id].plugins }}"
|
loop: "{{ applications | get_app_conf(application_id, 'plugins', True) }}"
|
||||||
become: false
|
become: false
|
@ -16,7 +16,7 @@ server
|
|||||||
{% include 'roles/srv-web-7-7-letsencrypt/templates/ssl_header.j2' %}
|
{% include 'roles/srv-web-7-7-letsencrypt/templates/ssl_header.j2' %}
|
||||||
|
|
||||||
{% if applications | is_feature_enabled('oauth2', application_id) %}
|
{% if applications | is_feature_enabled('oauth2', application_id) %}
|
||||||
{% set acl = applications[application_id].oauth2_proxy.acl | default({}) %}
|
{% set acl = applications | get_app_conf(application_id, 'oauth2_proxy.acl', True) | default({}) %}
|
||||||
|
|
||||||
{% if acl.blacklist is defined %}
|
{% if acl.blacklist is defined %}
|
||||||
{# 1. Expose everything by default, then protect blacklisted paths #}
|
{# 1. Expose everything by default, then protect blacklisted paths #}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
- name: Load memberof module from file in OpenLDAP container
|
- name: Load memberof module from file in OpenLDAP container
|
||||||
shell: >
|
shell: >
|
||||||
docker exec -i {{ applications[application_id].hostname }} ldapmodify -Y EXTERNAL -H ldapi:/// -f {{ldif_docker_path}}configuration/01_member_of_configuration.ldif
|
docker exec -i {{ applications | get_app_conf(application_id, 'hostname', True) }} ldapmodify -Y EXTERNAL -H ldapi:/// -f {{ldif_docker_path}}configuration/01_member_of_configuration.ldif
|
||||||
listen:
|
listen:
|
||||||
- "Import configuration LDIF files"
|
- "Import configuration LDIF files"
|
||||||
- "Import all LDIF files"
|
- "Import all LDIF files"
|
||||||
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
- name: Refint Module Activation for OpenLDAP
|
- name: Refint Module Activation for OpenLDAP
|
||||||
shell: >
|
shell: >
|
||||||
docker exec -i {{ applications[application_id].hostname }} ldapadd -Y EXTERNAL -H ldapi:/// -f {{ldif_docker_path}}configuration/02_member_of_configuration.ldif
|
docker exec -i {{ applications | get_app_conf(application_id, 'hostname', True) }} ldapadd -Y EXTERNAL -H ldapi:/// -f {{ldif_docker_path}}configuration/02_member_of_configuration.ldif
|
||||||
listen:
|
listen:
|
||||||
- "Import configuration LDIF files"
|
- "Import configuration LDIF files"
|
||||||
- "Import all LDIF files"
|
- "Import all LDIF files"
|
||||||
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
- name: "Import schemas"
|
- name: "Import schemas"
|
||||||
shell: >
|
shell: >
|
||||||
docker exec -i {{ applications[application_id].hostname }} ldapadd -Y EXTERNAL -H ldapi:/// -f "{{ldif_docker_path}}schema/{{ item | basename | regex_replace('\.j2$', '') }}"
|
docker exec -i {{ applications | get_app_conf(application_id, 'hostname', True) }} ldapadd -Y EXTERNAL -H ldapi:/// -f "{{ldif_docker_path}}schema/{{ item | basename | regex_replace('\.j2$', '') }}"
|
||||||
register: ldapadd_result
|
register: ldapadd_result
|
||||||
changed_when: "'adding new entry' in ldapadd_result.stdout"
|
changed_when: "'adding new entry' in ldapadd_result.stdout"
|
||||||
failed_when: ldapadd_result.rc not in [0, 80]
|
failed_when: ldapadd_result.rc not in [0, 80]
|
||||||
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
- name: Refint Overlay Configuration for OpenLDAP
|
- name: Refint Overlay Configuration for OpenLDAP
|
||||||
shell: >
|
shell: >
|
||||||
docker exec -i {{ applications[application_id].hostname }} ldapmodify -Y EXTERNAL -H ldapi:/// -f {{ldif_docker_path}}configuration/03_member_of_configuration.ldif
|
docker exec -i {{ applications | get_app_conf(application_id, 'hostname', True) }} ldapmodify -Y EXTERNAL -H ldapi:/// -f {{ldif_docker_path}}configuration/03_member_of_configuration.ldif
|
||||||
listen:
|
listen:
|
||||||
- "Import configuration LDIF files"
|
- "Import configuration LDIF files"
|
||||||
- "Import all LDIF files"
|
- "Import all LDIF files"
|
||||||
@ -45,7 +45,7 @@
|
|||||||
|
|
||||||
- name: "Import users, groups, etc. to LDAP"
|
- name: "Import users, groups, etc. to LDAP"
|
||||||
shell: >
|
shell: >
|
||||||
docker exec -i {{ applications[application_id].hostname }} ldapadd -x -D "{{ldap.dn.administrator.data}}" -w "{{ldap.bind_credential}}" -c -f "{{ldif_docker_path}}data/{{ item | basename | regex_replace('\.j2$', '') }}"
|
docker exec -i {{ applications | get_app_conf(application_id, 'hostname', True) }} ldapadd -x -D "{{ldap.dn.administrator.data}}" -w "{{ldap.bind_credential}}" -c -f "{{ldif_docker_path}}data/{{ item | basename | regex_replace('\.j2$', '') }}"
|
||||||
register: ldapadd_result
|
register: ldapadd_result
|
||||||
changed_when: "'adding new entry' in ldapadd_result.stdout"
|
changed_when: "'adding new entry' in ldapadd_result.stdout"
|
||||||
failed_when: ldapadd_result.rc not in [0, 20, 68]
|
failed_when: ldapadd_result.rc not in [0, 20, 68]
|
||||||
|
@ -9,17 +9,17 @@
|
|||||||
src: "nginx.stream.conf.j2"
|
src: "nginx.stream.conf.j2"
|
||||||
dest: "{{nginx.directories.streams}}{{domains | get_domain(application_id)}}.conf"
|
dest: "{{nginx.directories.streams}}{{domains | get_domain(application_id)}}.conf"
|
||||||
notify: restart nginx
|
notify: restart nginx
|
||||||
when: applications[application_id].network.public | bool
|
when: applications | get_app_conf(application_id, 'network.public', True) | bool
|
||||||
|
|
||||||
- name: Remove {{domains | get_domain(application_id)}}.conf if LDAP is not exposed to internet
|
- name: Remove {{domains | get_domain(application_id)}}.conf if LDAP is not exposed to internet
|
||||||
file:
|
file:
|
||||||
path: "{{ nginx.directories.streams }}{{ domains | get_domain(application_id) }}.conf"
|
path: "{{ nginx.directories.streams }}{{ domains | get_domain(application_id) }}.conf"
|
||||||
state: absent
|
state: absent
|
||||||
when: not applications[application_id].network.public | bool
|
when: not applications | get_app_conf(application_id, 'network.public', True) | bool
|
||||||
|
|
||||||
- name: create docker network for LDAP, so that other applications can access it
|
- name: create docker network for LDAP, so that other applications can access it
|
||||||
docker_network:
|
docker_network:
|
||||||
name: "{{ applications[application_id].network.name }}"
|
name: "{{ applications | get_app_conf(application_id, 'network', True).name }}"
|
||||||
state: present
|
state: present
|
||||||
ipam_config:
|
ipam_config:
|
||||||
- subnet: "{{ networks.local['svc-db-openldap'].subnet }}"
|
- subnet: "{{ networks.local['svc-db-openldap'].subnet }}"
|
||||||
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
- name: "Reset LDAP admin passwords"
|
- name: "Reset LDAP admin passwords"
|
||||||
include_tasks: reset_admin_passwords.yml
|
include_tasks: reset_admin_passwords.yml
|
||||||
when: applications[application_id].network.local
|
when: applications | get_app_conf(application_id, 'network.local', True)
|
||||||
|
|
||||||
- name: "create directory {{ldif_host_path}}{{item}}"
|
- name: "create directory {{ldif_host_path}}{{item}}"
|
||||||
file:
|
file:
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
- name: "Query available LDAP databases"
|
- name: "Query available LDAP databases"
|
||||||
shell: |
|
shell: |
|
||||||
docker exec {{ applications[application_id].hostname }} \
|
docker exec {{ applications | get_app_conf(application_id, 'hostname', True) }} \
|
||||||
ldapsearch -Y EXTERNAL -H ldapi:/// -LLL -b cn=config "(olcDatabase=*)" dn
|
ldapsearch -Y EXTERNAL -H ldapi:/// -LLL -b cn=config "(olcDatabase=*)" dn
|
||||||
register: ldap_databases
|
register: ldap_databases
|
||||||
|
|
||||||
@ -27,13 +27,13 @@
|
|||||||
|
|
||||||
- name: "Generate hash for Database Admin password"
|
- name: "Generate hash for Database Admin password"
|
||||||
shell: |
|
shell: |
|
||||||
docker exec {{ applications[application_id].hostname }} \
|
docker exec {{ applications | get_app_conf(application_id, 'hostname', True) }} \
|
||||||
slappasswd -s "{{ ldap.bind_credential }}"
|
slappasswd -s "{{ ldap.bind_credential }}"
|
||||||
register: database_admin_pw_hash
|
register: database_admin_pw_hash
|
||||||
|
|
||||||
- name: "Reset Database Admin password in LDAP (olcRootPW)"
|
- name: "Reset Database Admin password in LDAP (olcRootPW)"
|
||||||
shell: |
|
shell: |
|
||||||
docker exec -i {{ applications[application_id].hostname }} ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF
|
docker exec -i {{ applications | get_app_conf(application_id, 'hostname', True) }} ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF
|
||||||
dn: {{ data_backend_dn }}
|
dn: {{ data_backend_dn }}
|
||||||
changetype: modify
|
changetype: modify
|
||||||
replace: olcRootPW
|
replace: olcRootPW
|
||||||
@ -42,13 +42,13 @@
|
|||||||
|
|
||||||
- name: "Generate hash for Configuration Admin password"
|
- name: "Generate hash for Configuration Admin password"
|
||||||
shell: |
|
shell: |
|
||||||
docker exec {{ applications[application_id].hostname }} \
|
docker exec {{ applications | get_app_conf(application_id, 'hostname', True) }} \
|
||||||
slappasswd -s "{{ applications[application_id].credentials.administrator_password }}"
|
slappasswd -s "{{ applications | get_app_conf(application_id, 'credentials.administrator_password', True) }}"
|
||||||
register: config_admin_pw_hash
|
register: config_admin_pw_hash
|
||||||
|
|
||||||
- name: "Reset Configuration Admin password in LDAP (olcRootPW)"
|
- name: "Reset Configuration Admin password in LDAP (olcRootPW)"
|
||||||
shell: |
|
shell: |
|
||||||
docker exec -i {{ applications[application_id].hostname }} ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF
|
docker exec -i {{ applications | get_app_conf(application_id, 'hostname', True) }} ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF
|
||||||
dn: {{ config_backend_dn }}
|
dn: {{ config_backend_dn }}
|
||||||
changetype: modify
|
changetype: modify
|
||||||
replace: olcRootPW
|
replace: olcRootPW
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: "{{ applications[application_id].images.openldap }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.openldap', True) }}"
|
||||||
container_name: {{ applications[application_id].hostname }}
|
container_name: {{ applications | get_app_conf(application_id, 'hostname', True) }}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
{% if applications[application_id].network.public | bool or applications[application_id].network.local | bool %}
|
{% if applications | get_app_conf(application_id, 'network.public', True) | bool or applications | get_app_conf(application_id, 'network.local', True) | bool %}
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:{{ports.localhost.ldap['svc-db-openldap']}}:{{ldap_docker_port}}
|
- 127.0.0.1:{{ports.localhost.ldap['svc-db-openldap']}}:{{ldap_docker_port}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
# GENERAL
|
# GENERAL
|
||||||
## Admin (Data)
|
## Admin (Data)
|
||||||
LDAP_ADMIN_USERNAME= {{applications[application_id].users.administrator.username}} # LDAP database admin user.
|
LDAP_ADMIN_USERNAME= {{applications | get_app_conf(application_id, 'users.administrator.username', True)}} # LDAP database admin user.
|
||||||
LDAP_ADMIN_PASSWORD= {{ldap.bind_credential}} # LDAP database admin password.
|
LDAP_ADMIN_PASSWORD= {{ldap.bind_credential}} # LDAP database admin password.
|
||||||
|
|
||||||
## Users
|
## Users
|
||||||
@ -14,8 +14,8 @@ LDAP_ROOT= {{ldap.dn.root}} # LDAP baseDN (or su
|
|||||||
## Admin (Config)
|
## Admin (Config)
|
||||||
LDAP_ADMIN_DN= {{ldap.dn.administrator.data}}
|
LDAP_ADMIN_DN= {{ldap.dn.administrator.data}}
|
||||||
LDAP_CONFIG_ADMIN_ENABLED= yes
|
LDAP_CONFIG_ADMIN_ENABLED= yes
|
||||||
LDAP_CONFIG_ADMIN_USERNAME= {{applications[application_id].users.administrator.username}}
|
LDAP_CONFIG_ADMIN_USERNAME= {{applications | get_app_conf(application_id, 'users.administrator.username', True)}}
|
||||||
LDAP_CONFIG_ADMIN_PASSWORD= {{applications[application_id].credentials.administrator_password}}
|
LDAP_CONFIG_ADMIN_PASSWORD= {{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}}
|
||||||
|
|
||||||
# Network
|
# Network
|
||||||
LDAP_PORT_NUMBER= {{ldap_docker_port}} # Route to default port
|
LDAP_PORT_NUMBER= {{ldap_docker_port}} # Route to default port
|
||||||
|
@ -4,9 +4,9 @@ application_id: "svc-db-openldap"
|
|||||||
ldaps_docker_port: 636
|
ldaps_docker_port: 636
|
||||||
ldap_docker_port: 389
|
ldap_docker_port: 389
|
||||||
ldap_server_uri: "ldap://127.0.0.1:{{ ports.localhost.ldap['svc-db-openldap'] }}"
|
ldap_server_uri: "ldap://127.0.0.1:{{ ports.localhost.ldap['svc-db-openldap'] }}"
|
||||||
ldap_hostname: "{{ applications[application_id].hostname }}"
|
ldap_hostname: "{{ applications | get_app_conf(application_id, 'hostname', True) }}"
|
||||||
ldap_bind_dn: "{{ ldap.dn.administrator.configuration }}"
|
ldap_bind_dn: "{{ ldap.dn.administrator.configuration }}"
|
||||||
ldap_bind_pw: "{{ applications[application_id].credentials.administrator_password }}"
|
ldap_bind_pw: "{{ applications | get_app_conf(application_id, 'credentials.administrator_password', True) }}"
|
||||||
|
|
||||||
# LDIF Variables
|
# LDIF Variables
|
||||||
ldif_host_path: "{{docker_compose.directories.volumes}}ldif/"
|
ldif_host_path: "{{docker_compose.directories.volumes}}ldif/"
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
name: "{{ database_name }}"
|
name: "{{ database_name }}"
|
||||||
state: present
|
state: present
|
||||||
login_user: postgres
|
login_user: postgres
|
||||||
login_password: "{{ applications[application_id].credentials.postgres_password }}"
|
login_password: "{{ applications | get_app_conf(application_id, 'credentials.postgres_password', True) }}"
|
||||||
login_host: 127.0.0.1
|
login_host: 127.0.0.1
|
||||||
login_port: "{{ database_port }}"
|
login_port: "{{ database_port }}"
|
||||||
|
|
||||||
@ -25,7 +25,7 @@
|
|||||||
db: "{{ database_name }}"
|
db: "{{ database_name }}"
|
||||||
state: present
|
state: present
|
||||||
login_user: postgres
|
login_user: postgres
|
||||||
login_password: "{{ applications[application_id].credentials.postgres_password }}"
|
login_password: "{{ applications | get_app_conf(application_id, 'credentials.postgres_password', True) }}"
|
||||||
login_host: 127.0.0.1
|
login_host: 127.0.0.1
|
||||||
login_port: "{{ database_port }}"
|
login_port: "{{ database_port }}"
|
||||||
|
|
||||||
@ -34,7 +34,7 @@
|
|||||||
postgresql_query:
|
postgresql_query:
|
||||||
db: postgres
|
db: postgres
|
||||||
login_user: postgres
|
login_user: postgres
|
||||||
login_password: "{{ applications[application_id].credentials.postgres_password }}"
|
login_password: "{{ applications | get_app_conf(application_id, 'credentials.postgres_password', True) }}"
|
||||||
login_host: 127.0.0.1
|
login_host: 127.0.0.1
|
||||||
login_port: "{{ database_port }}"
|
login_port: "{{ database_port }}"
|
||||||
query: |
|
query: |
|
||||||
@ -52,7 +52,7 @@
|
|||||||
schema: public
|
schema: public
|
||||||
state: present
|
state: present
|
||||||
login_user: postgres
|
login_user: postgres
|
||||||
login_password: "{{ applications[application_id].credentials.postgres_password }}"
|
login_password: "{{ applications | get_app_conf(application_id, 'credentials.postgres_password', True) }}"
|
||||||
login_host: 127.0.0.1
|
login_host: 127.0.0.1
|
||||||
login_port: "{{ database_port }}"
|
login_port: "{{ database_port }}"
|
||||||
|
|
||||||
@ -65,7 +65,7 @@
|
|||||||
privs: ALL
|
privs: ALL
|
||||||
state: present
|
state: present
|
||||||
login_user: postgres
|
login_user: postgres
|
||||||
login_password: "{{ applications[application_id].credentials.postgres_password }}"
|
login_password: "{{ applications | get_app_conf(application_id, 'credentials.postgres_password', True) }}"
|
||||||
login_host: 127.0.0.1
|
login_host: 127.0.0.1
|
||||||
login_port: "{{ database_port }}"
|
login_port: "{{ database_port }}"
|
||||||
|
|
||||||
@ -74,7 +74,7 @@
|
|||||||
postgresql_query:
|
postgresql_query:
|
||||||
db: "{{ database_name }}"
|
db: "{{ database_name }}"
|
||||||
login_user: postgres
|
login_user: postgres
|
||||||
login_password: "{{ applications[application_id].credentials.postgres_password }}"
|
login_password: "{{ applications | get_app_conf(application_id, 'credentials.postgres_password', True) }}"
|
||||||
login_host: 127.0.0.1
|
login_host: 127.0.0.1
|
||||||
login_port: "{{ database_port }}"
|
login_port: "{{ database_port }}"
|
||||||
query: |
|
query: |
|
||||||
@ -90,7 +90,7 @@
|
|||||||
ext: "{{ item }}"
|
ext: "{{ item }}"
|
||||||
state: present
|
state: present
|
||||||
login_user: postgres
|
login_user: postgres
|
||||||
login_password: "{{ applications[application_id].credentials.postgres_password }}"
|
login_password: "{{ applications | get_app_conf(application_id, 'credentials.postgres_password', True) }}"
|
||||||
login_host: 127.0.0.1
|
login_host: 127.0.0.1
|
||||||
login_port: "{{ database_port }}"
|
login_port: "{{ database_port }}"
|
||||||
loop:
|
loop:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
- name: Create Docker network for PostgreSQL
|
- name: Create Docker network for PostgreSQL
|
||||||
docker_network:
|
docker_network:
|
||||||
name: "{{ applications[application_id].network }}"
|
name: "{{ applications | get_app_conf(application_id, 'network', True) }}"
|
||||||
state: present
|
state: present
|
||||||
ipam_config:
|
ipam_config:
|
||||||
- subnet: "{{ networks.local['svc-db-postgres'].subnet }}"
|
- subnet: "{{ networks.local['svc-db-postgres'].subnet }}"
|
||||||
@ -8,16 +8,16 @@
|
|||||||
|
|
||||||
- name: Install PostgreSQL
|
- name: Install PostgreSQL
|
||||||
docker_container:
|
docker_container:
|
||||||
name: "{{ applications[application_id].hostname }}"
|
name: "{{ applications | get_app_conf(application_id, 'hostname', True) }}"
|
||||||
image: "{{ applications | get_docker_image(application_id) }}"
|
image: "{{ applications | get_docker_image(application_id) }}"
|
||||||
detach: yes
|
detach: yes
|
||||||
env:
|
env:
|
||||||
POSTGRES_PASSWORD: "{{ applications[application_id].credentials.postgres_password }}"
|
POSTGRES_PASSWORD: "{{ applications | get_app_conf(application_id, 'credentials.postgres_password', True) }}"
|
||||||
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C" # Necessary for web-app-matrix
|
POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C" # Necessary for web-app-matrix
|
||||||
networks:
|
networks:
|
||||||
- name: "{{ applications[application_id].network }}"
|
- name: "{{ applications | get_app_conf(application_id, 'network', True) }}"
|
||||||
published_ports:
|
published_ports:
|
||||||
- "127.0.0.1:{{ applications[application_id].port }}:5432"
|
- "127.0.0.1:{{ applications | get_app_conf(application_id, 'port', True) }}:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- "{{ applications['svc-db-postgres'].volume }}:/var/lib/postgresql/data"
|
- "{{ applications['svc-db-postgres'].volume }}:/var/lib/postgresql/data"
|
||||||
restart_policy: "{{ docker_restart_policy }}"
|
restart_policy: "{{ docker_restart_policy }}"
|
||||||
@ -31,7 +31,7 @@
|
|||||||
when: run_once_docker_postgres is not defined
|
when: run_once_docker_postgres is not defined
|
||||||
|
|
||||||
- name: Wait for Postgres inside the container
|
- name: Wait for Postgres inside the container
|
||||||
shell: "docker exec {{ applications[application_id].hostname }} pg_isready -U postgres"
|
shell: "docker exec {{ applications | get_app_conf(application_id, 'hostname', True) }} pg_isready -U postgres"
|
||||||
register: pg_ready
|
register: pg_ready
|
||||||
until: pg_ready.rc == 0
|
until: pg_ready.rc == 0
|
||||||
retries: 30
|
retries: 30
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
|
||||||
image: "{{ applications[application_id].images[application_id] }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.' ~ application_id, True) }}"
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
ports:
|
ports:
|
||||||
|
@ -14,9 +14,9 @@ DB_PASSWORD={{database_password}}
|
|||||||
DB_PREFIX=asd_
|
DB_PREFIX=asd_
|
||||||
|
|
||||||
# These define the first company to exist on this instance. They are only used during setup.
|
# These define the first company to exist on this instance. They are only used during setup.
|
||||||
COMPANY_NAME={{applications[application_id].company_name}}
|
COMPANY_NAME={{applications | get_app_conf(application_id, 'company_name', True)}}
|
||||||
COMPANY_EMAIL={{applications[application_id].company_email}}
|
COMPANY_EMAIL={{applications | get_app_conf(application_id, 'company_email', True)}}
|
||||||
|
|
||||||
# This will be the first administrative user created on setup.
|
# This will be the first administrative user created on setup.
|
||||||
ADMIN_EMAIL={{applications.akaunting.setup_admin_email}}
|
ADMIN_EMAIL={{applications.akaunting.setup_admin_email}}
|
||||||
ADMIN_PASSWORD={{applications[application_id].credentials.setup_admin_password}}
|
ADMIN_PASSWORD={{applications | get_app_conf(application_id, 'credentials.setup_admin_password', True)}}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
|
|
||||||
web:
|
web:
|
||||||
image: "{{ applications[application_id].images.web }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.web', True) }}"
|
||||||
ports:
|
ports:
|
||||||
- "{{ports.localhost.http[application_id]}}:80"
|
- "{{ports.localhost.http[application_id]}}:80"
|
||||||
volumes:
|
volumes:
|
||||||
@ -15,7 +15,7 @@
|
|||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
|
|
||||||
worker:
|
worker:
|
||||||
image: "{{ applications[application_id].images.worker }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.worker', True) }}"
|
||||||
{% include 'roles/docker-container/templates/depends_on/dmbs_incl.yml.j2' %}
|
{% include 'roles/docker-container/templates/depends_on/dmbs_incl.yml.j2' %}
|
||||||
maildev:
|
maildev:
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
image: "{{ applications[application_id].images.baserow }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.baserow', True) }}"
|
||||||
container_name: baserow-application
|
container_name: baserow-application
|
||||||
volumes:
|
volumes:
|
||||||
- data:/baserow/data
|
- data:/baserow/data
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
name: docker-compose
|
name: docker-compose
|
||||||
vars:
|
vars:
|
||||||
database_instance: "{{ application_id }}"
|
database_instance: "{{ application_id }}"
|
||||||
database_password: "{{ applications[application_id].credentials.postgresql_secret }}"
|
database_password: "{{ applications | get_app_conf(application_id, 'credentials.postgresql_secret', True) }}"
|
||||||
database_username: "postgres"
|
database_username: "postgres"
|
||||||
database_name: "" # Multiple databases
|
database_name: "" # Multiple databases
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
include_tasks: "{{ playbook_dir }}/roles/sys-bkp-docker-to-local/tasks/seed-database-to-backup.yml"
|
include_tasks: "{{ playbook_dir }}/roles/sys-bkp-docker-to-local/tasks/seed-database-to-backup.yml"
|
||||||
vars:
|
vars:
|
||||||
database_instance: "{{ application_id }}"
|
database_instance: "{{ application_id }}"
|
||||||
database_password: "{{ applications[application_id].credentials.postgresql_secret }}"
|
database_password: "{{ applications | get_app_conf(application_id, 'credentials.postgresql_secret', True) }}"
|
||||||
database_username: "postgres"
|
database_username: "postgres"
|
||||||
database_name: "" # Multiple databases
|
database_name: "" # Multiple databases
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
ENABLE_COTURN=true
|
ENABLE_COTURN=true
|
||||||
COTURN_TLS_CERT_PATH={{ certbot_cert_path }}/{{ ssl_cert_folder }}/fullchain.pem
|
COTURN_TLS_CERT_PATH={{ certbot_cert_path }}/{{ ssl_cert_folder }}/fullchain.pem
|
||||||
COTURN_TLS_KEY_PATH={{ certbot_cert_path }}/{{ ssl_cert_folder }}/privkey.pem
|
COTURN_TLS_KEY_PATH={{ certbot_cert_path }}/{{ ssl_cert_folder }}/privkey.pem
|
||||||
ENABLE_GREENLIGHT={{applications[application_id].enable_greenlight}}
|
ENABLE_GREENLIGHT={{applications | get_app_conf(application_id, 'enable_greenlight', True)}}
|
||||||
|
|
||||||
# Enable Webhooks
|
# Enable Webhooks
|
||||||
# used by some integrations
|
# used by some integrations
|
||||||
@ -27,11 +27,11 @@ RECORDING_MAX_AGE_DAYS=365
|
|||||||
# SECRETS
|
# SECRETS
|
||||||
# ====================================
|
# ====================================
|
||||||
# important! change these to any random values
|
# important! change these to any random values
|
||||||
SHARED_SECRET={{applications[application_id].credentials.shared_secret}}
|
SHARED_SECRET={{applications | get_app_conf(application_id, 'credentials.shared_secret', True)}}
|
||||||
ETHERPAD_API_KEY={{applications[application_id].credentials.etherpad_api_key}}
|
ETHERPAD_API_KEY={{applications | get_app_conf(application_id, 'credentials.etherpad_api_key', True)}}
|
||||||
RAILS_SECRET={{applications[application_id].credentials.rails_secret}}
|
RAILS_SECRET={{applications | get_app_conf(application_id, 'credentials.rails_secret', True)}}
|
||||||
POSTGRESQL_SECRET={{applications[application_id].credentials.postgresql_secret}}
|
POSTGRESQL_SECRET={{applications | get_app_conf(application_id, 'credentials.postgresql_secret', True)}}
|
||||||
FSESL_PASSWORD={{applications[application_id].credentials.fsesl_password}}
|
FSESL_PASSWORD={{applications | get_app_conf(application_id, 'credentials.fsesl_password', True)}}
|
||||||
|
|
||||||
# ====================================
|
# ====================================
|
||||||
# CONNECTION
|
# CONNECTION
|
||||||
@ -51,7 +51,7 @@ STUN_PORT={{ ports.public.stun[application_id] }}
|
|||||||
# TURN SERVER
|
# TURN SERVER
|
||||||
# uncomment and adjust following two lines to add an external TURN server
|
# uncomment and adjust following two lines to add an external TURN server
|
||||||
TURN_SERVER=turns:{{domains | get_domain(application_id)}}:{{ ports.public.turn[application_id] }}?transport=tcp
|
TURN_SERVER=turns:{{domains | get_domain(application_id)}}:{{ ports.public.turn[application_id] }}?transport=tcp
|
||||||
TURN_SECRET={{applications[application_id].credentials.turn_secret}}
|
TURN_SECRET={{applications | get_app_conf(application_id, 'credentials.turn_secret', True)}}
|
||||||
|
|
||||||
# Allowed SIP IPs
|
# Allowed SIP IPs
|
||||||
# due to high traffic caused by bots, by default the SIP port is blocked.
|
# due to high traffic caused by bots, by default the SIP port is blocked.
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
pds:
|
pds:
|
||||||
{% set container_port = 3000 %}
|
{% set container_port = 3000 %}
|
||||||
{% set container_healthcheck = 'xrpc/_health' %}
|
{% set container_healthcheck = 'xrpc/_health' %}
|
||||||
image: "{{ applications[application_id].images.pds }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.pds', True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- pds_data:/opt/pds
|
- pds_data:/opt/pds
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
---
|
---
|
||||||
- name: "stop and remove discourse container if it exist"
|
- name: "stop and remove discourse container if it exist"
|
||||||
docker_container:
|
docker_container:
|
||||||
name: "{{applications[application_id].container}}"
|
name: "{{applications | get_app_conf(application_id, 'container', True)}}"
|
||||||
state: absent
|
state: absent
|
||||||
register: container_action
|
register: container_action
|
||||||
failed_when: container_action.failed and 'No such container' not in container_action.msg
|
failed_when: container_action.failed and 'No such container' not in container_action.msg
|
||||||
listen: recreate discourse
|
listen: recreate discourse
|
||||||
|
|
||||||
- name: "add central database temporary to {{application_id}}_default"
|
- name: "add central database temporary to {{application_id}}_default"
|
||||||
command: docker network connect {{applications[application_id].network}} {{ database_host }}
|
command: docker network connect {{applications | get_app_conf(application_id, 'network', True)}} {{ database_host }}
|
||||||
failed_when: >
|
failed_when: >
|
||||||
result.rc != 0 and
|
result.rc != 0 and
|
||||||
'already exists in network' not in result.stderr
|
'already exists in network' not in result.stderr
|
||||||
@ -17,7 +17,7 @@
|
|||||||
listen: recreate discourse
|
listen: recreate discourse
|
||||||
|
|
||||||
- name: rebuild discourse
|
- name: rebuild discourse
|
||||||
shell: ./launcher rebuild {{applications[application_id].container}}
|
shell: ./launcher rebuild {{applications | get_app_conf(application_id, 'container', True)}}
|
||||||
args:
|
args:
|
||||||
executable: /bin/bash
|
executable: /bin/bash
|
||||||
chdir: "{{docker_repository_directory }}"
|
chdir: "{{docker_repository_directory }}"
|
||||||
|
@ -43,26 +43,26 @@
|
|||||||
meta: flush_handlers
|
meta: flush_handlers
|
||||||
when: run_once_docker_discourse is not defined
|
when: run_once_docker_discourse is not defined
|
||||||
|
|
||||||
- name: "Connect {{ applications[application_id].container }} to network {{ applications['svc-db-postgres'].network }}"
|
- name: "Connect {{ applications | get_app_conf(application_id, 'container', True) }} to network {{ applications['svc-db-postgres'].network }}"
|
||||||
command: >
|
command: >
|
||||||
docker network connect {{ applications['svc-db-postgres'].network }} {{ applications[application_id].container }}
|
docker network connect {{ applications['svc-db-postgres'].network }} {{ applications | get_app_conf(application_id, 'container', True) }}
|
||||||
register: network_connect
|
register: network_connect
|
||||||
failed_when: >
|
failed_when: >
|
||||||
network_connect.rc != 0 and
|
network_connect.rc != 0 and
|
||||||
'Error response from daemon: endpoint with name {{ applications[application_id].container }} already exists in network {{ applications["svc-db-postgres"].network }}'
|
'Error response from daemon: endpoint with name {{ applications | get_app_conf(application_id, 'container', True) }} already exists in network {{ applications["svc-db-postgres"].network }}'
|
||||||
not in network_connect.stderr
|
not in network_connect.stderr
|
||||||
changed_when: network_connect.rc == 0
|
changed_when: network_connect.rc == 0
|
||||||
when:
|
when:
|
||||||
- applications | is_feature_enabled('central_database', application_id)
|
- applications | is_feature_enabled('central_database', application_id)
|
||||||
- run_once_docker_discourse is not defined
|
- run_once_docker_discourse is not defined
|
||||||
|
|
||||||
- name: "Remove {{ applications[application_id].network }} from {{ database_host }}"
|
- name: "Remove {{ applications | get_app_conf(application_id, 'network', True) }} from {{ database_host }}"
|
||||||
command: >
|
command: >
|
||||||
docker network disconnect {{ applications[application_id].network }} {{ database_host }}
|
docker network disconnect {{ applications | get_app_conf(application_id, 'network', True) }} {{ database_host }}
|
||||||
register: network_disconnect
|
register: network_disconnect
|
||||||
failed_when: >
|
failed_when: >
|
||||||
network_disconnect.rc != 0 and
|
network_disconnect.rc != 0 and
|
||||||
'is not connected to network {{ applications[application_id].network }}' not in network_disconnect.stderr
|
'is not connected to network {{ applications | get_app_conf(application_id, 'network', True) }}' not in network_disconnect.stderr
|
||||||
changed_when: network_disconnect.rc == 0
|
changed_when: network_disconnect.rc == 0
|
||||||
when:
|
when:
|
||||||
- applications | is_feature_enabled('central_database', application_id)
|
- applications | is_feature_enabled('central_database', application_id)
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
- name: "cleanup central database from {{application_id}}_default network"
|
- name: "cleanup central database from {{application_id}}_default network"
|
||||||
command:
|
command:
|
||||||
cmd: "docker network disconnect {{applications[application_id].network}} {{ database_host }}"
|
cmd: "docker network disconnect {{applications | get_app_conf(application_id, 'network', True)}} {{ database_host }}"
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
- name: "destroy container discourse_application"
|
- name: "destroy container discourse_application"
|
||||||
|
@ -178,4 +178,4 @@ run:
|
|||||||
|
|
||||||
docker_args:
|
docker_args:
|
||||||
- --network={{application_id}}_default
|
- --network={{application_id}}_default
|
||||||
- --name={{applications[application_id].container}}
|
- --name={{applications | get_app_conf(application_id, 'container', True)}}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
application_id: "discourse"
|
application_id: "discourse"
|
||||||
database_password: "{{ applications[application_id].credentials.database_password }}"
|
database_password: "{{ applications | get_app_conf(application_id, 'credentials.database_password', True) }}"
|
||||||
database_type: "postgres"
|
database_type: "postgres"
|
||||||
docker_repository_directory : "{{docker_compose.directories.services}}{{applications[application_id].repository}}/"
|
docker_repository_directory : "{{docker_compose.directories.services}}{{applications | get_app_conf(application_id, 'repository', True)}}/"
|
||||||
discourse_application_yml_destination: "{{docker_repository_directory }}containers/{{applications[application_id].container}}.yml"
|
discourse_application_yml_destination: "{{docker_repository_directory }}containers/{{applications | get_app_conf(application_id, 'container', True)}}.yml"
|
||||||
docker_compose_flush_handlers: false
|
docker_compose_flush_handlers: false
|
@ -1,6 +1,6 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
web:
|
web:
|
||||||
image: "{{ applications[application_id].images.espocrm }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.espocrm', True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
{% include 'roles/docker-container/templates/healthcheck/curl.yml.j2' %}
|
||||||
ports:
|
ports:
|
||||||
@ -11,7 +11,7 @@
|
|||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
|
||||||
daemon:
|
daemon:
|
||||||
image: "{{ applications[application_id].images.espocrm }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.espocrm', True) }}"
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
@ -21,7 +21,7 @@
|
|||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
|
||||||
websocket:
|
websocket:
|
||||||
image: "{{ applications[application_id].images.espocrm }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.espocrm', True) }}"
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
logging:
|
logging:
|
||||||
driver: journald
|
driver: journald
|
||||||
|
@ -19,8 +19,8 @@ CRON_DISABLED=true
|
|||||||
# ------------------------------------------------
|
# ------------------------------------------------
|
||||||
# Initial admin account
|
# Initial admin account
|
||||||
# ------------------------------------------------
|
# ------------------------------------------------
|
||||||
ESPOCRM_ADMIN_USERNAME={{ applications[application_id].users.administrator.username }}
|
ESPOCRM_ADMIN_USERNAME={{ applications | get_app_conf(application_id, 'users.administrator.username', True) }}
|
||||||
ESPOCRM_ADMIN_PASSWORD={{ applications[application_id].credentials.administrator_password }}
|
ESPOCRM_ADMIN_PASSWORD={{ applications | get_app_conf(application_id, 'credentials.administrator_password', True) }}
|
||||||
|
|
||||||
# Public base URL of the EspoCRM instance
|
# Public base URL of the EspoCRM instance
|
||||||
ESPOCRM_SITE_URL={{ domains | get_url(application_id, web_protocol) }}
|
ESPOCRM_SITE_URL={{ domains | get_url(application_id, web_protocol) }}
|
||||||
@ -54,7 +54,7 @@ ESPOCRM_CONFIG_SMTP_SECURITY={{ "TLS" if system_email.start_tls else "SSL"}}
|
|||||||
ESPOCRM_CONFIG_SMTP_AUTH=true
|
ESPOCRM_CONFIG_SMTP_AUTH=true
|
||||||
ESPOCRM_CONFIG_SMTP_USERNAME={{ users['contact'].email }}
|
ESPOCRM_CONFIG_SMTP_USERNAME={{ users['contact'].email }}
|
||||||
ESPOCRM_CONFIG_SMTP_PASSWORD={{ users['contact'].mailu_token }}
|
ESPOCRM_CONFIG_SMTP_PASSWORD={{ users['contact'].mailu_token }}
|
||||||
ESPOCRM_CONFIG_OUTBOUND_EMAIL_FROM_NAME={{ applications[application_id].email.from_name}}
|
ESPOCRM_CONFIG_OUTBOUND_EMAIL_FROM_NAME={{ applications | get_app_conf(application_id, 'email.from_name', True)}}
|
||||||
ESPOCRM_CONFIG_OUTBOUND_EMAIL_FROM_ADDRESS={{ users['contact'].email }}
|
ESPOCRM_CONFIG_OUTBOUND_EMAIL_FROM_ADDRESS={{ users['contact'].email }}
|
||||||
|
|
||||||
# ------------------------------------------------
|
# ------------------------------------------------
|
||||||
|
@ -22,15 +22,15 @@
|
|||||||
+ [{
|
+ [{
|
||||||
'name': item.key,
|
'name': item.key,
|
||||||
'enabled': (
|
'enabled': (
|
||||||
applications[application_id].features.oidc
|
applications | get_app_conf(application_id, 'features.oidc', True)
|
||||||
if item.key == 'keycloakpassword'
|
if item.key == 'keycloakpassword'
|
||||||
else applications[application_id].features.ldap
|
else applications | get_app_conf(application_id, 'features.ldap', True)
|
||||||
if item.key == 'ldapauth'
|
if item.key == 'ldapauth'
|
||||||
else (item.value.enabled if item.value is mapping and 'enabled' in item.value else False)
|
else (item.value.enabled if item.value is mapping and 'enabled' in item.value else False)
|
||||||
)
|
)
|
||||||
}]
|
}]
|
||||||
}}
|
}}
|
||||||
loop: "{{ applications[application_id].addons | dict2items }}"
|
loop: "{{ applications | get_app_conf(application_id, 'addons', True) | dict2items }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.key }}"
|
label: "{{ item.key }}"
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
application:
|
application:
|
||||||
image: "{{ applications[application_id].images.friendica }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.friendica', True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- html:{{ friendica_application_base }}
|
- html:{{ friendica_application_base }}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
application_id: "friendica"
|
application_id: "friendica"
|
||||||
database_type: "mariadb"
|
database_type: "mariadb"
|
||||||
|
|
||||||
friendica_no_validation: "{{ applications[application_id].features.oidc }}" # Email validation is not neccessary if OIDC is active
|
friendica_no_validation: "{{ applications | get_app_conf(application_id, 'features.oidc', True) }}" # Email validation is not neccessary if OIDC is active
|
||||||
friendica_application_base: "/var/www/html"
|
friendica_application_base: "/var/www/html"
|
||||||
friendica_docker_ldap_config: "{{friendica_application_base}}/config/ldapauth.config.php"
|
friendica_docker_ldap_config: "{{friendica_application_base}}/config/ldapauth.config.php"
|
||||||
friendica_host_ldap_config: "{{ docker_compose.directories.volumes }}ldapauth.config.php"
|
friendica_host_ldap_config: "{{ docker_compose.directories.volumes }}ldapauth.config.php"
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
typesense:
|
typesense:
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
image: "{{ applications[application_id].docker.images.typesense }}"
|
image: "{{ applications | get_app_conf(application_id, 'docker.images.typesense', True) }}"
|
||||||
volumes:
|
volumes:
|
||||||
- ./typesense/data:/data
|
- ./typesense/data:/data
|
||||||
command: --data-dir /data --enable-cors
|
command: --data-dir /data --enable-cors
|
||||||
|
@ -97,7 +97,7 @@ STATIC_ROOT={{funkwhale_static_root}}
|
|||||||
DJANGO_SETTINGS_MODULE=config.settings.production
|
DJANGO_SETTINGS_MODULE=config.settings.production
|
||||||
|
|
||||||
# Generate one using `openssl rand -base64 45`, for example
|
# Generate one using `openssl rand -base64 45`, for example
|
||||||
DJANGO_SECRET_KEY={{applications[application_id].credentials.django_secret}}
|
DJANGO_SECRET_KEY={{applications | get_app_conf(application_id, 'credentials.django_secret', True)}}
|
||||||
|
|
||||||
{% if applications | is_feature_enabled('ldap',application_id) %}
|
{% if applications | is_feature_enabled('ldap',application_id) %}
|
||||||
# LDAP settings
|
# LDAP settings
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# https://github.com/LDAPAccountManager/lam/blob/develop/lam-packaging/docker/.env
|
# https://github.com/LDAPAccountManager/lam/blob/develop/lam-packaging/docker/.env
|
||||||
|
|
||||||
# Basic Configuration
|
# Basic Configuration
|
||||||
LAM_PASSWORD= {{applications[application_id].credentials.administrator_password}} # LAM configuration master password and password for server profile "lam
|
LAM_PASSWORD= {{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}} # LAM configuration master password and password for server profile "lam
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
LAM_CONFIGURATION_DATABASE= files # configuration database (files or mysql) @todo implement mariadb
|
LAM_CONFIGURATION_DATABASE= files # configuration database (files or mysql) @todo implement mariadb
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
image: "{{ applications[application_id].images.gitea }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.gitea', True) }}"
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||||
- "{{ports.public.ssh[application_id]}}:22"
|
- "{{ports.public.ssh[application_id]}}:22"
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
DOMAIN={{domains | get_domain(application_id)}}
|
DOMAIN={{domains | get_domain(application_id)}}
|
||||||
RUN_MODE="{{ 'dev' if (CYMAIS_ENVIRONMENT | lower) == 'development' else 'prod' }}"
|
RUN_MODE="{{ 'dev' if (CYMAIS_ENVIRONMENT | lower) == 'development' else 'prod' }}"
|
||||||
ROOT_URL="{{ domains | get_url(application_id, web_protocol) }}/"
|
ROOT_URL="{{ domains | get_url(application_id, web_protocol) }}/"
|
||||||
APP_NAME="{{ applications[application_id].title }}"
|
APP_NAME="{{ applications | get_app_conf(application_id, 'title', True) }}"
|
||||||
USER_UID=1000
|
USER_UID=1000
|
||||||
USER_GID=1000
|
USER_GID=1000
|
||||||
|
|
||||||
@ -38,9 +38,9 @@ GITEA__mailer__PASSWD={{ users['no-reply'].mailu_token }}
|
|||||||
|
|
||||||
# Allow push creation
|
# Allow push creation
|
||||||
# @see https://github.com/go-gitea/gitea/issues/17619
|
# @see https://github.com/go-gitea/gitea/issues/17619
|
||||||
GITEA__REPOSITORY__ENABLE_PUSH_CREATE_USER={{ applications[application_id].configuration.repository.enable_push_create_user | lower }}
|
GITEA__REPOSITORY__ENABLE_PUSH_CREATE_USER={{ applications | get_app_conf(application_id, 'configuration.repository.enable_push_create_user', True) | lower }}
|
||||||
GITEA__REPOSITORY__DEFAULT_PRIVATE={{ applications[application_id].configuration.repository.default_private | lower }}
|
GITEA__REPOSITORY__DEFAULT_PRIVATE={{ applications | get_app_conf(application_id, 'configuration.repository.default_private', True) | lower }}
|
||||||
GITEA__REPOSITORY__DEFAULT_PUSH_CREATE_PRIVATE={{ applications[application_id].configuration.repository.default_push_create_private | lower }}
|
GITEA__REPOSITORY__DEFAULT_PUSH_CREATE_PRIVATE={{ applications | get_app_conf(application_id, 'configuration.repository.default_push_create_private', True) | lower }}
|
||||||
|
|
||||||
GITEA__security__INSTALL_LOCK=true # Locks the installation page
|
GITEA__security__INSTALL_LOCK=true # Locks the installation page
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
|
|
||||||
web:
|
web:
|
||||||
image: "{{ applications[application_id].images.gitlab }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.gitlab', True) }}"
|
||||||
hostname: '{{domains | get_domain(application_id)}}'
|
hostname: '{{domains | get_domain(application_id)}}'
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
ports:
|
ports:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
application:
|
application:
|
||||||
image: "{{ applications[application_id].images.joomla }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.joomla', True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html
|
- data:/var/www/html
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: "{{ applications[application_id].images.keycloak }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.keycloak', True) }}"
|
||||||
container_name: {{container_name}}
|
container_name: {{container_name}}
|
||||||
command: start {% if applications[application_id].import_realm | bool %}--import-realm{% endif %}
|
command: start {% if applications | get_app_conf(application_id, 'import_realm', True) | bool %}--import-realm{% endif %}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
ports:
|
ports:
|
||||||
- "{{ keycloak_server_host }}:8080"
|
- "{{ keycloak_server_host }}:8080"
|
||||||
|
@ -11,8 +11,8 @@ KC_HEALTH_ENABLED= true
|
|||||||
KC_METRICS_ENABLED= true
|
KC_METRICS_ENABLED= true
|
||||||
|
|
||||||
# Administrator
|
# Administrator
|
||||||
KEYCLOAK_ADMIN= "{{applications[application_id].users.administrator.username}}"
|
KEYCLOAK_ADMIN= "{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}"
|
||||||
KEYCLOAK_ADMIN_PASSWORD= "{{applications[application_id].credentials.administrator_password}}"
|
KEYCLOAK_ADMIN_PASSWORD= "{{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}}"
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
KC_DB= postgres
|
KC_DB= postgres
|
||||||
@ -21,5 +21,5 @@ KC_DB_USERNAME= {{database_username}}
|
|||||||
KC_DB_PASSWORD= {{database_password}}
|
KC_DB_PASSWORD= {{database_password}}
|
||||||
|
|
||||||
# If the initial administrator already exists and the environment variables are still present at startup, an error message stating the failed creation of the initial administrator is shown in the logs. Keycloak ignores the values and starts up correctly.
|
# If the initial administrator already exists and the environment variables are still present at startup, an error message stating the failed creation of the initial administrator is shown in the logs. Keycloak ignores the values and starts up correctly.
|
||||||
KC_BOOTSTRAP_ADMIN_USERNAME= "{{applications[application_id].users.administrator.username}}"
|
KC_BOOTSTRAP_ADMIN_USERNAME= "{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}"
|
||||||
KC_BOOTSTRAP_ADMIN_PASSWORD= "{{applications[application_id].credentials.administrator_password}}"
|
KC_BOOTSTRAP_ADMIN_PASSWORD= "{{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}}"
|
@ -890,8 +890,8 @@
|
|||||||
"organization",
|
"organization",
|
||||||
"offline_access",
|
"offline_access",
|
||||||
"microprofile-jwt",
|
"microprofile-jwt",
|
||||||
"{{ applications[application_id].scopes.rbac_roles }}",
|
"{{ applications | get_app_conf(application_id, 'scopes.rbac_roles', True) }}",
|
||||||
"{{ applications[application_id].scopes.nextcloud }}"
|
"{{ applications | get_app_conf(application_id, 'scopes.nextcloud', True) }}"
|
||||||
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -1197,7 +1197,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "15dd4961-5b4f-4635-a3f1-a21e1fa7bf3a",
|
"id": "15dd4961-5b4f-4635-a3f1-a21e1fa7bf3a",
|
||||||
"name": "{{ applications[application_id].scopes.nextcloud }}",
|
"name": "{{ applications | get_app_conf(application_id, 'scopes.nextcloud', True) }}",
|
||||||
"description": "Optimized mappers for nextcloud oidc_login with ldap.",
|
"description": "Optimized mappers for nextcloud oidc_login with ldap.",
|
||||||
"protocol": "openid-connect",
|
"protocol": "openid-connect",
|
||||||
"attributes": {
|
"attributes": {
|
||||||
@ -1249,7 +1249,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "59917c48-a7ef-464a-a8b0-ea24316db18e",
|
"id": "59917c48-a7ef-464a-a8b0-ea24316db18e",
|
||||||
"name": "{{ applications[application_id].scopes.rbac_roles }}",
|
"name": "{{ applications | get_app_conf(application_id, 'scopes.rbac_roles', True) }}",
|
||||||
"description": "RBAC Groups",
|
"description": "RBAC Groups",
|
||||||
"protocol": "openid-connect",
|
"protocol": "openid-connect",
|
||||||
"attributes": {
|
"attributes": {
|
||||||
@ -1675,8 +1675,8 @@
|
|||||||
"phone",
|
"phone",
|
||||||
"microprofile-jwt",
|
"microprofile-jwt",
|
||||||
"organization",
|
"organization",
|
||||||
"{{ applications[application_id].scopes.rbac_roles }}",
|
"{{ applications | get_app_conf(application_id, 'scopes.rbac_roles', True) }}",
|
||||||
"{{ applications[application_id].scopes.nextcloud }}"
|
"{{ applications | get_app_conf(application_id, 'scopes.nextcloud', True) }}"
|
||||||
],
|
],
|
||||||
"browserSecurityHeaders": {
|
"browserSecurityHeaders": {
|
||||||
"contentSecurityPolicyReportOnly": "",
|
"contentSecurityPolicyReportOnly": "",
|
||||||
@ -1994,7 +1994,7 @@
|
|||||||
"false"
|
"false"
|
||||||
],
|
],
|
||||||
"groups.path": [
|
"groups.path": [
|
||||||
"{{ applications[application_id].rbac_groups }}"
|
"{{ applications | get_app_conf(application_id, 'rbac_groups', True) }}"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -2920,8 +2920,8 @@
|
|||||||
"action": "register",
|
"action": "register",
|
||||||
"useRecaptchaNet": "false",
|
"useRecaptchaNet": "false",
|
||||||
"recaptcha.v3": "true",
|
"recaptcha.v3": "true",
|
||||||
"secret.key": "{{ applications[application_id].credentials.recaptcha.secret_key }}",
|
"secret.key": "{{ applications | get_app_conf(application_id, 'credentials.recaptcha.secret_key', True) }}",
|
||||||
"site.key": "{{ applications[application_id].credentials.recaptcha.website_key }}"
|
"site.key": "{{ applications | get_app_conf(application_id, 'credentials.recaptcha.website_key', True) }}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
|
@ -4,7 +4,7 @@ container_name: "{{application_id}}_application"
|
|||||||
import_directory_host: "{{docker_compose.directories.volumes}}import/" # Directory in which keycloack import files are placed on the host
|
import_directory_host: "{{docker_compose.directories.volumes}}import/" # Directory in which keycloack import files are placed on the host
|
||||||
import_directory_docker: "/opt/keycloak/data/import/" # Directory in which keycloack import files are placed in the running docker container
|
import_directory_docker: "/opt/keycloak/data/import/" # Directory in which keycloack import files are placed in the running docker container
|
||||||
keycloak_realm: "{{ primary_domain}}" # This is the name of the default realm which is used by the applications
|
keycloak_realm: "{{ primary_domain}}" # This is the name of the default realm which is used by the applications
|
||||||
keycloak_administrator: "{{ applications[application_id].users.administrator }}" # Master Administrator
|
keycloak_administrator: "{{ applications | get_app_conf(application_id, 'users.administrator', True) }}" # Master Administrator
|
||||||
keycloak_administrator_username: "{{ keycloak_administrator.username}}" # Master Administrator Username
|
keycloak_administrator_username: "{{ keycloak_administrator.username}}" # Master Administrator Username
|
||||||
keycloak_administrator_password: "{{ keycloak_administrator.password}}" # Master Administrator Password
|
keycloak_administrator_password: "{{ keycloak_administrator.password}}" # Master Administrator Password
|
||||||
keycloak_kcadm_path: "docker exec -i {{ container_name }} /opt/keycloak/bin/kcadm.sh"
|
keycloak_kcadm_path: "docker exec -i {{ container_name }} /opt/keycloak/bin/kcadm.sh"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
container_name: {{ application_id }}
|
container_name: {{ application_id }}
|
||||||
image: "{{ applications[application_id].images.lam }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.lam', True) }}"
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:80
|
- 127.0.0.1:{{ports.localhost.http[application_id]}}:80
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# https://github.com/LDAPAccountManager/lam/blob/develop/lam-packaging/docker/.env
|
# https://github.com/LDAPAccountManager/lam/blob/develop/lam-packaging/docker/.env
|
||||||
|
|
||||||
# Basic Configuration
|
# Basic Configuration
|
||||||
LAM_PASSWORD= {{applications[application_id].credentials.administrator_password}} # LAM configuration master password and password for server profile "lam
|
LAM_PASSWORD= {{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}} # LAM configuration master password and password for server profile "lam
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
LAM_CONFIGURATION_DATABASE= files # configuration database (files or mysql) @todo implement mariadb
|
LAM_CONFIGURATION_DATABASE= files # configuration database (files or mysql) @todo implement mariadb
|
||||||
|
@ -3,7 +3,7 @@ services:
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: "{{ applications[application_id].images[application_id] }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.' ~ application_id, True) }}"
|
||||||
volumes: []
|
volumes: []
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:{{ container_port }}"
|
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:{{ container_port }}"
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
- name: Set proxy_extra_configuration based on applications[application_id].public_api_activated
|
- name: Set proxy_extra_configuration based on applications | get_app_conf(application_id, 'public_api_activated', True)
|
||||||
set_fact:
|
set_fact:
|
||||||
proxy_extra_configuration: >-
|
proxy_extra_configuration: >-
|
||||||
{% if not applications[application_id].public_api_activated %}
|
{% if not applications | get_app_conf(application_id, 'public_api_activated', True) %}
|
||||||
{{ lookup('file', '{{ role_path }}/files/deactivate-public-api.conf') }}
|
{{ lookup('file', '{{ role_path }}/files/deactivate-public-api.conf') }}
|
||||||
{% else %}
|
{% else %}
|
||||||
""
|
""
|
||||||
@ -50,7 +50,7 @@
|
|||||||
-d {{ database_name }} << 'EOSQL'
|
-d {{ database_name }} << 'EOSQL'
|
||||||
UPDATE users
|
UPDATE users
|
||||||
SET email = '{{ users.administrator.email }}',
|
SET email = '{{ users.administrator.email }}',
|
||||||
password_login = {{ 'false' if applications[application_id].features.oidc else 'true' }}
|
password_login = {{ 'false' if applications | get_app_conf(application_id, 'features.oidc', True) else 'true' }}
|
||||||
WHERE username = 'administrator';
|
WHERE username = 'administrator';
|
||||||
EOSQL
|
EOSQL
|
||||||
args:
|
args:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
application:
|
application:
|
||||||
{% set container_healthcheck = 'health' %}
|
{% set container_healthcheck = 'health' %}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
image: "{{ applications[application_id].images.listmonk }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.listmonk', True) }}"
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -2,5 +2,5 @@ TZ={{ HOST_TIMEZONE }}
|
|||||||
|
|
||||||
# Administrator setup
|
# Administrator setup
|
||||||
|
|
||||||
LISTMONK_ADMIN_USER={{ applications[application_id].users.administrator.username }}
|
LISTMONK_ADMIN_USER={{ applications | get_app_conf(application_id, 'users.administrator.username', True) }}
|
||||||
LISTMONK_ADMIN_PASSWORD={{ applications[application_id].credentials.administrator_password }}
|
LISTMONK_ADMIN_PASSWORD={{ applications | get_app_conf(application_id, 'credentials.administrator_password', True) }}
|
@ -25,10 +25,10 @@ listmonk_settings:
|
|||||||
value: 'true'
|
value: 'true'
|
||||||
|
|
||||||
- key: "security.captcha_key"
|
- key: "security.captcha_key"
|
||||||
value: '"{{ applications[application_id].credentials.hcaptcha_site_key }}"'
|
value: '"{{ applications | get_app_conf(application_id, "credentials.hcaptcha_site_key", True) }}"'
|
||||||
|
|
||||||
- key: "security.captcha_secret"
|
- key: "security.captcha_secret"
|
||||||
value: '"{{ applications[application_id].credentials.hcaptcha_secret }}"'
|
value: '"{{ applications | get_app_conf(application_id, "credentials.hcaptcha_secret", True) }}"'
|
||||||
|
|
||||||
# SMTP servers
|
# SMTP servers
|
||||||
- key: "smtp"
|
- key: "smtp"
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
- name: Generate DKIM key
|
- name: Generate DKIM key
|
||||||
command: >
|
command: >
|
||||||
docker compose exec -T antispam
|
docker compose exec -T antispam
|
||||||
rspamadm dkim_keygen -s dkim -d {{ applications[application_id].domain }} -k {{ mailu_dkim_key_path }}
|
rspamadm dkim_keygen -s dkim -d {{ applications | get_app_conf(application_id, 'domain', True) }} -k {{ mailu_dkim_key_path }}
|
||||||
register: dkim_keygen_output
|
register: dkim_keygen_output
|
||||||
when: dkim_key_file_stat.rc != 0
|
when: dkim_key_file_stat.rc != 0
|
||||||
args:
|
args:
|
||||||
|
@ -189,7 +189,7 @@ OIDC_CHANGE_PASSWORD_REDIRECT_ENABLED=True
|
|||||||
# Redirect URL for password change. Defaults to provider issuer url appended by /.well-known/change-password
|
# Redirect URL for password change. Defaults to provider issuer url appended by /.well-known/change-password
|
||||||
OIDC_CHANGE_PASSWORD_REDIRECT_URL={{oidc.client.change_credentials}}
|
OIDC_CHANGE_PASSWORD_REDIRECT_URL={{oidc.client.change_credentials}}
|
||||||
|
|
||||||
{% if applications[application_id].oidc.email_by_username | bool %}
|
{% if applications | get_app_conf(application_id, 'oidc.email_by_username', True) | bool %}
|
||||||
|
|
||||||
# The OIDC claim used as the username. If the selected claim contains an email address, it will be used as is. If it is not an email (e.g., sub), the email address will be constructed as <OIDC_USERNAME_CLAIM>@<OIDC_USER_DOMAIN>. Defaults to email.
|
# The OIDC claim used as the username. If the selected claim contains an email address, it will be used as is. If it is not an email (e.g., sub), the email address will be constructed as <OIDC_USERNAME_CLAIM>@<OIDC_USER_DOMAIN>. Defaults to email.
|
||||||
OIDC_USERNAME_CLAIM={{oidc.attributes.username}}
|
OIDC_USERNAME_CLAIM={{oidc.attributes.username}}
|
||||||
@ -199,5 +199,5 @@ OIDC_USER_DOMAIN={{primary_domain}}
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
# If enabled, users who authenticate successfully but do not yet have an account will have one created for them. If disabled, only existing users can log in, and authentication will fail for users without a pre-existing account. Defaults to True.
|
# If enabled, users who authenticate successfully but do not yet have an account will have one created for them. If disabled, only existing users can log in, and authentication will fail for users without a pre-existing account. Defaults to True.
|
||||||
OIDC_ENABLE_USER_CREATION={{ applications[application_id].oidc.enable_user_creation | string | capitalize }}
|
OIDC_ENABLE_USER_CREATION={{ applications | get_app_conf(application_id, 'oidc.enable_user_creation', True) | string | capitalize }}
|
||||||
{% endif %}
|
{% endif %}
|
@ -1,13 +1,13 @@
|
|||||||
# vars/mailu-dns.yml
|
# vars/mailu-dns.yml
|
||||||
|
|
||||||
mailu_dns_zone: "{{ applications[application_id].domain }}"
|
mailu_dns_zone: "{{ applications | get_app_conf(application_id, 'domain', True) }}"
|
||||||
mailu_dns_ip: "{{ networks.internet.ip4 }}"
|
mailu_dns_ip: "{{ networks.internet.ip4 }}"
|
||||||
|
|
||||||
cloudflare_record_api_token: "{{ certbot_dns_api_token }}"
|
cloudflare_record_api_token: "{{ certbot_dns_api_token }}"
|
||||||
|
|
||||||
mailu_dmarc_ruf: "{{ applications[application_id].users.administrator.email }}"
|
mailu_dmarc_ruf: "{{ applications | get_app_conf(application_id, 'users.administrator.email', True) }}"
|
||||||
|
|
||||||
mailu_dkim_key_file: "{{ applications[application_id].domain }}.dkim.key"
|
mailu_dkim_key_file: "{{ applications | get_app_conf(application_id, 'domain', True) }}.dkim.key"
|
||||||
mailu_dkim_key_path: "/dkim/{{ mailu_dkim_key_file }}"
|
mailu_dkim_key_path: "/dkim/{{ mailu_dkim_key_file }}"
|
||||||
|
|
||||||
mailu_dns_srv_records:
|
mailu_dns_srv_records:
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
web:
|
web:
|
||||||
{% set container_port = 3000 %}
|
{% set container_port = 3000 %}
|
||||||
{% set container_healthcheck = 'health' %}
|
{% set container_healthcheck = 'health' %}
|
||||||
image: "{{ applications[application_id].images[application_id] }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.' ~ application_id, True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p {{ container_port }}"
|
command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p {{ container_port }}"
|
||||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||||
@ -17,7 +17,7 @@
|
|||||||
streaming:
|
streaming:
|
||||||
{% set container_port = 4000 %}
|
{% set container_port = 4000 %}
|
||||||
{% set container_healthcheck = 'api/v1/streaming/health' %}
|
{% set container_healthcheck = 'api/v1/streaming/health' %}
|
||||||
image: "{{ applications[application_id].images.streaming }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.streaming', True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
command: node ./streaming
|
command: node ./streaming
|
||||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||||
@ -27,7 +27,7 @@
|
|||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
|
|
||||||
sidekiq:
|
sidekiq:
|
||||||
image: "{{ applications[application_id].images.mastodon }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.mastodon', True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
command: bundle exec sidekiq
|
command: bundle exec sidekiq
|
||||||
{% include 'roles/docker-container/templates/depends_on/dmbs_excl.yml.j2' %}
|
{% include 'roles/docker-container/templates/depends_on/dmbs_excl.yml.j2' %}
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
images:
|
|
||||||
matomo: "matomo:latest"
|
|
||||||
features:
|
features:
|
||||||
# If you want to use Matomo on the Matomo page, you
|
# If you want to use Matomo on the Matomo page, you
|
||||||
# have to set it here manual to true.
|
# have to set it here manual to true.
|
||||||
@ -34,6 +32,8 @@ excluded_ips: "{{ networks.internet.values() | list }}"
|
|||||||
|
|
||||||
docker:
|
docker:
|
||||||
services:
|
services:
|
||||||
|
matomo:
|
||||||
|
image: "matomo:latest"
|
||||||
database:
|
database:
|
||||||
enabled: true
|
enabled: true
|
||||||
redis:
|
redis:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
application:
|
application:
|
||||||
{% set container_port = 80 %}
|
{% set container_port = 80 %}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
image: "{{ applications[application_id].images['matomo'] }}"
|
image: "{{ applications | get_app_conf(application_id, 'docker.services.matomo.image']', True) }}"
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
- "127.0.0.1:{{ports.localhost.http[application_id]}}:{{ container_port }}"
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
application_id: "web-app-matomo"
|
application_id: "web-app-matomo"
|
||||||
database_type: "mariadb"
|
database_type: "mariadb"
|
||||||
matomo_excluded_ips: "{{ applications[application_id].excluded_ips }}"
|
matomo_excluded_ips: "{{ applications | get_app_conf(application_id, 'excluded_ips', True) }}"
|
||||||
matomo_index_php_url: "{{ domains | get_url(application_id, web_protocol) }}/index.php"
|
matomo_index_php_url: "{{ domains | get_url(application_id, web_protocol) }}/index.php"
|
||||||
matomo_auth_token: "{{ applications[application_id].credentials.auth_token }}"
|
matomo_auth_token: "{{ applications | get_app_conf(application_id, 'credentials.auth_token', True) }}"
|
||||||
|
|
||||||
|
|
||||||
# I don't know if this is still necessary
|
# I don't know if this is still necessary
|
||||||
|
@ -18,7 +18,7 @@ matrix_homeserver_implementation: synapse
|
|||||||
|
|
||||||
# A secret used as a base, for generating various other secrets.
|
# A secret used as a base, for generating various other secrets.
|
||||||
# You can put any string here, but generating a strong one is preferred (e.g. `pwgen -s 64 1`).
|
# You can put any string here, but generating a strong one is preferred (e.g. `pwgen -s 64 1`).
|
||||||
matrix_homeserver_generic_secret_key: "{{applications[application_id].credentials.generic_secret_key}}"
|
matrix_homeserver_generic_secret_key: "{{applications | get_app_conf(application_id, 'credentials.generic_secret_key', True)}}"
|
||||||
|
|
||||||
# By default, the playbook manages its own Traefik (https://doc.traefik.io/traefik/) reverse-proxy server.
|
# By default, the playbook manages its own Traefik (https://doc.traefik.io/traefik/) reverse-proxy server.
|
||||||
# It will retrieve SSL certificates for you on-demand and forward requests to all other components.
|
# It will retrieve SSL certificates for you on-demand and forward requests to all other components.
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
## Cleanup
|
## Cleanup
|
||||||
```
|
```
|
||||||
# Cleanup Database
|
# Cleanup Database
|
||||||
for db in matrix applications[application_id].credentials.mautrix_whatsapp_bridge applications[application_id].credentials.mautrix_telegram_bridge applications[application_id].credentials.mautrix_signal_bridge applications[application_id].credentials.mautrix_slack_bridge; do python reset-database-in-central-postgres.py $db; done
|
for db in matrix applications | get_app_conf(application_id, 'credentials.mautrix_whatsapp_bridge', True) applications | get_app_conf(application_id, 'credentials.mautrix_telegram_bridge', True) applications | get_app_conf(application_id, 'credentials.mautrix_signal_bridge', True) applications | get_app_conf(application_id, 'credentials.mautrix_slack_bridge', True); do python reset-database-in-central-postgres.py $db; done
|
||||||
# Cleanup Docker and Volumes
|
# Cleanup Docker and Volumes
|
||||||
docker compose down -v
|
docker compose down -v
|
||||||
```
|
```
|
@ -15,7 +15,7 @@ For login with Token checkout [this guide](https://docs.mau.fi/bridges/go/slack/
|
|||||||
|
|
||||||
### ChatGPT
|
### ChatGPT
|
||||||
- Create API Token: https://platform.openai.com/api-keys
|
- Create API Token: https://platform.openai.com/api-keys
|
||||||
- Set ``applications[application_id].credentials.chatgpt_bridge_access_token``
|
- Set ``applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_access_token', True)``
|
||||||
|
|
||||||
## Debug:
|
## Debug:
|
||||||
- https://federationtester.matrix.org/
|
- https://federationtester.matrix.org/
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
- name: Filter enabled bridges and register as fact
|
- name: Filter enabled bridges and register as fact
|
||||||
set_fact:
|
set_fact:
|
||||||
bridges: "{{ bridges_configuration | filter_enabled_bridges(applications[application_id].plugins) }}"
|
bridges: "{{ bridges_configuration | filter_enabled_bridges(applications | get_app_conf(application_id, 'plugins', True)) }}"
|
||||||
changed_when: false
|
changed_when: false
|
||||||
|
|
||||||
- name: "load docker and db for {{application_id}}"
|
- name: "load docker and db for {{application_id}}"
|
||||||
@ -143,14 +143,14 @@
|
|||||||
|
|
||||||
- name: create admin account
|
- name: create admin account
|
||||||
command:
|
command:
|
||||||
cmd: docker compose exec -it synapse register_new_matrix_user -u {{applications[application_id].users.administrator.username}} -p {{applications[application_id].credentials.administrator_password}} -a -c /data/homeserver.yaml http://localhost:8008
|
cmd: docker compose exec -it synapse register_new_matrix_user -u {{applications | get_app_conf(application_id, 'users.administrator.username', True)}} -p {{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}} -a -c /data/homeserver.yaml http://localhost:8008
|
||||||
chdir: "{{ docker_compose.directories.instance }}"
|
chdir: "{{ docker_compose.directories.instance }}"
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
when: applications[application_id].setup | bool
|
when: applications | get_app_conf(application_id, 'setup', True) | bool
|
||||||
|
|
||||||
- name: create chatgpt bot
|
- name: create chatgpt bot
|
||||||
command:
|
command:
|
||||||
cmd: docker compose exec -it synapse register_new_matrix_user -u chatgptbot -p {{applications[application_id].credentials.chatgpt_bridge_user_password}} -a -c /data/homeserver.yaml http://localhost:8008
|
cmd: docker compose exec -it synapse register_new_matrix_user -u chatgptbot -p {{applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_user_password', True)}} -a -c /data/homeserver.yaml http://localhost:8008
|
||||||
chdir: "{{ docker_compose.directories.instance }}"
|
chdir: "{{ docker_compose.directories.instance }}"
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
when: applications[application_id].setup | bool
|
when: applications | get_app_conf(application_id, 'setup', True) | bool
|
@ -1,7 +1,7 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
synapse:
|
synapse:
|
||||||
{% set container_port = 8008 %}
|
{% set container_port = 8008 %}
|
||||||
image: "{{ applications[application_id].images.synapse }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.synapse', True) }}"
|
||||||
container_name: matrix-synapse
|
container_name: matrix-synapse
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
logging:
|
logging:
|
||||||
@ -30,7 +30,7 @@
|
|||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
element:
|
element:
|
||||||
{% set container_port = 80 %}
|
{% set container_port = 80 %}
|
||||||
image: "{{ applications[application_id].images.element }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.element', True) }}"
|
||||||
container_name: matrix-element
|
container_name: matrix-element
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
volumes:
|
volumes:
|
||||||
@ -54,7 +54,7 @@
|
|||||||
retries: 3
|
retries: 3
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if applications[application_id].plugins.chatgpt | bool %}
|
{% if applications | get_app_conf(application_id, 'plugins', True).chatgpt | bool %}
|
||||||
matrix-chatgpt-bot:
|
matrix-chatgpt-bot:
|
||||||
restart: {{docker_restart_policy}}
|
restart: {{docker_restart_policy}}
|
||||||
container_name: matrix-chatgpt
|
container_name: matrix-chatgpt
|
||||||
@ -62,7 +62,7 @@
|
|||||||
volumes:
|
volumes:
|
||||||
- chatgpt_data:/storage
|
- chatgpt_data:/storage
|
||||||
environment:
|
environment:
|
||||||
OPENAI_API_KEY: '{{applications[application_id].credentials.chatgpt_bridge_openai_api_key}}'
|
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
|
# Uncomment the next two lines if you are using Azure OpenAI API
|
||||||
# OPENAI_AZURE: 'false'
|
# OPENAI_AZURE: 'false'
|
||||||
# CHATGPT_REVERSE_PROXY: 'your-completion-endpoint-here'
|
# CHATGPT_REVERSE_PROXY: 'your-completion-endpoint-here'
|
||||||
@ -82,13 +82,13 @@
|
|||||||
KEYV_BOT_ENCRYPTION: 'false'
|
KEYV_BOT_ENCRYPTION: 'false'
|
||||||
KEYV_BOT_STORAGE: 'true'
|
KEYV_BOT_STORAGE: 'true'
|
||||||
MATRIX_HOMESERVER_URL: 'https://{{domains.matrix.synapse}}'
|
MATRIX_HOMESERVER_URL: 'https://{{domains.matrix.synapse}}'
|
||||||
MATRIX_BOT_USERNAME: '@chatgptbot:{{applications[application_id].server_name}}'
|
MATRIX_BOT_USERNAME: '@chatgptbot:{{applications | get_app_conf(application_id, 'server_name', True)}}'
|
||||||
MATRIX_ACCESS_TOKEN: '{{ applications[application_id].credentials.chatgpt_bridge_access_token | default('') }}'
|
MATRIX_ACCESS_TOKEN: '{{ applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_access_token', True) | default('') }}'
|
||||||
MATRIX_BOT_PASSWORD: '{{applications[application_id].credentials.chatgpt_bridge_user_password}}'
|
MATRIX_BOT_PASSWORD: '{{applications | get_app_conf(application_id, 'credentials.chatgpt_bridge_user_password', True)}}'
|
||||||
MATRIX_DEFAULT_PREFIX: '!chatgpt'
|
MATRIX_DEFAULT_PREFIX: '!chatgpt'
|
||||||
MATRIX_DEFAULT_PREFIX_REPLY: 'false'
|
MATRIX_DEFAULT_PREFIX_REPLY: 'false'
|
||||||
#MATRIX_BLACKLIST: ''
|
#MATRIX_BLACKLIST: ''
|
||||||
MATRIX_WHITELIST: ':{{applications[application_id].server_name}}'
|
MATRIX_WHITELIST: ':{{applications | get_app_conf(application_id, 'server_name', True)}}'
|
||||||
MATRIX_AUTOJOIN: 'true'
|
MATRIX_AUTOJOIN: 'true'
|
||||||
MATRIX_ENCRYPTION: 'true'
|
MATRIX_ENCRYPTION: 'true'
|
||||||
MATRIX_THREADS: 'true'
|
MATRIX_THREADS: 'true'
|
||||||
@ -98,7 +98,7 @@
|
|||||||
|
|
||||||
{% include 'roles/docker-compose/templates/volumes.yml.j2' %}
|
{% include 'roles/docker-compose/templates/volumes.yml.j2' %}
|
||||||
synapse_data:
|
synapse_data:
|
||||||
{% if applications[application_id].plugins.chatgpt | bool %}
|
{% if applications | get_app_conf(application_id, 'plugins', True).chatgpt | bool %}
|
||||||
chatgpt_data:
|
chatgpt_data:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ homeserver:
|
|||||||
# The address that this appservice can use to connect to the homeserver.
|
# The address that this appservice can use to connect to the homeserver.
|
||||||
address: http://synapse:8008
|
address: http://synapse:8008
|
||||||
# The domain of the homeserver (for MXIDs, etc).
|
# The domain of the homeserver (for MXIDs, etc).
|
||||||
domain: {{applications[application_id].server_name}}
|
domain: {{applications | get_app_conf(application_id, 'server_name', True)}}
|
||||||
# Whether or not to verify the SSL certificate of the homeserver.
|
# Whether or not to verify the SSL certificate of the homeserver.
|
||||||
# Only applies if address starts with https://
|
# Only applies if address starts with https://
|
||||||
verify_ssl: true
|
verify_ssl: true
|
||||||
@ -39,7 +39,7 @@ appservice:
|
|||||||
# Format examples:
|
# Format examples:
|
||||||
# SQLite: sqlite:filename.db
|
# SQLite: sqlite:filename.db
|
||||||
# Postgres: postgres://username:password@hostname/dbname
|
# Postgres: postgres://username:password@hostname/dbname
|
||||||
database: postgres://mautrix_facebook_bridge:{{applications[application_id].credentials.mautrix_facebook_bridge_database_password}}@{{database_host}}/mautrix_facebook_bridge
|
database: postgres://mautrix_facebook_bridge:{{applications | get_app_conf(application_id, 'credentials.mautrix_facebook_bridge_database_password', True)}}@{{database_host}}/mautrix_facebook_bridge
|
||||||
# Additional arguments for asyncpg.create_pool() or sqlite3.connect()
|
# Additional arguments for asyncpg.create_pool() or sqlite3.connect()
|
||||||
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
|
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
|
||||||
# https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
|
# https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
|
||||||
@ -143,7 +143,7 @@ bridge:
|
|||||||
sync_direct_chat_list: false
|
sync_direct_chat_list: false
|
||||||
# Servers to always allow double puppeting from
|
# Servers to always allow double puppeting from
|
||||||
double_puppet_server_map:
|
double_puppet_server_map:
|
||||||
{{applications[application_id].server_name}}: {{domains.matrix.synapse}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: {{domains.matrix.synapse}}
|
||||||
# Allow using double puppeting from any server with a valid client .well-known file.
|
# Allow using double puppeting from any server with a valid client .well-known file.
|
||||||
double_puppet_allow_discovery: false
|
double_puppet_allow_discovery: false
|
||||||
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
||||||
@ -154,7 +154,7 @@ bridge:
|
|||||||
# If using this for other servers than the bridge's server,
|
# If using this for other servers than the bridge's server,
|
||||||
# you must also set the URL in the double_puppet_server_map.
|
# you must also set the URL in the double_puppet_server_map.
|
||||||
login_shared_secret_map:
|
login_shared_secret_map:
|
||||||
{{applications[application_id].server_name}}: {{applications[application_id].credentials.registration_shared_secret}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: {{applications | get_app_conf(application_id, 'credentials.registration_shared_secret', True)}}
|
||||||
# Should presence from Facebook be bridged? This doesn't use the same API as the Android app,
|
# Should presence from Facebook be bridged? This doesn't use the same API as the Android app,
|
||||||
# so it might be more suspicious to Facebook.
|
# so it might be more suspicious to Facebook.
|
||||||
presence_from_facebook: false
|
presence_from_facebook: false
|
||||||
@ -380,8 +380,8 @@ bridge:
|
|||||||
# mxid - Specific user
|
# mxid - Specific user
|
||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{applications[application_id].server_name}}": user
|
"{{applications | get_app_conf(application_id, 'server_name', True)}}": user
|
||||||
"@{{applications[application_id].users.administrator.username}}:{{applications[application_id].server_name}}": admin
|
"@{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}:{{applications | get_app_conf(application_id, 'server_name', True)}}": admin
|
||||||
|
|
||||||
relay:
|
relay:
|
||||||
# Whether relay mode should be allowed. If allowed, `!fb set-relay` can be used to turn any
|
# Whether relay mode should be allowed. If allowed, `!fb set-relay` can be used to turn any
|
||||||
|
@ -10,7 +10,7 @@ homeserver:
|
|||||||
# How often should the websocket be pinged? Pinging will be disabled if this is zero.
|
# How often should the websocket be pinged? Pinging will be disabled if this is zero.
|
||||||
ping_interval_seconds: 0
|
ping_interval_seconds: 0
|
||||||
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
||||||
domain: {{applications[application_id].server_name}}
|
domain: {{applications | get_app_conf(application_id, 'server_name', True)}}
|
||||||
|
|
||||||
# What software is the homeserver running?
|
# What software is the homeserver running?
|
||||||
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
||||||
|
@ -3,7 +3,7 @@ homeserver:
|
|||||||
# The address that this appservice can use to connect to the homeserver.
|
# The address that this appservice can use to connect to the homeserver.
|
||||||
address: http://synapse:8008
|
address: http://synapse:8008
|
||||||
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
||||||
domain: {{applications[application_id].server_name}}
|
domain: {{applications | get_app_conf(application_id, 'server_name', True)}}
|
||||||
# Whether or not to verify the SSL certificate of the homeserver.
|
# Whether or not to verify the SSL certificate of the homeserver.
|
||||||
# Only applies if address starts with https://
|
# Only applies if address starts with https://
|
||||||
verify_ssl: true
|
verify_ssl: true
|
||||||
@ -42,7 +42,7 @@ appservice:
|
|||||||
# Format examples:
|
# Format examples:
|
||||||
# SQLite: sqlite:filename.db
|
# SQLite: sqlite:filename.db
|
||||||
# Postgres: postgres://username:password@hostname/dbname
|
# Postgres: postgres://username:password@hostname/dbname
|
||||||
database: postgres://mautrix_instagram_bridge:{{applications[application_id].credentials.mautrix_instagram_bridge_database_password}}@{{database_host}}/mautrix_instagram_bridge
|
database: postgres://mautrix_instagram_bridge:{{applications | get_app_conf(application_id, 'credentials.mautrix_instagram_bridge_database_password', True)}}@{{database_host}}/mautrix_instagram_bridge
|
||||||
# Additional arguments for asyncpg.create_pool() or sqlite3.connect()
|
# Additional arguments for asyncpg.create_pool() or sqlite3.connect()
|
||||||
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
|
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
|
||||||
# https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
|
# https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
|
||||||
@ -134,7 +134,7 @@ bridge:
|
|||||||
double_puppet_allow_discovery: false
|
double_puppet_allow_discovery: false
|
||||||
# Servers to allow double puppeting from, even if double_puppet_allow_discovery is false.
|
# Servers to allow double puppeting from, even if double_puppet_allow_discovery is false.
|
||||||
double_puppet_server_map:
|
double_puppet_server_map:
|
||||||
{{applications[application_id].server_name}}: https://{{domains.matrix.synapse}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: https://{{domains.matrix.synapse}}
|
||||||
# Shared secret for https://github.com/devture/matrix-synapse-shared-secret-auth
|
# Shared secret for https://github.com/devture/matrix-synapse-shared-secret-auth
|
||||||
#
|
#
|
||||||
# If set, custom puppets will be enabled automatically for local users
|
# If set, custom puppets will be enabled automatically for local users
|
||||||
@ -143,7 +143,7 @@ bridge:
|
|||||||
# If using this for other servers than the bridge's server,
|
# If using this for other servers than the bridge's server,
|
||||||
# you must also set the URL in the double_puppet_server_map.
|
# you must also set the URL in the double_puppet_server_map.
|
||||||
login_shared_secret_map:
|
login_shared_secret_map:
|
||||||
{{applications[application_id].server_name}}: {{applications[application_id].credentials.registration_shared_secret}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: {{applications | get_app_conf(application_id, 'credentials.registration_shared_secret', True)}}
|
||||||
# Whether or not created rooms should have federation enabled.
|
# Whether or not created rooms should have federation enabled.
|
||||||
# If false, created portal rooms will never be federated.
|
# If false, created portal rooms will never be federated.
|
||||||
federate_rooms: true
|
federate_rooms: true
|
||||||
@ -359,8 +359,8 @@ bridge:
|
|||||||
# mxid - Specific user
|
# mxid - Specific user
|
||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{applications[application_id].server_name}}": user
|
"{{applications | get_app_conf(application_id, 'server_name', True)}}": user
|
||||||
"@{{applications[application_id].users.administrator.username}}:{{applications[application_id].server_name}}": admin
|
"@{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}:{{applications | get_app_conf(application_id, 'server_name', True)}}": admin
|
||||||
|
|
||||||
relay:
|
relay:
|
||||||
# Whether relay mode should be allowed. If allowed, `!ig set-relay` can be used to turn any
|
# Whether relay mode should be allowed. If allowed, `!ig set-relay` can be used to turn any
|
||||||
|
@ -3,7 +3,7 @@ homeserver:
|
|||||||
# The address that this appservice can use to connect to the homeserver.
|
# The address that this appservice can use to connect to the homeserver.
|
||||||
address: http://synapse:8008
|
address: http://synapse:8008
|
||||||
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
||||||
domain: {{applications[application_id].server_name}}
|
domain: {{applications | get_app_conf(application_id, 'server_name', True)}}
|
||||||
|
|
||||||
# What software is the homeserver running?
|
# What software is the homeserver running?
|
||||||
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
||||||
@ -43,7 +43,7 @@ appservice:
|
|||||||
# https://github.com/mattn/go-sqlite3#connection-string
|
# https://github.com/mattn/go-sqlite3#connection-string
|
||||||
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
|
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
|
||||||
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
|
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
|
||||||
uri: postgres://mautrix_signal_bridge:{{applications[application_id].credentials.mautrix_signal_bridge_database_password}}@{{database_host}}/mautrix_signal_bridge?sslmode=disable
|
uri: postgres://mautrix_signal_bridge:{{applications | get_app_conf(application_id, 'credentials.mautrix_signal_bridge_database_password', True)}}@{{database_host}}/mautrix_signal_bridge?sslmode=disable
|
||||||
# Maximum number of connections. Mostly relevant for Postgres.
|
# Maximum number of connections. Mostly relevant for Postgres.
|
||||||
max_open_conns: 20
|
max_open_conns: 20
|
||||||
max_idle_conns: 2
|
max_idle_conns: 2
|
||||||
@ -141,7 +141,7 @@ bridge:
|
|||||||
federate_rooms: true
|
federate_rooms: true
|
||||||
# Servers to always allow double puppeting from
|
# Servers to always allow double puppeting from
|
||||||
double_puppet_server_map:
|
double_puppet_server_map:
|
||||||
{{applications[application_id].server_name}}: https://{{domains.matrix.synapse}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: https://{{domains.matrix.synapse}}
|
||||||
# Allow using double puppeting from any server with a valid client .well-known file.
|
# Allow using double puppeting from any server with a valid client .well-known file.
|
||||||
double_puppet_allow_discovery: false
|
double_puppet_allow_discovery: false
|
||||||
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
||||||
@ -150,7 +150,7 @@ bridge:
|
|||||||
# instead of users having to find an access token and run `login-matrix`
|
# instead of users having to find an access token and run `login-matrix`
|
||||||
# manually.
|
# manually.
|
||||||
login_shared_secret_map:
|
login_shared_secret_map:
|
||||||
{{applications[application_id].server_name}}: {{applications[application_id].credentials.registration_shared_secret}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: {{applications | get_app_conf(application_id, 'credentials.registration_shared_secret', True)}}
|
||||||
|
|
||||||
# Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration
|
# Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration
|
||||||
# Null means there's no enforced timeout.
|
# Null means there's no enforced timeout.
|
||||||
@ -274,8 +274,8 @@ bridge:
|
|||||||
# mxid - Specific user
|
# mxid - Specific user
|
||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{applications[application_id].server_name}}": user
|
"{{applications | get_app_conf(application_id, 'server_name', True)}}": user
|
||||||
"@{{applications[application_id].users.administrator.username}}:{{applications[application_id].server_name}}": admin
|
"@{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}:{{applications | get_app_conf(application_id, 'server_name', True)}}": admin
|
||||||
|
|
||||||
# Settings for relay mode
|
# Settings for relay mode
|
||||||
relay:
|
relay:
|
||||||
|
@ -3,7 +3,7 @@ homeserver:
|
|||||||
# The address that this appservice can use to connect to the homeserver.
|
# The address that this appservice can use to connect to the homeserver.
|
||||||
address: http://synapse:8008
|
address: http://synapse:8008
|
||||||
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
||||||
domain: {{applications[application_id].server_name}}
|
domain: {{applications | get_app_conf(application_id, 'server_name', True)}}
|
||||||
|
|
||||||
# What software is the homeserver running?
|
# What software is the homeserver running?
|
||||||
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
||||||
@ -43,7 +43,7 @@ appservice:
|
|||||||
# https://github.com/mattn/go-sqlite3#connection-string
|
# https://github.com/mattn/go-sqlite3#connection-string
|
||||||
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
|
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
|
||||||
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
|
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
|
||||||
uri: postgres://mautrix_slack_bridge:{{applications[application_id].credentials.mautrix_slack_bridge_database_password}}@{{database_host}}/mautrix_slack_bridge?sslmode=disable
|
uri: postgres://mautrix_slack_bridge:{{applications | get_app_conf(application_id, 'credentials.mautrix_slack_bridge_database_password', True)}}@{{database_host}}/mautrix_slack_bridge?sslmode=disable
|
||||||
# Maximum number of connections. Mostly relevant for Postgres.
|
# Maximum number of connections. Mostly relevant for Postgres.
|
||||||
max_open_conns: 20
|
max_open_conns: 20
|
||||||
max_idle_conns: 2
|
max_idle_conns: 2
|
||||||
@ -118,7 +118,7 @@ bridge:
|
|||||||
|
|
||||||
# Servers to always allow double puppeting from
|
# Servers to always allow double puppeting from
|
||||||
double_puppet_server_map:
|
double_puppet_server_map:
|
||||||
{{applications[application_id].server_name}}: https://{{domains.matrix.synapse}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: https://{{domains.matrix.synapse}}
|
||||||
# Allow using double puppeting from any server with a valid client .well-known file.
|
# Allow using double puppeting from any server with a valid client .well-known file.
|
||||||
double_puppet_allow_discovery: false
|
double_puppet_allow_discovery: false
|
||||||
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
||||||
@ -127,7 +127,7 @@ bridge:
|
|||||||
# instead of users having to find an access token and run `login-matrix`
|
# instead of users having to find an access token and run `login-matrix`
|
||||||
# manually.
|
# manually.
|
||||||
login_shared_secret_map:
|
login_shared_secret_map:
|
||||||
{{applications[application_id].server_name}}: {{applications[application_id].credentials.registration_shared_secret}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: {{applications | get_app_conf(application_id, 'credentials.registration_shared_secret', True)}}
|
||||||
|
|
||||||
message_handling_timeout:
|
message_handling_timeout:
|
||||||
# Send an error message after this timeout, but keep waiting for the response until the deadline.
|
# Send an error message after this timeout, but keep waiting for the response until the deadline.
|
||||||
@ -278,8 +278,8 @@ bridge:
|
|||||||
# mxid - Specific user
|
# mxid - Specific user
|
||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{applications[application_id].server_name}}": user
|
"{{applications | get_app_conf(application_id, 'server_name', True)}}": user
|
||||||
"@{{applications[application_id].users.administrator.username}}:{{applications[application_id].server_name}}": admin
|
"@{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}:{{applications | get_app_conf(application_id, 'server_name', True)}}": admin
|
||||||
|
|
||||||
# Logging config. See https://github.com/tulir/zeroconfig for details.
|
# Logging config. See https://github.com/tulir/zeroconfig for details.
|
||||||
logging:
|
logging:
|
||||||
|
@ -3,7 +3,7 @@ homeserver:
|
|||||||
# The address that this appservice can use to connect to the homeserver.
|
# The address that this appservice can use to connect to the homeserver.
|
||||||
address: http://synapse:8008
|
address: http://synapse:8008
|
||||||
# The domain of the homeserver (for MXIDs, etc).
|
# The domain of the homeserver (for MXIDs, etc).
|
||||||
domain: {{applications[application_id].server_name}}
|
domain: {{applications | get_app_conf(application_id, 'server_name', True)}}
|
||||||
# Whether or not to verify the SSL certificate of the homeserver.
|
# Whether or not to verify the SSL certificate of the homeserver.
|
||||||
# Only applies if address starts with https://
|
# Only applies if address starts with https://
|
||||||
verify_ssl: true
|
verify_ssl: true
|
||||||
@ -42,7 +42,7 @@ appservice:
|
|||||||
# Format examples:
|
# Format examples:
|
||||||
# SQLite: sqlite:filename.db
|
# SQLite: sqlite:filename.db
|
||||||
# Postgres: postgres://username:password@hostname/dbname
|
# Postgres: postgres://username:password@hostname/dbname
|
||||||
database: postgres://mautrix_telegram_bridge:{{applications[application_id].credentials.mautrix_telegram_bridge_database_password}}@{{database_host}}/mautrix_telegram_bridge
|
database: postgres://mautrix_telegram_bridge:{{applications | get_app_conf(application_id, 'credentials.mautrix_telegram_bridge_database_password', True)}}@{{database_host}}/mautrix_telegram_bridge
|
||||||
# Additional arguments for asyncpg.create_pool() or sqlite3.connect()
|
# Additional arguments for asyncpg.create_pool() or sqlite3.connect()
|
||||||
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
|
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
|
||||||
# https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
|
# https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
|
||||||
@ -62,7 +62,7 @@ appservice:
|
|||||||
prefix: /public
|
prefix: /public
|
||||||
# The base URL where the public-facing endpoints are available. The prefix is not added
|
# The base URL where the public-facing endpoints are available. The prefix is not added
|
||||||
# implicitly.
|
# implicitly.
|
||||||
external: https://{{applications[application_id].server_name}}/public
|
external: https://{{applications | get_app_conf(application_id, 'server_name', True)}}/public
|
||||||
|
|
||||||
# Provisioning API part of the web server for automated portal creation and fetching information.
|
# Provisioning API part of the web server for automated portal creation and fetching information.
|
||||||
# Used by things like mautrix-manager (https://github.com/tulir/mautrix-manager).
|
# Used by things like mautrix-manager (https://github.com/tulir/mautrix-manager).
|
||||||
@ -198,7 +198,7 @@ bridge:
|
|||||||
sync_direct_chat_list: false
|
sync_direct_chat_list: false
|
||||||
# Servers to always allow double puppeting from
|
# Servers to always allow double puppeting from
|
||||||
double_puppet_server_map:
|
double_puppet_server_map:
|
||||||
{{applications[application_id].server_name}}: https://{{domains.matrix.synapse}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: https://{{domains.matrix.synapse}}
|
||||||
# Allow using double puppeting from any server with a valid client .well-known file.
|
# Allow using double puppeting from any server with a valid client .well-known file.
|
||||||
double_puppet_allow_discovery: false
|
double_puppet_allow_discovery: false
|
||||||
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
||||||
@ -209,7 +209,7 @@ bridge:
|
|||||||
# If using this for other servers than the bridge's server,
|
# If using this for other servers than the bridge's server,
|
||||||
# you must also set the URL in the double_puppet_server_map.
|
# you must also set the URL in the double_puppet_server_map.
|
||||||
login_shared_secret_map:
|
login_shared_secret_map:
|
||||||
{{applications[application_id].server_name}}: {{applications[application_id].credentials.registration_shared_secret}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: {{applications | get_app_conf(application_id, 'credentials.registration_shared_secret', True)}}
|
||||||
# Set to false to disable link previews in messages sent to Telegram.
|
# Set to false to disable link previews in messages sent to Telegram.
|
||||||
telegram_link_preview: true
|
telegram_link_preview: true
|
||||||
# Whether or not the !tg join command should do a HTTP request
|
# Whether or not the !tg join command should do a HTTP request
|
||||||
@ -530,9 +530,9 @@ bridge:
|
|||||||
# mxid - Specific user
|
# mxid - Specific user
|
||||||
permissions:
|
permissions:
|
||||||
"*": "relaybot"
|
"*": "relaybot"
|
||||||
"public.{{applications[application_id].server_name}}": "user"
|
"public.{{applications | get_app_conf(application_id, 'server_name', True)}}": "user"
|
||||||
"{{applications[application_id].server_name}}": "full"
|
"{{applications | get_app_conf(application_id, 'server_name', True)}}": "full"
|
||||||
"@{{applications[application_id].users.administrator.username}}:{{applications[application_id].server_name}}": "admin"
|
"@{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}:{{applications | get_app_conf(application_id, 'server_name', True)}}": "admin"
|
||||||
|
|
||||||
# Options related to the message relay Telegram bot.
|
# Options related to the message relay Telegram bot.
|
||||||
relaybot:
|
relaybot:
|
||||||
@ -564,8 +564,8 @@ bridge:
|
|||||||
# Telegram config
|
# Telegram config
|
||||||
telegram:
|
telegram:
|
||||||
# Get your own API keys at https://my.telegram.org/apps
|
# Get your own API keys at https://my.telegram.org/apps
|
||||||
api_id: {{applications[application_id].credentials.mautrix_telgegram_bridge_api_id}}
|
api_id: {{applications | get_app_conf(application_id, 'credentials.mautrix_telgegram_bridge_api_id', True)}}
|
||||||
api_hash: {{applications[application_id].credentials.mautrix_telgegram_bridge_api_pin}}
|
api_hash: {{applications | get_app_conf(application_id, 'credentials.mautrix_telgegram_bridge_api_pin', True)}}
|
||||||
# (Optional) Create your own bot at https://t.me/BotFather
|
# (Optional) Create your own bot at https://t.me/BotFather
|
||||||
bot_token: disabled
|
bot_token: disabled
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ homeserver:
|
|||||||
# The address that this appservice can use to connect to the homeserver.
|
# The address that this appservice can use to connect to the homeserver.
|
||||||
address: http://synapse:8008
|
address: http://synapse:8008
|
||||||
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
# The domain of the homeserver (also known as server_name, used for MXIDs, etc).
|
||||||
domain: {{applications[application_id].server_name}}
|
domain: {{applications | get_app_conf(application_id, 'server_name', True)}}
|
||||||
|
|
||||||
# What software is the homeserver running?
|
# What software is the homeserver running?
|
||||||
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
# Standard Matrix homeservers like Synapse, Dendrite and Conduit should just use "standard" here.
|
||||||
@ -42,7 +42,7 @@ appservice:
|
|||||||
# https://github.com/mattn/go-sqlite3#connection-string
|
# https://github.com/mattn/go-sqlite3#connection-string
|
||||||
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
|
# Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable
|
||||||
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
|
# To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql
|
||||||
uri: postgres://mautrix_whatsapp_bridge:{{applications[application_id].credentials.mautrix_whatsapp_bridge_database_password}}@{{database_host}}/mautrix_whatsapp_bridge?sslmode=disable
|
uri: postgres://mautrix_whatsapp_bridge:{{applications | get_app_conf(application_id, 'credentials.mautrix_whatsapp_bridge_database_password', True)}}@{{database_host}}/mautrix_whatsapp_bridge?sslmode=disable
|
||||||
# Maximum number of connections. Mostly relevant for Postgres.
|
# Maximum number of connections. Mostly relevant for Postgres.
|
||||||
max_open_conns: 20
|
max_open_conns: 20
|
||||||
max_idle_conns: 2
|
max_idle_conns: 2
|
||||||
@ -236,7 +236,7 @@ bridge:
|
|||||||
force_active_delivery_receipts: false
|
force_active_delivery_receipts: false
|
||||||
# Servers to always allow double puppeting from
|
# Servers to always allow double puppeting from
|
||||||
double_puppet_server_map:
|
double_puppet_server_map:
|
||||||
{{applications[application_id].server_name}}: https://{{domains.matrix.synapse}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: https://{{domains.matrix.synapse}}
|
||||||
# Allow using double puppeting from any server with a valid client .well-known file.
|
# Allow using double puppeting from any server with a valid client .well-known file.
|
||||||
double_puppet_allow_discovery: false
|
double_puppet_allow_discovery: false
|
||||||
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
# Shared secrets for https://github.com/devture/matrix-synapse-shared-secret-auth
|
||||||
@ -245,7 +245,7 @@ bridge:
|
|||||||
# instead of users having to find an access token and run `login-matrix`
|
# instead of users having to find an access token and run `login-matrix`
|
||||||
# manually.
|
# manually.
|
||||||
login_shared_secret_map:
|
login_shared_secret_map:
|
||||||
{{applications[application_id].server_name}}: {{applications[application_id].credentials.registration_shared_secret}}
|
{{applications | get_app_conf(application_id, 'server_name', True)}}: {{applications | get_app_conf(application_id, 'credentials.registration_shared_secret', True)}}
|
||||||
# Whether to explicitly set the avatar and room name for private chat portal rooms.
|
# Whether to explicitly set the avatar and room name for private chat portal rooms.
|
||||||
# If set to `default`, this will be enabled in encrypted rooms and disabled in unencrypted rooms.
|
# If set to `default`, this will be enabled in encrypted rooms and disabled in unencrypted rooms.
|
||||||
# If set to `always`, all DM rooms will have explicit names and avatars set.
|
# If set to `always`, all DM rooms will have explicit names and avatars set.
|
||||||
@ -434,8 +434,8 @@ bridge:
|
|||||||
# mxid - Specific user
|
# mxid - Specific user
|
||||||
permissions:
|
permissions:
|
||||||
"*": relay
|
"*": relay
|
||||||
"{{applications[application_id].server_name}}": user
|
"{{applications | get_app_conf(application_id, 'server_name', True)}}": user
|
||||||
"@{{applications[application_id].users.administrator.username}}:{{applications[application_id].server_name}}": admin
|
"@{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}:{{applications | get_app_conf(application_id, 'server_name', True)}}": admin
|
||||||
|
|
||||||
# Settings for relay mode
|
# Settings for relay mode
|
||||||
relay:
|
relay:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
server_name: "{{applications[application_id].server_name}}"
|
server_name: "{{applications | get_app_conf(application_id, 'server_name', True)}}"
|
||||||
pid_file: /data/homeserver.pid
|
pid_file: /data/homeserver.pid
|
||||||
listeners:
|
listeners:
|
||||||
- port: 8008
|
- port: 8008
|
||||||
@ -19,10 +19,10 @@ database:
|
|||||||
cp_max: 10
|
cp_max: 10
|
||||||
log_config: "/data/{{domains.matrix.synapse}}.log.config"
|
log_config: "/data/{{domains.matrix.synapse}}.log.config"
|
||||||
media_store_path: "/data/media_store"
|
media_store_path: "/data/media_store"
|
||||||
registration_shared_secret: "{{applications[application_id].credentials.registration_shared_secret}}"
|
registration_shared_secret: "{{applications | get_app_conf(application_id, 'credentials.registration_shared_secret', True)}}"
|
||||||
report_stats: true
|
report_stats: true
|
||||||
macaroon_secret_key: "{{applications[application_id].credentials.macaroon_secret_key}}"
|
macaroon_secret_key: "{{applications | get_app_conf(application_id, 'credentials.macaroon_secret_key', True)}}"
|
||||||
form_secret: "{{applications[application_id].credentials.form_secret}}"
|
form_secret: "{{applications | get_app_conf(application_id, 'credentials.form_secret', True)}}"
|
||||||
signing_key_path: "/data/{{domains.matrix.synapse}}.signing.key"
|
signing_key_path: "/data/{{domains.matrix.synapse}}.signing.key"
|
||||||
web_client_location: "{{ web_protocol }}://{{domains.matrix.element}}"
|
web_client_location: "{{ web_protocol }}://{{domains.matrix.element}}"
|
||||||
public_baseurl: "{{ web_protocol }}://{{domains.matrix.synapse}}"
|
public_baseurl: "{{ web_protocol }}://{{domains.matrix.synapse}}"
|
||||||
|
@ -1,30 +1,30 @@
|
|||||||
bridges_configuration:
|
bridges_configuration:
|
||||||
- database_password: "{{ applications[application_id].credentials.mautrix_whatsapp_bridge_database_password }}"
|
- database_password: "{{ applications | get_app_conf(application_id, 'credentials.mautrix_whatsapp_bridge_database_password', True) }}"
|
||||||
database_username: "mautrix_whatsapp_bridge"
|
database_username: "mautrix_whatsapp_bridge"
|
||||||
database_name: "mautrix_whatsapp_bridge"
|
database_name: "mautrix_whatsapp_bridge"
|
||||||
bridge_name: "whatsapp"
|
bridge_name: "whatsapp"
|
||||||
|
|
||||||
- database_password: "{{ applications[application_id].credentials.mautrix_telegram_bridge_database_password }}"
|
- database_password: "{{ applications | get_app_conf(application_id, 'credentials.mautrix_telegram_bridge_database_password', True) }}"
|
||||||
database_username: "mautrix_telegram_bridge"
|
database_username: "mautrix_telegram_bridge"
|
||||||
database_name: "mautrix_telegram_bridge"
|
database_name: "mautrix_telegram_bridge"
|
||||||
bridge_name: "telegram"
|
bridge_name: "telegram"
|
||||||
|
|
||||||
- database_password: "{{ applications[application_id].credentials.mautrix_signal_bridge_database_password }}"
|
- database_password: "{{ applications | get_app_conf(application_id, 'credentials.mautrix_signal_bridge_database_password', True) }}"
|
||||||
database_username: "mautrix_signal_bridge"
|
database_username: "mautrix_signal_bridge"
|
||||||
database_name: "mautrix_signal_bridge"
|
database_name: "mautrix_signal_bridge"
|
||||||
bridge_name: "signal"
|
bridge_name: "signal"
|
||||||
|
|
||||||
- database_password: "{{ applications[application_id].credentials.mautrix_slack_bridge_database_password }}"
|
- database_password: "{{ applications | get_app_conf(application_id, 'credentials.mautrix_slack_bridge_database_password', True) }}"
|
||||||
database_username: "mautrix_slack_bridge"
|
database_username: "mautrix_slack_bridge"
|
||||||
database_name: "mautrix_slack_bridge"
|
database_name: "mautrix_slack_bridge"
|
||||||
bridge_name: "slack"
|
bridge_name: "slack"
|
||||||
|
|
||||||
- database_password: "{{ applications[application_id].credentials.mautrix_facebook_bridge_database_password }}"
|
- database_password: "{{ applications | get_app_conf(application_id, 'credentials.mautrix_facebook_bridge_database_password', True) }}"
|
||||||
database_username: "mautrix_facebook_bridge"
|
database_username: "mautrix_facebook_bridge"
|
||||||
database_name: "mautrix_facebook_bridge"
|
database_name: "mautrix_facebook_bridge"
|
||||||
bridge_name: "facebook"
|
bridge_name: "facebook"
|
||||||
|
|
||||||
- database_password: "{{ applications[application_id].credentials.mautrix_instagram_bridge_database_password }}"
|
- database_password: "{{ applications | get_app_conf(application_id, 'credentials.mautrix_instagram_bridge_database_password', True) }}"
|
||||||
database_username: "mautrix_instagram_bridge"
|
database_username: "mautrix_instagram_bridge"
|
||||||
database_name: "mautrix_instagram_bridge"
|
database_name: "mautrix_instagram_bridge"
|
||||||
bridge_name: "instagram"
|
bridge_name: "instagram"
|
@ -1,6 +1,6 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
application:
|
application:
|
||||||
image: "{{ applications[application_id].images[application_id] }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.' ~ application_id, True) }}"
|
||||||
volumes:
|
volumes:
|
||||||
- uploads:/var/lib/mobilizon/uploads
|
- uploads:/var/lib/mobilizon/uploads
|
||||||
- {{ mobilizon_host_conf_exs_file }}:/etc/mobilizon/config.exs:ro
|
- {{ mobilizon_host_conf_exs_file }}:/etc/mobilizon/config.exs:ro
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
######################################################
|
######################################################
|
||||||
|
|
||||||
# The name for your instance
|
# The name for your instance
|
||||||
MOBILIZON_INSTANCE_NAME={{ applications[application_id].titel }}
|
MOBILIZON_INSTANCE_NAME={{ applications | get_app_conf(application_id, 'titel', True) }}
|
||||||
|
|
||||||
# Your domain
|
# Your domain
|
||||||
MOBILIZON_INSTANCE_HOST={{ domains | get_domain(application_id) }}
|
MOBILIZON_INSTANCE_HOST={{ domains | get_domain(application_id) }}
|
||||||
@ -67,12 +67,12 @@ MOBILIZON_DATABASE_PORT={{ database_port }}
|
|||||||
# A secret key used as a base to generate secrets for encrypting and signing data.
|
# A secret key used as a base to generate secrets for encrypting and signing data.
|
||||||
# Make sure it's long enough (~64 characters should be fine)
|
# Make sure it's long enough (~64 characters should be fine)
|
||||||
# You can run `openssl rand -base64 48` to generate such a secret
|
# You can run `openssl rand -base64 48` to generate such a secret
|
||||||
MOBILIZON_INSTANCE_SECRET_KEY_BASE={{ applications[application_id].credentials.secret_key_base }}
|
MOBILIZON_INSTANCE_SECRET_KEY_BASE={{ applications | get_app_conf(application_id, 'credentials.secret_key_base', True) }}
|
||||||
|
|
||||||
# A secret key used as a base to generate JWT tokens
|
# A secret key used as a base to generate JWT tokens
|
||||||
# Make sure it's long enough (~64 characters should be fine)
|
# Make sure it's long enough (~64 characters should be fine)
|
||||||
# You can run `openssl rand -base64 48` to generate such a secret
|
# You can run `openssl rand -base64 48` to generate such a secret
|
||||||
MOBILIZON_INSTANCE_SECRET_KEY={{ applications[application_id].credentials.secret_key }}
|
MOBILIZON_INSTANCE_SECRET_KEY={{ applications | get_app_conf(application_id, 'credentials.secret_key', True) }}
|
||||||
|
|
||||||
|
|
||||||
######################################################
|
######################################################
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
FROM bitnami/moodle:{{ applications[application_id].version }}
|
FROM bitnami/moodle:{{ applications | get_app_conf(application_id, 'version', True) }}
|
||||||
|
|
||||||
{% if applications | is_feature_enabled('oidc', application_id) %}
|
{% if applications | is_feature_enabled('oidc', application_id) %}
|
||||||
RUN install_packages unzip curl jq \
|
RUN install_packages unzip curl jq \
|
||||||
&& VERSION=$(curl -s https://api.github.com/repos/microsoft/moodle-auth_oidc/tags \
|
&& VERSION=$(curl -s https://api.github.com/repos/microsoft/moodle-auth_oidc/tags \
|
||||||
| jq -r '.[].name' \
|
| jq -r '.[].name' \
|
||||||
| grep v{{ applications[application_id].version }} \
|
| grep v{{ applications | get_app_conf(application_id, 'version', True) }} \
|
||||||
| sort -Vr \
|
| sort -Vr \
|
||||||
| head -n1) \
|
| head -n1) \
|
||||||
&& echo "Using version $VERSION" \
|
&& echo "Using version $VERSION" \
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
|
|
||||||
# General
|
# General
|
||||||
MOODLE_SITE_NAME="{{applications[application_id].site_titel}}"
|
MOODLE_SITE_NAME="{{applications | get_app_conf(application_id, 'site_titel', True)}}"
|
||||||
MOODLE_HOST="{{ domains | get_domain(application_id) }}"
|
MOODLE_HOST="{{ domains | get_domain(application_id) }}"
|
||||||
MOODLE_SSLPROXY=yes
|
MOODLE_SSLPROXY=yes
|
||||||
MOODLE_REVERSE_PROXY=yes
|
MOODLE_REVERSE_PROXY=yes
|
||||||
MOODLE_USERNAME={{applications[application_id].users.administrator.username}}
|
MOODLE_USERNAME={{applications | get_app_conf(application_id, 'users.administrator.username', True)}}
|
||||||
MOODLE_PASSWORD={{applications[application_id].credentials.user_password}}
|
MOODLE_PASSWORD={{applications | get_app_conf(application_id, 'credentials.user_password', True)}}
|
||||||
MOODLE_EMAIL={{applications[application_id].users.administrator.email}}
|
MOODLE_EMAIL={{applications | get_app_conf(application_id, 'users.administrator.email', True)}}
|
||||||
BITNAMI_DEBUG={% if enable_debug | bool %}true{% else %}false{% endif %}
|
BITNAMI_DEBUG={% if enable_debug | bool %}true{% else %}false{% endif %}
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
- name: Setup Nextcloud Plugins
|
- name: Setup Nextcloud Plugins
|
||||||
include_tasks: plugin.yml
|
include_tasks: plugin.yml
|
||||||
loop: "{{applications[application_id].plugins | dict2items }}"
|
loop: "{{applications | get_app_conf(application_id, 'plugins', True) | dict2items }}"
|
||||||
loop_control:
|
loop_control:
|
||||||
loop_var: plugin_item
|
loop_var: plugin_item
|
||||||
vars:
|
vars:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
# Implementing OICD configuration
|
# Implementing OICD configuration
|
||||||
|
|
||||||
{% if applications[application_id].oidc.flavor == "oidc_login" %}
|
{% if applications | get_app_conf(application_id, 'oidc.flavor', True) == "oidc_login" %}
|
||||||
|
|
||||||
# Check out: https://github.com/pulsejet/nextcloud-oidc-login
|
# Check out: https://github.com/pulsejet/nextcloud-oidc-login
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ return array (
|
|||||||
//
|
//
|
||||||
// NOTE: If you want to allow NextCloud to manage quotas, omit this option. Do not set it to
|
// NOTE: If you want to allow NextCloud to manage quotas, omit this option. Do not set it to
|
||||||
// zero or -1 or ''.
|
// zero or -1 or ''.
|
||||||
'oidc_login_default_quota' => '{{applications[application_id].default_quota}}',
|
'oidc_login_default_quota' => '{{applications | get_app_conf(application_id, 'default_quota', True)}}',
|
||||||
|
|
||||||
// Login button text
|
// Login button text
|
||||||
'oidc_login_button_text' => '{{oidc.button_text}}',
|
'oidc_login_button_text' => '{{oidc.button_text}}',
|
||||||
|
@ -8,9 +8,9 @@ MYSQL_PASSWORD= "{{database_password}}"
|
|||||||
MYSQL_HOST= "{{database_host}}:{{database_port}}"
|
MYSQL_HOST= "{{database_host}}:{{database_port}}"
|
||||||
|
|
||||||
# PHP
|
# PHP
|
||||||
PHP_MEMORY_LIMIT= "{{applications[application_id].performance.php.memory_limit}}"
|
PHP_MEMORY_LIMIT= "{{applications | get_app_conf(application_id, 'performance.php.memory_limit', True)}}"
|
||||||
PHP_UPLOAD_LIMIT= "{{applications[application_id].performance.php.upload_limit}}"
|
PHP_UPLOAD_LIMIT= "{{applications | get_app_conf(application_id, 'performance.php.upload_limit', True)}}"
|
||||||
PHP_OPCACHE_MEMORY_CONSUMPTION= "{{applications[application_id].performance.php.opcache_memory_consumption}}"
|
PHP_OPCACHE_MEMORY_CONSUMPTION= "{{applications | get_app_conf(application_id, 'performance.php.opcache_memory_consumption', True)}}"
|
||||||
|
|
||||||
# Email Configuration
|
# Email Configuration
|
||||||
SMTP_HOST= {{system_email.host}}
|
SMTP_HOST= {{system_email.host}}
|
||||||
@ -24,8 +24,8 @@ MAIL_FROM_ADDRESS= "{{ users['no-reply'].username }}"
|
|||||||
MAIL_DOMAIN= "{{system_email.domain}}"
|
MAIL_DOMAIN= "{{system_email.domain}}"
|
||||||
|
|
||||||
# Initial Admin Data
|
# Initial Admin Data
|
||||||
NEXTCLOUD_ADMIN_USER= "{{applications[application_id].users.administrator.username}}"
|
NEXTCLOUD_ADMIN_USER= "{{applications | get_app_conf(application_id, 'users.administrator.username', True)}}"
|
||||||
NEXTCLOUD_ADMIN_PASSWORD= "{{applications[application_id].credentials.administrator_password}}"
|
NEXTCLOUD_ADMIN_PASSWORD= "{{applications | get_app_conf(application_id, 'credentials.administrator_password', True)}}"
|
||||||
|
|
||||||
# Security
|
# Security
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ plugin_configuration:
|
|||||||
appid: "user_ldap"
|
appid: "user_ldap"
|
||||||
configkey: "s01ldap_userlist_filter"
|
configkey: "s01ldap_userlist_filter"
|
||||||
configvalue: |-
|
configvalue: |-
|
||||||
{% if applications[application_id].plugins.user_ldap.user_directory.enabled %}
|
{% if applications | get_app_conf(application_id, 'plugins', True).user_ldap.user_directory.enabled %}
|
||||||
{{ ldap.filters.users.all }}
|
{{ ldap.filters.users.all }}
|
||||||
{% else %}
|
{% else %}
|
||||||
()
|
()
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
nextcloud_system_config:
|
nextcloud_system_config:
|
||||||
- parameter: "hide_login_form"
|
- parameter: "hide_login_form"
|
||||||
type: "boolean"
|
type: "boolean"
|
||||||
value: "{{ (not applications[application_id].legacy_login_mask.enabled) | lower }}"
|
value: "{{ (not applications | get_app_conf(application_id, 'legacy_login_mask.enabled', True)) | lower }}"
|
||||||
|
|
||||||
- parameter: "auth.webauthn.enabled"
|
- parameter: "auth.webauthn.enabled"
|
||||||
type: "boolean"
|
type: "boolean"
|
||||||
value: "{{ applications[application_id].legacy_login_mask.enabled | lower }}"
|
value: "{{ applications | get_app_conf(application_id, 'legacy_login_mask.enabled', True) | lower }}"
|
||||||
|
|
||||||
- parameter: "maintenance_window_start"
|
- parameter: "maintenance_window_start"
|
||||||
type: "integer"
|
type: "integer"
|
||||||
|
@ -35,4 +35,4 @@
|
|||||||
|
|
||||||
- name: Setup LDAP
|
- name: Setup LDAP
|
||||||
include_tasks: ldap.yml
|
include_tasks: ldap.yml
|
||||||
when: applications[application_id].features.ldap | bool
|
when: applications | get_app_conf(application_id, 'features.ldap', True) | bool
|
@ -21,8 +21,8 @@ openproject_rails_settings:
|
|||||||
openproject_filters:
|
openproject_filters:
|
||||||
administrators: >-
|
administrators: >-
|
||||||
{{ '(memberOf=cn=openproject-admins,' ~ ldap.dn.ou.roles ~ ')'
|
{{ '(memberOf=cn=openproject-admins,' ~ ldap.dn.ou.roles ~ ')'
|
||||||
if applications[application_id].ldap.filters.administrators else '' }}
|
if applications | get_app_conf(application_id, 'ldap.filters.administrators', True) else '' }}
|
||||||
|
|
||||||
users: >-
|
users: >-
|
||||||
{{ '(memberOf=cn=openproject-users,' ~ ldap.dn.ou.roles ~ ')'
|
{{ '(memberOf=cn=openproject-users,' ~ ldap.dn.ou.roles ~ ')'
|
||||||
if applications[application_id].ldap.filters.users else '' }}
|
if applications | get_app_conf(application_id, 'ldap.filters.users', True) else '' }}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
{% set container_port = 9000 %}
|
{% set container_port = 9000 %}
|
||||||
image: chocobozzz/peertube:production-{{ applications[application_id].version }}
|
image: chocobozzz/peertube:production-{{ applications | get_app_conf(application_id, 'version', True) }}
|
||||||
container_name: {{ container_name }}
|
container_name: {{ container_name }}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
ports:
|
ports:
|
||||||
|
@ -11,7 +11,7 @@ PEERTUBE_DB_HOSTNAME={{database_host}}
|
|||||||
PEERTUBE_WEBSERVER_HOSTNAME={{domains | get_domain(application_id)}}
|
PEERTUBE_WEBSERVER_HOSTNAME={{domains | get_domain(application_id)}}
|
||||||
PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback"]
|
PEERTUBE_TRUST_PROXY=["127.0.0.1", "loopback"]
|
||||||
|
|
||||||
PEERTUBE_SECRET={{applications[application_id].credentials.secret}}
|
PEERTUBE_SECRET={{applications | get_app_conf(application_id, 'credentials.secret', True)}}
|
||||||
|
|
||||||
# E-mail configuration
|
# E-mail configuration
|
||||||
PEERTUBE_SMTP_USERNAME={{ users['no-reply'].email }}
|
PEERTUBE_SMTP_USERNAME={{ users['no-reply'].email }}
|
||||||
|
@ -5,4 +5,4 @@
|
|||||||
|
|
||||||
- name: "configure pgadmin servers"
|
- name: "configure pgadmin servers"
|
||||||
include_tasks: configuration.yml
|
include_tasks: configuration.yml
|
||||||
when: applications[application_id].server_mode | bool
|
when: applications | get_app_conf(application_id, 'server_mode', True) | bool
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
{% set container_port = 80 %}
|
{% set container_port = 80 %}
|
||||||
image: dpage/pgadmin4:{{applications[application_id].version}}
|
image: dpage/pgadmin4:{{applications | get_app_conf(application_id, 'version', True)}}
|
||||||
container_name: pgadmin
|
container_name: pgadmin
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
ports:
|
ports:
|
||||||
@ -12,7 +12,7 @@
|
|||||||
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
{% include 'roles/docker-container/templates/healthcheck/wget.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- "data:/var/lib/pgadmin"
|
- "data:/var/lib/pgadmin"
|
||||||
{% if applications[application_id].server_mode | bool %}
|
{% if applications | get_app_conf(application_id, 'server_mode', True) | bool %}
|
||||||
- "{{ pgadmin_host_server_file }}:{{ pgadmin_docker_server_file }}"
|
- "{{ pgadmin_host_server_file }}:{{ pgadmin_docker_server_file }}"
|
||||||
- "{{ pgadmin_host_password_file }}:{{ pgadmin_docker_password_file }}"
|
- "{{ pgadmin_host_password_file }}:{{ pgadmin_docker_password_file }}"
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -4,12 +4,12 @@
|
|||||||
PGADMIN_DISABLE_POSTFIX=True
|
PGADMIN_DISABLE_POSTFIX=True
|
||||||
|
|
||||||
# Default login email for server mode
|
# Default login email for server mode
|
||||||
PGADMIN_DEFAULT_EMAIL={{ applications[application_id].users.administrator.email }}
|
PGADMIN_DEFAULT_EMAIL={{ applications | get_app_conf(application_id, 'users.administrator.email', True) }}
|
||||||
|
|
||||||
# Default login password for server mode
|
# Default login password for server mode
|
||||||
PGADMIN_DEFAULT_PASSWORD={{ applications[application_id].credentials.administrator_password }}
|
PGADMIN_DEFAULT_PASSWORD={{ applications | get_app_conf(application_id, 'credentials.administrator_password', True) }}
|
||||||
|
|
||||||
{% if applications[application_id].server_mode | bool %}
|
{% if applications | get_app_conf(application_id, 'server_mode', True) | bool %}
|
||||||
# Load server connection settings from this JSON file
|
# Load server connection settings from this JSON file
|
||||||
PGADMIN_SERVER_JSON_FILE={{ pgadmin_docker_server_file }}
|
PGADMIN_SERVER_JSON_FILE={{ pgadmin_docker_server_file }}
|
||||||
|
|
||||||
@ -17,5 +17,5 @@ PGADMIN_SERVER_JSON_FILE={{ pgadmin_docker_server_file }}
|
|||||||
PGADMIN_CONFIG_SERVER_MODE=False
|
PGADMIN_CONFIG_SERVER_MODE=False
|
||||||
|
|
||||||
# Disable master password prompt for stored credentials
|
# Disable master password prompt for stored credentials
|
||||||
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED={{ applications[application_id].master_password_required | capitalize }}
|
PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED={{ applications | get_app_conf(application_id, 'master_password_required', True) | capitalize }}
|
||||||
{% endif %}
|
{% endif %}
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
container_name: {{ application_id }}
|
container_name: {{ application_id }}
|
||||||
image: leenooks/phpldapadmin:{{applications[application_id].version}}
|
image: leenooks/phpldapadmin:{{applications | get_app_conf(application_id, 'version', True)}}
|
||||||
ports:
|
ports:
|
||||||
- 127.0.0.1:{{ports.localhost.http[application_id]}}:8080
|
- 127.0.0.1:{{ports.localhost.http[application_id]}}:8080
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Configuration @see https://hub.docker.com/_/phpmyadmin
|
# Configuration @see https://hub.docker.com/_/phpmyadmin
|
||||||
|
|
||||||
PMA_HOST={{applications['svc-db-mariadb'].hostname}}
|
PMA_HOST={{applications['svc-db-mariadb'].hostname}}
|
||||||
{% if applications[application_id].autologin | bool %}
|
{% if applications | get_app_conf(application_id, 'autologin', True) | bool %}
|
||||||
PMA_USER= root
|
PMA_USER= root
|
||||||
PMA_PASSWORD= "{{applications['svc-db-mariadb'].credentials.root_password}}"
|
PMA_PASSWORD= "{{applications['svc-db-mariadb'].credentials.root_password}}"
|
||||||
{% endif %}
|
{% endif %}
|
@ -1,7 +1,7 @@
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: "{{ applications[application_id].images.pixelfed }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.pixelfed', True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- "data:/var/www/storage"
|
- "data:/var/www/storage"
|
||||||
@ -11,7 +11,7 @@
|
|||||||
{% include 'roles/docker-container/templates/depends_on/dmbs_excl.yml.j2' %}
|
{% include 'roles/docker-container/templates/depends_on/dmbs_excl.yml.j2' %}
|
||||||
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
{% include 'roles/docker-container/templates/networks.yml.j2' %}
|
||||||
worker:
|
worker:
|
||||||
image: "{{ applications[application_id].images.pixelfed }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.pixelfed', True) }}"
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- "data:/var/www/storage"
|
- "data:/var/www/storage"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
## Crypto
|
## Crypto
|
||||||
APP_KEY={{applications[application_id].credentials.app_key}}
|
APP_KEY={{applications | get_app_conf(application_id, 'credentials.app_key', True)}}
|
||||||
|
|
||||||
## General Settings
|
## General Settings
|
||||||
APP_NAME="{{applications.pixelfed.titel}}"
|
APP_NAME="{{applications.pixelfed.titel}}"
|
||||||
|
@ -22,7 +22,7 @@ class LookupModule(LookupBase):
|
|||||||
- Retrieves the icon class from galaxy_info.logo.class
|
- Retrieves the icon class from galaxy_info.logo.class
|
||||||
- Retrieves the tags from galaxy_info.galaxy_tags
|
- Retrieves the tags from galaxy_info.galaxy_tags
|
||||||
- Builds the URL using the 'domains' variable
|
- Builds the URL using the 'domains' variable
|
||||||
- Sets the iframe flag from applications[application_id].features.port-ui-desktop
|
- Sets the iframe flag from applications | get_app_conf(application_id, 'features.port-ui-desktop', True)
|
||||||
|
|
||||||
Only cards whose application_id is included in the variable group_names are returned.
|
Only cards whose application_id is included in the variable group_names are returned.
|
||||||
"""
|
"""
|
||||||
|
@ -4,7 +4,7 @@ services:
|
|||||||
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
{% include 'roles/docker-compose/templates/base.yml.j2' %}
|
||||||
|
|
||||||
application:
|
application:
|
||||||
image: "{{ applications[application_id].images[application_id] }}"
|
image: "{{ applications | get_app_conf(application_id, 'images.' ~ application_id, True) }}"
|
||||||
volumes: []
|
volumes: []
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:{{ container_port }}"
|
- "127.0.0.1:{{ ports.localhost.http[application_id] }}:{{ container_port }}"
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
docker-compose exec -T \
|
docker-compose exec -T \
|
||||||
-u www-data \
|
-u www-data \
|
||||||
-e XDG_CONFIG_HOME=/tmp \
|
-e XDG_CONFIG_HOME=/tmp \
|
||||||
-e APP_KEY='{{ applications[application_id].credentials.app_key }}' \
|
-e APP_KEY='{{ applications | get_app_conf(application_id, 'credentials.app_key', True) }}' \
|
||||||
application \
|
application \
|
||||||
sh -c 'echo "SHELL sees APP_KEY=$APP_KEY"'
|
sh -c 'echo "SHELL sees APP_KEY=$APP_KEY"'
|
||||||
args:
|
args:
|
||||||
@ -27,7 +27,7 @@
|
|||||||
shell: |
|
shell: |
|
||||||
docker-compose exec -T -u www-data \
|
docker-compose exec -T -u www-data \
|
||||||
-e XDG_CONFIG_HOME=/tmp \
|
-e XDG_CONFIG_HOME=/tmp \
|
||||||
-e APP_KEY="{{ applications[application_id].credentials.app_key }}" \
|
-e APP_KEY="{{ applications | get_app_conf(application_id, 'credentials.app_key', True) }}" \
|
||||||
application \
|
application \
|
||||||
php artisan tinker --execute="echo 'CONFIG app.key: ' . config('app.key') . PHP_EOL;"
|
php artisan tinker --execute="echo 'CONFIG app.key: ' . config('app.key') . PHP_EOL;"
|
||||||
args:
|
args:
|
||||||
@ -36,7 +36,7 @@
|
|||||||
- name: "Set all LDAP settings via Laravel Setting model (inside container as www-data)"
|
- name: "Set all LDAP settings via Laravel Setting model (inside container as www-data)"
|
||||||
shell: |
|
shell: |
|
||||||
docker-compose exec -T \
|
docker-compose exec -T \
|
||||||
-e APP_KEY='{{ applications[application_id].credentials.app_key }}' \
|
-e APP_KEY='{{ applications | get_app_conf(application_id, 'credentials.app_key', True) }}' \
|
||||||
-e XDG_CONFIG_HOME=/tmp \
|
-e XDG_CONFIG_HOME=/tmp \
|
||||||
-u www-data application \
|
-u www-data application \
|
||||||
sh -c 'php artisan tinker << "EOF"
|
sh -c 'php artisan tinker << "EOF"
|
||||||
@ -75,7 +75,7 @@
|
|||||||
shell: |
|
shell: |
|
||||||
docker-compose exec -T \
|
docker-compose exec -T \
|
||||||
-u www-data \
|
-u www-data \
|
||||||
-e APP_KEY="{{ applications[application_id].credentials.app_key }}" \
|
-e APP_KEY="{{ applications | get_app_conf(application_id, 'credentials.app_key', True) }}" \
|
||||||
-e XDG_CONFIG_HOME=/tmp \
|
-e XDG_CONFIG_HOME=/tmp \
|
||||||
application \
|
application \
|
||||||
php artisan tinker --execute="
|
php artisan tinker --execute="
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
application:
|
application:
|
||||||
{% set container_port = 80 %}
|
{% set container_port = 80 %}
|
||||||
image: grokability/snipe-it:{{applications[application_id].version}}
|
image: grokability/snipe-it:{{applications | get_app_conf(application_id, 'version', True)}}
|
||||||
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
{% include 'roles/docker-container/templates/base.yml.j2' %}
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/lib/snipeit
|
- data:/var/lib/snipeit
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# --------------------------------------------
|
# --------------------------------------------
|
||||||
APP_ENV={{ CYMAIS_ENVIRONMENT | lower }}
|
APP_ENV={{ CYMAIS_ENVIRONMENT | lower }}
|
||||||
APP_DEBUG={{enable_debug | string | lower }}
|
APP_DEBUG={{enable_debug | string | lower }}
|
||||||
APP_KEY={{ applications[application_id].credentials.app_key}}
|
APP_KEY={{ applications | get_app_conf(application_id, 'credentials.app_key', True)}}
|
||||||
APP_URL={{ snipe_it_url }}
|
APP_URL={{ snipe_it_url }}
|
||||||
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ identifier
|
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ identifier
|
||||||
APP_TIMEZONE='{{ HOST_TIMEZONE }}'
|
APP_TIMEZONE='{{ HOST_TIMEZONE }}'
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
application_id: "snipe-it"
|
application_id: "snipe-it"
|
||||||
database_password: "{{ applications[application_id].credentials.database_password }}"
|
database_password: "{{ applications | get_app_conf(application_id, 'credentials.database_password', True) }}"
|
||||||
database_type: "mariadb"
|
database_type: "mariadb"
|
||||||
snipe_it_url: "{{ domains | get_url(application_id, web_protocol) }}"
|
snipe_it_url: "{{ domains | get_url(application_id, web_protocol) }}"
|
@ -2,7 +2,7 @@
|
|||||||
application:
|
application:
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
image: apache/syncope:{{ applications[application_id].version }}
|
image: apache/syncope:{{ applications | get_app_conf(application_id, 'version', True) }}
|
||||||
ports:
|
ports:
|
||||||
- "18080:8080"
|
- "18080:8080"
|
||||||
restart: always
|
restart: always
|
||||||
@ -16,7 +16,7 @@
|
|||||||
console:
|
console:
|
||||||
depends_on:
|
depends_on:
|
||||||
- syncope
|
- syncope
|
||||||
image: apache/syncope-console:{{ applications[application_id].version }}
|
image: apache/syncope-console:{{ applications | get_app_conf(application_id, 'version', True) }}
|
||||||
ports:
|
ports:
|
||||||
- "28080:8080"
|
- "28080:8080"
|
||||||
restart: always
|
restart: always
|
||||||
@ -27,7 +27,7 @@
|
|||||||
enduser:
|
enduser:
|
||||||
depends_on:
|
depends_on:
|
||||||
- syncope
|
- syncope
|
||||||
image: apache/syncope-enduser:{{ applications[application_id].version }}
|
image: apache/syncope-enduser:{{ applications | get_app_conf(application_id, 'version', True) }}
|
||||||
ports:
|
ports:
|
||||||
- "38080:8080"
|
- "38080:8080"
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
template:
|
template:
|
||||||
src: "taiga/{{item}}.py.j2"
|
src: "taiga/{{item}}.py.j2"
|
||||||
dest: "{{ docker_compose.directories.config }}taiga-{{item}}.py"
|
dest: "{{ docker_compose.directories.config }}taiga-{{item}}.py"
|
||||||
when: applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'taigaio'
|
when: applications | get_app_conf(application_id, 'features.oidc', True) and applications | get_app_conf(application_id, 'oidc.flavor', True) == 'taigaio'
|
||||||
notify: docker compose up
|
notify: docker compose up
|
||||||
loop: "{{ settings_files }}"
|
loop: "{{ settings_files }}"
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
- media-data:/taiga-back/media
|
- media-data:/taiga-back/media
|
||||||
# - ./config.py:/taiga-back/settings/config.py
|
# - ./config.py:/taiga-back/settings/config.py
|
||||||
|
|
||||||
{% if applications | is_feature_enabled('oidc',application_id) and applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications | is_feature_enabled('oidc',application_id) and applications | get_app_conf(application_id, 'oidc.flavor', True) == 'taigaio' %}
|
||||||
|
|
||||||
- {{ docker_compose.directories.config }}taiga-local.py:/taiga-back/settings/local.py:ro
|
- {{ docker_compose.directories.config }}taiga-local.py:/taiga-back/settings/local.py:ro
|
||||||
|
|
||||||
@ -22,7 +22,7 @@
|
|||||||
condition: service_started
|
condition: service_started
|
||||||
taiga-async-rabbitmq:
|
taiga-async-rabbitmq:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
{% if applications | is_feature_enabled('oidc',application_id) and applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications | is_feature_enabled('oidc',application_id) and applications | get_app_conf(application_id, 'oidc.flavor', True) == 'taigaio' %}
|
||||||
|
|
||||||
command: >
|
command: >
|
||||||
/bin/sh -c "
|
/bin/sh -c "
|
||||||
@ -42,7 +42,7 @@
|
|||||||
- media-data:/taiga-back/media
|
- media-data:/taiga-back/media
|
||||||
# - ./config.py:/taiga-back/settings/config.py
|
# - ./config.py:/taiga-back/settings/config.py
|
||||||
|
|
||||||
{% if applications | is_feature_enabled('oidc',application_id) and applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications | is_feature_enabled('oidc',application_id) and applications | get_app_conf(application_id, 'oidc.flavor', True) == 'taigaio' %}
|
||||||
|
|
||||||
{% for item in settings_files %}
|
{% for item in settings_files %}
|
||||||
- {{ docker_compose.directories.config }}taiga-{{ item }}.py:/taiga-back/settings/{{ item }}.py:ro
|
- {{ docker_compose.directories.config }}taiga-{{ item }}.py:/taiga-back/settings/{{ item }}.py:ro
|
||||||
@ -57,7 +57,7 @@
|
|||||||
condition: service_started
|
condition: service_started
|
||||||
taiga-async-rabbitmq:
|
taiga-async-rabbitmq:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
{% if applications | is_feature_enabled('oidc',application_id) and applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications | is_feature_enabled('oidc',application_id) and applications | get_app_conf(application_id, 'oidc.flavor', True) == 'taigaio' %}
|
||||||
|
|
||||||
command: >
|
command: >
|
||||||
/bin/sh -c "
|
/bin/sh -c "
|
||||||
|
@ -6,8 +6,8 @@ TAIGA_SUBPATH = "" # it'll be appended to the TAIGA_DOMAIN (use either
|
|||||||
WEBSOCKETS_SCHEME = wss # events connection protocol (use either "ws" or "wss")
|
WEBSOCKETS_SCHEME = wss # events connection protocol (use either "ws" or "wss")
|
||||||
|
|
||||||
# Taiga's Secret Key - Variable to provide cryptographic signing
|
# Taiga's Secret Key - Variable to provide cryptographic signing
|
||||||
TAIGA_SECRET_KEY = "{{applications[application_id].credentials.secret_key}}"
|
TAIGA_SECRET_KEY = "{{applications | get_app_conf(application_id, 'credentials.secret_key', True)}}"
|
||||||
SECRET_KEY = "{{applications[application_id].credentials.secret_key}}"
|
SECRET_KEY = "{{applications | get_app_conf(application_id, 'credentials.secret_key', True)}}"
|
||||||
|
|
||||||
# Taiga's Database settings - Variables to create the Taiga database and connect to it
|
# Taiga's Database settings - Variables to create the Taiga database and connect to it
|
||||||
POSTGRES_USER = "{{database_username}}" # user to connect to PostgreSQL
|
POSTGRES_USER = "{{database_username}}" # user to connect to PostgreSQL
|
||||||
@ -49,7 +49,7 @@ ENABLE_TELEMETRY = True
|
|||||||
|
|
||||||
{% if applications | is_feature_enabled('oidc',application_id) %}
|
{% if applications | is_feature_enabled('oidc',application_id) %}
|
||||||
|
|
||||||
{% if applications[application_id].oidc.flavor == 'taigaio' %}
|
{% if applications | get_app_conf(application_id, 'oidc.flavor', True) == 'taigaio' %}
|
||||||
|
|
||||||
# OIDC via taigaio official contrib
|
# OIDC via taigaio official contrib
|
||||||
# @See https://github.com/taigaio/taiga-contrib-oidc-auth
|
# @See https://github.com/taigaio/taiga-contrib-oidc-auth
|
||||||
@ -65,7 +65,7 @@ OIDC_OP_JWKS_ENDPOINT="{{ oidc.client.certs }}"
|
|||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if applications[application_id].oidc.flavor == 'robrotheram' %}
|
{% if applications | get_app_conf(application_id, 'oidc.flavor', True) == 'robrotheram' %}
|
||||||
|
|
||||||
# OIDC via robrotheram
|
# OIDC via robrotheram
|
||||||
# @see https://github.com/robrotheram/taiga-contrib-openid-auth
|
# @see https://github.com/robrotheram/taiga-contrib-openid-auth
|
||||||
|
@ -4,10 +4,10 @@ docker_repository_address: "https://github.com/taigaio/taiga-docker"
|
|||||||
email_backend: "smtp" ## use an SMTP server or display the emails in the console (either "smtp" or "console")
|
email_backend: "smtp" ## use an SMTP server or display the emails in the console (either "smtp" or "console")
|
||||||
docker_compose_init: "{{docker_compose.directories.instance}}docker-compose-inits.yml.j2"
|
docker_compose_init: "{{docker_compose.directories.instance}}docker-compose-inits.yml.j2"
|
||||||
taiga_image_backend: >-
|
taiga_image_backend: >-
|
||||||
{{ 'robrotheram/taiga-back-openid' if applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'robrotheram'
|
{{ 'robrotheram/taiga-back-openid' if applications | get_app_conf(application_id, 'features.oidc', True) and applications | get_app_conf(application_id, 'oidc.flavor', True) == 'robrotheram'
|
||||||
else 'taigaio/taiga-back' }}
|
else 'taigaio/taiga-back' }}
|
||||||
taiga_image_frontend: >-
|
taiga_image_frontend: >-
|
||||||
{{ 'robrotheram/taiga-front-openid' if applications[application_id].features.oidc and applications[application_id].oidc.flavor == 'robrotheram'
|
{{ 'robrotheram/taiga-front-openid' if applications | get_app_conf(application_id, 'features.oidc', True) and applications | get_app_conf(application_id, 'oidc.flavor', True) == 'robrotheram'
|
||||||
else 'taigaio/taiga-front' }}
|
else 'taigaio/taiga-front' }}
|
||||||
taiga_frontend_conf_path: "{{docker_compose.directories.config}}conf.json"
|
taiga_frontend_conf_path: "{{docker_compose.directories.config}}conf.json"
|
||||||
docker_repository: true
|
docker_repository: true
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user