mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	* Link back to node registration docs * adjust wording in apple docs * Mention client specific page to check if headscale works Ref: #2238
		
			
				
	
	
		
			135 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Getting started
 | |
| 
 | |
| This page helps you get started with headscale and provides a few usage examples for the headscale command line tool
 | |
| `headscale`.
 | |
| 
 | |
| !!! note "Prerequisites"
 | |
| 
 | |
|     * Headscale is installed and running as system service. Read the [setup section](../setup/requirements.md) for
 | |
|       installation instructions.
 | |
|     * The configuration file exists and is adjusted to suit your environment, see
 | |
|       [Configuration](../ref/configuration.md) for details.
 | |
|     * Headscale is reachable from the Internet. Verify this by opening client specific setup instructions in your
 | |
|       browser, e.g. https://headscale.example.com/windows
 | |
|     * The Tailscale client is installed, see [Client and operating system support](../about/clients.md) for more
 | |
|       information.
 | |
| 
 | |
| ## Getting help
 | |
| 
 | |
| The `headscale` command line tool provides built-in help. To show available commands along with their arguments and
 | |
| options, run:
 | |
| 
 | |
| === "Native"
 | |
| 
 | |
|     ```shell
 | |
|     # Show help
 | |
|     headscale help
 | |
| 
 | |
|     # Show help for a specific command
 | |
|     headscale <COMMAND> --help
 | |
|     ```
 | |
| 
 | |
| === "Container"
 | |
| 
 | |
|     ```shell
 | |
|     # Show help
 | |
|     docker exec -it headscale \
 | |
|       headscale help
 | |
| 
 | |
|     # Show help for a specific command
 | |
|     docker exec -it headscale \
 | |
|       headscale <COMMAND> --help
 | |
|     ```
 | |
| 
 | |
| ## Manage users
 | |
| 
 | |
| In headscale, a node (also known as machine or device) is always assigned to a specific user, a
 | |
| [tailnet](https://tailscale.com/kb/1136/tailnet/). Such users can be managed with the `headscale users` command. Invoke
 | |
| the built-in help for more information: `headscale users --help`.
 | |
| 
 | |
| ### Create a user
 | |
| 
 | |
| === "Native"
 | |
| 
 | |
|     ```shell
 | |
|     headscale users create <USER>
 | |
|     ```
 | |
| 
 | |
| === "Container"
 | |
| 
 | |
|     ```shell
 | |
|     docker exec -it headscale \
 | |
|       headscale users create <USER>
 | |
|     ```
 | |
| 
 | |
| ### List existing users
 | |
| 
 | |
| === "Native"
 | |
| 
 | |
|     ```shell
 | |
|     headscale users list
 | |
|     ```
 | |
| 
 | |
| === "Container"
 | |
| 
 | |
|     ```shell
 | |
|     docker exec -it headscale \
 | |
|       headscale users list
 | |
|     ```
 | |
| 
 | |
| ## Register a node
 | |
| 
 | |
| One has to register a node first to use headscale as coordination with Tailscale. The following examples work for the
 | |
| Tailscale client on Linux/BSD operating systems. Alternatively, follow the instructions to connect
 | |
| [Android](connect/android.md), [Apple](connect/apple.md) or [Windows](connect/windows.md) devices.
 | |
| 
 | |
| ### Normal, interactive login
 | |
| 
 | |
| On a client machine, run the `tailscale up` command and provide the FQDN of your headscale instance as argument:
 | |
| 
 | |
| ```shell
 | |
| tailscale up --login-server <YOUR_HEADSCALE_URL>
 | |
| ```
 | |
| 
 | |
| Usually, a browser window with further instructions is opened and contains the value for `<YOUR_MACHINE_KEY>`. Approve
 | |
| and register the node on your headscale server:
 | |
| 
 | |
| === "Native"
 | |
| 
 | |
|     ```shell
 | |
|     headscale nodes register --user <USER> --key <YOUR_MACHINE_KEY>
 | |
|     ```
 | |
| 
 | |
| === "Container"
 | |
| 
 | |
|     ```shell
 | |
|     docker exec -it headscale \
 | |
|       headscale nodes register --user <USER> --key <YOUR_MACHINE_KEY>
 | |
|     ```
 | |
| 
 | |
| ### Using a preauthkey
 | |
| 
 | |
| It is also possible to generate a preauthkey and register a node non-interactively. First, generate a preauthkey on the
 | |
| headscale instance. By default, the key is valid for one hour and can only be used once (see `headscale preauthkeys
 | |
| --help` for other options):
 | |
| 
 | |
| === "Native"
 | |
| 
 | |
|     ```shell
 | |
|     headscale preauthkeys create --user <USER>
 | |
|     ```
 | |
| 
 | |
| === "Container"
 | |
| 
 | |
|     ```shell
 | |
|     docker exec -it headscale \
 | |
|       headscale preauthkeys create --user <USER>
 | |
|     ```
 | |
| 
 | |
| The command returns the preauthkey on success which is used to connect a node to the headscale instance via the
 | |
| `tailscale up` command:
 | |
| 
 | |
| ```shell
 | |
| tailscale up --login-server <YOUR_HEADSCALE_URL> --authkey <YOUR_AUTH_KEY>
 | |
| ```
 |