parent
f1c392dd08
commit
eaca3f83d6
|
@ -227,7 +227,11 @@ has to be disabled in Playwright on Firefox & Webkit to retain routing functiona
|
||||||
Anything testing VoIP/microphone will need to have `@no-webkit` as fake microphone functionality is not available
|
Anything testing VoIP/microphone will need to have `@no-webkit` as fake microphone functionality is not available
|
||||||
there at this time.
|
there at this time.
|
||||||
|
|
||||||
## Colima
|
## Supporter container runtimes
|
||||||
|
|
||||||
|
We use testcontainers to spin up various instances of Synapse, Matrix Authentication Service, and more.
|
||||||
|
It supports Docker out of the box but also has support for Podman, Colima, Rancher, you just need to follow some instructions to achieve it:
|
||||||
|
https://node.testcontainers.org/supported-container-runtimes/
|
||||||
|
|
||||||
If you are running under Colima, you may need to set the environment variable `TMPDIR` to `/tmp/colima` or a path
|
If you are running under Colima, you may need to set the environment variable `TMPDIR` to `/tmp/colima` or a path
|
||||||
within `$HOME` to allow bind mounting temporary directories into the Docker containers.
|
within `$HOME` to allow bind mounting temporary directories into the Docker containers.
|
||||||
|
|
|
@ -144,7 +144,9 @@ const DEFAULT_CONFIG = {
|
||||||
email_entrypoint: "email/violation",
|
email_entrypoint: "email/violation",
|
||||||
data: {
|
data: {
|
||||||
client_registration: {
|
client_registration: {
|
||||||
|
// allow non-SSL and localhost URIs
|
||||||
allow_insecure_uris: true,
|
allow_insecure_uris: true,
|
||||||
|
// EW doesn't have contacts at this time
|
||||||
allow_missing_contacts: true,
|
allow_missing_contacts: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -20,13 +20,15 @@ const TAG = "develop@sha256:17cc0a301447430624afb860276e5c13270ddeb99a3f6d1c6d51
|
||||||
|
|
||||||
const DEFAULT_CONFIG = {
|
const DEFAULT_CONFIG = {
|
||||||
server_name: "localhost",
|
server_name: "localhost",
|
||||||
public_baseurl: "",
|
public_baseurl: "", // set by start method
|
||||||
pid_file: "/homeserver.pid",
|
pid_file: "/homeserver.pid",
|
||||||
web_client: false,
|
web_client: false,
|
||||||
soft_file_limit: 0,
|
soft_file_limit: 0,
|
||||||
|
// Needs to be configured to log to the console like a good docker process
|
||||||
log_config: "/data/log.config",
|
log_config: "/data/log.config",
|
||||||
listeners: [
|
listeners: [
|
||||||
{
|
{
|
||||||
|
// Listener is always port 8008 (configured in the container)
|
||||||
port: 8008,
|
port: 8008,
|
||||||
tls: false,
|
tls: false,
|
||||||
bind_addresses: ["::"],
|
bind_addresses: ["::"],
|
||||||
|
@ -41,6 +43,7 @@ const DEFAULT_CONFIG = {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
database: {
|
database: {
|
||||||
|
// An sqlite in-memory database is fast & automatically wipes each time
|
||||||
name: "sqlite3",
|
name: "sqlite3",
|
||||||
args: {
|
args: {
|
||||||
database: ":memory:",
|
database: ":memory:",
|
||||||
|
@ -102,11 +105,13 @@ const DEFAULT_CONFIG = {
|
||||||
enable_registration_without_verification: true,
|
enable_registration_without_verification: true,
|
||||||
disable_msisdn_registration: false,
|
disable_msisdn_registration: false,
|
||||||
registrations_require_3pid: [],
|
registrations_require_3pid: [],
|
||||||
registration_shared_secret: "secret",
|
|
||||||
enable_metrics: false,
|
enable_metrics: false,
|
||||||
report_stats: false,
|
report_stats: false,
|
||||||
|
// These placeholders will be replaced with values generated at start
|
||||||
|
registration_shared_secret: "secret",
|
||||||
macaroon_secret_key: "secret",
|
macaroon_secret_key: "secret",
|
||||||
form_secret: "secret",
|
form_secret: "secret",
|
||||||
|
// Signing key must be here: it will be generated to this file
|
||||||
signing_key_path: "/data/localhost.signing.key",
|
signing_key_path: "/data/localhost.signing.key",
|
||||||
trusted_key_servers: [],
|
trusted_key_servers: [],
|
||||||
password_config: {
|
password_config: {
|
||||||
|
@ -116,6 +121,7 @@ const DEFAULT_CONFIG = {
|
||||||
session_timeout: "300s",
|
session_timeout: "300s",
|
||||||
},
|
},
|
||||||
background_updates: {
|
background_updates: {
|
||||||
|
// Inhibit background updates as this Synapse isn't long-lived
|
||||||
min_batch_size: 100000,
|
min_batch_size: 100000,
|
||||||
sleep_duration_ms: 100000,
|
sleep_duration_ms: 100000,
|
||||||
},
|
},
|
||||||
|
@ -144,9 +150,9 @@ export class SynapseContainer extends GenericContainer {
|
||||||
|
|
||||||
const signingKey = randB64Bytes(32);
|
const signingKey = randB64Bytes(32);
|
||||||
this.withWaitStrategy(Wait.forHttp("/health", 8008)).withCopyContentToContainer([
|
this.withWaitStrategy(Wait.forHttp("/health", 8008)).withCopyContentToContainer([
|
||||||
{ target: "/data/localhost.signing.key", content: `ed25519 x ${signingKey}` },
|
{ target: this.config.signing_key_path, content: `ed25519 x ${signingKey}` },
|
||||||
{
|
{
|
||||||
target: "/data/log.config",
|
target: this.config.log_config,
|
||||||
content: YAML.stringify({
|
content: YAML.stringify({
|
||||||
version: 1,
|
version: 1,
|
||||||
formatters: {
|
formatters: {
|
||||||
|
|
Loading…
Reference in New Issue