Make appservice-discord support both SQLite and Postgres
People can toggle between them now. The playbook also defaults to using SQLite if an external Postgres server is used. Ideally, we'd be able to create databases/users in external Postgres servers as well, but our initialization logic (and `docker run` command, etc.) hardcode too many things right now.
This commit is contained in:
parent
46a4034d3e
commit
a374d309c8
|
@ -67,6 +67,11 @@ matrix_appservice_discord_appservice_token: "{{ matrix_synapse_macaroon_secret_k
|
|||
|
||||
matrix_appservice_discord_homeserver_token: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'discord.hs.token') | to_uuid }}"
|
||||
|
||||
# We only make this use Postgres if our own Postgres server is enabled.
|
||||
# It's only then (for now) that we can automatically create the necessary database and user for this service.
|
||||
matrix_appservice_discord_database_engine: "{{ 'postgres' if matrix_postgres_enabled else 'sqlite' }}"
|
||||
matrix_appservice_discord_database_connString_password: "{{ matrix_synapse_macaroon_secret_key | password_hash('sha512', 'as.discord.db') }}"
|
||||
|
||||
######################################################################
|
||||
#
|
||||
# /matrix-bridge-appservice-discord
|
||||
|
@ -892,10 +897,10 @@ matrix_postgres_db_name: "homeserver"
|
|||
matrix_postgres_additional_databases: |
|
||||
{{
|
||||
([{
|
||||
'name': 'matrix_appservice_discord',
|
||||
'username': 'matrix_appservice_discord',
|
||||
'password': matrix_synapse_macaroon_secret_key | password_hash('sha512', 'app_discord.db.secret') | string,
|
||||
}] if matrix_appservice_discord_enabled else [])
|
||||
'name': matrix_appservice_discord_database_connString_db_name,
|
||||
'username': matrix_appservice_discord_database_connString_username,
|
||||
'password': matrix_appservice_discord_database_connString_password,
|
||||
}] if (matrix_appservice_discord_enabled and matrix_appservice_discord_database_engine == 'postgres' and matrix_appservice_discord_database_connString_hostname == 'matrix-postgres') else [])
|
||||
+ ([{
|
||||
'name': 'matrix_appservice_slack',
|
||||
'username': 'matrix_appservice_slack',
|
||||
|
|
|
@ -41,6 +41,22 @@ matrix_appservice_discord_bridge_homeserverUrl: "http://matrix-synapse:8008"
|
|||
matrix_appservice_discord_bridge_disablePresence: false
|
||||
matrix_appservice_discord_bridge_enableSelfServiceBridging: false
|
||||
|
||||
# Database-related configuration fields.
|
||||
#
|
||||
# To use SQLite, stick to these defaults.
|
||||
#
|
||||
# To use Postgres:
|
||||
# - change the engine (`matrix_appservice_discord_database_engine: 'postgres'`)
|
||||
# - adjust your database credentials
|
||||
matrix_appservice_discord_database_engine: 'sqlite'
|
||||
matrix_appservice_discord_database_filename: "/data/discord.db"
|
||||
matrix_appservice_discord_database_connString: 'postgresql://{{ matrix_appservice_discord_database_connString_username }}:{{ matrix_appservice_discord_database_connString_password }}@{{ matrix_appservice_discord_database_connString_hostname }}:{{ matrix_appservice_discord_database_connString_port }}/{{ matrix_appservice_discord_database_connString_db_name }}'
|
||||
matrix_appservice_discord_database_connString_username: 'matrix_appservice_discord'
|
||||
matrix_appservice_discord_database_connString_password: 'some-password'
|
||||
matrix_appservice_discord_database_connString_hostname: 'matrix-postgres'
|
||||
matrix_appservice_discord_database_connString_port: 5432
|
||||
matrix_appservice_discord_database_connString_db_name: 'matrix_appservice_discord'
|
||||
|
||||
# Tells whether the bot should make use of "Privileged Gateway Intents".
|
||||
#
|
||||
# Enabling this means that you need to enable it for the bot (Discord application) as well,
|
||||
|
|
|
@ -20,3 +20,7 @@
|
|||
when: "item.old in vars"
|
||||
with_items:
|
||||
- {'old': 'matrix_appservice_discord_container_expose_client_server_api_port', 'new': '<superseded by matrix_appservice_discord_container_http_host_bind_port>'}
|
||||
|
||||
- name: Require a valid database engine
|
||||
fail: msg="`matrix_appservice_discord_database_engine` needs to be either 'sqlite' or 'postgres'"
|
||||
when: "matrix_appservice_discord_database_engine not in ['sqlite', 'postgres']"
|
||||
|
|
|
@ -58,8 +58,11 @@ database:
|
|||
# If you are migrating, see https://github.com/Half-Shot/matrix-appservice-discord/blob/master/docs/howto.md#migrate-to-postgres-from-sqlite
|
||||
# WARNING: You will almost certainly be fine with sqlite unless your bridge
|
||||
# is in heavy demand and you suffer from IO slowness.
|
||||
#filename: "/data/discord.db"
|
||||
connString: "postgresql://matrix_appservice_discord:{{ matrix_additional_databases | selectattr('name', 'equalto', 'matrix_appservice_discord') | map(attribute='pass') | first }}@{{ matrix_postgres_connection_hostname }}/matrix_appservice_discord"
|
||||
{% if matrix_appservice_discord_database_engine == 'sqlite' %}
|
||||
filename: {{ matrix_appservice_discord_database_filename|to_json }}
|
||||
{% else %}
|
||||
connString: {{ matrix_appservice_discord_database_connString|to_json }}
|
||||
{% endif %}
|
||||
room:
|
||||
# Set the default visibility of alias rooms, defaults to "public".
|
||||
# One of: "public", "private"
|
||||
|
|
Loading…
Reference in a new issue