mirror of
https://github.com/juanfont/headscale.git
synced 2025-11-20 01:40:21 -05:00
Refactor template system to use go:embed for external assets and CSS classes for styling instead of inline styles: - general.go: Add go:embed directives for style.css and headscale.svg, replace inline styles with CSS classes (H1, H2, H3, P, etc.), add mdTypesetBody wrapper with Material for MkDocs styling - apple.go, oidc_callback.go, register_web.go, windows.go: Update to use new CSS-based helper functions (H1, H2, P, etc.) and mdTypesetBody for consistent layout This separates content from presentation, making templates easier to maintain and update. All styling is now centralized in style.css with Material for MkDocs design system.
192 lines
5.4 KiB
Go
192 lines
5.4 KiB
Go
package templates
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/chasefleming/elem-go"
|
|
"github.com/chasefleming/elem-go/attrs"
|
|
"github.com/chasefleming/elem-go/styles"
|
|
)
|
|
|
|
func Apple(url string) *elem.Element {
|
|
return HtmlStructure(
|
|
elem.Title(nil,
|
|
elem.Text("headscale - Apple")),
|
|
mdTypesetBody(
|
|
headscaleLogo(),
|
|
H1(elem.Text("iOS configuration")),
|
|
H2(elem.Text("GUI")),
|
|
Ol(
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Install the official Tailscale iOS client from the "),
|
|
externalLink("https://apps.apple.com/app/tailscale/id1470499037", "App Store"),
|
|
),
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Open the "),
|
|
elem.Strong(nil, elem.Text("Tailscale")),
|
|
elem.Text(" app"),
|
|
),
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Click the account icon in the top-right corner and select "),
|
|
elem.Strong(nil, elem.Text("Log in…")),
|
|
),
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Tap the top-right options menu button and select "),
|
|
elem.Strong(nil, elem.Text("Use custom coordination server")),
|
|
),
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Enter your instance URL: "),
|
|
Code(elem.Text(url)),
|
|
),
|
|
elem.Li(
|
|
nil,
|
|
elem.Text(
|
|
"Enter your credentials and log in. Headscale should now be working on your iOS device",
|
|
),
|
|
),
|
|
),
|
|
H1(elem.Text("macOS configuration")),
|
|
H2(elem.Text("Command line")),
|
|
P(
|
|
elem.Text("Use Tailscale's login command to add your profile:"),
|
|
),
|
|
Pre(PreCode("tailscale login --login-server "+url)),
|
|
H2(elem.Text("GUI")),
|
|
Ol(
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Option + Click the "),
|
|
elem.Strong(nil, elem.Text("Tailscale")),
|
|
elem.Text(" icon in the menu and hover over the "),
|
|
elem.Strong(nil, elem.Text("Debug")),
|
|
elem.Text(" menu"),
|
|
),
|
|
elem.Li(nil,
|
|
elem.Text("Under "),
|
|
elem.Strong(nil, elem.Text("Custom Login Server")),
|
|
elem.Text(", select "),
|
|
elem.Strong(nil, elem.Text("Add Account...")),
|
|
),
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Enter "),
|
|
Code(elem.Text(url)),
|
|
elem.Text(" of the headscale instance and press "),
|
|
elem.Strong(nil, elem.Text("Add Account")),
|
|
),
|
|
elem.Li(nil,
|
|
elem.Text("Follow the login procedure in the browser"),
|
|
),
|
|
),
|
|
H2(elem.Text("Profiles")),
|
|
P(
|
|
elem.Text(
|
|
"Headscale can be set to the default server by installing a Headscale configuration profile:",
|
|
),
|
|
),
|
|
elem.Div(attrs.Props{attrs.Style: styles.Props{styles.MarginTop: spaceL, styles.MarginBottom: spaceL}.ToInline()},
|
|
downloadButton("/apple/macos-app-store", "macOS AppStore profile"),
|
|
downloadButton("/apple/macos-standalone", "macOS Standalone profile"),
|
|
),
|
|
Ol(
|
|
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 "),
|
|
elem.Strong(nil, elem.Text("System Preferences")),
|
|
elem.Text(" and go to "),
|
|
elem.Strong(nil, elem.Text("Profiles")),
|
|
),
|
|
elem.Li(nil,
|
|
elem.Text("Find and install the "),
|
|
elem.Strong(nil, elem.Text("Headscale")),
|
|
elem.Text(" profile"),
|
|
),
|
|
elem.Li(nil,
|
|
elem.Text("Restart "),
|
|
elem.Strong(nil, elem.Text("Tailscale.app")),
|
|
elem.Text(" and log in"),
|
|
),
|
|
),
|
|
orDivider(),
|
|
P(
|
|
elem.Text(
|
|
"Use your terminal to configure the default setting for Tailscale by issuing one of the following commands:",
|
|
),
|
|
),
|
|
P(elem.Text("For app store client:")),
|
|
Pre(PreCode("defaults write io.tailscale.ipn.macos ControlURL "+url)),
|
|
P(elem.Text("For standalone client:")),
|
|
Pre(PreCode("defaults write io.tailscale.ipn.macsys ControlURL "+url)),
|
|
P(
|
|
elem.Text("Restart "),
|
|
elem.Strong(nil, elem.Text("Tailscale.app")),
|
|
elem.Text(" and log in."),
|
|
),
|
|
warningBox("Caution", "You should always download and inspect the profile before installing it."),
|
|
P(elem.Text("For app store client:")),
|
|
Pre(PreCode(fmt.Sprintf(`curl %s/apple/macos-app-store`, url))),
|
|
P(elem.Text("For standalone client:")),
|
|
Pre(PreCode(fmt.Sprintf(`curl %s/apple/macos-standalone`, url))),
|
|
H1(elem.Text("tvOS configuration")),
|
|
H2(elem.Text("GUI")),
|
|
Ol(
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Install the official Tailscale tvOS client from the "),
|
|
externalLink("https://apps.apple.com/app/tailscale/id1470499037", "App Store"),
|
|
),
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Open "),
|
|
elem.Strong(nil, elem.Text("Settings")),
|
|
elem.Text(" (the Apple tvOS settings) > "),
|
|
elem.Strong(nil, elem.Text("Apps")),
|
|
elem.Text(" > "),
|
|
elem.Strong(nil, elem.Text("Tailscale")),
|
|
),
|
|
elem.Li(
|
|
nil,
|
|
elem.Text("Enter "),
|
|
Code(elem.Text(url)),
|
|
elem.Text(" under "),
|
|
elem.Strong(nil, elem.Text("ALTERNATE COORDINATION SERVER URL")),
|
|
),
|
|
elem.Li(nil,
|
|
elem.Text("Return to the tvOS "),
|
|
elem.Strong(nil, elem.Text("Home")),
|
|
elem.Text(" screen"),
|
|
),
|
|
elem.Li(nil,
|
|
elem.Text("Open "),
|
|
elem.Strong(nil, elem.Text("Tailscale")),
|
|
),
|
|
elem.Li(nil,
|
|
elem.Text("Select "),
|
|
elem.Strong(nil, elem.Text("Install VPN configuration")),
|
|
),
|
|
elem.Li(nil,
|
|
elem.Text("Select "),
|
|
elem.Strong(nil, elem.Text("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"),
|
|
),
|
|
),
|
|
pageFooter(),
|
|
),
|
|
)
|
|
}
|