blob: 6dd5609b5a4f618f9ca1550ded86c8ae251fdb7d [file] [log] [blame]
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04001input: {
gio7841f4f2024-07-26 19:53:49 +04002 network: #Network
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04003 subdomain: string
Giorgi Lekveishvili9d5e3f52024-03-13 15:02:50 +04004 ipSubnet: string
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +04005}
6
Giorgi Lekveishvili03d6f4b2024-03-08 13:05:21 +04007name: "headscale"
Giorgi Lekveishvili08af67a2024-01-18 08:53:05 +04008namespace: "app-headscale"
Davit Tabidze9ca49262024-07-10 15:51:27 +04009icon: "<svg xmlns='http://www.w3.org/2000/svg' width='50' height='50' viewBox='0 0 48 48'><circle cx='24' cy='24' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='38' cy='24' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='38' cy='10' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='24' cy='10' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='10' cy='10' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='10' cy='24' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='10' cy='38' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='24' cy='38' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='38' cy='38' r='4.5' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='24' cy='38' r='2' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='24' cy='24' r='2' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='10' cy='24' r='2' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/><circle cx='38' cy='24' r='2' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round'/></svg>"
Giorgi Lekveishvili08af67a2024-01-18 08:53:05 +040010
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040011images: {
12 headscale: {
13 repository: "headscale"
14 name: "headscale"
15 tag: "0.22.3"
16 pullPolicy: "IfNotPresent"
17 }
18 api: {
19 repository: "giolekva"
20 name: "headscale-api"
21 tag: "latest"
22 pullPolicy: "Always"
23 }
24}
25
26charts: {
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040027 oauth2Client: {
giof8843412024-05-22 16:38:05 +040028 kind: "GitRepository"
29 address: "https://github.com/giolekva/pcloud.git"
30 branch: "main"
31 path: "charts/oauth2-client"
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040032 }
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040033 headscale: {
giof8843412024-05-22 16:38:05 +040034 kind: "GitRepository"
35 address: "https://github.com/giolekva/pcloud.git"
36 branch: "main"
37 path: "charts/headscale"
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040038 }
39}
40
gio7841f4f2024-07-26 19:53:49 +040041_domain: "\(input.subdomain).\(input.network.domain)"
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040042_oauth2ClientSecretName: "oauth2-client"
43
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040044helm: {
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040045 "oauth2-client": {
46 chart: charts.oauth2Client
47 // TODO(gio): remove once hydra maester is installed as part of dodo itself
Giorgi Lekveishvilia09fad72024-03-21 15:24:35 +040048 dependsOn: [{
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040049 name: "auth"
50 namespace: "\(global.namespacePrefix)core-auth"
51 }]
52 values: {
gio520c6222024-07-11 17:34:40 +040053 name: "\(release.namespace)-headscale"
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040054 secretName: _oauth2ClientSecretName
55 grantTypes: ["authorization_code"]
56 responseTypes: ["code"]
57 scope: "openid profile email"
58 redirectUris: ["https://\(_domain)/oidc/callback"]
59 hydraAdmin: "http://hydra-admin.\(global.namespacePrefix)core-auth.svc.cluster.local"
60 }
61 }
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040062 headscale: {
63 chart: charts.headscale
Giorgi Lekveishvilia09fad72024-03-21 15:24:35 +040064 dependsOn: [{
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040065 name: "auth"
66 namespace: "\(global.namespacePrefix)core-auth"
67 }]
68 values: {
69 image: {
70 repository: images.headscale.fullName
71 tag: images.headscale.tag
72 pullPolicy: images.headscale.pullPolicy
73 }
74 storage: size: "5Gi"
gio7841f4f2024-07-26 19:53:49 +040075 ingressClassName: input.network.ingressClass
76 certificateIssuer: input.network.certificateIssuer
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040077 domain: _domain
gio7841f4f2024-07-26 19:53:49 +040078 publicBaseDomain: input.network.domain
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040079 ipAddressPool: "\(global.id)-headscale"
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040080 oauth2: {
81 secretName: _oauth2ClientSecretName
gio7841f4f2024-07-26 19:53:49 +040082 issuer: "https://hydra.\(input.network.domain)"
Giorgi Lekveishvili0c6b3242024-03-14 15:31:08 +040083 }
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040084 api: {
85 port: 8585
Giorgi Lekveishvili9d5e3f52024-03-13 15:02:50 +040086 ipSubnet: input.ipSubnet
Giorgi Lekveishvilie009a5d2024-01-05 14:10:11 +040087 image: {
88 repository: images.api.fullName
89 tag: images.api.tag
90 pullPolicy: images.api.pullPolicy
91 }
92 }
93 ui: enabled: false
94 }
95 }
96}
gio09a3e5b2024-04-26 14:11:06 +040097
98help: [{
99 title: "Install"
100 contents: """
101 You can install Tailscale client on any of your personal devices running: macOS, iOS, Windows, Lonux or Android. Installer packages can be found at: [https://tailscale.com/download](https://tailscale.com/download). After installing the client application you need to configure it to use https://\(_domain) as a login URL, so you can login to the VPN network with your dodo: account. See "Configure Login URL" section below for more details.
102 """
103 children: [{
104 title: "Widnows with MSI"
105 contents: "[https://tailscale.com/kb/1189/install-windows-msi](https://tailscale.com/kb/1189/install-windows-msi)"
106 }]
107}, {
108 title: "Configure Login URL"
109 contents: "After installing the client application you need to configure it to use https://\(_domain) as a login URL, so you can login to the VPN network with your dodo: account"
110 children: [{
111 title: "macOS"
gio7841f4f2024-07-26 19:53:49 +0400112 contents: "[https://headscale.\(input.network.domain)/apple](https://headscale.\(input.network.domain)/apple)"
gio09a3e5b2024-04-26 14:11:06 +0400113 }, {
114 title: "iOS"
gio7841f4f2024-07-26 19:53:49 +0400115 contents: "[https://headscale.\(input.network.domain)/apple](https://headscale.\(input.network.domain)/apple)"
gio09a3e5b2024-04-26 14:11:06 +0400116 }, {
117 title: "Windows"
118 contents: "[https://tailscale.com/kb/1318/windows-mdm](https://tailscale.com/kb/1318/windows-mdm)"
119 }, {
120 title: "Linux"
121 contents: "tailscale up --login-server https://\(_domain)"
122 }, {
123 title: "Android"
124 contents: """
125 After opening the app, the kebab menu icon (three dots) on the top bar on the right must be repeatedly opened and closed until the Change server option appears in the menu. This is where you can enter your headscale URL: https://\(_domain)
126
127 A screen recording of this process can be seen in the tailscale-android PR which implemented this functionality: [https://github.com/tailscale/tailscale-android/pull/55](https://github.com/tailscale/tailscale-android/pull/55)
128
129 After saving and restarting the app, selecting the regular Sign in option should open up the dodo: authentication page.
130 """
131 }, {
132 title: "Command Line"
133 contents: "tailscale up --login-server https://\(_domain)"
134 }]
135}]