mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	The official iOS app now has a simpler login process for custom instances, directly within the app.
		
			
				
	
	
		
			240 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package templates
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/chasefleming/elem-go"
 | |
| 	"github.com/chasefleming/elem-go/attrs"
 | |
| )
 | |
| 
 | |
| func Apple(url string) *elem.Element {
 | |
| 	return HtmlStructure(
 | |
| 		elem.Title(nil,
 | |
| 			elem.Text("headscale - Apple")),
 | |
| 		elem.Body(attrs.Props{
 | |
| 			attrs.Style: bodyStyle.ToInline(),
 | |
| 		},
 | |
| 			headerOne("headscale: iOS configuration"),
 | |
| 			headerTwo("GUI"),
 | |
| 			elem.Ol(nil,
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text("Install the official Tailscale iOS client from the "),
 | |
| 					elem.A(
 | |
| 						attrs.Props{
 | |
| 							attrs.Href: "https://apps.apple.com/app/tailscale/id1470499037",
 | |
| 						},
 | |
| 						elem.Text("App store"),
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text("Open the Tailscale app"),
 | |
| 				),
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(`Click the account icon in the top-right corner and select "Log in…".`),
 | |
| 				),
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(`Tap the top-right options menu button and select "Use custom coordination server".`),
 | |
| 				),
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(
 | |
| 						fmt.Sprintf(
 | |
| 							`Enter your instance URL: "%s"`,
 | |
| 							url,
 | |
| 						),
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(
 | |
| 						"Enter your credentials and log in. Headscale should now be working on your iOS device",
 | |
| 					),
 | |
| 				),
 | |
| 			),
 | |
| 			headerOne("headscale: macOS configuration"),
 | |
| 			headerTwo("Command line"),
 | |
| 			elem.P(nil,
 | |
| 				elem.Text("Use Tailscale's login command to add your profile:"),
 | |
| 			),
 | |
| 			elem.Pre(nil,
 | |
| 				elem.Code(nil,
 | |
| 					elem.Text(fmt.Sprintf("tailscale login --login-server %s", url)),
 | |
| 				),
 | |
| 			),
 | |
| 			headerTwo("GUI"),
 | |
| 			elem.Ol(nil,
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(
 | |
| 						"Option + Click the Tailscale icon in the menu and hover over the Debug menu",
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`Under "Custom Login Server", select "Add Account..."`),
 | |
| 				),
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(
 | |
| 						fmt.Sprintf(
 | |
| 							`Enter "%s" of the headscale instance and press "Add Account"`,
 | |
| 							url,
 | |
| 						),
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`Follow the login procedure in the browser`),
 | |
| 				),
 | |
| 			),
 | |
| 			headerTwo("Profiles"),
 | |
| 			elem.P(
 | |
| 				nil,
 | |
| 				elem.Text(
 | |
| 					"Headscale can be set to the default server by installing a Headscale configuration profile:",
 | |
| 				),
 | |
| 			),
 | |
| 			elem.P(
 | |
| 				nil,
 | |
| 				elem.A(
 | |
| 					attrs.Props{
 | |
| 						attrs.Href:     "/apple/macos-app-store",
 | |
| 						attrs.Download: "headscale_macos.mobileconfig",
 | |
| 					},
 | |
| 					elem.Text("macOS AppStore profile "),
 | |
| 				),
 | |
| 				elem.A(
 | |
| 					attrs.Props{
 | |
| 						attrs.Href:     "/apple/macos-standalone",
 | |
| 						attrs.Download: "headscale_macos.mobileconfig",
 | |
| 					},
 | |
| 					elem.Text("macOS Standalone profile"),
 | |
| 				),
 | |
| 			),
 | |
| 			elem.Ol(nil,
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(
 | |
| 						"Download the profile, then open it. When it has been opened, there should be a notification that a profile can be installed",
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`Open System Preferences and go to "Profiles"`),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`Find and install the Headscale profile`),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`Restart Tailscale.app and log in`),
 | |
| 				),
 | |
| 			),
 | |
| 			elem.P(nil, elem.Text("Or")),
 | |
| 			elem.P(
 | |
| 				nil,
 | |
| 				elem.Text(
 | |
| 					"Use your terminal to configure the default setting for Tailscale by issuing:",
 | |
| 				),
 | |
| 			),
 | |
| 			elem.Ul(nil,
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`for app store client:`),
 | |
| 					elem.Code(
 | |
| 						nil,
 | |
| 						elem.Text(
 | |
| 							fmt.Sprintf(
 | |
| 								`defaults write io.tailscale.ipn.macos ControlURL %s`,
 | |
| 								url,
 | |
| 							),
 | |
| 						),
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`for standalone client:`),
 | |
| 					elem.Code(
 | |
| 						nil,
 | |
| 						elem.Text(
 | |
| 							fmt.Sprintf(
 | |
| 								`defaults write io.tailscale.ipn.macsys ControlURL %s`,
 | |
| 								url,
 | |
| 							),
 | |
| 						),
 | |
| 					),
 | |
| 				),
 | |
| 			),
 | |
| 			elem.P(nil,
 | |
| 				elem.Text("Restart Tailscale.app and log in."),
 | |
| 			),
 | |
| 			headerThree("Caution"),
 | |
| 			elem.P(
 | |
| 				nil,
 | |
| 				elem.Text(
 | |
| 					"You should always download and inspect the profile before installing it:",
 | |
| 				),
 | |
| 			),
 | |
| 			elem.Ul(nil,
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`for app store client: `),
 | |
| 					elem.Code(nil,
 | |
| 						elem.Text(fmt.Sprintf(`curl %s/apple/macos-app-store`, url)),
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`for standalone client: `),
 | |
| 					elem.Code(nil,
 | |
| 						elem.Text(fmt.Sprintf(`curl %s/apple/macos-standalone`, url)),
 | |
| 					),
 | |
| 				),
 | |
| 			),
 | |
| 			headerOne("headscale: tvOS configuration"),
 | |
| 			headerTwo("GUI"),
 | |
| 			elem.Ol(nil,
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text("Install the official Tailscale tvOS client from the "),
 | |
| 					elem.A(
 | |
| 						attrs.Props{
 | |
| 							attrs.Href: "https://apps.apple.com/app/tailscale/id1470499037",
 | |
| 						},
 | |
| 						elem.Text("App store"),
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(
 | |
| 						"Open Settings (the Apple tvOS settings) > Apps > Tailscale",
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(
 | |
| 					nil,
 | |
| 					elem.Text(
 | |
| 						fmt.Sprintf(
 | |
| 							`Enter "%s" under "ALTERNATE COORDINATION SERVER URL"`,
 | |
| 							url,
 | |
| 						),
 | |
| 					),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text("Return to the tvOS Home screen"),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text("Open Tailscale"),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`Select "Install VPN configuration"`),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text(`Select "Allow"`),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text("Scan the QR code and follow the login procedure"),
 | |
| 				),
 | |
| 				elem.Li(nil,
 | |
| 					elem.Text("Headscale should now be working on your tvOS device"),
 | |
| 				),
 | |
| 			),
 | |
| 		),
 | |
| 	)
 | |
| }
 |