mirror of
https://github.com/vector-im/element-call.git
synced 2026-07-24 19:19:21 +00:00
Add example docker compose; fix dynamic reg
This commit is contained in:
@@ -209,6 +209,7 @@ A docker compose file `dev-backend-docker-compose.yml` is provided to start the
|
|||||||
whole stack of components which is required for a local development environment:
|
whole stack of components which is required for a local development environment:
|
||||||
|
|
||||||
- Minimum Synapse Setup (servername: `synapse.m.localhost`)
|
- Minimum Synapse Setup (servername: `synapse.m.localhost`)
|
||||||
|
- Matrix Authentication Service Setup (issuer: `mas.m.localhost`)
|
||||||
- MatrixRTC Authorization Service (Note requires Federation API and hence a TLS reverse proxy)
|
- MatrixRTC Authorization Service (Note requires Federation API and hence a TLS reverse proxy)
|
||||||
- Minimum LiveKit SFU Setup using dev defaults for config
|
- Minimum LiveKit SFU Setup using dev defaults for config
|
||||||
- Redis db for completeness
|
- Redis db for completeness
|
||||||
@@ -218,6 +219,7 @@ whole stack of components which is required for a local development environment:
|
|||||||
certificates
|
certificates
|
||||||
- Minimum TLS reverse proxy for
|
- Minimum TLS reverse proxy for
|
||||||
- Synapse homeserver: `synapse.m.localhost`
|
- Synapse homeserver: `synapse.m.localhost`
|
||||||
|
- Matrix Authentication Service: `mas.m.localhost`
|
||||||
- MatrixRTC backend: `matrix-rtc.m.localhost`
|
- MatrixRTC backend: `matrix-rtc.m.localhost`
|
||||||
- Local Element Call development `call.m.localhost` via `yarn dev --host `
|
- Local Element Call development `call.m.localhost` via `yarn dev --host `
|
||||||
- Element Web `app.m.localhost`
|
- Element Web `app.m.localhost`
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ listeners:
|
|||||||
- names: [client, federation, openid]
|
- names: [client, federation, openid]
|
||||||
compress: false
|
compress: false
|
||||||
|
|
||||||
|
matrix_authentication_service:
|
||||||
|
enabled: true
|
||||||
|
secret: "mas-matrix-secret"
|
||||||
|
endpoint: http://mas:8080
|
||||||
|
|
||||||
database:
|
database:
|
||||||
name: sqlite3
|
name: sqlite3
|
||||||
args:
|
args:
|
||||||
@@ -46,9 +51,5 @@ rc_message:
|
|||||||
per_second: 0.5
|
per_second: 0.5
|
||||||
burst_count: 30
|
burst_count: 30
|
||||||
|
|
||||||
# Required for Element Call in Single Page Mode due to on-the-fly user registration
|
|
||||||
enable_registration: true
|
|
||||||
enable_registration_without_verification: true
|
|
||||||
|
|
||||||
report_stats: false
|
report_stats: false
|
||||||
serve_server_wellknown: true
|
serve_server_wellknown: true
|
||||||
|
|||||||
96
backend/dev_mas.yaml
Normal file
96
backend/dev_mas.yaml
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
http:
|
||||||
|
listeners:
|
||||||
|
- name: web
|
||||||
|
resources:
|
||||||
|
- name: discovery
|
||||||
|
- name: human
|
||||||
|
- name: oauth
|
||||||
|
- name: assets
|
||||||
|
- name: adminapi
|
||||||
|
binds:
|
||||||
|
- address: '[::]:8080'
|
||||||
|
proxy_protocol: false
|
||||||
|
trusted_proxies:
|
||||||
|
- 192.168.0.0/16
|
||||||
|
- 172.16.0.0/12
|
||||||
|
- 10.0.0.0/10
|
||||||
|
- 127.0.0.1/8
|
||||||
|
- fd00::/8
|
||||||
|
- ::1/128
|
||||||
|
public_base: https://mas.m.localhost/
|
||||||
|
database:
|
||||||
|
uri: postgres://postgres@mas-db/mas
|
||||||
|
max_connections: 10
|
||||||
|
min_connections: 0
|
||||||
|
connect_timeout: 30
|
||||||
|
idle_timeout: 600
|
||||||
|
max_lifetime: 1800
|
||||||
|
email:
|
||||||
|
from: '"Authentication Service" <root@localhost>'
|
||||||
|
reply_to: '"Authentication Service" <root@localhost>'
|
||||||
|
transport: blackhole
|
||||||
|
secrets:
|
||||||
|
encryption: 91c9eda308d874d1b8ba51c0fe3b7cbb868638c8fbb82d7eec0e6912586bdabd
|
||||||
|
keys:
|
||||||
|
- kid: H30QE7M5eX
|
||||||
|
key: |
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEogIBAAKCAQEA3+t9XjM8LhYMpagIKXnpTXVWxIo5zwM/R8wYRPg0MPGCrOUB
|
||||||
|
i/L/Vof4yK7lIMWtCT724e989PLR4YmG2pXBpB8P7SZ3feggLoUMi8+QNzyKsGD+
|
||||||
|
lYmZd0D/2aVmxBxK83JP3LLodmoHduva2qSBF9YdZ6Greg/IcEdG2UY3iGYeojsQ
|
||||||
|
1Wx7V2+WPeUCtaIONBPk/rwOgWmzAhqGyCXONbvGazElNEuM0fwI278qveP5kNoh
|
||||||
|
aL6HvlaYQbMSGAg1tf06AKOjsJG0CRsvsMdFxuG9GEwd4pJr9+v+OqwnaFJHJ70z
|
||||||
|
kQFC3s/w+xCk4NnO+jSopBptu8ycwjZYMuq2kQIDAQABAoIBAHbDqFL2Sc0H1N1o
|
||||||
|
KiwVhTCYM9U6mz65Mi8aiSTLoKL09aJONGvODrAOnl2SpeSj9AsbYkajh1tEDx3Y
|
||||||
|
m7YECBjMgN3/sREOtUL3PphJFuy1J7o1N9KIkOU3jHwbxk3t07MbxlAAdFuaESt6
|
||||||
|
HTIqXm4OGrqEfTbYeC9VHrbPD1VAFj/OGHsYDurJzhfIlFSlZWZqHNjdNh2HAOJM
|
||||||
|
FElqJWqqR9fj2pYYdpo+oaheI/iIAuWpAgcZOJzaZ4iui4R9i4od+qqQ3EVECPvS
|
||||||
|
/QnezvDpiobShG6WOmrRj3WBtheiPLdNlNB0sVW9h3dHcrkE/l2n5pfArVbHB+wg
|
||||||
|
4e5FEAECgYEA4XjB6hpN1iX66ADf27L5mHymu1hTojZLoQdy76OcjgG+4ZoQl71U
|
||||||
|
OAww4ek9I6Alz+aQqTAnRtLHBKH+xSuO2VoxQfimk71mUmByCr25vIU8mGtXRIJO
|
||||||
|
rtWEVE4HQPhK2LODLm5zbp3I1GsrfNgMCsuA/yse5MIczC8bRFyf+DECgYEA/jzx
|
||||||
|
ddl1asjArcFcQyKFJxdobNqYJ4P+rbDLIOmC9IQ8n/v+ETERCzj/y93yaXXqCBlR
|
||||||
|
uHDzo72F/+SYDDWGYanpRmN2cUv1A0XTUs+dWYjfrscFJUEx8CZh0GeoLE4H3uru
|
||||||
|
GlwqPnc9sMPee98mj4yDMyrNqLx/VaXV+wnpbGECgYAh4JoKSa9+SLCdYVxBT2/v
|
||||||
|
OHN43LmcOto8NLlRRl0EfUCn9xUdJ4Za8YH6v6e/DZYA2dzMfv63xn2+tXRpPbU1
|
||||||
|
9TZHekvVEPUp1XHtKTqaF87V+/LdyVJ3NH+whxTR7zyXuMkyFchkS3Lcb8nV9URB
|
||||||
|
7vfP3zPCHWRkTYOkTuJ+UQKBgFCrj8ZgMOSoPJMlppvayTtFLypTFjJ7rIT6cwnH
|
||||||
|
bnkduIrfD5fu5MSV2nyauT+DXbYiKo8GsBhFm849f41oMnKs0ks2Zi++9UiLkGlX
|
||||||
|
XUs6phc0KUrP7AOSejkBmxgrzk2KZ/DPS8w0U8vR6reNcBPedwb2Tvl6jkDj9QjJ
|
||||||
|
9VohAoGAISjlufqw3y8F/0on1AhqyROlJghTBsQ+xDEBZ9txx/HcKVghqMhBCbFj
|
||||||
|
LRf8B4vH9QXtlZVtPFj0wE3INxsYtilsbD8wbwkxsLeGUFdPDucPacfBSyX+wLRh
|
||||||
|
S1/twrPS9KVhkU5d0TbyfOlEB1OSXZTWZ1n9NaqOZUPf6FAwm78=
|
||||||
|
-----END RSA PRIVATE KEY-----
|
||||||
|
- kid: VrRd3Y2OeF
|
||||||
|
key: |
|
||||||
|
-----BEGIN EC PRIVATE KEY-----
|
||||||
|
MHcCAQEEIB3zBxhuh275A3piMMDZ2BEM6vsoxswNLrTJRiaY+m80oAoGCCqGSM49
|
||||||
|
AwEHoUQDQgAECqFotDpyEYNrWf2UZaUB0CZz6KiptQL2wi8oRNkKlarjgDDNCBzR
|
||||||
|
dgCokx9C8bLpfqhTJE/6aSe6T19qkaPHIg==
|
||||||
|
-----END EC PRIVATE KEY-----
|
||||||
|
- kid: SHaCwxflXU
|
||||||
|
key: |
|
||||||
|
-----BEGIN EC PRIVATE KEY-----
|
||||||
|
MIGkAgEBBDCdchyP7aFxQce7vA+QMPkMkOaYKbmNoN1fnlKviKsJK1riq+1eKSEe
|
||||||
|
UeUF5BOczfugBwYFK4EEACKhZANiAAR1pIE4xN9xkULiCgMd/uztt4Lnu8FhvEZD
|
||||||
|
3BhUfy5kdBVbYyk1khgKy3k+dQvXaTVkzsHkQN8K78WxlUDlF5zKXLjgkeEiqgz7
|
||||||
|
HU0rr2e8geUiaEE2AkzWhvmIikvhuMo=
|
||||||
|
-----END EC PRIVATE KEY-----
|
||||||
|
- kid: ngjUaMfCuT
|
||||||
|
key: |
|
||||||
|
-----BEGIN EC PRIVATE KEY-----
|
||||||
|
MHQCAQEEIE11jnxjUvPk93ylMuIcwcayJsFUhsSH2EqAn97CiHf8oAcGBSuBBAAK
|
||||||
|
oUQDQgAE1XySwFNBUkzZ946MBf2/3ecXVptrauZEQ8d8zqUdBS7wOe5pZwZ15Jx4
|
||||||
|
aZhlusZ3BPl0KiTlWwOlaRDMrw9EGA==
|
||||||
|
-----END EC PRIVATE KEY-----
|
||||||
|
passwords:
|
||||||
|
enabled: true
|
||||||
|
schemes:
|
||||||
|
- version: 1
|
||||||
|
algorithm: argon2id
|
||||||
|
minimum_complexity: 0
|
||||||
|
matrix:
|
||||||
|
kind: synapse
|
||||||
|
homeserver: synapse.m.localhost
|
||||||
|
secret: "mas-matrix-secret"
|
||||||
|
endpoint: http://homeserver:8008/
|
||||||
@@ -40,6 +40,23 @@ server {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Matrix Authentication Server reverse proxy
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
listen [::]:443 ssl;
|
||||||
|
server_name mas.m.localhost;
|
||||||
|
ssl_certificate /root/ssl/cert.pem;
|
||||||
|
ssl_certificate_key /root/ssl/key.pem;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass "http://mas:8080";
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
}
|
||||||
|
|
||||||
# MatrixRTC reverse proxy
|
# MatrixRTC reverse proxy
|
||||||
# - MatrixRTC Authorization Service
|
# - MatrixRTC Authorization Service
|
||||||
# - LiveKit SFU websocket signaling connection
|
# - LiveKit SFU websocket signaling connection
|
||||||
|
|||||||
@@ -15,5 +15,8 @@
|
|||||||
"delayed_leave_event_delay_ms": 18000,
|
"delayed_leave_event_delay_ms": 18000,
|
||||||
"delayed_leave_event_restart_ms": 4000,
|
"delayed_leave_event_restart_ms": 4000,
|
||||||
"network_error_retry_ms": 100
|
"network_error_retry_ms": 100
|
||||||
|
},
|
||||||
|
"oidc_metadata": {
|
||||||
|
"client_name": "Element Call (dev)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,31 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./backend/synapse_tmp:/data:Z
|
- ./backend/synapse_tmp:/data:Z
|
||||||
- ./backend/dev_homeserver.yaml:/data/cfg/homeserver.yaml:Z
|
- ./backend/dev_homeserver.yaml:/data/cfg/homeserver.yaml:Z
|
||||||
|
depends_on:
|
||||||
|
- mas
|
||||||
|
networks:
|
||||||
|
- ecbackend
|
||||||
|
|
||||||
|
mas:
|
||||||
|
# To add users, see `docker exec element-call-mas-1 mas-cli manage register-user -h`
|
||||||
|
image: ghcr.io/element-hq/matrix-authentication-service:latest
|
||||||
|
pull_policy: always
|
||||||
|
hostname: mas
|
||||||
|
volumes:
|
||||||
|
- ./backend/dev_mas.yaml:/config.yaml:ro,Z
|
||||||
|
depends_on:
|
||||||
|
- mas-db
|
||||||
|
networks:
|
||||||
|
- ecbackend
|
||||||
|
|
||||||
|
mas-db:
|
||||||
|
image: docker.io/postgres:16-alpine
|
||||||
|
hostname: mas-db
|
||||||
|
restart: always
|
||||||
|
shm_size: 128mb
|
||||||
|
environment:
|
||||||
|
- POSTGRES_HOST_AUTH_METHOD=trust
|
||||||
|
- POSTGRES_DB=mas
|
||||||
networks:
|
networks:
|
||||||
- ecbackend
|
- ecbackend
|
||||||
|
|
||||||
@@ -101,7 +126,9 @@ services:
|
|||||||
- "host.docker.internal:host-gateway"
|
- "host.docker.internal:host-gateway"
|
||||||
depends_on:
|
depends_on:
|
||||||
- synapse
|
- synapse
|
||||||
|
- mas
|
||||||
networks:
|
networks:
|
||||||
ecbackend:
|
ecbackend:
|
||||||
aliases:
|
aliases:
|
||||||
|
- mas.m.localhost
|
||||||
- matrix-rtc.m.localhost
|
- matrix-rtc.m.localhost
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ export const App: FC<Props> = ({ vm }) => {
|
|||||||
<Routes>
|
<Routes>
|
||||||
<SentryRoute path="/" element={<HomePage />} />
|
<SentryRoute path="/" element={<HomePage />} />
|
||||||
<SentryRoute path="/login" element={<LoginPage />} />
|
<SentryRoute path="/login" element={<LoginPage />} />
|
||||||
<SentryRoute path="/after_login" element={<OidcRedirectPage />} />
|
<SentryRoute path="/after-login" element={<OidcRedirectPage />} />
|
||||||
<SentryRoute path="/register" element={<RegisterPage />} />
|
<SentryRoute path="/register" element={<RegisterPage />} />
|
||||||
<SentryRoute path="*" element={<RoomPage />} />
|
<SentryRoute path="*" element={<RoomPage />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
|
|||||||
@@ -163,9 +163,7 @@ export interface ConfigOptions {
|
|||||||
oidc_metadata?: {
|
oidc_metadata?: {
|
||||||
client_name?: string;
|
client_name?: string;
|
||||||
client_uri?: string;
|
client_uri?: string;
|
||||||
redirect_uris?: string[];
|
|
||||||
logo_uri?: string;
|
logo_uri?: string;
|
||||||
application_type?: string;
|
|
||||||
tos_uri?: string;
|
tos_uri?: string;
|
||||||
policy_uri?: string;
|
policy_uri?: string;
|
||||||
contacts?: string[];
|
contacts?: string[];
|
||||||
|
|||||||
@@ -10,5 +10,5 @@ Please see LICENSE in the repository root for full details.
|
|||||||
*/
|
*/
|
||||||
export function getOidcCallbackUrl(): URL {
|
export function getOidcCallbackUrl(): URL {
|
||||||
// TODO: save the path somewhere
|
// TODO: save the path somewhere
|
||||||
return new URL("after_login", window.location.origin);
|
return new URL("after-login", window.location.origin);
|
||||||
}
|
}
|
||||||
@@ -51,6 +51,7 @@ export async function getOidcClientId(
|
|||||||
{
|
{
|
||||||
clientName: config.oidc_metadata?.client_name ?? "Element Call",
|
clientName: config.oidc_metadata?.client_name ?? "Element Call",
|
||||||
clientUri: config.oidc_metadata?.client_uri ?? window.location.origin,
|
clientUri: config.oidc_metadata?.client_uri ?? window.location.origin,
|
||||||
|
logoUri: config.oidc_metadata?.logo_uri,
|
||||||
redirectUris: [getOidcCallbackUrl().href],
|
redirectUris: [getOidcCallbackUrl().href],
|
||||||
applicationType: "web",
|
applicationType: "web",
|
||||||
contacts: config.oidc_metadata?.contacts,
|
contacts: config.oidc_metadata?.contacts,
|
||||||
|
|||||||
Reference in New Issue
Block a user