matrix.yaml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  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. msc3861:
  276. enabled: true
  277. # Synapse will call `{issuer}/.well-known/openid-configuration` to get the OIDC configuration
  278. issuer: https://matrix-auth.dezendorf.net
  279. # Matches the `client_id` in the auth service config
  280. client_id: 0000000000000000000SYNAPSE
  281. # Matches the `client_auth_method` in the auth service config
  282. client_auth_method: client_secret_basic
  283. # Matches the `client_secret` in the auth service config
  284. client_secret: "SomeRandomSecret"
  285. # Matches the `matrix.secret` in the auth service config
  286. admin_token: "AnotherRandomSecret"
  287. introspection_endpoint: "https://matrix-auth.dezendorf.net/oauth2/introspect"
  288. homeserver-log-config: |
  289. version: 1
  290. formatters:
  291. precise:
  292. format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s'
  293. handlers:
  294. console:
  295. class: logging.StreamHandler
  296. formatter: precise
  297. loggers:
  298. # This is just here so we can leave `loggers` in the config regardless of whether
  299. # we configure other loggers below (avoid empty yaml dict error).
  300. _placeholder:
  301. level: "INFO"
  302. handlers: [console]
  303. synapse.storage.SQL:
  304. # beware: increasing this to DEBUG will make synapse log sensitive
  305. # information such as access tokens.
  306. level: INFO
  307. handlers: [console]
  308. root:
  309. level: INFO
  310. handlers: [console]
  311. disable_existing_loggers: false
  312. ---
  313. apiVersion: v1
  314. kind: ConfigMap
  315. metadata:
  316. name: matrix-auth-files
  317. namespace: default
  318. data:
  319. config-yaml: |
  320. http:
  321. listeners:
  322. - name: web
  323. resources:
  324. - name: discovery
  325. - name: human
  326. - name: oauth
  327. - name: compat
  328. - name: graphql
  329. - name: assets
  330. binds:
  331. - address: '0.0.0.0:8080'
  332. proxy_protocol: false
  333. - name: internal
  334. resources:
  335. - name: health
  336. binds:
  337. - host: localhost
  338. port: 8081
  339. proxy_protocol: false
  340. trusted_proxies:
  341. - 192.168.0.0/16
  342. - 172.16.0.0/12
  343. - 10.0.0.0/10
  344. - 127.0.0.1/8
  345. - fd00::/8
  346. - ::1/128
  347. public_base: https://matrix-auth.dezendorf.net
  348. issuer: https://matrix-auth.dezendorf.net
  349. database:
  350. host: postgres
  351. port: 5432
  352. username: mas_user
  353. password: "Bee1701Charming1!"
  354. database: mas
  355. max_connections: 10
  356. min_connections: 0
  357. connect_timeout: 30
  358. idle_timeout: 600
  359. max_lifetime: 1800
  360. email:
  361. from: '"Authentication Service" <breandan@dezendorf.com>'
  362. reply_to: '"Authentication Service" <breandan@dezendorf.com>'
  363. transport: blackhole
  364. secrets:
  365. encryption: 3c181674eb46ae497285dae790f6db7a4c2e8844b00d8ae643fd135c85032d63
  366. keys:
  367. - kid: Lg9L19ltKs
  368. key: |
  369. -----BEGIN RSA PRIVATE KEY-----
  370. MIIEowIBAAKCAQEA0Hx3fsKShaNEz3JLmeGMoHPK46lOJMUqtAi/4c0I4+Dl/sy+
  371. M0B8+6qUD9R5+KR0Lheohfq0o1HnWtwRv3drh7hkGl1CSfV28qOen9USEzAckxwq
  372. Yak/hMzeQLXnmlKNKjtolBBdGoQC6DfC8wqrvoJ8Qfopy4oPC5096GYaQrPgfji6
  373. 2JARDMoclstK/0ms4VH8E44RkTl+aMu8SFkaPIpKYZZ+tqifYjNQfa43BB02QZVm
  374. Khz6eS/w0f/wOjybP+EBajvsYgfQDSHhNVAS5TkrfJlUnfxF1jEGxsoHc6E0pevW
  375. Fc+EAll2ZHr9MDYLIze8hQLZcGXVzQXRaa9hbQIDAQABAoIBAGsuUdBc/y6szQdI
  376. 3wzxI3apkLiRpZbJtjZv+RWAbv2X9SWU5IM8uAQ5oXyx4zKseP3pM74NMSh1Rtcz
  377. I/ymzCUt6miTYSzcgJYk/7tzsqMirM4EQNWMSRdgqzHhUnvHzMLVX+Iet36WN1hi
  378. slp4Neru8iqJDUuSYkG6SMVdGEsJeEBGnOlX0UANIGDzx+d0xqfyKlqCd3iucqc9
  379. rIl5pKogqHCbww+AY4F60A5fqZRlVOliZybFKzODXmYJbsT2nHXNUKmdpRaw/UAq
  380. X4253k/cZ+PhJ1l9TzYPuGSfLpLIedyfmEP8FuTD0nk+wZuR1bTVOmLYxAc59cPu
  381. gHa6dRECgYEA1mdWmqW3RxnevPY0UQ7M36SmmLpzyyuH//alXQ0VMKzRfOsw1Yvu
  382. tKfguqzyf9Sl/bQQPoadtrRRz2cN2mtZTyUAfnI+umQraXDgo6Garwp/p3NzQbcb
  383. CFHB/1gKwW9XJxdQsDdFsJDL5eav/augwjKwNtRrSgtlH1OZR6Eo6SMCgYEA+O86
  384. psduumOB4FNj8KUblsRtu9EeRZVGLnBS5j5ZSvE2ZbD2fF+NrBqmlGiElUQztUua
  385. XXSovHROiiQpZO7pXXTL2yWXY3/ONS7Ad7fN+klVna9rtcH6TyZn7cdBNaaA99ke
  386. WP5TpNBzGRG8kfbGFhotBJR0X6WxvotiWoNMXC8CgYAWdx+A9so8ff5zyEx1Ddrz
  387. uBnouOi3KimG7X4oQN2uiv0sXKxyQ8ZQUaLfjI2gTVTTP5HQK2TNJxnHZKHz9/mU
  388. rGjf1vKxrxtJYhV3r9A4dR4pGpTCFwCTH5X3Pm9qE1OLegrvW+tGc/WZclGQf/JJ
  389. Ruxl4l4XlRgUbzsJYV6bBwKBgQCILP4tvA1jowmqOJQEUZ3dBQluZAAmWnlw7/s5
  390. fsQEDh4O1RaRhQgQLOgRaXeV3CBZPcls9GNV7F4Gja+jSlqYyEq4UEEXqhOY3kFl
  391. fEQOdc2DHDJU1I9kewMBfS279qC4dKp4TnBdSbac8Snxw0grURhtV/StWgv4y3D7
  392. SLYd+wKBgHXJhL3lu4mFkg1ZXdDnlnGwsN26uIVLO38kgFx4VUVzXMkyNEenj4qi
  393. Ah7Lqh7I0kYcbeU03N+YPCGhRw7J5VCfH2PfpaG/OYBrD5EDqUhXEcqKHF58DKuL
  394. CZWqwhnlyPETPr01Cw+Ew7CHLtWQDsRmP7fOf0jBEGPnT0D/4mLJ
  395. -----END RSA PRIVATE KEY-----
  396. - kid: VlpwvY6SAD
  397. key: |
  398. -----BEGIN EC PRIVATE KEY-----
  399. MHcCAQEEIIZmVwBwGDR+9/tqIcbjt6rTQ/8Bw78N7vkCoh8bsvC7oAoGCCqGSM49
  400. AwEHoUQDQgAE6Cg0wMq2xaXRUQJd5JsDycuJzDsUq/2n+XLnyjEr3eUIxVzSYv+a
  401. BN7y0dHUINthfc0TaTeS5RhXe8GcM2Albw==
  402. -----END EC PRIVATE KEY-----
  403. - kid: W3O3m4ayPx
  404. key: |
  405. -----BEGIN EC PRIVATE KEY-----
  406. MIGkAgEBBDBbjf34M6QuUQ8+u7VouyRXeW4oJn+FjPx8obOYW/8FbJIZkNCgxnKN
  407. wdR+LMulXjKgBwYFK4EEACKhZANiAASKeEoUVrElar/cN2iuUg/8Qf0KgoUnRBWI
  408. Jx1doGFjAzb+HUr5KkPNaGQcbeIPqYPIOSYY27PgPBexBtb/NLjhFaK8w6qUVDOK
  409. CU2Mb8op7dH+4cfe7l0ZBGy+lhY0jOQ=
  410. -----END EC PRIVATE KEY-----
  411. - kid: 3Rhruz5OEl
  412. key: |
  413. -----BEGIN EC PRIVATE KEY-----
  414. MHQCAQEEIN8MzvjgVLEWxi32tKjgY9/bMUYpqdnQ4A6iO6o2ufTnoAcGBSuBBAAK
  415. oUQDQgAEWvxNlx7qxzIyMIyGsltEuXAnnJ4NoYyUQoZzGaAgOAqeuRMg+qvb3tHC
  416. aW9EU5Vc7RkqugaLUF2K2jcFMbxGPw==
  417. -----END EC PRIVATE KEY-----
  418. passwords:
  419. enabled: true
  420. schemes:
  421. - version: 1
  422. algorithm: argon2id
  423. minimum_complexity: 3
  424. matrix:
  425. homeserver: matrix.dezendorf.net
  426. secret: yvuN4UMz6ZHWWp4WVNxWbBneWSlNLwYy
  427. endpoint: https://matrix.dezendorf.net
  428. clients:
  429. - client_id: 0000000000000000000SYNAPSE
  430. client_auth_method: client_secret_basic
  431. client_secret: "SomeRandomSecret"
  432. upstream_oauth2:
  433. providers:
  434. - id: 01JNE805N1CE31RTW79FYC68VA
  435. human_name: Google
  436. brand_name: "google"
  437. issuer: "https://accounts.google.com"
  438. client_id: "743600892864-394ileehj9l1vfvvip3l3meqb0it6g50.apps.googleusercontent.com"
  439. client_secret: "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"
  440. token_endpoint_auth_method: client_secret_post
  441. scope: "openid profile email"
  442. claims_imports:
  443. localpart:
  444. action: ignore
  445. displayname:
  446. action: suggest
  447. template: "{{ user.name }}"
  448. email:
  449. action: suggest
  450. template: "{{ user.email }}"
  451. account_name:
  452. template: "{{ user.email }}"