| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 1 | input: { |
| gio | 44f621b | 2024-04-29 09:44:38 +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 | |
| Giorgi Lekveishvili | ef21c13 | 2024-01-17 18:57:58 +0400 | [diff] [blame] | 8 | name: "Matrix" |
| 9 | namespace: "app-matrix" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 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" |
| 12 | icon: "<svg xmlns='http://www.w3.org/2000/svg' width='50' height='50' viewBox='0 0 24 24'><path fill='currentColor' d='M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033a3.312 3.312 0 0 1 1.117-1.024c.433-.245.936-.365 1.5-.365c.54 0 1.033.107 1.481.314c.448.208.785.582 1.02 1.108c.254-.374.6-.706 1.034-.992c.434-.287.95-.43 1.546-.43c.453 0 .872.056 1.26.167c.388.11.716.286.993.53c.276.245.489.559.646.951c.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66a1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166c-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499a1.946 1.946 0 0 0-.231.696a5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688a1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19c-.111 0-.259.024-.439.074c-.18.051-.36.143-.53.282a1.637 1.637 0 0 0-.439.595c-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z'/></svg>" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 13 | |
| 14 | images: { |
| 15 | matrix: { |
| 16 | repository: "matrixdotorg" |
| 17 | name: "synapse" |
| gio | a1a6506 | 2024-04-13 09:20:44 +0400 | [diff] [blame] | 18 | tag: "v1.104.0" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 19 | pullPolicy: "IfNotPresent" |
| 20 | } |
| 21 | postgres: { |
| 22 | repository: "library" |
| 23 | name: "postgres" |
| 24 | tag: "15.3" |
| 25 | pullPolicy: "IfNotPresent" |
| 26 | } |
| 27 | } |
| 28 | |
| 29 | charts: { |
| Giorgi Lekveishvili | 0c6b324 | 2024-03-14 15:31:08 +0400 | [diff] [blame] | 30 | oauth2Client: { |
| gio | f884341 | 2024-05-22 16:38:05 +0400 | [diff] [blame] | 31 | kind: "GitRepository" |
| 32 | address: "https://github.com/giolekva/pcloud.git" |
| 33 | branch: "main" |
| 34 | path: "charts/oauth2-client" |
| Giorgi Lekveishvili | 0c6b324 | 2024-03-14 15:31:08 +0400 | [diff] [blame] | 35 | } |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 36 | matrix: { |
| gio | f884341 | 2024-05-22 16:38:05 +0400 | [diff] [blame] | 37 | kind: "GitRepository" |
| 38 | address: "https://github.com/giolekva/pcloud.git" |
| 39 | branch: "main" |
| 40 | path: "charts/matrix" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 41 | } |
| 42 | postgres: { |
| gio | f884341 | 2024-05-22 16:38:05 +0400 | [diff] [blame] | 43 | kind: "GitRepository" |
| 44 | address: "https://github.com/giolekva/pcloud.git" |
| 45 | branch: "main" |
| 46 | path: "charts/postgresql" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 47 | } |
| 48 | } |
| 49 | |
| Giorgi Lekveishvili | 0c6b324 | 2024-03-14 15:31:08 +0400 | [diff] [blame] | 50 | _oauth2ClientSecretName: "oauth2-client" |
| 51 | |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 52 | helm: { |
| Giorgi Lekveishvili | 0c6b324 | 2024-03-14 15:31:08 +0400 | [diff] [blame] | 53 | "oauth2-client": { |
| 54 | chart: charts.oauth2Client |
| gio | f9f0bee | 2024-06-11 20:10:05 +0400 | [diff] [blame^] | 55 | info: "Creating OAuth2 client" |
| Giorgi Lekveishvili | 0c6b324 | 2024-03-14 15:31:08 +0400 | [diff] [blame] | 56 | values: { |
| 57 | name: "oauth2-client" |
| 58 | secretName: _oauth2ClientSecretName |
| 59 | grantTypes: ["authorization_code"] |
| 60 | responseTypes: ["code"] |
| 61 | scope: "openid profile" |
| 62 | redirectUris: ["https://\(_domain)/_synapse/client/oidc/callback"] |
| 63 | hydraAdmin: "http://hydra-admin.\(global.namespacePrefix)core-auth.svc.cluster.local" |
| 64 | } |
| 65 | } |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 66 | matrix: { |
| Giorgi Lekveishvili | a09fad7 | 2024-03-21 15:24:35 +0400 | [diff] [blame] | 67 | dependsOn: [{ |
| 68 | name: "postgres" |
| 69 | namespace: release.namespace |
| 70 | }] |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 71 | chart: charts.matrix |
| gio | f9f0bee | 2024-06-11 20:10:05 +0400 | [diff] [blame^] | 72 | info: "Installing Synapse server" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 73 | values: { |
| 74 | domain: global.domain |
| 75 | subdomain: input.subdomain |
| 76 | oauth2: { |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 77 | secretName: "oauth2-client" |
| Giorgi Lekveishvili | 0c6b324 | 2024-03-14 15:31:08 +0400 | [diff] [blame] | 78 | issuer: "https://hydra.\(global.domain)" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 79 | } |
| 80 | postgresql: { |
| 81 | host: "postgres" |
| 82 | port: 5432 |
| 83 | database: "matrix" |
| 84 | user: "matrix" |
| 85 | password: "matrix" |
| 86 | } |
| gio | e72b54f | 2024-04-22 10:44:41 +0400 | [diff] [blame] | 87 | certificateIssuer: issuerPublic |
| 88 | ingressClassName: ingressPublic |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 89 | configMerge: { |
| 90 | configName: "config-to-merge" |
| 91 | fileName: "to-merge.yaml" |
| 92 | } |
| 93 | image: { |
| 94 | repository: images.matrix.fullName |
| 95 | tag: images.matrix.tag |
| 96 | pullPolicy: images.matrix.pullPolicy |
| 97 | } |
| 98 | } |
| 99 | } |
| 100 | postgres: { |
| 101 | chart: charts.postgres |
| gio | f9f0bee | 2024-06-11 20:10:05 +0400 | [diff] [blame^] | 102 | info: "Installing PostgreSQL" |
| Giorgi Lekveishvili | e009a5d | 2024-01-05 14:10:11 +0400 | [diff] [blame] | 103 | values: { |
| 104 | fullnameOverride: "postgres" |
| 105 | image: { |
| 106 | registry: images.postgres.registry |
| 107 | repository: images.postgres.imageName |
| 108 | tag: images.postgres.tag |
| 109 | pullPolicy: images.postgres.pullPolicy |
| 110 | } |
| 111 | service: { |
| 112 | type: "ClusterIP" |
| 113 | port: 5432 |
| 114 | } |
| 115 | primary: { |
| 116 | initdb: { |
| 117 | scripts: { |
| 118 | "init.sql": """ |
| 119 | CREATE USER matrix WITH PASSWORD 'matrix'; |
| 120 | CREATE DATABASE matrix WITH OWNER = matrix ENCODING = UTF8 LOCALE = 'C' TEMPLATE = template0; |
| 121 | """ |
| 122 | } |
| 123 | } |
| 124 | persistence: { |
| 125 | size: "10Gi" |
| 126 | } |
| 127 | securityContext: { |
| 128 | enabled: true |
| 129 | fsGroup: 0 |
| 130 | } |
| 131 | containerSecurityContext: { |
| 132 | enabled: true |
| 133 | runAsUser: 0 |
| 134 | } |
| 135 | } |
| 136 | volumePermissions: { |
| 137 | securityContext: { |
| 138 | runAsUser: 0 |
| 139 | } |
| 140 | } |
| 141 | } |
| 142 | } |
| 143 | } |
| gio | 09a3e5b | 2024-04-26 14:11:06 +0400 | [diff] [blame] | 144 | |
| 145 | help: [{ |
| 146 | title: "Client Applications" |
| 147 | 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." |
| 148 | }, { |
| 149 | title: "Custom Homeserver" |
| 150 | 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." |
| 151 | }] |