| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 1 | input: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 2 | network: #Network @name(Network) |
| 3 | subdomain: string @name(Subdomain) |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 4 | } |
| 5 | |
| 6 | _domain: "\(input.subdomain).\(input.network.domain)" |
| 7 | |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 8 | name: "Matrix" |
| 9 | namespace: "app-matrix" |
| 10 | readme: "matrix application will be installed on \(input.network.name) network and be accessible to any user on https://\(_domain)" |
| Giorgi Lekveishvili | ef21c13 | 2024-01-17 18:57:58 +0400 | [diff] [blame] | 11 | description: "An open network for secure, decentralised communication" |
| gio | 8c942d2 | 2024-07-17 13:43:02 +0400 | [diff] [blame] | 12 | icon: """ |
| gio | d2d2df0 | 2025-05-03 19:15:17 +0400 | [diff] [blame] | 13 | <svg width='50px' height='50px' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 39.68503937 39.68503937'> |
| 14 | <defs> |
| 15 | <style> |
| 16 | .cls-1 { |
| 17 | fill: currentColor; |
| 18 | } |
| 19 | |
| 20 | .cls-2 { |
| 21 | fill: none; |
| 22 | stroke: #3a3a3a; |
| 23 | stroke-miterlimit: 10; |
| 24 | stroke-width: .98133445px; |
| 25 | } |
| 26 | </style> |
| 27 | </defs> |
| 28 | <rect class='cls-2' x='-9.97439025' y='-9.97439025' width='59.63381987' height='59.63381987'/> |
| 29 | <path class='cls-1' d='m1.04503942.90944884v37.86613982h2.72503927v.90945071H0V0h3.77007869v.90944884H1.04503942Zm11.64590578,12.00472508v1.91314893h.05456692c.47654392-.69956134,1.10875881-1.27913948,1.84700726-1.69322862.71598361-.40511792,1.54771632-.60354293,2.48031496-.60354293.89291332,0,1.70811022.17692893,2.44889755.51921281.74078733.34393731,1.29803124.96236184,1.68661493,1.83212566.41999952-.61842453.99212662-1.16740212,1.70976444-1.64031434.71763782-.47456723,1.57086583-.71102334,2.55637717-.71102334.74905523,0,1.44188933.09259881,2.08346495.27614143.64157561.18188998,1.18393635.47291301,1.64196855.8763783.45637641.40511792.80858321.92433073,1.06818882,1.57252004.25133929.6481893.3803142,1.42700774.3803142,2.34307056v9.47149555h-3.88417161v-8.02133831c0-.4729138-.01653581-.92433073-.0529127-1.34267762-.02666609-.3797812-.12779852-.75060537-.2976383-1.09133833-.16496703-.31157689-.41647821-.56882971-.72425151-.74078733-.32078781-.1818892-.75566893-.27448879-1.29803124-.27448879-.54897601,0-.99212662.10582699-1.32779444.3125199-.33038665.20312114-.60355081.48709839-.79370003.82511744-.19910782.35594888-.32873086.74650374-.38196842,1.15086631-.06370056.42978918-.09685576.86355382-.09921329,1.29803124v7.88409548h-3.8858274v-7.93700819c0-.41999952-.00661369-.83173271-.0297632-1.24346433-.01353647-.38990201-.09350161-.7746348-.23645611-1.13763734-.13486952-.34292964-.3751576-.63417029-.68622041-.83173271-.32078781-.20669291-.78708634-.31417253-1.41212614-.31417253-.18354341,0-.42826743.03968532-.72590573.1223628-.2976383.08433012-.59527502.23645611-.87637751.46629853-.31383822.26829772-.56214032.60483444-.72590573.98385871-.19842501.42826743-.29763751.99212662-.29763751,1.68661335v8.21149541h-3.88417713v-14.16259852l3.66259868.00000079Zm25.94905485,25.86141789V.90944884h-2.72504056v-.90944884h3.77007988v39.68503937h-3.77007988v-.90944756h2.72504056Z'/> |
| 30 | </svg>""" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 31 | |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 32 | out: { |
| 33 | images: { |
| 34 | matrix: { |
| 35 | repository: "matrixdotorg" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 36 | name: "synapse" |
| 37 | tag: "v1.126.0" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 38 | pullPolicy: "IfNotPresent" |
| Giorgi Lekveishvili | 0c6b324 | 2024-03-14 15:31:08 +0400 | [diff] [blame] | 39 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 40 | postgres: { |
| 41 | repository: "library" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 42 | name: "postgres" |
| 43 | tag: "15.3" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 44 | pullPolicy: "IfNotPresent" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 45 | } |
| 46 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 47 | |
| 48 | charts: { |
| 49 | oauth2Client: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 50 | kind: "GitRepository" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 51 | address: "https://code.v1.dodo.cloud/helm-charts" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 52 | branch: "main" |
| 53 | path: "charts/oauth2-client" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 54 | } |
| 55 | matrix: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 56 | kind: "GitRepository" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 57 | address: "https://code.v1.dodo.cloud/helm-charts" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 58 | branch: "main" |
| 59 | path: "charts/matrix" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 60 | } |
| 61 | postgres: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 62 | kind: "GitRepository" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 63 | address: "https://code.v1.dodo.cloud/helm-charts" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 64 | branch: "main" |
| 65 | path: "charts/postgresql" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 66 | } |
| 67 | } |
| 68 | |
| 69 | _oauth2ClientSecretName: "oauth2-client" |
| 70 | |
| 71 | helm: { |
| 72 | "oauth2-client": { |
| 73 | chart: charts.oauth2Client |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 74 | info: "Creating OAuth2 client" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 75 | values: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 76 | name: "\(release.namespace)-matrix" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 77 | secretName: _oauth2ClientSecretName |
| 78 | grantTypes: ["authorization_code"] |
| 79 | responseTypes: ["code"] |
| 80 | scope: "openid profile" |
| 81 | redirectUris: ["https://\(_domain)/_synapse/client/oidc/callback"] |
| 82 | hydraAdmin: "http://hydra-admin.\(global.namespacePrefix)core-auth.svc.cluster.local" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 83 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 84 | } |
| 85 | matrix: { |
| 86 | dependsOn: [{ |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 87 | name: "postgres" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 88 | namespace: release.namespace |
| 89 | }] |
| 90 | chart: charts.matrix |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 91 | info: "Installing Synapse server" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 92 | values: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 93 | domain: input.network.domain |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 94 | subdomain: input.subdomain |
| 95 | oauth2: { |
| 96 | secretName: "oauth2-client" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 97 | issuer: "https://hydra.\(input.network.domain)" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 98 | } |
| 99 | postgresql: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 100 | host: "postgres" |
| 101 | port: 5432 |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 102 | database: "matrix" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 103 | user: "matrix" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 104 | password: "matrix" |
| 105 | } |
| 106 | certificateIssuer: input.network.certificateIssuer |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 107 | ingressClassName: input.network.ingressClass |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 108 | configMerge: { |
| 109 | configName: "config-to-merge" |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 110 | fileName: "to-merge.yaml" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 111 | } |
| 112 | image: { |
| 113 | repository: images.matrix.fullName |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 114 | tag: images.matrix.tag |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 115 | pullPolicy: images.matrix.pullPolicy |
| 116 | } |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 117 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 118 | } |
| 119 | postgres: { |
| 120 | chart: charts.postgres |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 121 | info: "Installing PostgreSQL" |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 122 | values: { |
| 123 | fullnameOverride: "postgres" |
| 124 | image: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 125 | registry: images.postgres.registry |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 126 | repository: images.postgres.imageName |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 127 | tag: images.postgres.tag |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 128 | pullPolicy: images.postgres.pullPolicy |
| 129 | } |
| 130 | service: { |
| 131 | type: "ClusterIP" |
| 132 | port: 5432 |
| 133 | } |
| 134 | primary: { |
| 135 | initdb: { |
| 136 | scripts: { |
| 137 | "init.sql": """ |
| 138 | CREATE USER matrix WITH PASSWORD 'matrix'; |
| 139 | CREATE DATABASE matrix WITH OWNER = matrix ENCODING = UTF8 LOCALE = 'C' TEMPLATE = template0; |
| 140 | """ |
| 141 | } |
| 142 | } |
| 143 | persistence: { |
| 144 | size: "10Gi" |
| 145 | } |
| 146 | securityContext: { |
| 147 | enabled: true |
| 148 | fsGroup: 0 |
| 149 | } |
| 150 | containerSecurityContext: { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 151 | enabled: true |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 152 | runAsUser: 0 |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 153 | } |
| 154 | } |
| gio | 7fbd4ad | 2024-08-27 10:06:39 +0400 | [diff] [blame] | 155 | volumePermissions: { |
| 156 | securityContext: { |
| 157 | runAsUser: 0 |
| 158 | } |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 159 | } |
| 160 | } |
| 161 | } |
| 162 | } |
| 163 | } |
| gio | 09a3e5b | 2024-04-26 14:11:06 +0400 | [diff] [blame] | 164 | |
| 165 | help: [{ |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 166 | title: "Client Applications" |
| gio | 09a3e5b | 2024-04-26 14:11:06 +0400 | [diff] [blame] | 167 | contents: "You can connect to \(_domain) Matrix server with any of the official clients. We recommend using Element. You can use official Element Web application to chat within the browser. Platform native client applications can be downloaded from: [https://element.io/download](https://element.io/download). Follow **Custom Homeserver** section to login with your dodo: account." |
| 168 | }, { |
| gio | 9bd87ca | 2025-04-20 08:05:34 +0400 | [diff] [blame] | 169 | title: "Custom Homeserver" |
| gio | 09a3e5b | 2024-04-26 14:11:06 +0400 | [diff] [blame] | 170 | contents: "Click **Sign in** button, edit **Homeserver** address and enter **\(input.network.domain)**, click **Continue**. Choose **Continue with PCloud** option and login to your dodo: account." |
| 171 | }] |