diff --git a/docs/Configuration.md b/docs/Configuration.md index 0d22ace4..fa766428 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -40,6 +40,7 @@ ephemeral_node_inactivity_timeout": "30m" `ephemeral_node_inactivity_timeout` is the timeout after which inactive ephemeral node records will be deleted from the database. The default is 30 minutes. This value must be higher than 65 seconds (the keepalive timeout for the HTTP long poll is 60 seconds, plus a few seconds to avoid race conditions). PostgresSQL + ```yaml db_host: localhost db_port: 5432 @@ -49,6 +50,7 @@ db_pass: bar ``` SQLite + ```yaml db_type: sqlite3 db_path: db.sqlite @@ -60,12 +62,10 @@ The fields starting with `db_` are used for the DB connection information. Please check [`TLS.md`](TLS.md). - ### DNS configuration Please refer to [`DNS.md`](DNS.md). - ### Policy ACLs Headscale implements the same policy ACLs as Tailscale.com, adapted to the self-hosted environment. diff --git a/docs/DNS.md b/docs/DNS.md index 184d9039..e51feaf6 100644 --- a/docs/DNS.md +++ b/docs/DNS.md @@ -8,10 +8,9 @@ headscale supports Tailscale's DNS configuration and MagicDNS. Please have a loo Long story short, you can define the DNS servers you want to use in your tailnets, activate MagicDNS (so you don't have to remember the IP addresses of your nodes), define search domains, as well as predefined hosts. headscale will inject that settings into your nodes. - ## Configuration reference -The setup is done via the `config.yaml` file, under the `dns_config` key. +The setup is done via the `config.yaml` file, under the `dns_config` key. ```yaml server_url: http://127.0.0.1:8001 @@ -19,21 +18,21 @@ listen_addr: 0.0.0.0:8001 private_key_path: private.key dns_config: nameservers: - - 1.1.1.1 - - 8.8.8.8 - restricted_nameservers: - foo.bar.com: - - 1.1.1.1 - darp.headscale.net: - 1.1.1.1 - 8.8.8.8 + restricted_nameservers: + foo.bar.com: + - 1.1.1.1 + darp.headscale.net: + - 1.1.1.1 + - 8.8.8.8 domains: [] magic_dns: true base_domain: example.com ``` -- `nameservers`: The list of DNS servers to use. +- `nameservers`: The list of DNS servers to use. - `domains`: Search domains to inject. - `magic_dns`: Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/). Only works if there is at least a nameserver defined. - `base_domain`: Defines the base domain to create the hostnames for MagicDNS. `base_domain` must be a FQDNs, without the trailing dot. The FQDN of the hosts will be `hostname.namespace.base_domain` (e.g., _myhost.mynamespace.example.com_). -- `restricted_nameservers`: Split DNS (see https://tailscale.com/kb/1054/dns/), list of search domains and the DNS to query for each one. \ No newline at end of file +- `restricted_nameservers`: Split DNS (see https://tailscale.com/kb/1054/dns/), list of search domains and the DNS to query for each one. diff --git a/docs/Glossary.md b/docs/Glossary.md index 17a39840..74ecfb89 100644 --- a/docs/Glossary.md +++ b/docs/Glossary.md @@ -1,3 +1,3 @@ # Glossary -- Namespace: Collection of Taiscale nodes that can see each other. In Tailscale.com is called Tailnet. \ No newline at end of file +- Namespace: Collection of Taiscale nodes that can see each other. In Tailscale.com is called Tailnet. diff --git a/docs/Running.md b/docs/Running.md index c5e0b12f..08373653 100644 --- a/docs/Running.md +++ b/docs/Running.md @@ -16,7 +16,7 @@ ```shell docker run --name headscale \ - -e POSTGRES_DB=headscale + -e POSTGRES_DB=headscale -e POSTGRES_USER=foo \ -e POSTGRES_PASSWORD=bar \ -p 5432:5432 \ @@ -146,4 +146,4 @@ Alternatively, you can use Auth Keys to register your machines: If you create an authkey with the `--ephemeral` flag, that key will create ephemeral nodes. This implies that `--reusable` is true. -Please bear in mind that all headscale commands support adding `-o json` or `-o json-line` to get nicely JSON-formatted output. \ No newline at end of file +Please bear in mind that all headscale commands support adding `-o json` or `-o json-line` to get nicely JSON-formatted output. diff --git a/docs/TLS.md b/docs/TLS.md index 0133d5c6..47de1cd7 100644 --- a/docs/TLS.md +++ b/docs/TLS.md @@ -1,8 +1,7 @@ - # Running the service via TLS (optional) ```yaml -tls_letsencrypt_hostname: '' +tls_letsencrypt_hostname: "" tls_letsencrypt_listen: ":http" tls_letsencrypt_cache_dir: ".cache" tls_letsencrypt_challenge_type: HTTP-01 @@ -10,15 +9,13 @@ tls_letsencrypt_challenge_type: HTTP-01 To get a certificate automatically via [Let's Encrypt](https://letsencrypt.org/), set `tls_letsencrypt_hostname` to the desired certificate hostname. This name must resolve to the IP address(es) headscale is reachable on (i.e., it must correspond to the `server_url` configuration parameter). The certificate and Let's Encrypt account credentials will be stored in the directory configured in `tls_letsencrypt_cache_dir`. If the path is relative, it will be interpreted as relative to the directory the configuration file was read from. The certificate will automatically be renewed as needed. - ```yaml -tls_cert_path: '' -tls_key_path: '' +tls_cert_path: "" +tls_key_path: "" ``` headscale can also be configured to expose its web service via TLS. To configure the certificate and key file manually, set the `tls_cert_path` and `tls_cert_path` configuration parameters. If the path is relative, it will be interpreted as relative to the directory the configuration file was read from. - ## Challenge type HTTP-01 The default challenge type `HTTP-01` requires that headscale is reachable on port 80 for the Let's Encrypt automated validation, in addition to whatever port is configured in `listen_addr`. By default, headscale listens on port 80 on all local IPs for Let's Encrypt automated validation. @@ -28,4 +25,3 @@ If you need to change the ip and/or port used by headscale for the Let's Encrypt ## Challenge type TLS-ALPN-01 Alternatively, `tls_letsencrypt_challenge_type` can be set to `TLS-ALPN-01`. In this configuration, headscale listens on the ip:port combination defined in `listen_addr`. Let's Encrypt will _only_ connect to port 443 for the validation callback, so if `listen_addr` is not set to port 443, something else (e.g. a firewall rule) will be required to forward the traffic from port 443 to the ip:port combination specified in `listen_addr`. -