@@ -17,9 +17,13 @@ func Apple(url string) *elem.Element {
17
17
headerOne ("headscale: iOS configuration" ),
18
18
headerTwo ("GUI" ),
19
19
elem .Ol (nil ,
20
- elem .Li (nil ,
20
+ elem .Li (
21
+ nil ,
21
22
elem .Text ("Install the official Tailscale iOS client from the " ),
22
- elem .A (attrs.Props {attrs .Href : "https://apps.apple.com/app/tailscale/id1470499037" },
23
+ elem .A (
24
+ attrs.Props {
25
+ attrs .Href : "https://apps.apple.com/app/tailscale/id1470499037" ,
26
+ },
23
27
elem .Text ("App store" ),
24
28
),
25
29
),
@@ -31,27 +35,47 @@ func Apple(url string) *elem.Element {
31
35
elem .Li (nil ,
32
36
elem .Text ("Open Settings on the iOS device" ),
33
37
),
34
- elem .Li (nil ,
35
- elem .Text (`Scroll down to the "third party apps" section, under "Game Center" or "TV Provider"` ),
38
+ elem .Li (
39
+ nil ,
40
+ elem .Text (
41
+ `Scroll down to the "third party apps" section, under "Game Center" or "TV Provider"` ,
42
+ ),
36
43
),
37
44
elem .Li (nil ,
38
45
elem .Text ("Find Tailscale and select it" ),
39
46
elem .Ul (nil ,
40
- elem .Li (nil ,
41
- elem .Text (`If the iOS device was previously logged into Tailscale, switch the "Reset Keychain" toggle to "on"` ),
47
+ elem .Li (
48
+ nil ,
49
+ elem .Text (
50
+ `If the iOS device was previously logged into Tailscale, switch the "Reset Keychain" toggle to "on"` ,
51
+ ),
42
52
),
43
53
),
44
54
),
45
- elem .Li (nil ,
46
- elem .Text (fmt .Sprintf (`Enter "%s" under "Alternate Coordination Server URL"` ,url )),
55
+ elem .Li (
56
+ nil ,
57
+ elem .Text (
58
+ fmt .Sprintf (
59
+ `Enter "%s" under "Alternate Coordination Server URL"` ,
60
+ url ,
61
+ ),
62
+ ),
47
63
),
48
- elem .Li (nil ,
49
- elem .Text ("Restart the app by closing it from the iOS app switcher, open the app and select the regular sign in option " ),
64
+ elem .Li (
65
+ nil ,
66
+ elem .Text (
67
+ "Restart the app by closing it from the iOS app switcher, open the app and select the regular sign in option " ,
68
+ ),
50
69
elem .I (nil , elem .Text ("(non-SSO)" )),
51
- elem .Text (". It should open up to the headscale authentication page." ),
70
+ elem .Text (
71
+ ". It should open up to the headscale authentication page." ,
72
+ ),
52
73
),
53
- elem .Li (nil ,
54
- elem .Text ("Enter your credentials and log in. Headscale should now be working on your iOS device" ),
74
+ elem .Li (
75
+ nil ,
76
+ elem .Text (
77
+ "Enter your credentials and log in. Headscale should now be working on your iOS device" ,
78
+ ),
55
79
),
56
80
),
57
81
headerOne ("headscale: macOS configuration" ),
@@ -61,39 +85,63 @@ func Apple(url string) *elem.Element {
61
85
),
62
86
elem .Pre (nil ,
63
87
elem .Code (nil ,
64
- elem .Text (fmt .Sprintf ("tailscale login --login-server %s" ,url )),
88
+ elem .Text (fmt .Sprintf ("tailscale login --login-server %s" , url )),
65
89
),
66
90
),
67
91
headerTwo ("GUI" ),
68
92
elem .Ol (nil ,
69
- elem .Li (nil ,
70
- elem .Text ("ALT + Click the Tailscale icon in the menu and hover over the Debug menu" ),
93
+ elem .Li (
94
+ nil ,
95
+ elem .Text (
96
+ "ALT + Click the Tailscale icon in the menu and hover over the Debug menu" ,
97
+ ),
71
98
),
72
99
elem .Li (nil ,
73
100
elem .Text (`Under "Custom Login Server", select "Add Account..."` ),
74
101
),
75
- elem .Li (nil ,
76
- elem .Text (fmt .Sprintf (`Enter "%s" of the headscale instance and press "Add Account"` ,url )),
102
+ elem .Li (
103
+ nil ,
104
+ elem .Text (
105
+ fmt .Sprintf (
106
+ `Enter "%s" of the headscale instance and press "Add Account"` ,
107
+ url ,
108
+ ),
109
+ ),
77
110
),
78
111
elem .Li (nil ,
79
112
elem .Text (`Follow the login procedure in the browser` ),
80
113
),
81
114
),
82
115
headerTwo ("Profiles" ),
83
- elem .P (nil ,
84
- elem .Text ("Headscale can be set to the default server by installing a Headscale configuration profile:" ),
116
+ elem .P (
117
+ nil ,
118
+ elem .Text (
119
+ "Headscale can be set to the default server by installing a Headscale configuration profile:" ,
120
+ ),
85
121
),
86
- elem .P (nil ,
87
- elem .A (attrs.Props {attrs .Href : "/apple/macos-app-store" , attrs .Download : "headscale_macos.mobileconfig" },
122
+ elem .P (
123
+ nil ,
124
+ elem .A (
125
+ attrs.Props {
126
+ attrs .Href : "/apple/macos-app-store" ,
127
+ attrs .Download : "headscale_macos.mobileconfig" ,
128
+ },
88
129
elem .Text ("macOS AppStore profile " ),
89
130
),
90
- elem .A (attrs.Props {attrs .Href : "/apple/macos-standalone" , attrs .Download : "headscale_macos.mobileconfig" },
131
+ elem .A (
132
+ attrs.Props {
133
+ attrs .Href : "/apple/macos-standalone" ,
134
+ attrs .Download : "headscale_macos.mobileconfig" ,
135
+ },
91
136
elem .Text ("macOS Standalone profile" ),
92
137
),
93
138
),
94
139
elem .Ol (nil ,
95
- elem .Li (nil ,
96
- elem .Text ("Download the profile, then open it. When it has been opened, there should be a notification that a profile can be installed" ),
140
+ elem .Li (
141
+ nil ,
142
+ elem .Text (
143
+ "Download the profile, then open it. When it has been opened, there should be a notification that a profile can be installed" ,
144
+ ),
97
145
),
98
146
elem .Li (nil ,
99
147
elem .Text (`Open System Preferences and go to "Profiles"` ),
@@ -106,43 +154,108 @@ func Apple(url string) *elem.Element {
106
154
),
107
155
),
108
156
elem .P (nil , elem .Text ("Or" )),
109
- elem .P (nil ,
110
- elem .Text ("Use your terminal to configure the default setting for Tailscale by issuing:" ),
157
+ elem .P (
158
+ nil ,
159
+ elem .Text (
160
+ "Use your terminal to configure the default setting for Tailscale by issuing:" ,
161
+ ),
111
162
),
112
163
elem .Ul (nil ,
113
164
elem .Li (nil ,
114
165
elem .Text (`for app store client:` ),
115
- elem .Code (nil ,
116
- elem .Text (fmt .Sprintf (`defaults write io.tailscale.ipn.macos ControlURL %s` ,url )),
166
+ elem .Code (
167
+ nil ,
168
+ elem .Text (
169
+ fmt .Sprintf (
170
+ `defaults write io.tailscale.ipn.macos ControlURL %s` ,
171
+ url ,
172
+ ),
173
+ ),
117
174
),
118
175
),
119
176
elem .Li (nil ,
120
177
elem .Text (`for standalone client:` ),
121
- elem .Code (nil ,
122
- elem .Text (fmt .Sprintf (`defaults write io.tailscale.ipn.macsys ControlURL %s` ,url )),
178
+ elem .Code (
179
+ nil ,
180
+ elem .Text (
181
+ fmt .Sprintf (
182
+ `defaults write io.tailscale.ipn.macsys ControlURL %s` ,
183
+ url ,
184
+ ),
185
+ ),
123
186
),
124
187
),
125
188
),
126
189
elem .P (nil ,
127
190
elem .Text ("Restart Tailscale.app and log in." ),
128
191
),
129
192
headerThree ("Caution" ),
130
- elem .P (nil ,
131
- elem .Text ("You should always download and inspect the profile before installing it:" ),
193
+ elem .P (
194
+ nil ,
195
+ elem .Text (
196
+ "You should always download and inspect the profile before installing it:" ,
197
+ ),
132
198
),
133
199
elem .Ul (nil ,
134
200
elem .Li (nil ,
135
201
elem .Text (`for app store client: ` ),
136
202
elem .Code (nil ,
137
- elem .Text (fmt .Sprintf (`curl %s/apple/macos-app-store` ,url )),
203
+ elem .Text (fmt .Sprintf (`curl %s/apple/macos-app-store` , url )),
138
204
),
139
205
),
140
206
elem .Li (nil ,
141
207
elem .Text (`for standalone client: ` ),
142
208
elem .Code (nil ,
143
- elem .Text (fmt .Sprintf (`curl %s/apple/macos-standalone` ,url )),
209
+ elem .Text (fmt .Sprintf (`curl %s/apple/macos-standalone` , url )),
210
+ ),
211
+ ),
212
+ ),
213
+ headerOne ("headscale: tvOS configuration" ),
214
+ headerTwo ("GUI" ),
215
+ elem .Ol (nil ,
216
+ elem .Li (
217
+ nil ,
218
+ elem .Text ("Install the official Tailscale tvOS client from the " ),
219
+ elem .A (
220
+ attrs.Props {
221
+ attrs .Href : "https://apps.apple.com/app/tailscale/id1470499037" ,
222
+ },
223
+ elem .Text ("App store" ),
224
+ ),
225
+ ),
226
+ elem .Li (
227
+ nil ,
228
+ elem .Text (
229
+ "Open Settings (the Apple tvOS settings) > Apps > Tailscale" ,
230
+ ),
231
+ ),
232
+ elem .Li (
233
+ nil ,
234
+ elem .Text (
235
+ fmt .Sprintf (
236
+ `Enter "%s" under "ALTERNATE COORDINATION SERVER URL"` ,
237
+ url ,
238
+ ),
144
239
),
145
240
),
241
+ elem .Li (nil ,
242
+ elem .Text ("Return to the tvOS Home screen" ),
243
+ ),
244
+ elem .Li (nil ,
245
+ elem .Text ("Open Tailscale" ),
246
+ ),
247
+ elem .Li (nil ,
248
+ elem .Text (`Select "Install VPN configuration"` ),
249
+ ),
250
+ elem .Li (nil ,
251
+ elem .Text (`Select "Allow"` ),
252
+ ),
253
+ elem .Li (nil ,
254
+ elem .Text ("Scan the QR code and follow the login procedure" ),
255
+ ),
256
+ elem .Li (nil ,
257
+ elem .Text ("Headscale should now be working on your tvOS device" ),
258
+ ),
146
259
),
147
260
),
148
261
)
0 commit comments