From 9244d63826aa48d2d5d365748fc08fbbfadbc24c Mon Sep 17 00:00:00 2001 From: Aarnav Tale Date: Fri, 29 Mar 2024 19:41:56 -0400 Subject: [PATCH] feat: redo documentation --- README.md | 87 +------------------------ assets/advanced-preview.png | Bin 0 -> 119585 bytes docs/Advanced-Integration.md | 120 +++++++++++++++++++++++++++++++++++ docs/Basic-Integration.md | 46 ++++++++++++++ docs/Configuration.md | 47 ++++++++++++++ 5 files changed, 215 insertions(+), 85 deletions(-) create mode 100644 assets/advanced-preview.png create mode 100644 docs/Advanced-Integration.md create mode 100644 docs/Basic-Integration.md create mode 100644 docs/Configuration.md diff --git a/README.md b/README.md index b2003bf..3eab1be 100644 --- a/README.md +++ b/README.md @@ -16,91 +16,8 @@ It's still very early in it's development, however these are some of the feature ## Deployment > The docker image is not available yet. For now you can build it locally with `docker build -t ghcr.io/tale/headplane:latest .` -In order to use Headplane, you need to be running the Headscale 0.23 alpha or later. -Currently I'd only recommend deploying this with Docker because environment variables are required. -Here's a very basic `docker-compose.yaml` file that utilizes each configuration variable. - -```yaml -version: '3.8' -services: - headscale: - image: 'headscale/headscale:0.23.0-alpha5' - container_name: 'headscale' - restart: 'unless-stopped' - command: 'serve' - volumes: - - './data:/var/lib/headscale' - - './configs:/etc/headscale' - ports: - - '8080:8080' - environment: - TZ: 'America/New_York' - headplane: - container_name: headplane - image: ghcr.io/tale/headplane:latest - restart: unless-stopped - volumes: - - './data:/var/lib/headscale' - - './configs:/etc/headscale' - ports: - - '3000:3000' - environment: - HEADSCALE_URL: 'http://headscale:8080' - API_KEY: 'abcdefghijklmnopqrstuvwxyz' - COOKIE_SECRET: 'abcdefghijklmnopqrstuvwxyz' - HEADSCALE_CONTAINER: 'headscale' - OIDC_CLIENT_ID: 'headscale' - OIDC_ISSUER: 'https://sso.example.com' - OIDC_CLIENT_SECRET: 'super_secret_client_secret' - DISABLE_API_KEY_LOGIN: 'true' - HOST: '0.0.0.0' - PORT: '3000' -``` - -#### Required Variables - -- **`HEADSCALE_URL`**: The public URL of your Headscale server. -- **`API_KEY`**: An API key used to issue new ones for sessions (keep expiry fairly long). -- **`COOKIE_SECRET`**: A secret used to sign cookies (use a relatively long and random string). - -#### Optional Variables - -- **`HOST`**: The host to bind the server to (default: `0.0.0.0`). -- **`PORT`**: The port to bind the server to (default: `3000`). -- **`CONFIG_FILE`**: The path to the Headscale `config.yaml` (default: `/etc/headscale/config.yaml`). -- **`HEADSCALE_CONTAINER`**: The name of the Headscale container (for Docker integration). - -### SSO/OpenID Connect -If you want to use OpenID Connect for SSO, you'll need to provide these variables. -Headplane will utilize the expiry of your tokens to determine the expiry of the session. - -- **`OIDC_ISSUER`**: The issuer URL of your OIDC provider. -- **`OIDC_CLIENT_ID`**: The client ID of your OIDC provider. -- **`OIDC_CLIENT_SECRET`**: The client secret of your OIDC provider. -- **`DISABLE_API_KEY_LOGIN`**: If you want to disable API key login, set this to `true`. - -Here's what an example with Authelia would look like if you used the same client for both Headscale and Headplane. -Keep in mind that the recommended deployment would be putting Headplane behind /admin on a reverse proxy. -If you use a different domain than the Headscale server, you'll need to make sure that Headscale responds with CORS headers. - -```yaml -- client_id: 'headscale' - client_name: 'Headscale and Headplane' - public: false - authorization_policy: 'two_factor' - redirect_uris: - - 'https://headscale.example.com/oidc/callback' - - 'https://headscale.example.com/admin/oidc/callback' - scopes: - - 'openid' - - 'profile' - - 'email' - userinfo_signed_response_alg: 'none' - client_secret: 'my_super_secret_client_secret' -``` - -Instructions for deploying this will come soon. It will utilize Docker to support advanced features. -If you do want to fight with the environment variables right now, the image is `ghcr.io/tale/headplane:latest` +- If you run Headscale in a Docker container, see the [Advanced Deployment](./docs/Advanced-Integration.md) guide. +- If you run Headscale natively, see the [Basic Deployment](./docs/Basic-Integration.md) guide. ## Contributing If you would like to contribute, please install a relatively modern version of Node.js and PNPM. diff --git a/assets/advanced-preview.png b/assets/advanced-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..42985cc58ef92c241505e16fa3b29f9f2e9156b7 GIT binary patch literal 119585 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 One important think to note is that environment variables always take priority over the configuration file. +> The `HEADSCALE_URL`, `OIDC_CLIENT_ID`, `OIDFC_ISSUER`, and `OIDC_CLIENT_SECRET` will be preferred over the configuration file if available. + +### Access Control Lists (ACLs) + +Headplane will enable the `Access Controls` tab if it is able to read an ACL file from Headscale.
+The ACL file path is read from the following sources in order of priority: + +- **Environment Variable**: If you set the `ACL_FILE` environment variable, Headplane will read the file from that path. +- **Configuration Integration**: If you've set this up, then Headplane will read the `acl_policy_path` key from the configuration file. + +### Docker Integration + +The Docker integration can be used to automatically reload the configuration or ACLs when they are changed. +In order for this to work, you'll need to pass in the `HEADSCALE_CONTAINER` environment variable. +You'll also need to ensure that `/var/run/docker.sock` is mounted if Headplane is running in a container. +This should be either the name or ID of the Headscale container (you can retrieve this using `docker ps`). +If the other integrations aren't setup, then Headplane will automatically disable the Docker integration. + +## Deployment + +Requirements: +- Headscale 0.23 alpha or later +- Headscale and Headplane need a Reverse Proxy (NGINX, Traefik, Caddy, etc) +- Headscale needs to be running in a docker container + +Here's a good Docker Compose example: +```yaml +version: '3.8' +services: + headscale: + image: 'headscale/headscale:0.23.0-alpha5' + container_name: 'headscale' + restart: 'unless-stopped' + command: 'serve' + volumes: + - './data:/var/lib/headscale' + - './configs:/etc/headscale' + ports: + - '8080:8080' + environment: + TZ: 'America/New_York' + headplane: + container_name: headplane + image: ghcr.io/tale/headplane:latest + restart: unless-stopped + volumes: + - './data:/var/lib/headscale' + - './configs:/etc/headscale' + - '/var/run/docker.sock:/var/run/docker.sock:ro' + ports: + - '3000:3000' + environment: + # These are always required for Headplane to work + COOKIE_SECRET: 'abcdefghijklmnopqrstuvwxyz' + API_KEY: 'abcdefghijklmnopqrstuvwxyz' + + HEADSCALE_CONTAINER: 'headscale' + DISABLE_API_KEY_LOGIN: 'true' + HOST: '0.0.0.0' + PORT: '3000' + + # Overrides the configuration file values if they are set in config.yaml + # If you want to share the same OIDC configuration you do not need this + OIDC_CLIENT_ID: 'headscale' + OIDC_ISSUER: 'https://sso.example.com' + OIDC_CLIENT_SECRET: 'super_secret_client_secret' +``` + +> For a breakdown of each configuration variable, please refer to the [Configuration](./docs/Configuration.md) guide. +> It explains what each variable does, how to configure them, and what the default values are. + +You may also choose to run it natively with the distributed binaries on the releases page. +You'll need to manage running this yourself, and I would recommend making a `systemd` unit. + +## Configuration Scenarios + +Since the configuration is fairly modular you can have a variety of different setups.
+Here are a few examples to inspire you and show you what can work and what can't: + +#### Full Integration +Headscale runs in a container, Headplane can run in either a container or natively. +Headplane is able to manage the configuration file and ACLs that Headscale uses. +When changes happen, the Docker integration will automatically reload the configuration and ACLs. + +> Note that the full integration currently isn't possible if Headscale isn't running in a container. + +#### Configuration Only +Headscale and Headplane can either run in containers or natively. +Headplane is able to manage the configuration file and ACLs that Headscale uses. +When changes are made, Headscale will need to be manually restarted to apply the changes. + +#### ACL Only +Headscale and Headplane can either run in containers or natively. +Headplane is able to manage the ACLs that Headscale uses. +When changes are made, Headscale will need to be sent a `SIGHUP` to reload the ACLs. +In this scenario, Headplane does not have access to the configuration file. + +#### Read-Only Configuration or ACLs +If the configuration or ACLs are read-only, Headplane will not be able to manage them. +Instead you'll only be able to view the configurations on the UI and need to edit them manually. + +#### No Integration +If no integration is setup, Headplane will not be able to manage the configuration or ACLs. +This is the simplest setup by far, however it also heavily reduces the capabilities of Headplane. diff --git a/docs/Basic-Integration.md b/docs/Basic-Integration.md new file mode 100644 index 0000000..1908d20 --- /dev/null +++ b/docs/Basic-Integration.md @@ -0,0 +1,46 @@ +# Basic Integration + +The basic integration is not able to offer advanced features such as: +- Automatic management of Access Control Lists (ACLs) +- Management of DNS settings for your tailnet +- Management of the Headscale configuration + +In order to support these features please refer to the [Advanced Integration](./docs/Advanced-Integration.md) guide. +Note that in order to use this deployment strategy you need to run Headscale in a Docker container. + +## Deployment + +Requirements: +- Headscale 0.23 alpha or later +- Headscale and Headplane need a Reverse Proxy (NGINX, Traefik, Caddy, etc) + +Headplane is currently best run in a Docker container due to the easy configuration. +Here's a very basic `docker-compose.yaml` file that utilizes each configuration variable. + +```yaml +version: '3.8' +services: + headplane: + container_name: headplane + image: ghcr.io/tale/headplane:latest + restart: unless-stopped + ports: + - '3000:3000' + environment: + HEADSCALE_URL: 'http://headscale:8080' + API_KEY: 'abcdefghijklmnopqrstuvwxyz' + COOKIE_SECRET: 'abcdefghijklmnopqrstuvwxyz' + HEADSCALE_CONTAINER: 'headscale' + OIDC_CLIENT_ID: 'headscale' + OIDC_ISSUER: 'https://sso.example.com' + OIDC_CLIENT_SECRET: 'super_secret_client_secret' + DISABLE_API_KEY_LOGIN: 'true' + HOST: '0.0.0.0' + PORT: '3000' +``` + +> For a breakdown of each configuration variable, please refer to the [Configuration](./docs/Configuration.md) guide. +> It explains what each variable does, how to configure them, and what the default values are. + +You may also choose to run it natively with the distributed binaries on the releases page. +You'll need to manage running this yourself, and I would recommend making a `systemd` unit. diff --git a/docs/Configuration.md b/docs/Configuration.md new file mode 100644 index 0000000..a9c0eee --- /dev/null +++ b/docs/Configuration.md @@ -0,0 +1,47 @@ +# Configuration + +You can configure Headplane using environment variables. + +#### Required Variables + +- **`HEADSCALE_URL`**: The public URL of your Headscale server. +- **`API_KEY`**: An API key used to issue new ones for sessions (keep expiry fairly long). +- **`COOKIE_SECRET`**: A secret used to sign cookies (use a relatively long and random string). + +#### Optional Variables + +- **`HOST`**: The host to bind the server to (default: `0.0.0.0`). +- **`PORT`**: The port to bind the server to (default: `3000`). +- **`CONFIG_FILE`**: The path to the Headscale `config.yaml` (default: `/etc/headscale/config.yaml`). +- **`ACL_FILE`**: The path to the ACL file (default: `/etc/headscale/acl_policy.json`). +- **`HEADSCALE_CONTAINER`**: The name of the Headscale container (required for Docker integration). + +### SSO/OpenID Connect +If you want to use OpenID Connect for SSO, you'll need to provide these variables. +Headplane will utilize the expiry of your tokens to determine the expiry of the session. +If you use the Headscale configuration integration, these are not required. + +- **`OIDC_ISSUER`**: The issuer URL of your OIDC provider. +- **`OIDC_CLIENT_ID`**: The client ID of your OIDC provider. +- **`OIDC_CLIENT_SECRET`**: The client secret of your OIDC provider. +- **`DISABLE_API_KEY_LOGIN`**: If you want to disable API key login, set this to `true`. + +Here's what an example with Authelia would look like if you used the same client for both Headscale and Headplane. +Keep in mind that the recommended deployment would be putting Headplane behind /admin on a reverse proxy. +If you use a different domain than the Headscale server, you'll need to make sure that Headscale responds with CORS headers. + +```yaml +- client_id: 'headscale' + client_name: 'Headscale and Headplane' + public: false + authorization_policy: 'two_factor' + redirect_uris: + - 'https://headscale.example.com/oidc/callback' + - 'https://headscale.example.com/admin/oidc/callback' + scopes: + - 'openid' + - 'profile' + - 'email' + userinfo_signed_response_alg: 'none' + client_secret: 'my_super_secret_client_secret' +```