diff --git a/docs/setup/requirements.md b/docs/setup/requirements.md index b924cb0c..1c2450a2 100644 --- a/docs/setup/requirements.md +++ b/docs/setup/requirements.md @@ -4,11 +4,35 @@ Headscale should just work as long as the following requirements are met: - A server with a public IP address for headscale. A dual-stack setup with a public IPv4 and a public IPv6 address is recommended. -- Headscale is served via HTTPS on port 443[^1]. +- Headscale is served via HTTPS on port 443[^1] and [may use additional ports](#ports-in-use). - A reasonably modern Linux or BSD based operating system. - A dedicated local user account to run headscale. - A little bit of command line knowledge to configure and operate headscale. +## Ports in use + +The ports in use vary with the intended scenario and enabled features. Some of the listed ports may be changed via the +[configuration file](../ref/configuration.md) but we recommend to stick with the default values. + +- tcp/80 + - Expose publicly: yes + - HTTP, used by Let's Encrypt to verify ownership via the HTTP-01 challenge. + - Only required if the built-in Let's Enrypt client with the HTTP-01 challenge is used. See [TLS](../ref/tls.md) for + details. +- tcp/443 + - Expose publicly: yes + - HTTPS, required to make Headscale available to Tailscale clients[^1] + - Required if the built-in DERP server is enabled +- udp/3478 + - Expose publicly: yes + - STUN, required if the built-in DERP server is enabled +- tcp/50443 + - Expose publicly: yes + - Only required if the gRPC interface is used to [remote-control Headscale](../ref/remote-cli.md). +- tcp/9090 + - Expose publicly: no + - [Metrics and debug endpoint](../ref/debug.md#metrics-and-debug-endpoint) + ## Assumptions The headscale documentation and the provided examples are written with a few assumptions in mind: