fix(kb): align to new link format

This commit is contained in:
Michele Cereda
2026-02-20 23:20:26 +01:00
parent dac151615e
commit 5a22edff4c
12 changed files with 67 additions and 66 deletions

View File

@@ -208,9 +208,9 @@ ansible-playbook 'playbook.yaml' -DCvvv \
Galaxy collections and roles worth a check:
| ID | Type | Description |
| ---------------------------------------------- | ---------- | --------------------- |
| [sivel.toiletwater][galaxy sivel.toiletwater] | collection | Extra filters, mostly |
| ID | Type | Description |
| ----------------------------------------------- | ---------- | --------------------- |
| [sivel.toiletwater][galaxy / sivel.toiletwater] | collection | Extra filters, mostly |
UIs:
@@ -523,7 +523,7 @@ All Jinja2's standard filters and tests can be used, with the addition of:
All templating happens **on the Ansible controller**, **before** the task is sent and executed on the target machine.
Updated [examples][examples templating] are available.
Updated [examples][examples / templating] are available.
```yaml
# Remove empty or false values from a list piping it to 'select()'.
@@ -1774,7 +1774,7 @@ Another _better (?)_ solution in playbooks/roles would be to sanitize the input
- [Ansible Navigator documentation]
- [Ansible Runner]
- [Using variables]
- [Galaxy Community User Guide][galaxy community user guide]
- [Galaxy Community User Guide][galaxy / community user guide]
### Sources
@@ -1845,7 +1845,7 @@ Another _better (?)_ solution in playbooks/roles would be to sanitize the input
<!-- Files -->
[examples]: ../examples/ansible/
[examples templating]: ../examples/ansible/templating.yml
[examples / templating]: ../examples/ansible/templating.yml
<!-- Upstream -->
[8 ways to speed up your Ansible playbooks]: https://www.redhat.com/sysadmin/faster-ansible-playbook-execution
@@ -1864,8 +1864,8 @@ Another _better (?)_ solution in playbooks/roles would be to sanitize the input
[defining variables at runtime]: https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_variables.html#defining-variables-at-runtime
[developing and testing ansible roles with molecule and podman - part 1]: https://www.ansible.com/blog/developing-and-testing-ansible-roles-with-molecule-and-podman-part-1/
[Execution environment definition]: https://ansible.readthedocs.io/projects/builder/en/stable/definition/
[Galaxy Community User Guide]: https://docs.ansible.com/projects/galaxy-ng/en/latest/community/userguide.html
[Galaxy sivel.toiletwater]: https://galaxy.ansible.com/ui/repo/published/sivel/toiletwater/
[Galaxy / Community User Guide]: https://docs.ansible.com/projects/galaxy-ng/en/latest/community/userguide.html
[Galaxy / sivel.toiletwater]: https://galaxy.ansible.com/ui/repo/published/sivel/toiletwater/
[Galaxy]: https://galaxy.ansible.com/
[Getting started with Execution Environments]: https://docs.ansible.com/ansible/latest/getting_started_ee/index.html
[Introduction to Ansible Builder]: https://www.ansible.com/blog/introduction-to-ansible-builder/

View File

@@ -1142,7 +1142,7 @@ If one can, prefer just build the image from an EC2 instance.
### Sources
- [Constraints for tags][constraints tag]
- [Constraints for tags][constraints / tag]
- [What is Amazon VPC?]
- [Subnets for your VPC]
- [What is AWS Config?]
@@ -1188,6 +1188,7 @@ If one can, prefer just build the image from an EC2 instance.
[config]: #config
[detective]: #detective
[direct connect]: #direct-connect
[ElastiCache]: #elasticache
[ELB]: #load-balancing
[enterprise discount program]: #enterprise-discount-program
[eventbridge]: #eventbridge
@@ -1237,7 +1238,7 @@ If one can, prefer just build the image from an EC2 instance.
[boto3 resources]: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/resources.html
[boto3 sessions]: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/session.html
[connect to the internet using an internet gateway]: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html
[constraints tag]: https://docs.aws.amazon.com/directoryservice/latest/devguide/API_Tag.html
[constraints / tag]: https://docs.aws.amazon.com/directoryservice/latest/devguide/API_Tag.html
[creating organization policies with aws organizations]: https://docs.aws.amazon.com/organizations/latest/userguide/orgs_policies_create.html
[elastic ip addresses]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html
[enable or disable aws regions in your account]: https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html

View File

@@ -425,7 +425,7 @@ deployments.
## Capacity providers
Refer [Capacity providers][upstream capacity providers].
Refer [Capacity providers][documentation / capacity providers].
Clusters can contain a mix of tasks that are hosted on Fargate, Amazon EC2 instances, or external instances.<br/>
Tasks can run on Fargate or EC2 infrastructure, as defined by their [launch type] or a capacity provider strategy.<br/>
@@ -2416,6 +2416,7 @@ ECS will eventually stop the Task, then launch a replacement to maintain the des
[AWS Fargate Pricing]: https://aws.amazon.com/fargate/pricing/
[AWS Fargate Spot Now Generally Available]: https://aws.amazon.com/blogs/aws/aws-fargate-spot-now-generally-available/
[Centralized Container Logging with Fluent Bit]: https://aws.amazon.com/blogs/opensource/centralized-container-logging-fluent-bit/
[Documentation / capacity providers]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html#capacity-providers
[ecs execute-command proposal]: https://github.com/aws/containers-roadmap/issues/1050
[Effectively Using Spot Instances in AWS ECS for Production Workloads]: https://medium.com/@ankur.ecb/effectively-using-spot-instances-in-aws-ecs-for-production-workloads-d46985d0ae2d
[EventBridge Scheduler]: https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html
@@ -2437,7 +2438,6 @@ ECS will eventually stop the Task, then launch a replacement to maintain the des
[troubleshoot amazon ecs deployment issues]: https://docs.aws.amazon.com/codedeploy/latest/userguide/troubleshooting-ecs.html
[troubleshoot amazon ecs task definition invalid cpu or memory errors]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-cpu-memory-error.html
[Under the hood: FireLens for Amazon ECS Tasks]: https://aws.amazon.com/blogs/containers/under-the-hood-firelens-for-amazon-ecs-tasks/
[upstream capacity providers]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html#capacity-providers
[use amazon ebs volumes with amazon ecs]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html
[use amazon efs volumes with amazon ecs]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html
[use bind mounts with amazon ecs]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bind-mounts.html

View File

@@ -165,7 +165,7 @@ POST _cold/migration/my-index/_cancel
## Index state management plugin
Refer [OpenSearch's Index State Management plugin][opensearch index state management] and
Refer [OpenSearch's Index State Management plugin][opensearch / index state management] and
[Index State Management in Amazon OpenSearch Service].
Compared to [OpenSearch] and [ElasticSearch], ISM for Amazon's managed OpenSearch service has several differences:
@@ -206,7 +206,7 @@ Compared to [OpenSearch] and [ElasticSearch], ISM for Amazon's managed OpenSearc
## Snapshots
Refer [Snapshots][opensearch snapshots] and [Creating index snapshots in Amazon OpenSearch Service].
Refer [Snapshots][opensearch / snapshots] and [Creating index snapshots in Amazon OpenSearch Service].
AWS-managed OpenSearch Service snapshots come in the following forms:
@@ -446,8 +446,8 @@ can manage.
[Hot-warm architecture]: ../../opensearch.md#hot-warm-architecture
[ElasticSearch]: ../../elasticsearch.md
[OpenSearch]: ../../opensearch.md
[OpenSearch index state management]: ../../opensearch.md#index-state-management-plugin
[OpenSearch snapshots]: ../../opensearch.md#snapshots
[OpenSearch / index state management]: ../../opensearch.md#index-state-management-plugin
[OpenSearch / snapshots]: ../../opensearch.md#snapshots
[S3]: s3.md
<!-- Files -->

View File

@@ -198,7 +198,7 @@ Objects in need to be moved to a higher storage class need to be **_recreated_**
they will take new metadata.
Other constraints apply, e.g., objects smaller than 128KiB are not usually transitioned in tier.<br/>
See [General considerations for transitions][lifecycle general considerations for transitions].
See [General considerations for transitions][lifecycle / general considerations for transitions].
When multiple rules are applied through Lifecycle configurations, objects can become eligible for multiple Lifecycle
actions. In such cases:
@@ -214,7 +214,7 @@ actions. In such cases:
> Expect a delay of a few minutes before any change in configuration starts taking effect. This includes configuration
> deletions.
Examples: [1][lifecycle configuration examples], [2][s3 lifecycle rules examples]
Examples: [1][lifecycle / configuration examples], [2][s3 lifecycle rules examples]
## Cost-saving measures
@@ -230,7 +230,7 @@ Examples: [1][lifecycle configuration examples], [2][s3 lifecycle rules example
## Further readings
- [Amazon Web Services]
- [Configure notification for lifecycle rules][lifecycle configure notification]
- [Configure notification for lifecycle rules][lifecycle / configure notification]
- AWS' [CLI]
- [Expiring Amazon S3 objects based on last accessed date to decrease costs]
- [Understanding and managing Amazon S3 storage classes]
@@ -245,8 +245,8 @@ Examples: [1][lifecycle configuration examples], [2][s3 lifecycle rules example
### Sources
- [Amazon S3 Storage Classes]
- [General considerations for transitions][lifecycle general considerations for transitions]
- [Lifecycle configuration examples][lifecycle configuration examples]
- [General considerations for transitions][lifecycle / general considerations for transitions]
- [Lifecycle configuration examples][lifecycle / configuration examples]
- [CLI subcommand reference]
- [Find out the size of your Amazon S3 buckets]
- [How S3 Intelligent-Tiering works]
@@ -277,9 +277,9 @@ Examples: [1][lifecycle configuration examples], [2][s3 lifecycle rules example
[expiring amazon s3 objects based on last accessed date to decrease costs]: https://aws.amazon.com/blogs/architecture/expiring-amazon-s3-objects-based-on-last-accessed-date-to-decrease-costs/
[find out the size of your amazon s3 buckets]: https://aws.amazon.com/blogs/storage/find-out-the-size-of-your-amazon-s3-buckets/
[how s3 intelligent-tiering works]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering-overview.html
[lifecycle configuration examples]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html
[lifecycle configure notification]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configure-notification.html
[lifecycle general considerations for transitions]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html
[lifecycle / configuration examples]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html
[lifecycle / configure notification]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configure-notification.html
[lifecycle / general considerations for transitions]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html
[Understanding and managing Amazon S3 storage classes]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
[Understanding your AWS billing and usage reports for Amazon S3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/aws-usage-report-understand.html
[Using S3 Intelligent-Tiering]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-intelligent-tiering.html

View File

@@ -12,15 +12,15 @@
## Hardware
| Component | Choice | Price |
| ------------ | ----------------------------------------------------------------------- | ------------------------------------------------------------------ |
| Case | [Fractal Design Node 304] | [€99][amazon fractal design node 304] |
| CPU | [Intel Celeron N5105] | Included in the motherboard |
| Hard disks | [Seagate IronWolf ST4000VN008 4TB] | €556,00 (4x [€139,00][coolblue seagate ironwolf st4000vn008 4tb]) |
| Motherboard | Mini ITX NAS motherboard with Intel N5105 CPU and I226-V network chip | [€175,28][amazon nas motherboard] |
| Power supply | [Corsair RM850e] fully modular | [€117,90][amazon corsair rm850e 2023] |
| RAM | [Crucial CT2K16G4SFRA32A] 32GB kit (2x16GB) | [€67,95][amazon crucial ct2k16g4sfra32a] |
| SATA cables | Cable Matters 6.0Gbps SATA III cable with 90 degrees angle, black, 45cm | €11,98 (2x [€5,99][amazon cable matters sata cables]) |
| Component | Choice | Price |
| ------------ | ----------------------------------------------------------------------- | ------------------------------------------------------------------- |
| Case | [Fractal Design Node 304] | [€99][amazon / fractal design node 304] |
| CPU | [Intel Celeron N5105] | Included in the motherboard |
| Hard disks | [Seagate IronWolf ST4000VN008 4TB] | €556,00 (4x [€139,00][coolblue / seagate ironwolf st4000vn008 4tb]) |
| Motherboard | Mini ITX NAS motherboard with Intel N5105 CPU and I226-V network chip | [€175,28][amazon / nas motherboard] |
| Power supply | [Corsair RM850e] fully modular | [€117,90][amazon / corsair rm850e 2023] |
| RAM | [Crucial CT2K16G4SFRA32A] 32GB kit (2x16GB) | [€67,95][amazon / crucial ct2k16g4sfra32a] |
| SATA cables | Cable Matters 6.0Gbps SATA III cable with 90 degrees angle, black, 45cm | €11,98 (2x [€5,99][amazon / cable matters sata cables]) |
## BIOS
@@ -99,11 +99,11 @@ The ZFS pool and datasets used as shared folders shall have the following proper
[seagate ironwolf st4000vn008 4tb]: https://www.seagate.com/products/nas-drives/ironwolf-hard-drive/
<!-- Others -->
[amazon cable matters sata cables]: https://www.amazon.nl/dp/B018Y2LEBE/
[amazon corsair rm850e 2023]: https://www.amazon.nl/dp/B0BVL17341/
[amazon crucial ct2k16g4sfra32a]: https://www.amazon.nl/dp/B08C4X9VR5/
[amazon fractal design node 304]: https://www.amazon.nl/dp/B009PIEMUC/
[amazon nas motherboard]: https://www.amazon.nl/dp/B0BYVNZDGS/
[coolblue seagate ironwolf st4000vn008 4tb]: https://www.coolblue.nl/en/product/750006/seagate-ironwolf-st4000vn008-4tb.html
[amazon / cable matters sata cables]: https://www.amazon.nl/dp/B018Y2LEBE/
[amazon / corsair rm850e 2023]: https://www.amazon.nl/dp/B0BVL17341/
[amazon / crucial ct2k16g4sfra32a]: https://www.amazon.nl/dp/B08C4X9VR5/
[amazon / fractal design node 304]: https://www.amazon.nl/dp/B009PIEMUC/
[amazon / nas motherboard]: https://www.amazon.nl/dp/B0BYVNZDGS/
[coolblue / seagate ironwolf st4000vn008 4tb]: https://www.coolblue.nl/en/product/750006/seagate-ironwolf-st4000vn008-4tb.html
[the perfect home server 2023]: https://www.youtube.com/watch?v=vjDoQA4C22c
[what's the best psu for your low idle home server?]: https://www.youtube.com/watch?v=TPSuCbS-4P0

View File

@@ -305,7 +305,7 @@ To solve this, use a different network mode and **explicitly publish** the ports
Docker Desktop runs the Engine in a virtual machine, not natively; hence, ports are exposed on the VM and not of the
host running Docker Desktop.<br/>
Refer [I cannot ping my containers][docker docs i cannot ping my containers].
Refer [I cannot ping my containers][documentation / i cannot ping my containers].
One can go around this limitation by:
@@ -676,7 +676,7 @@ Alternatively, keep the exec form but force invoking a shell in it:
## Further readings
- [GitHub]
- [Codebase]
- [Podman]
- [Dive]
- [Testcontainers]
@@ -721,12 +721,12 @@ Alternatively, keep the exec form but force invoking a shell in it:
<!-- Upstream -->
[building multi-arch images for arm and x86 with docker desktop]: https://www.docker.com/blog/multi-arch-images/
[Codebase]: https://github.com/docker
[docker compose]: https://github.com/docker/compose
[docker docs I cannot ping my containers]: https://docs.docker.com/desktop/features/networking/#i-cannot-ping-my-containers
[Docker Model Runner]: https://docs.docker.com/ai/model-runner/
[dockerfile reference]: https://docs.docker.com/reference/dockerfile/
[Documentation / I cannot ping my containers]: https://docs.docker.com/desktop/features/networking/#i-cannot-ping-my-containers
[Exec form ENTRYPOINT example]: https://docs.docker.com/reference/dockerfile/#exec-form-entrypoint-example
[github]: https://github.com/docker
[Multi-stage builds]: https://docs.docker.com/build/building/multi-stage/
[Run LLMs Locally with Docker: A Quickstart Guide to Model Runner]: https://www.docker.com/blog/run-llms-locally/

View File

@@ -273,7 +273,7 @@ spec:
- name: rabbitmq-client
image: tsuyoshiushio/rabbitmq-client:dev3
imagePullPolicy: Always
command: ["receive", "amqp://user:PASSWORD@rabbitmq.default.svc.cluster.local:5672", "job"]
command: ["receive", "amqp://user:PASSWORD@rabbitmq.default.svc.cluster.local:5672", "job"]
envFrom:
- secretRef:
name: rabbitmq-consumer

View File

@@ -93,8 +93,8 @@ sudo powertop --auto-tune
- [PowerTOP]
- [Laptop Mode Tools: Extend Your Laptop Battery Life]
- [`laptop-mode-tools` article in the Arch Wiki][arch wiki laptop-mode-tools]
- [Power management article in the Arch Wiki][arch wiki power management]
- [`laptop-mode-tools` article in the Arch Wiki][arch wiki / laptop-mode-tools]
- [Power management article in the Arch Wiki][arch wiki / power management]
<!--
Reference
@@ -110,6 +110,6 @@ sudo powertop --auto-tune
[PowerTOP]: ../powertop.md
<!-- Others -->
[arch wiki / laptop-mode-tools]: https://wiki.archlinux.org/title/Laptop_Mode_Tools
[arch wiki / power management]: https://wiki.archlinux.org/title/Power_management
[Laptop Mode Tools: Extend Your Laptop Battery Life]: https://www.unixmen.com/laptop-mode-tools-extend-laptop-battery-life/
[arch wiki laptop-mode-tools]: https://wiki.archlinux.org/title/Laptop_Mode_Tools
[arch wiki power management]: https://wiki.archlinux.org/title/Power_management

View File

@@ -152,7 +152,7 @@ They are extensions that the most famous flavours introduced or adopted, each wi
<details>
<summary>GitHub formatting</summary>
Refer [GitHub's alert formatting][github formatting alerts].
Refer [GitHub's alert formatting][github formatting / alerts].
```md
> [!NOTE]
@@ -201,7 +201,7 @@ Refer [GitHub's alert formatting][github formatting alerts].
<details>
<summary>GitLab formatting</summary>
Refer [GitLab Flavored Markdown][gitlab flavored markdown alerts].
Refer [GitLab Flavored Markdown][gitlab flavored markdown / alerts].
```md
> [!note]
@@ -290,7 +290,7 @@ Install and enable [`bierner.markdown-mermaid`][bierner.markdown-mermaid]'s exte
- Official [documentation]
- [Extended syntax]
- [Linguist supported language syntax list]
- [Github's alert formatting][github formatting alerts]
- [Github's alert formatting][github formatting / alerts]
- [Live editor]
- [Mermaid.js]
- [MyST] extension for technical, scientific communication and publication
@@ -326,8 +326,8 @@ Install and enable [`bierner.markdown-mermaid`][bierner.markdown-mermaid]'s exte
[bierner.markdown-mermaid]: https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid
[escaping backtick in markdown]: https://www.growingwiththeweb.com/2015/06/escaping-backtick-in-markdown.html
[escaping backticks]: https://www.markdownguide.org/basic-syntax/#escaping-backticks
[github formatting alerts]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts
[GitLab Flavored Markdown alerts]: https://docs.gitlab.com/user/markdown/#alerts
[github formatting / alerts]: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts
[GitLab Flavored Markdown / alerts]: https://docs.gitlab.com/user/markdown/#alerts
[GitLab Flavored Markdown]: https://docs.gitlab.com/user/markdown/
[linguist supported language syntax list]: https://github.com/github/linguist/blob/master/lib/linguist/languages.yml
[live editor]: https://mermaid.live/edit

View File

@@ -447,7 +447,7 @@ lower storage states after they meet specific conditions.
## Index templates
Refer [Index templates][documentation index templates].
Refer [Index templates][documentation / index templates].
Index templates allow to initialize new indices with predefined mappings and settings.
@@ -905,7 +905,7 @@ They require data to be indexed before creation.
Requires the cluster to use the [hot-warm architecture].
Refer [Index State Management][documentation index state management].
Refer [Index State Management][documentation / index state management].
## Snapshots
@@ -1385,7 +1385,7 @@ DELETE _snapshot/repository-name/snapshot-name
- [Stepping up for a truly open source Elasticsearch]
- [Managing indices]
- [Reindex data]
- [Index templates][documentation index templates]
- [Index templates][documentation / index templates]
- [OpenSearch Data Streams]
- [OpenSearch Indices and Data streams]
- [Snapshot Operations in OpenSearch]
@@ -1411,12 +1411,12 @@ DELETE _snapshot/repository-name/snapshot-name
<!-- Files -->
<!-- Upstream -->
[codebase]: https://github.com/opensearch-project
[Codebase]: https://github.com/opensearch-project
[creating a cluster]: https://opensearch.org/docs/latest/tuning-your-cluster/
[data prepper]: https://opensearch.org/docs/latest/data-prepper/
[Documentation Index State Management]: https://docs.opensearch.org/docs/latest/im-plugin/ism/index/
[documentation index templates]: https://opensearch.org/docs/latest/im-plugin/index-templates/
[documentation]: https://opensearch.org/docs/latest/
[Documentation / Index State Management]: https://docs.opensearch.org/docs/latest/im-plugin/ism/index/
[Documentation / index templates]: https://opensearch.org/docs/latest/im-plugin/index-templates/
[Documentation]: https://opensearch.org/docs/latest/
[index management]: https://opensearch.org/docs/latest/dashboards/im-dashboards/index-management/
[index settings]: https://opensearch.org/docs/latest/install-and-configure/configuring-opensearch/index-settings/
[managing indices]: https://opensearch.org/docs/latest/im-plugin/

View File

@@ -97,7 +97,7 @@ Configure one or more machines in that network to act as [subnet routers].
## Subnet routers
Refer [Subnet routers][tailscale subnet routers].
Refer [Subnet routers][documentation / subnet routers].
Subnet routers allow extending tailnets to include devices that don't or can't run the Tailscale client.<br/>
They act as gateways between the tailnet and physical subnets, enabling access and relaying traffic to and from devices,
@@ -195,7 +195,7 @@ Subnet routers need to be configured to allow IP forwarding as follows:
## Exit nodes
Refer [Exit nodes][tailscale exit nodes].
Refer [Exit nodes][documentation / exit nodes].
Needed to route _outbound_ public Internet traffic.
@@ -280,8 +280,8 @@ setting up conditional forwarding on one's private DNS service, and only using t
### Sources
- [Documentation]
- [Subnet routers][tailscale subnet routers]
- [Exit nodes][tailscale exit nodes]
- [Subnet routers][documentation / subnet routers]
- [Exit nodes][documentation / exit nodes]
<!--
Reference
@@ -299,11 +299,11 @@ setting up conditional forwarding on one's private DNS service, and only using t
<!-- Files -->
<!-- Upstream -->
[Codebase]: https://github.com/tailscale/tailscale
[Documentation / exit nodes]: https://tailscale.com/kb/1103/exit-nodes
[Documentation / subnet routers]: https://tailscale.com/kb/1019/subnets
[Documentation]: https://tailscale.com/kb
[Mullvad exit nodes]: https://tailscale.com/kb/1258/mullvad-exit-nodes
[Set up a subnet router]: https://tailscale.com/kb/1019/subnets#set-up-a-subnet-router
[tailscale exit nodes]: https://tailscale.com/kb/1103/exit-nodes
[tailscale subnet routers]: https://tailscale.com/kb/1019/subnets
[Website]: https://tailscale.com/
<!-- Others -->