Compare commits
	
		
			1 Commits
		
	
	
		
			feature/he
			...
			1f498b9ac3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1f498b9ac3 | 
| @@ -10,7 +10,7 @@ resources: | |||||||
| images: | images: | ||||||
|   - name: adguard/adguardhome |   - name: adguard/adguardhome | ||||||
|     newName: adguard/adguardhome |     newName: adguard/adguardhome | ||||||
|     newTag: v0.107.61 |     newTag: v0.107.59 | ||||||
|  |  | ||||||
| namespace: adguard | namespace: adguard | ||||||
|  |  | ||||||
|   | |||||||
| @@ -12,4 +12,4 @@ namespace: code-server | |||||||
| images: | images: | ||||||
|   - name: code-server |   - name: code-server | ||||||
|     newName: ghcr.io/coder/code-server |     newName: ghcr.io/coder/code-server | ||||||
|     newTag: 4.99.3-fedora |     newTag: 4.98.2-fedora | ||||||
|   | |||||||
| @@ -17,5 +17,5 @@ helmCharts: | |||||||
|   - releaseName: grafana |   - releaseName: grafana | ||||||
|     name: grafana |     name: grafana | ||||||
|     repo: https://grafana.github.io/helm-charts |     repo: https://grafana.github.io/helm-charts | ||||||
|     version: 8.12.1 |     version: 8.11.4 | ||||||
|     valuesFile: grafana.values.yaml |     valuesFile: grafana.values.yaml | ||||||
|   | |||||||
| @@ -14,14 +14,14 @@ namespace: paperless | |||||||
| images: | images: | ||||||
|   - name: paperless |   - name: paperless | ||||||
|     newName: ghcr.io/paperless-ngx/paperless-ngx |     newName: ghcr.io/paperless-ngx/paperless-ngx | ||||||
|     newTag: "2.15.3" |     newTag: "2.15.1" | ||||||
|  |  | ||||||
|  |  | ||||||
| helmCharts: | helmCharts: | ||||||
|   - name: redis |   - name: redis | ||||||
|     releaseName: redis |     releaseName: redis | ||||||
|     repo: https://charts.bitnami.com/bitnami |     repo: https://charts.bitnami.com/bitnami | ||||||
|     version: 20.13.0 |     version: 20.12.0 | ||||||
|     valuesInline: |     valuesInline: | ||||||
|       auth: |       auth: | ||||||
|         enabled: false |         enabled: false | ||||||
|   | |||||||
| @@ -1,77 +0,0 @@ | |||||||
| apiVersion: apps/v1 |  | ||||||
| kind: Deployment |  | ||||||
| metadata: |  | ||||||
|   name:  headscale |  | ||||||
|   labels: |  | ||||||
|     app:  headscale |  | ||||||
| spec: |  | ||||||
|   selector: |  | ||||||
|     matchLabels: |  | ||||||
|       app: headscale |  | ||||||
|   replicas: 1 |  | ||||||
|   template: |  | ||||||
|     metadata: |  | ||||||
|       labels: |  | ||||||
|         app: headscale |  | ||||||
|     spec: |  | ||||||
|       shareProcessNamespace: true |  | ||||||
|       serviceAccountName: default |  | ||||||
|       containers: |  | ||||||
|       - name: headplane |  | ||||||
|         image: headplane |  | ||||||
|         env: |  | ||||||
|         # Set these if the pod name for Headscale is not static |  | ||||||
|         # We will use the downward API to get the pod name instead |  | ||||||
|         - name: HEADPLANE_LOAD_ENV_OVERRIDES |  | ||||||
|           value: 'true' |  | ||||||
|         - name: 'HEADPLANE_INTEGRATION__KUBERNETES__POD_NAME' |  | ||||||
|           valueFrom: |  | ||||||
|             fieldRef: |  | ||||||
|               fieldPath: metadata.name |  | ||||||
|         ports: |  | ||||||
|         - containerPort: 3000 |  | ||||||
|         volumeMounts: |  | ||||||
|         - name: headscale-config |  | ||||||
|           mountPath: /etc/headscale/config.yaml |  | ||||||
|           subPath: config.yaml |  | ||||||
|         - name: headplane-config |  | ||||||
|           mountPath: /etc/headplane/config.yaml |  | ||||||
|           subPath: config.yaml |  | ||||||
|         - name: headplane-data |  | ||||||
|           mountPath: /var/lib/headplane |  | ||||||
|  |  | ||||||
|       - name: headscale |  | ||||||
|         image: headscale |  | ||||||
|         args: ["serve"] |  | ||||||
|         resources: |  | ||||||
|           requests: |  | ||||||
|             cpu: 100m |  | ||||||
|             memory: 100Mi |  | ||||||
|           limits: |  | ||||||
|             cpu: 100m |  | ||||||
|             memory: 100Mi |  | ||||||
|         # env: |  | ||||||
|         ports: |  | ||||||
|         - containerPort: 8080 |  | ||||||
|         volumeMounts: |  | ||||||
|         - name: headscale-config |  | ||||||
|           mountPath: /etc/headscale/config.yaml |  | ||||||
|           subPath: config.yaml |  | ||||||
|         - mountPath: /persistence |  | ||||||
|           name: headscale-data |  | ||||||
|  |  | ||||||
|       terminationGracePeriodSeconds: 30 |  | ||||||
|       volumes: |  | ||||||
|       - name: headscale-config |  | ||||||
|         configMap: |  | ||||||
|           name: headscale-config |  | ||||||
|       - name: headscale-data |  | ||||||
|         persistentVolumeClaim: |  | ||||||
|           claimName: headscale-data |  | ||||||
|  |  | ||||||
|       - name: headplane-config |  | ||||||
|         configMap: |  | ||||||
|           name: headplane-config |  | ||||||
|       - name: headplane-data |  | ||||||
|         persistentVolumeClaim: |  | ||||||
|           claimName: headplane-data |  | ||||||
| @@ -1,99 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: ConfigMap |  | ||||||
| metadata: |  | ||||||
|   name: headplane-config |  | ||||||
| data: |  | ||||||
|   config.yaml: | |  | ||||||
|     # Configuration for the Headplane server and web application |  | ||||||
|     server: |  | ||||||
|       host: "0.0.0.0" |  | ||||||
|       port: 3000 |  | ||||||
|  |  | ||||||
|       # The secret used to encode and decode web sessions |  | ||||||
|       # Ensure that this is exactly 32 characters long |  | ||||||
|       cookie_secret: "<change_me_to_something_secure!>" |  | ||||||
|  |  | ||||||
|       # Should the cookies only work over HTTPS? |  | ||||||
|       # Set to false if running via HTTP without a proxy |  | ||||||
|       # (I recommend this is true in production) |  | ||||||
|       cookie_secure: true |  | ||||||
|  |  | ||||||
|     # Headscale specific settings to allow Headplane to talk |  | ||||||
|     # to Headscale and access deep integration features |  | ||||||
|     headscale: |  | ||||||
|       # The URL to your Headscale instance |  | ||||||
|       # (All API requests are routed through this URL) |  | ||||||
|       # (THIS IS NOT the gRPC endpoint, but the HTTP endpoint) |  | ||||||
|       # |  | ||||||
|       # IMPORTANT: If you are using TLS this MUST be set to `https://` |  | ||||||
|       url: "http://0.0.0.0:8080" |  | ||||||
|  |  | ||||||
|       # If you use the TLS configuration in Headscale, and you are not using |  | ||||||
|       # Let's Encrypt for your certificate, pass in the path to the certificate. |  | ||||||
|       # (This has no effect `url` does not start with `https://`) |  | ||||||
|       # tls_cert_path: "/var/lib/headplane/tls.crt" |  | ||||||
|  |  | ||||||
|       # Optional, public URL if they differ |  | ||||||
|       # This affects certain parts of the web UI |  | ||||||
|       # public_url: "https://headscale.example.com" |  | ||||||
|  |  | ||||||
|       # Path to the Headscale configuration file |  | ||||||
|       # This is optional, but HIGHLY recommended for the best experience |  | ||||||
|       # If this is read only, Headplane will show your configuration settings |  | ||||||
|       # in the Web UI, but they cannot be changed. |  | ||||||
|       config_path: "/etc/headscale/config.yaml" |  | ||||||
|  |  | ||||||
|       # Headplane internally validates the Headscale configuration |  | ||||||
|       # to ensure that it changes the configuration in a safe way. |  | ||||||
|       # If you want to disable this validation, set this to false. |  | ||||||
|       config_strict: true |  | ||||||
|  |  | ||||||
|     # Integration configurations for Headplane to interact with Headscale |  | ||||||
|     # Only one of these should be enabled at a time or you will get errors |  | ||||||
|     integration: |  | ||||||
|       kubernetes: |  | ||||||
|         enabled: true |  | ||||||
|         # Validates the manifest for the Pod to ensure all of the criteria |  | ||||||
|         # are set correctly. Turn this off if you are having issues with |  | ||||||
|         # shareProcessNamespace not being validated correctly. |  | ||||||
|         validate_manifest: true |  | ||||||
|         # This should be the name of the Pod running Headscale and Headplane. |  | ||||||
|         # If this isn't static you should be using the Kubernetes Downward API |  | ||||||
|         # to set this value (refer to docs/Integrated-Mode.md for more info). |  | ||||||
|         pod_name: "headscale" |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     # # OIDC Configuration for simpler authentication |  | ||||||
|     # # (This is optional, but recommended for the best experience) |  | ||||||
|     # oidc: |  | ||||||
|     #   issuer: "https://accounts.google.com" |  | ||||||
|     #   client_id: "your-client-id" |  | ||||||
|  |  | ||||||
|     #   # The client secret for the OIDC client |  | ||||||
|     #   # Either this or `client_secret_path` must be set for OIDC to work |  | ||||||
|     #   client_secret: "<your-client-secret>" |  | ||||||
|     #   # You can alternatively set `client_secret_path` to read the secret from disk. |  | ||||||
|     #   # The path specified can resolve environment variables, making integration |  | ||||||
|     #   # with systemd's `LoadCredential` straightforward: |  | ||||||
|     #   # client_secret_path: "${CREDENTIALS_DIRECTORY}/oidc_client_secret" |  | ||||||
|  |  | ||||||
|     #   disable_api_key_login: false |  | ||||||
|     #   token_endpoint_auth_method: "client_secret_post" |  | ||||||
|  |  | ||||||
|     #   # If you are using OIDC, you need to generate an API key |  | ||||||
|     #   # that can be used to authenticate other sessions when signing in. |  | ||||||
|     #   # |  | ||||||
|     #   # This can be done with `headscale apikeys create --expiration 999d` |  | ||||||
|     #   headscale_api_key: "<your-headscale-api-key>" |  | ||||||
|  |  | ||||||
|     #   # Optional, but highly recommended otherwise Headplane |  | ||||||
|     #   # will attempt to automatically guess this from the issuer |  | ||||||
|     #   # |  | ||||||
|     #   # This should point to your publicly accessibly URL |  | ||||||
|     #   # for your Headplane instance with /admin/oidc/callback |  | ||||||
|     #   redirect_uri: "http://localhost:3000/admin/oidc/callback" |  | ||||||
|  |  | ||||||
|     #   # Stores the users and their permissions for Headplane |  | ||||||
|     #   # This is a path to a JSON file, default is specified below. |  | ||||||
|     #   user_storage_file: "/var/lib/headplane/users.json" |  | ||||||
| @@ -1,376 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: ConfigMap |  | ||||||
| metadata: |  | ||||||
|   name: headscale-config |  | ||||||
| data: |  | ||||||
|   config.yaml: | |  | ||||||
|     server_url: http://127.0.0.1:8080 |  | ||||||
|  |  | ||||||
|     # Address to listen to / bind to on the server |  | ||||||
|     # |  | ||||||
|     # For production: |  | ||||||
|     listen_addr: 0.0.0.0:8080 |  | ||||||
|  |  | ||||||
|     # Address to listen to /metrics and /debug, you may want |  | ||||||
|     # to keep this endpoint private to your internal network |  | ||||||
|     metrics_listen_addr: 127.0.0.1:9090 |  | ||||||
|  |  | ||||||
|     # Address to listen for gRPC. |  | ||||||
|     # gRPC is used for controlling a headscale server |  | ||||||
|     # remotely with the CLI |  | ||||||
|     # Note: Remote access _only_ works if you have |  | ||||||
|     # valid certificates. |  | ||||||
|     # |  | ||||||
|     # For production: |  | ||||||
|     # grpc_listen_addr: 0.0.0.0:50443 |  | ||||||
|     grpc_listen_addr: 127.0.0.1:50443 |  | ||||||
|  |  | ||||||
|     # Allow the gRPC admin interface to run in INSECURE |  | ||||||
|     # mode. This is not recommended as the traffic will |  | ||||||
|     # be unencrypted. Only enable if you know what you |  | ||||||
|     # are doing. |  | ||||||
|     grpc_allow_insecure: false |  | ||||||
|  |  | ||||||
|     # The Noise section includes specific configuration for the |  | ||||||
|     # TS2021 Noise protocol |  | ||||||
|     noise: |  | ||||||
|       # The Noise private key is used to encrypt the traffic between headscale and |  | ||||||
|       # Tailscale clients when using the new Noise-based protocol. A missing key |  | ||||||
|       # will be automatically generated. |  | ||||||
|       private_key_path: /var/lib/headscale/noise_private.key |  | ||||||
|  |  | ||||||
|     # List of IP prefixes to allocate tailaddresses from. |  | ||||||
|     # Each prefix consists of either an IPv4 or IPv6 address, |  | ||||||
|     # and the associated prefix length, delimited by a slash. |  | ||||||
|     # It must be within IP ranges supported by the Tailscale |  | ||||||
|     # client - i.e., subnets of 100.64.0.0/10 and fd7a:115c:a1e0::/48. |  | ||||||
|     # See below: |  | ||||||
|     # IPv6: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#LL81C52-L81C71 |  | ||||||
|     # IPv4: https://github.com/tailscale/tailscale/blob/22ebb25e833264f58d7c3f534a8b166894a89536/net/tsaddr/tsaddr.go#L33 |  | ||||||
|     # Any other range is NOT supported, and it will cause unexpected issues. |  | ||||||
|     prefixes: |  | ||||||
|       v4: 100.64.0.0/10 |  | ||||||
|       v6: fd7a:115c:a1e0::/48 |  | ||||||
|  |  | ||||||
|       # Strategy used for allocation of IPs to nodes, available options: |  | ||||||
|       # - sequential (default): assigns the next free IP from the previous given IP. |  | ||||||
|       # - random: assigns the next free IP from a pseudo-random IP generator (crypto/rand). |  | ||||||
|       allocation: sequential |  | ||||||
|  |  | ||||||
|     # DERP is a relay system that Tailscale uses when a direct |  | ||||||
|     # connection cannot be established. |  | ||||||
|     # https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp |  | ||||||
|     # |  | ||||||
|     # headscale needs a list of DERP servers that can be presented |  | ||||||
|     # to the clients. |  | ||||||
|     derp: |  | ||||||
|       server: |  | ||||||
|         # If enabled, runs the embedded DERP server and merges it into the rest of the DERP config |  | ||||||
|         # The Headscale server_url defined above MUST be using https, DERP requires TLS to be in place |  | ||||||
|         enabled: false |  | ||||||
|  |  | ||||||
|         # Region ID to use for the embedded DERP server. |  | ||||||
|         # The local DERP prevails if the region ID collides with other region ID coming from |  | ||||||
|         # the regular DERP config. |  | ||||||
|         region_id: 999 |  | ||||||
|  |  | ||||||
|         # Region code and name are displayed in the Tailscale UI to identify a DERP region |  | ||||||
|         region_code: "headscale" |  | ||||||
|         region_name: "Headscale Embedded DERP" |  | ||||||
|  |  | ||||||
|         # Listens over UDP at the configured address for STUN connections - to help with NAT traversal. |  | ||||||
|         # When the embedded DERP server is enabled stun_listen_addr MUST be defined. |  | ||||||
|         # |  | ||||||
|         # For more details on how this works, check this great article: https://tailscale.com/blog/how-tailscale-works/ |  | ||||||
|         stun_listen_addr: "0.0.0.0:3478" |  | ||||||
|  |  | ||||||
|         # Private key used to encrypt the traffic between headscale DERP and |  | ||||||
|         # Tailscale clients. A missing key will be automatically generated. |  | ||||||
|         private_key_path: /var/lib/headscale/derp_server_private.key |  | ||||||
|  |  | ||||||
|         # This flag can be used, so the DERP map entry for the embedded DERP server is not written automatically, |  | ||||||
|         # it enables the creation of your very own DERP map entry using a locally available file with the parameter DERP.paths |  | ||||||
|         # If you enable the DERP server and set this to false, it is required to add the DERP server to the DERP map using DERP.paths |  | ||||||
|         automatically_add_embedded_derp_region: true |  | ||||||
|  |  | ||||||
|         # For better connection stability (especially when using an Exit-Node and DNS is not working), |  | ||||||
|         # it is possible to optionally add the public IPv4 and IPv6 address to the Derp-Map using: |  | ||||||
|         ipv4: 1.2.3.4 |  | ||||||
|         ipv6: 2001:db8::1 |  | ||||||
|  |  | ||||||
|       # List of externally available DERP maps encoded in JSON |  | ||||||
|       urls: |  | ||||||
|         - https://controlplane.tailscale.com/derpmap/default |  | ||||||
|  |  | ||||||
|       # Locally available DERP map files encoded in YAML |  | ||||||
|       # |  | ||||||
|       # This option is mostly interesting for people hosting |  | ||||||
|       # their own DERP servers: |  | ||||||
|       # https://tailscale.com/kb/1118/custom-derp-servers/ |  | ||||||
|       # |  | ||||||
|       # paths: |  | ||||||
|       #   - /etc/headscale/derp-example.yaml |  | ||||||
|       paths: [] |  | ||||||
|  |  | ||||||
|       # If enabled, a worker will be set up to periodically |  | ||||||
|       # refresh the given sources and update the derpmap |  | ||||||
|       # will be set up. |  | ||||||
|       auto_update_enabled: true |  | ||||||
|  |  | ||||||
|       # How often should we check for DERP updates? |  | ||||||
|       update_frequency: 24h |  | ||||||
|  |  | ||||||
|     # Disables the automatic check for headscale updates on startup |  | ||||||
|     disable_check_updates: false |  | ||||||
|  |  | ||||||
|     # Time before an inactive ephemeral node is deleted? |  | ||||||
|     ephemeral_node_inactivity_timeout: 30m |  | ||||||
|  |  | ||||||
|     database: |  | ||||||
|       # Database type. Available options: sqlite, postgres |  | ||||||
|       # Please note that using Postgres is highly discouraged as it is only supported for legacy reasons. |  | ||||||
|       # All new development, testing and optimisations are done with SQLite in mind. |  | ||||||
|       type: sqlite |  | ||||||
|  |  | ||||||
|       # Enable debug mode. This setting requires the log.level to be set to "debug" or "trace". |  | ||||||
|       debug: false |  | ||||||
|  |  | ||||||
|       # GORM configuration settings. |  | ||||||
|       gorm: |  | ||||||
|         # Enable prepared statements. |  | ||||||
|         prepare_stmt: true |  | ||||||
|  |  | ||||||
|         # Enable parameterized queries. |  | ||||||
|         parameterized_queries: true |  | ||||||
|  |  | ||||||
|         # Skip logging "record not found" errors. |  | ||||||
|         skip_err_record_not_found: true |  | ||||||
|  |  | ||||||
|         # Threshold for slow queries in milliseconds. |  | ||||||
|         slow_threshold: 1000 |  | ||||||
|  |  | ||||||
|       # SQLite config |  | ||||||
|       sqlite: |  | ||||||
|         path: /persistence/db.sqlite |  | ||||||
|  |  | ||||||
|         # Enable WAL mode for SQLite. This is recommended for production environments. |  | ||||||
|         # https://www.sqlite.org/wal.html |  | ||||||
|         write_ahead_log: true |  | ||||||
|  |  | ||||||
|         # Maximum number of WAL file frames before the WAL file is automatically checkpointed. |  | ||||||
|         # https://www.sqlite.org/c3ref/wal_autocheckpoint.html |  | ||||||
|         # Set to 0 to disable automatic checkpointing. |  | ||||||
|         wal_autocheckpoint: 1000 |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     ### TLS configuration |  | ||||||
|     # |  | ||||||
|     ## Let's encrypt / ACME |  | ||||||
|     # |  | ||||||
|     # headscale supports automatically requesting and setting up |  | ||||||
|     # TLS for a domain with Let's Encrypt. |  | ||||||
|     # |  | ||||||
|     # URL to ACME directory |  | ||||||
|     acme_url: https://acme-v02.api.letsencrypt.org/directory |  | ||||||
|  |  | ||||||
|     # Email to register with ACME provider |  | ||||||
|     acme_email: "" |  | ||||||
|  |  | ||||||
|     # Domain name to request a TLS certificate for: |  | ||||||
|     tls_letsencrypt_hostname: "" |  | ||||||
|  |  | ||||||
|     # Path to store certificates and metadata needed by |  | ||||||
|     # letsencrypt |  | ||||||
|     # For production: |  | ||||||
|     tls_letsencrypt_cache_dir: /var/lib/headscale/cache |  | ||||||
|  |  | ||||||
|     # Type of ACME challenge to use, currently supported types: |  | ||||||
|     # HTTP-01 or TLS-ALPN-01 |  | ||||||
|     # See: docs/ref/tls.md for more information |  | ||||||
|     tls_letsencrypt_challenge_type: HTTP-01 |  | ||||||
|     # When HTTP-01 challenge is chosen, letsencrypt must set up a |  | ||||||
|     # verification endpoint, and it will be listening on: |  | ||||||
|     # :http = port 80 |  | ||||||
|     tls_letsencrypt_listen: ":http" |  | ||||||
|  |  | ||||||
|     ## Use already defined certificates: |  | ||||||
|     tls_cert_path: "" |  | ||||||
|     tls_key_path: "" |  | ||||||
|  |  | ||||||
|     log: |  | ||||||
|       # Output formatting for logs: text or json |  | ||||||
|       format: text |  | ||||||
|       level: info |  | ||||||
|  |  | ||||||
|     ## Policy |  | ||||||
|     # headscale supports Tailscale's ACL policies. |  | ||||||
|     # Please have a look to their KB to better |  | ||||||
|     # understand the concepts: https://tailscale.com/kb/1018/acls/ |  | ||||||
|     policy: |  | ||||||
|       # The mode can be "file" or "database" that defines |  | ||||||
|       # where the ACL policies are stored and read from. |  | ||||||
|       mode: file |  | ||||||
|       # If the mode is set to "file", the path to a |  | ||||||
|       # HuJSON file containing ACL policies. |  | ||||||
|       path: "" |  | ||||||
|  |  | ||||||
|     ## DNS |  | ||||||
|     # |  | ||||||
|     # headscale supports Tailscale's DNS configuration and MagicDNS. |  | ||||||
|     # Please have a look to their KB to better understand the concepts: |  | ||||||
|     # |  | ||||||
|     # - https://tailscale.com/kb/1054/dns/ |  | ||||||
|     # - https://tailscale.com/kb/1081/magicdns/ |  | ||||||
|     # - https://tailscale.com/blog/2021-09-private-dns-with-magicdns/ |  | ||||||
|     # |  | ||||||
|     # Please note that for the DNS configuration to have any effect, |  | ||||||
|     # clients must have the `--accept-dns=true` option enabled. This is the |  | ||||||
|     # default for the Tailscale client. This option is enabled by default |  | ||||||
|     # in the Tailscale client. |  | ||||||
|     # |  | ||||||
|     # Setting _any_ of the configuration and `--accept-dns=true` on the |  | ||||||
|     # clients will integrate with the DNS manager on the client or |  | ||||||
|     # overwrite /etc/resolv.conf. |  | ||||||
|     # https://tailscale.com/kb/1235/resolv-conf |  | ||||||
|     # |  | ||||||
|     # If you want stop Headscale from managing the DNS configuration |  | ||||||
|     # all the fields under `dns` should be set to empty values. |  | ||||||
|     dns: |  | ||||||
|       # Whether to use [MagicDNS](https://tailscale.com/kb/1081/magicdns/). |  | ||||||
|       magic_dns: true |  | ||||||
|  |  | ||||||
|       # Defines the base domain to create the hostnames for MagicDNS. |  | ||||||
|       # This domain _must_ be different from the server_url domain. |  | ||||||
|       # `base_domain` must be a FQDN, without the trailing dot. |  | ||||||
|       # The FQDN of the hosts will be |  | ||||||
|       # `hostname.base_domain` (e.g., _myhost.example.com_). |  | ||||||
|       base_domain: example.com |  | ||||||
|  |  | ||||||
|       # List of DNS servers to expose to clients. |  | ||||||
|       nameservers: |  | ||||||
|         global: |  | ||||||
|           - 1.1.1.1 |  | ||||||
|           - 1.0.0.1 |  | ||||||
|           - 2606:4700:4700::1111 |  | ||||||
|           - 2606:4700:4700::1001 |  | ||||||
|  |  | ||||||
|           # NextDNS (see https://tailscale.com/kb/1218/nextdns/). |  | ||||||
|           # "abc123" is example NextDNS ID, replace with yours. |  | ||||||
|           # - https://dns.nextdns.io/abc123 |  | ||||||
|  |  | ||||||
|         # Split DNS (see https://tailscale.com/kb/1054/dns/), |  | ||||||
|         # a map of domains and which DNS server to use for each. |  | ||||||
|         split: |  | ||||||
|           {} |  | ||||||
|           # foo.bar.com: |  | ||||||
|           #   - 1.1.1.1 |  | ||||||
|           # darp.headscale.net: |  | ||||||
|           #   - 1.1.1.1 |  | ||||||
|           #   - 8.8.8.8 |  | ||||||
|  |  | ||||||
|       # Set custom DNS search domains. With MagicDNS enabled, |  | ||||||
|       # your tailnet base_domain is always the first search domain. |  | ||||||
|       search_domains: [] |  | ||||||
|  |  | ||||||
|       # Extra DNS records |  | ||||||
|       # so far only A and AAAA records are supported (on the tailscale side) |  | ||||||
|       # See: docs/ref/dns.md |  | ||||||
|       extra_records: [] |  | ||||||
|       #   - name: "grafana.myvpn.example.com" |  | ||||||
|       #     type: "A" |  | ||||||
|       #     value: "100.64.0.3" |  | ||||||
|       # |  | ||||||
|       #   # you can also put it in one line |  | ||||||
|       #   - { name: "prometheus.myvpn.example.com", type: "A", value: "100.64.0.3" } |  | ||||||
|       # |  | ||||||
|       # Alternatively, extra DNS records can be loaded from a JSON file. |  | ||||||
|       # Headscale processes this file on each change. |  | ||||||
|       # extra_records_path: /var/lib/headscale/extra-records.json |  | ||||||
|  |  | ||||||
|     # Unix socket used for the CLI to connect without authentication |  | ||||||
|     # Note: for production you will want to set this to something like: |  | ||||||
|     unix_socket: /var/run/headscale/headscale.sock |  | ||||||
|     unix_socket_permission: "0770" |  | ||||||
|     # |  | ||||||
|     # headscale supports experimental OpenID connect support, |  | ||||||
|     # it is still being tested and might have some bugs, please |  | ||||||
|     # help us test it. |  | ||||||
|     # OpenID Connect |  | ||||||
|     # oidc: |  | ||||||
|     #   only_start_if_oidc_is_available: true |  | ||||||
|     #   issuer: "https://your-oidc.issuer.com/path" |  | ||||||
|     #   client_id: "your-oidc-client-id" |  | ||||||
|     #   client_secret: "your-oidc-client-secret" |  | ||||||
|     #   # Alternatively, set `client_secret_path` to read the secret from the file. |  | ||||||
|     #   # It resolves environment variables, making integration to systemd's |  | ||||||
|     #   # `LoadCredential` straightforward: |  | ||||||
|     #   client_secret_path: "${CREDENTIALS_DIRECTORY}/oidc_client_secret" |  | ||||||
|     #   # client_secret and client_secret_path are mutually exclusive. |  | ||||||
|     # |  | ||||||
|     #   # The amount of time from a node is authenticated with OpenID until it |  | ||||||
|     #   # expires and needs to reauthenticate. |  | ||||||
|     #   # Setting the value to "0" will mean no expiry. |  | ||||||
|     #   expiry: 180d |  | ||||||
|     # |  | ||||||
|     #   # Use the expiry from the token received from OpenID when the user logged |  | ||||||
|     #   # in, this will typically lead to frequent need to reauthenticate and should |  | ||||||
|     #   # only been enabled if you know what you are doing. |  | ||||||
|     #   # Note: enabling this will cause `oidc.expiry` to be ignored. |  | ||||||
|     #   use_expiry_from_token: false |  | ||||||
|     # |  | ||||||
|     #   # Customize the scopes used in the OIDC flow, defaults to "openid", "profile" and "email" and add custom query |  | ||||||
|     #   # parameters to the Authorize Endpoint request. Scopes default to "openid", "profile" and "email". |  | ||||||
|     # |  | ||||||
|     #   scope: ["openid", "profile", "email", "custom"] |  | ||||||
|     #   extra_params: |  | ||||||
|     #     domain_hint: example.com |  | ||||||
|     # |  | ||||||
|     #   # List allowed principal domains and/or users. If an authenticated user's domain is not in this list, the |  | ||||||
|     #   # authentication request will be rejected. |  | ||||||
|     # |  | ||||||
|     #   allowed_domains: |  | ||||||
|     #     - example.com |  | ||||||
|     #   # Note: Groups from keycloak have a leading '/' |  | ||||||
|     #   allowed_groups: |  | ||||||
|     #     - /headscale |  | ||||||
|     #   allowed_users: |  | ||||||
|     #     - alice@example.com |  | ||||||
|     # |  | ||||||
|     #   # Optional: PKCE (Proof Key for Code Exchange) configuration |  | ||||||
|     #   # PKCE adds an additional layer of security to the OAuth 2.0 authorization code flow |  | ||||||
|     #   # by preventing authorization code interception attacks |  | ||||||
|     #   # See https://datatracker.ietf.org/doc/html/rfc7636 |  | ||||||
|     #   pkce: |  | ||||||
|     #     # Enable or disable PKCE support (default: false) |  | ||||||
|     #     enabled: false |  | ||||||
|     #     # PKCE method to use: |  | ||||||
|     #     # - plain: Use plain code verifier |  | ||||||
|     #     # - S256: Use SHA256 hashed code verifier (default, recommended) |  | ||||||
|     #     method: S256 |  | ||||||
|     # |  | ||||||
|     #   # Map legacy users from pre-0.24.0 versions of headscale to the new OIDC users |  | ||||||
|     #   # by taking the username from the legacy user and matching it with the username |  | ||||||
|     #   # provided by the OIDC. This is useful when migrating from legacy users to OIDC |  | ||||||
|     #   # to force them using the unique identifier from the OIDC and to give them a |  | ||||||
|     #   # proper display name and picture if available. |  | ||||||
|     #   # Note that this will only work if the username from the legacy user is the same |  | ||||||
|     #   # and there is a possibility for account takeover should a username have changed |  | ||||||
|     #   # with the provider. |  | ||||||
|     #   # When this feature is disabled, it will cause all new logins to be created as new users. |  | ||||||
|     #   # Note this option will be removed in the future and should be set to false |  | ||||||
|     #   # on all new installations, or when all users have logged in with OIDC once. |  | ||||||
|     #   map_legacy_users: false |  | ||||||
|  |  | ||||||
|     # Logtail configuration |  | ||||||
|     # Logtail is Tailscales logging and auditing infrastructure, it allows the control panel |  | ||||||
|     # to instruct tailscale nodes to log their activity to a remote server. |  | ||||||
|     logtail: |  | ||||||
|       # Enable logtail for this headscales clients. |  | ||||||
|       # As there is currently no support for overriding the log server in headscale, this is |  | ||||||
|       # disabled by default. Enabling this will make your clients send logs to Tailscale Inc. |  | ||||||
|       enabled: false |  | ||||||
|  |  | ||||||
|     # Enabling this option makes devices prefer a random port for WireGuard traffic over the |  | ||||||
|     # default static port 41641. This option is intended as a workaround for some buggy |  | ||||||
|     # firewall devices. See https://tailscale.com/kb/1181/firewalls/ for more information. |  | ||||||
|     randomize_client_port: false |  | ||||||
| @@ -1,17 +0,0 @@ | |||||||
| apiVersion: traefik.io/v1alpha1 |  | ||||||
| kind: IngressRoute |  | ||||||
| metadata: |  | ||||||
|   name: headscale-ingressroute |  | ||||||
|  |  | ||||||
| spec: |  | ||||||
|   entryPoints: |  | ||||||
|     - websecure |  | ||||||
|   routes: |  | ||||||
|   - match: Host(`headscale.kluster.moll.re`) |  | ||||||
|     kind: Rule |  | ||||||
|     services: |  | ||||||
|     - name: headscale-web |  | ||||||
|       port: 8080 |  | ||||||
|  |  | ||||||
|   tls: |  | ||||||
|     certResolver: default-tls  |  | ||||||
| @@ -1,22 +0,0 @@ | |||||||
| apiVersion: kustomize.config.k8s.io/v1beta1 |  | ||||||
| kind: Kustomization |  | ||||||
|  |  | ||||||
| namespace: headscale |  | ||||||
|  |  | ||||||
| resources: |  | ||||||
|   - namespace.yaml |  | ||||||
|   - headscale-config.configmap.yaml |  | ||||||
|   - headplane-config.configmap.yaml |  | ||||||
|   - pvc.yaml |  | ||||||
|   - deployment.yaml |  | ||||||
|   - serviceaccount.yaml |  | ||||||
|   - service.yaml |  | ||||||
|   - ingress.yaml |  | ||||||
|  |  | ||||||
| images: |  | ||||||
|   - name: headscale |  | ||||||
|     newName: headscale/headscale # has all plugins |  | ||||||
|     newTag: v0.25.1 |  | ||||||
|   - name: headplane |  | ||||||
|     newName: ghcr.io/tale/headplane |  | ||||||
|     newTag: "0.5.10" |  | ||||||
| @@ -1,6 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: Namespace |  | ||||||
| metadata: |  | ||||||
|   name: placeholder |  | ||||||
|   labels: |  | ||||||
|     pod-security.kubernetes.io/enforce: privileged  |  | ||||||
| @@ -1,23 +0,0 @@ | |||||||
| kind: PersistentVolumeClaim |  | ||||||
| apiVersion: v1 |  | ||||||
| metadata: |  | ||||||
|   name: headscale-data |  | ||||||
| spec: |  | ||||||
|   storageClassName: "nfs-client" |  | ||||||
|   accessModes: |  | ||||||
|     - ReadWriteOnce |  | ||||||
|   resources: |  | ||||||
|     requests: |  | ||||||
|       storage: 1Gi |  | ||||||
| --- |  | ||||||
| kind: PersistentVolumeClaim |  | ||||||
| apiVersion: v1 |  | ||||||
| metadata: |  | ||||||
|   name: headplane-data |  | ||||||
| spec: |  | ||||||
|   storageClassName: "nfs-client" |  | ||||||
|   accessModes: |  | ||||||
|     - ReadWriteOnce |  | ||||||
|   resources: |  | ||||||
|     requests: |  | ||||||
|       storage: 1Gi |  | ||||||
| @@ -1,10 +0,0 @@ | |||||||
| apiVersion: v1 |  | ||||||
| kind: Service |  | ||||||
| metadata: |  | ||||||
|   name: headscale-web |  | ||||||
| spec: |  | ||||||
|   selector: |  | ||||||
|     app: headscale |  | ||||||
|   ports: |  | ||||||
|   - port: 8080 |  | ||||||
|     targetPort: 8080 |  | ||||||
| @@ -1,26 +0,0 @@ | |||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: Role |  | ||||||
| metadata: |  | ||||||
|   name: headplane-agent |  | ||||||
|   # namespace: default # Adjust namespace as needed |  | ||||||
| rules: |  | ||||||
| - apiGroups: [''] |  | ||||||
|   resources: ['pods'] |  | ||||||
|   verbs: ['get', 'list'] |  | ||||||
| - apiGroups: ['apps'] |  | ||||||
|   resources: ['deployments'] |  | ||||||
|   verbs: ['get', 'list'] |  | ||||||
| --- |  | ||||||
| apiVersion: rbac.authorization.k8s.io/v1 |  | ||||||
| kind: RoleBinding |  | ||||||
| metadata: |  | ||||||
|   name: headplane-agent |  | ||||||
|   # namespace: default # Adjust namespace as needed |  | ||||||
| roleRef: |  | ||||||
|     apiGroup: rbac.authorization.k8s.io |  | ||||||
|     kind: Role |  | ||||||
|     name: headplane-agent |  | ||||||
| subjects: |  | ||||||
| - kind: ServiceAccount |  | ||||||
|   name: default # If you use a different service account, change this |  | ||||||
|   # namespace: default # Adjust namespace as needed |  | ||||||
| @@ -6,7 +6,7 @@ namespace: monitoring | |||||||
| resources:  | resources:  | ||||||
|   - namespace.yaml |   - namespace.yaml | ||||||
|   # prometheus-operator crds |   # prometheus-operator crds | ||||||
|   - https://github.com/prometheus-operator/prometheus-operator?ref=v0.82.0 |   - https://github.com/prometheus-operator/prometheus-operator?ref=v0.81.0 | ||||||
|   # single prometheus instance with a thanos sidecar |   # single prometheus instance with a thanos sidecar | ||||||
|   - prometheus.yaml |   - prometheus.yaml | ||||||
|   - thanos-store.statefulset.yaml |   - thanos-store.statefulset.yaml | ||||||
|   | |||||||
| @@ -13,6 +13,6 @@ namespace: traefik-system | |||||||
| helmCharts: | helmCharts: | ||||||
|   - name: traefik |   - name: traefik | ||||||
|     releaseName: traefik |     releaseName: traefik | ||||||
|     version: 35.0.1 |     version: 34.5.0 | ||||||
|     valuesFile: values.yaml |     valuesFile: values.yaml | ||||||
|     repo: https://traefik.github.io/charts |     repo: https://traefik.github.io/charts | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user