matrix.yaml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  1. ---
  2. kind: Deployment
  3. apiVersion: apps/v1
  4. metadata:
  5. name: matrix
  6. labels:
  7. app: matrix
  8. spec:
  9. replicas: 1
  10. selector:
  11. matchLabels:
  12. app: matrix
  13. template:
  14. metadata:
  15. labels:
  16. app: matrix
  17. spec:
  18. dnsPolicy: ClusterFirst
  19. dnsConfig:
  20. nameservers:
  21. - 8.8.8.8
  22. containers:
  23. - name: matrix
  24. image: ghcr.io/element-hq/synapse
  25. #command: ["/bin/bash", "-c", "--"]
  26. #args: ["while true; do sleep 3; done;"]
  27. env:
  28. - name: SYNAPSE_SERVER_NAME
  29. value: "matrix.dezendorf.net"
  30. - name: SYNAPSE_CONFIG_PATH
  31. value: "/data/homeserver.yaml"
  32. ports:
  33. - name: web
  34. containerPort: 8008
  35. volumeMounts:
  36. - name: "matrix-homeserver-yaml"
  37. mountPath: "/data/homeserver.yaml"
  38. subPath: "homeserver-yaml"
  39. readOnly: no
  40. - name: "matrix-homeserver-yaml"
  41. mountPath: "/homeserver.log"
  42. subPath: "homeserver-log"
  43. readOnly: no
  44. - name: "matrix-homeserver-yaml"
  45. mountPath: "/data/matrix.dezendorf.net.log.config"
  46. subPath: "homeserver-log-config"
  47. readOnly: no
  48. - name: "matrix-data-volume"
  49. mountPath: "/data"
  50. readOnly: no
  51. - name: "matrix-media-volume"
  52. mountPath: "/data/media_store"
  53. - name: matrix-id-service
  54. image: ghcr.io/element-hq/matrix-authentication-service:latest
  55. volumeMounts:
  56. - name: "matrix-auth-volume"
  57. mountPath: "/data"
  58. readOnly: no
  59. - name: "matrix-auth-files"
  60. mountPath: "/config.yaml"
  61. subPath: "config-yaml"
  62. readOnly: no
  63. volumes:
  64. - name: "matrix-media-volume"
  65. persistentVolumeClaim:
  66. claimName: "matrix-media-pvc"
  67. - name: "matrix-data-volume"
  68. persistentVolumeClaim:
  69. claimName: "matrix-data-pvc"
  70. - name: "matrix-auth-volume"
  71. persistentVolumeClaim:
  72. claimName: "matrix-auth-pvc"
  73. - name: "matrix-auth-files"
  74. configMap:
  75. defaultMode: 0777
  76. name: "matrix-auth-files"
  77. - name: "matrix-homeserver-yaml"
  78. configMap:
  79. defaultMode: 0777
  80. name: "matrix-homeserver-yaml"
  81. ---
  82. apiVersion: v1
  83. kind: PersistentVolumeClaim
  84. metadata:
  85. name: matrix-data-pvc
  86. spec:
  87. accessModes:
  88. - ReadWriteOnce
  89. storageClassName: longhorn
  90. resources:
  91. requests:
  92. storage: 50G
  93. ---
  94. apiVersion: v1
  95. kind: PersistentVolumeClaim
  96. metadata:
  97. name: matrix-media-pvc
  98. spec:
  99. accessModes:
  100. - ReadWriteOnce
  101. storageClassName: nfs
  102. resources:
  103. requests:
  104. storage: 100G
  105. ---
  106. apiVersion: v1
  107. kind: PersistentVolumeClaim
  108. metadata:
  109. name: matrix-auth-pvc
  110. spec:
  111. accessModes:
  112. - ReadWriteOnce
  113. storageClassName: longhorn
  114. resources:
  115. requests:
  116. storage: 50G
  117. ---
  118. apiVersion: v1
  119. kind: Service
  120. metadata:
  121. name: matrix
  122. spec:
  123. type: ClusterIP
  124. ports:
  125. - name: web
  126. port: 8008
  127. selector:
  128. app: matrix
  129. ---
  130. apiVersion: v1
  131. kind: Service
  132. metadata:
  133. name: matrix-auth
  134. spec:
  135. type: ClusterIP
  136. ports:
  137. - name: web
  138. port: 8080
  139. selector:
  140. app: matrix
  141. ---
  142. apiVersion: traefik.containo.us/v1alpha1
  143. kind: IngressRoute
  144. metadata:
  145. name: matrix-ingress-route
  146. namespace: default
  147. spec:
  148. entryPoints:
  149. - web
  150. routes:
  151. - match: ((Host(`matrix`)||Host(`matrix.dezendorf.net`)))
  152. kind: Rule
  153. priority: 1
  154. services:
  155. - name: matrix
  156. port: 8008
  157. ---
  158. apiVersion: traefik.containo.us/v1alpha1
  159. kind: IngressRoute
  160. metadata:
  161. name: matrix-websecure-route
  162. namespace: default
  163. spec:
  164. entryPoints:
  165. - websecure
  166. routes:
  167. - match: (Host(`matrix.dezendorf.net`) && PathPrefix(`/_matrix/client/{id:.*}/{method:(login|logout|refresh)}`))
  168. kind: Rule
  169. services:
  170. - name: matrix-auth
  171. port: 8080
  172. - match: Host(`matrix.dezendorf.net`)
  173. kind: Rule
  174. services:
  175. - name: matrix
  176. port: 8008
  177. tls:
  178. certResolver: myresolver
  179. ---
  180. apiVersion: traefik.containo.us/v1alpha1
  181. kind: IngressRoute
  182. metadata:
  183. name: matrix-auth-ingress-route
  184. namespace: default
  185. spec:
  186. entryPoints:
  187. - web
  188. routes:
  189. - match: ((Host(`matrix-auth`)||Host(`matrix-auth.dezendorf.net`)))
  190. kind: Rule
  191. priority: 1
  192. services:
  193. - name: matrix-auth
  194. port: 8080
  195. ---
  196. apiVersion: traefik.containo.us/v1alpha1
  197. kind: IngressRoute
  198. metadata:
  199. name: matrix-auth-websecure-route
  200. namespace: default
  201. spec:
  202. entryPoints:
  203. - websecure
  204. routes:
  205. - match: Host(`matrix-auth.dezendorf.net`)
  206. kind: Rule
  207. services:
  208. - name: matrix-auth
  209. port: 8080
  210. tls:
  211. certResolver: myresolver
  212. ---
  213. apiVersion: v1
  214. kind: ConfigMap
  215. metadata:
  216. name: matrix-homeserver-yaml
  217. namespace: default
  218. data:
  219. homeserver-log: |
  220. homeserver-yaml: |
  221. # Configuration file for Synapse.
  222. #
  223. # This is a YAML file: see [1] for a quick introduction. Note in particular
  224. # that *indentation is important*: all the elements of a list or dictionary
  225. # should have the same indentation.
  226. #
  227. # [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
  228. #
  229. # For more information on how to configure Synapse, including a complete accounting of
  230. # each option, go to docs/usage/configuration/config_documentation.md or
  231. # https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html
  232. server_name: "matrix.dezendorf.net"
  233. pid_file: /data/homeserver.pid
  234. listeners:
  235. - port: 8008
  236. tls: false
  237. type: http
  238. x_forwarded: true
  239. #bind_addresses: ['::1', '127.0.0.1']
  240. resources:
  241. - names: [client, federation]
  242. compress: false
  243. database:
  244. name: sqlite3
  245. args:
  246. database: /data/homeserver.db
  247. log_config: "/data/matrix.dezendorf.net.log.config"
  248. media_store_path: /data/media_store
  249. registration_shared_secret: "9.^i#+7YXwrC^bzKMqkenOZb;9ra6jV0zgZMvO:EBQ.CipL47k"
  250. report_stats: false
  251. macaroon_secret_key: ".ughvXa0Or.Xv7o5y550cXnTlv.J8*Mq@JAA^1QXuu2bpR@Lpd"
  252. form_secret: "iESBV0d@Tg;4~:v5KT3-UX.Kva@.cbJZ9SNU:nWKubPo:X^*Y-"
  253. signing_key_path: "/data/matrix.dezendorf.net.signing.key"
  254. enable_registration: false
  255. enable_registration_captcha: false
  256. public_baseurl: "https://matrix.dezendorf.net"
  257. recaptcha_public_key: "6LddQ7EqAAAAACWLD1ZKUBKrLHoFvGWhFiNmrgPh"
  258. recaptcha_private_key: "6LddQ7EqAAAAAOX7Qrn2PL-s2r5Zo4c_aTi4uzkh"
  259. trusted_key_servers:
  260. - server_name: "matrix.org"
  261. #oidc_providers:
  262. # - idp_id: google
  263. # idp_name: Google
  264. # idp_brand: "google" # optional: styling hint for clients
  265. # issuer: "https://accounts.google.com/"
  266. # client_id: "743600892864-394ileehj9l1vfvvip3l3meqb0it6g50.apps.googleusercontent.com"
  267. # client_secret: "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"
  268. # scopes: ["openid", "profile", "email"] # email is optional, read below
  269. # user_mapping_provider:
  270. # config:
  271. # localpart_template: "{{ user.given_name|lower }}"
  272. # display_name_template: "{{ user.name }}"
  273. # email_template: "{{ user.email }}" # needs "email" in scopes above
  274. experimental_features:
  275. msc4108_enabled: true
  276. msc3861:
  277. enabled: true
  278. # Synapse will call `{issuer}/.well-known/openid-configuration` to get the OIDC configuration
  279. issuer: https://matrix-auth.dezendorf.net
  280. # Matches the `client_id` in the auth service config
  281. client_id: 01JNE805N1CE31RTW79FYC68VA
  282. # Matches the `client_auth_method` in the auth service config
  283. client_auth_method: client_secret_basic
  284. # Matches the `client_secret` in the auth service config
  285. client_secret: "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"
  286. # Matches the `matrix.secret` in the auth service config
  287. admin_token: "yvuN4UMz6ZHWWp4WVNxWbBneWSlNLwYy"
  288. introspection_endpoint: "https://matrix-auth.dezendorf.net/oauth2/introspect"
  289. homeserver-log-config: |
  290. version: 1
  291. formatters:
  292. precise:
  293. format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
  294. handlers:
  295. console:
  296. class: logging.StreamHandler
  297. formatter: precise
  298. loggers:
  299. # This is just here so we can leave `loggers` in the config regardless of whether
  300. # we configure other loggers below (avoid empty yaml dict error).
  301. _placeholder:
  302. level: "INFO"
  303. handlers: [console]
  304. synapse.storage.SQL:
  305. # beware: increasing this to DEBUG will make synapse log sensitive
  306. # information such as access tokens.
  307. level: INFO
  308. handlers: [console]
  309. root:
  310. level: INFO
  311. handlers: [console]
  312. disable_existing_loggers: false
  313. ---
  314. apiVersion: v1
  315. kind: ConfigMap
  316. metadata:
  317. name: matrix-auth-files
  318. namespace: default
  319. data:
  320. config-yaml: |
  321. http:
  322. listeners:
  323. - name: web
  324. resources:
  325. - name: discovery
  326. - name: human
  327. - name: oauth
  328. - name: compat
  329. - name: graphql
  330. - name: assets
  331. binds:
  332. - address: '0.0.0.0:8080'
  333. proxy_protocol: false
  334. - name: internal
  335. resources:
  336. - name: health
  337. binds:
  338. - host: localhost
  339. port: 8081
  340. proxy_protocol: false
  341. trusted_proxies:
  342. - 192.168.0.0/16
  343. - 172.16.0.0/12
  344. - 10.0.0.0/10
  345. - 127.0.0.1/8
  346. - fd00::/8
  347. - ::1/128
  348. public_base: https://matrix-auth.dezendorf.net
  349. issuer: https://matrix-auth.dezendorf.net
  350. database:
  351. host: postgres-mas
  352. port: 5432
  353. username: mas_user
  354. password: "Bee1701Charming1!"
  355. database: mas
  356. max_connections: 10
  357. min_connections: 0
  358. connect_timeout: 30
  359. idle_timeout: 600
  360. max_lifetime: 1800
  361. email:
  362. from: '"Authentication Service" <breandan@dezendorf.com>'
  363. reply_to: '"Authentication Service" <breandan@dezendorf.com>'
  364. transport: blackhole
  365. secrets:
  366. encryption: 3c181674eb46ae497285dae790f6db7a4c2e8844b00d8ae643fd135c85032d63
  367. keys:
  368. - kid: Lg9L19ltKs
  369. key: |
  370. -----BEGIN RSA PRIVATE KEY-----
  371. MIIEowIBAAKCAQEA0Hx3fsKShaNEz3JLmeGMoHPK46lOJMUqtAi/4c0I4+Dl/sy+
  372. M0B8+6qUD9R5+KR0Lheohfq0o1HnWtwRv3drh7hkGl1CSfV28qOen9USEzAckxwq
  373. Yak/hMzeQLXnmlKNKjtolBBdGoQC6DfC8wqrvoJ8Qfopy4oPC5096GYaQrPgfji6
  374. 2JARDMoclstK/0ms4VH8E44RkTl+aMu8SFkaPIpKYZZ+tqifYjNQfa43BB02QZVm
  375. Khz6eS/w0f/wOjybP+EBajvsYgfQDSHhNVAS5TkrfJlUnfxF1jEGxsoHc6E0pevW
  376. Fc+EAll2ZHr9MDYLIze8hQLZcGXVzQXRaa9hbQIDAQABAoIBAGsuUdBc/y6szQdI
  377. 3wzxI3apkLiRpZbJtjZv+RWAbv2X9SWU5IM8uAQ5oXyx4zKseP3pM74NMSh1Rtcz
  378. I/ymzCUt6miTYSzcgJYk/7tzsqMirM4EQNWMSRdgqzHhUnvHzMLVX+Iet36WN1hi
  379. slp4Neru8iqJDUuSYkG6SMVdGEsJeEBGnOlX0UANIGDzx+d0xqfyKlqCd3iucqc9
  380. rIl5pKogqHCbww+AY4F60A5fqZRlVOliZybFKzODXmYJbsT2nHXNUKmdpRaw/UAq
  381. X4253k/cZ+PhJ1l9TzYPuGSfLpLIedyfmEP8FuTD0nk+wZuR1bTVOmLYxAc59cPu
  382. gHa6dRECgYEA1mdWmqW3RxnevPY0UQ7M36SmmLpzyyuH//alXQ0VMKzRfOsw1Yvu
  383. tKfguqzyf9Sl/bQQPoadtrRRz2cN2mtZTyUAfnI+umQraXDgo6Garwp/p3NzQbcb
  384. CFHB/1gKwW9XJxdQsDdFsJDL5eav/augwjKwNtRrSgtlH1OZR6Eo6SMCgYEA+O86
  385. psduumOB4FNj8KUblsRtu9EeRZVGLnBS5j5ZSvE2ZbD2fF+NrBqmlGiElUQztUua
  386. XXSovHROiiQpZO7pXXTL2yWXY3/ONS7Ad7fN+klVna9rtcH6TyZn7cdBNaaA99ke
  387. WP5TpNBzGRG8kfbGFhotBJR0X6WxvotiWoNMXC8CgYAWdx+A9so8ff5zyEx1Ddrz
  388. uBnouOi3KimG7X4oQN2uiv0sXKxyQ8ZQUaLfjI2gTVTTP5HQK2TNJxnHZKHz9/mU
  389. rGjf1vKxrxtJYhV3r9A4dR4pGpTCFwCTH5X3Pm9qE1OLegrvW+tGc/WZclGQf/JJ
  390. Ruxl4l4XlRgUbzsJYV6bBwKBgQCILP4tvA1jowmqOJQEUZ3dBQluZAAmWnlw7/s5
  391. fsQEDh4O1RaRhQgQLOgRaXeV3CBZPcls9GNV7F4Gja+jSlqYyEq4UEEXqhOY3kFl
  392. fEQOdc2DHDJU1I9kewMBfS279qC4dKp4TnBdSbac8Snxw0grURhtV/StWgv4y3D7
  393. SLYd+wKBgHXJhL3lu4mFkg1ZXdDnlnGwsN26uIVLO38kgFx4VUVzXMkyNEenj4qi
  394. Ah7Lqh7I0kYcbeU03N+YPCGhRw7J5VCfH2PfpaG/OYBrD5EDqUhXEcqKHF58DKuL
  395. CZWqwhnlyPETPr01Cw+Ew7CHLtWQDsRmP7fOf0jBEGPnT0D/4mLJ
  396. -----END RSA PRIVATE KEY-----
  397. - kid: VlpwvY6SAD
  398. key: |
  399. -----BEGIN EC PRIVATE KEY-----
  400. MHcCAQEEIIZmVwBwGDR+9/tqIcbjt6rTQ/8Bw78N7vkCoh8bsvC7oAoGCCqGSM49
  401. AwEHoUQDQgAE6Cg0wMq2xaXRUQJd5JsDycuJzDsUq/2n+XLnyjEr3eUIxVzSYv+a
  402. BN7y0dHUINthfc0TaTeS5RhXe8GcM2Albw==
  403. -----END EC PRIVATE KEY-----
  404. - kid: W3O3m4ayPx
  405. key: |
  406. -----BEGIN EC PRIVATE KEY-----
  407. MIGkAgEBBDBbjf34M6QuUQ8+u7VouyRXeW4oJn+FjPx8obOYW/8FbJIZkNCgxnKN
  408. wdR+LMulXjKgBwYFK4EEACKhZANiAASKeEoUVrElar/cN2iuUg/8Qf0KgoUnRBWI
  409. Jx1doGFjAzb+HUr5KkPNaGQcbeIPqYPIOSYY27PgPBexBtb/NLjhFaK8w6qUVDOK
  410. CU2Mb8op7dH+4cfe7l0ZBGy+lhY0jOQ=
  411. -----END EC PRIVATE KEY-----
  412. - kid: 3Rhruz5OEl
  413. key: |
  414. -----BEGIN EC PRIVATE KEY-----
  415. MHQCAQEEIN8MzvjgVLEWxi32tKjgY9/bMUYpqdnQ4A6iO6o2ufTnoAcGBSuBBAAK
  416. oUQDQgAEWvxNlx7qxzIyMIyGsltEuXAnnJ4NoYyUQoZzGaAgOAqeuRMg+qvb3tHC
  417. aW9EU5Vc7RkqugaLUF2K2jcFMbxGPw==
  418. -----END EC PRIVATE KEY-----
  419. passwords:
  420. enabled: true
  421. schemes:
  422. - version: 1
  423. algorithm: argon2id
  424. minimum_complexity: 3
  425. matrix:
  426. homeserver: matrix.dezendorf.net
  427. secret: yvuN4UMz6ZHWWp4WVNxWbBneWSlNLwYy
  428. endpoint: https://matrix.dezendorf.net
  429. clients:
  430. - client_id: 01JNE805N1CE31RTW79FYC68VA
  431. client_auth_method: client_secret_basic
  432. client_secret: "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"
  433. upstream_oauth2:
  434. providers:
  435. - id: 01JNE805N1CE31RTW79FYC68VA
  436. human_name: Google
  437. brand_name: "google"
  438. issuer: "https://accounts.google.com"
  439. client_id: "743600892864-394ileehj9l1vfvvip3l3meqb0it6g50.apps.googleusercontent.com"
  440. client_secret: "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"
  441. token_endpoint_auth_method: client_secret_post
  442. scope: "openid profile email"
  443. claims_imports:
  444. localpart:
  445. action: ignore
  446. displayname:
  447. action: suggest
  448. template: "{{ user.name }}"
  449. email:
  450. action: suggest
  451. template: "{{ user.email }}"
  452. account_name:
  453. template: "{{ user.email }}"