diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml index 5e4e629771..f8254274dd 100644 --- a/.github/workflows/link-checker.yml +++ b/.github/workflows/link-checker.yml @@ -36,13 +36,13 @@ jobs: key: cache-lychee-${{ github.sha }} restore-keys: cache-lychee- - # Run link checker on the generated HTML - name: Run Link Checker id: lychee - uses: lycheeverse/lychee-action@2b973e86fc7b1f6b36a93795fe2c9c6ae1118621 # v1.10.0 + uses: lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2.8.0 with: args: > --config ./lychee.toml + --root-dir ${{ github.workspace }} pages/**/* token: ${{ secrets.GITHUB_TOKEN }} diff --git a/lychee.toml b/lychee.toml index 4f85ce9ac1..b56c485fc6 100644 --- a/lychee.toml +++ b/lychee.toml @@ -4,9 +4,6 @@ # Accepts log level: "error", "warn", "info", "debug", "trace" verbose = "error" -# Show progress -progress = false - # Path to summary output file. # output = "report.md" @@ -59,14 +56,11 @@ require_https = true # Request method method = "get" -# Custom request headers -headers = [] - # Remap URI matching pattern to different URI. # remap = [ "https://example.com http://example.invalid" ] -# Base URL or website root directory to check relative URLs. -# base = "https://docs.balena.io" +# Base URL for resolving root-relative links. +# base_url = "https://docs.balena.io" # HTTP basic auth support. This will be the username and password passed to the # authorization HTTP header. See @@ -88,6 +82,7 @@ headers = [] # The balena/resin API urls will not respond to unauthenticated requests # The gstatic and googleapis links go 404 and are excluded ever since we started checking HTML # balenaCLI linux binary URLs always error out since they are generated on run time only +# admin.google.com/ac/apps/unified always redirects to login # File URLs are excluded as they aren't checked properly and error out exclude = [ "https://github.com/balena-io-library/base-images", @@ -118,13 +113,17 @@ exclude = [ "https://www.googletagmanager.com/gtm.js?*", "https://github.com/balena-io/docs/issues/new?*", "https://api/", - "https://raw.githubusercontent.com/balena-os/meta-balena/$%7Bos_version_tag%7D/meta-balena-common/recipes-containers/balena-supervisor/balena-supervisor.inc", + "https://raw.githubusercontent.com/balena-os/meta-balena/[^/]+/meta-balena-common/recipes-containers/balena-supervisor/balena-supervisor.inc", ".gitbook/assets/", - "^[^http]" + "https://admin.google.com/ac/apps/unified" ] # Exclude these filesystem paths from getting checked. -exclude_path = [] +exclude_path = [ + "pages/external-docs/balena-cli/v[0-9\\.]+\\.md$", + "pages/external-docs/sdk/node-sdk/v[0-9\\.]+\\.md$", + "pages/external-docs/sdk/python-sdk/v[0-9\\.]+\\.md$" +] # Already mentioned in the GitHub action to include paths to check links include = [] @@ -143,6 +142,3 @@ exclude_all_private = true # # Exclude loopback IP address range and localhost from checking # exclude_loopback = false - -# Exclude all mail addresses from checking -exclude_mail = true diff --git a/pages/faq/troubleshooting/var-som-mx6.md b/pages/faq/troubleshooting/var-som-mx6.md index 58536e2633..592fb9f740 100644 --- a/pages/faq/troubleshooting/var-som-mx6.md +++ b/pages/faq/troubleshooting/var-som-mx6.md @@ -31,7 +31,7 @@ If you have an HDMI screen attached, you should see balena logo on the screen wh ### Detailed provisioning instructions -Currently balenaOS on the Variscite VAR-SOM-MX6 is only capable of booting from SD card, but in the future [eMMC booting will be supported](https://github.com/balena-os/resin-imx6ul-var-dart/issues/64). To provision the device, do the following: +Currently balenaOS on the Variscite VAR-SOM-MX6 is only capable of booting from SD card, but in the future [eMMC booting will be supported](https://github.com/balena-os/balena-variscite/issues/64). To provision the device, do the following: 1. Verify Switch SW5 is OFF (downwards). 2. Set Boot select switch (SW6) right to boot from microSD Card. diff --git a/pages/learn/develop/cloud-iot-provisioning/aws.md b/pages/learn/develop/cloud-iot-provisioning/aws.md index 2c05d3e595..9f4bbf1617 100644 --- a/pages/learn/develop/cloud-iot-provisioning/aws.md +++ b/pages/learn/develop/cloud-iot-provisioning/aws.md @@ -11,7 +11,7 @@ Our IoT provisioning tools automate device registration to AWS IoT Core, and lev Provisioning includes three components: * **Service Container** like [Cloud Relay block](https://github.com/balena-io-examples/cloud-relay) on a device to request the provisioning and use the credential environment variables from balenaCloud -* **Lambda (cloud) function** to securely validate device identity and register the device with IoT Core, triggered by an HTTP request ([source code](https://github.com/balena-io-examples/%7B%7B$cloud.provisionRepoName%7D%7D/blob/master/index.js)) +* **Lambda (cloud) function** to securely validate device identity and register the device with IoT Core, triggered by an HTTP request ([source code](https://github.com/balena-io-examples/aws-iot-provision/blob/master/index.js)) * **balenaCloud** to accept and store the generated key/certificate credentials for the device The cloud function first validates the device UUID in the provision request with balenaCloud. Then it generates a public key certificate and registers with the IoT Core service. The function then provides the generated credentials to balenaCloud, which stores and pushes them to the device as environment variables for use by the service container. diff --git a/pages/learn/develop/cloud-iot-provisioning/azure.md b/pages/learn/develop/cloud-iot-provisioning/azure.md index d3cd5f9bd0..93797c4dc6 100644 --- a/pages/learn/develop/cloud-iot-provisioning/azure.md +++ b/pages/learn/develop/cloud-iot-provisioning/azure.md @@ -11,7 +11,7 @@ Our IoT provisioning tools automate device registration to Azure IoT Hub, and le Provisioning includes three components: * **Service Container** like [Cloud Relay block](https://github.com/balena-io-examples/cloud-relay) on a device to request the provisioning and use the credential environment variables from balenaCloud -* **Azure (cloud) function** to securely validate device identity and register the device with IoT Hub, triggered by an HTTP request ([source code](https://github.com/balena-io-examples/%7B%7B$cloud.provisionRepoName%7D%7D/blob/master/index.js)) +* **Azure (cloud) function** to securely validate device identity and register the device with IoT Hub, triggered by an HTTP request ([source code](https://github.com/balena-io-examples/azure-iot-provision/blob/master/index.js)) * **balenaCloud** to accept and store the generated key/certificate credentials for the device The cloud function first validates the device UUID in the provision request with balenaCloud. Then it generates a public key certificate and registers with the IoT Hub service. The function then provides the generated credentials to balenaCloud, which stores and pushes them to the device as environment variables for use by the service container. diff --git a/pages/learn/develop/cloud-iot-provisioning/cb-gcp.md b/pages/learn/develop/cloud-iot-provisioning/cb-gcp.md index cf884a4b3d..2c25e51a78 100644 --- a/pages/learn/develop/cloud-iot-provisioning/cb-gcp.md +++ b/pages/learn/develop/cloud-iot-provisioning/cb-gcp.md @@ -11,7 +11,7 @@ Our IoT provisioning tools automate device registration to ClearBlade IoT Core, Provisioning includes three components: * **Service Container** like [Cloud Relay block](https://github.com/balena-io-examples/cloud-relay) on a device to request the provisioning and use the credential environment variables from balenaCloud -* **Cloud function** to securely validate device identity and register the device with IoT Core, triggered by an HTTP request ([source code](https://github.com/balena-io-examples/%7B%7B$cloud.provisionRepoName%7D%7D/blob/master/index.js)) +* **Cloud function** to securely validate device identity and register the device with IoT Core, triggered by an HTTP request ([source code](https://github.com/balena-io-examples/cb-gcp-iot-provision/blob/master/index.js)) * **balenaCloud** to accept and store the generated key/certificate credentials for the device The cloud function first validates the device UUID in the provision request with balenaCloud. Then it generates a public key pair and registers with the IoT Core service. The function then provides the generated credentials to balenaCloud, which stores and pushes them to the device as environment variables for use by the service container. diff --git a/pages/learn/develop/hardware/gpio.md b/pages/learn/develop/hardware/gpio.md index a3ce1edd59..95ce23d66a 100644 --- a/pages/learn/develop/hardware/gpio.md +++ b/pages/learn/develop/hardware/gpio.md @@ -21,7 +21,7 @@ The appropriate method to access GPIO features is via the standard Linux libgpio The current Raspberry Pi GPIO libraries include: -* [Libgpiod](https://libgpiod.readthedocs.io/en/latest/) is a C library and set of tools for interacting with the Linux GPIO character devices (/dev/gpiochipX). +* [Libgpiod](https://libgpiod.readthedocs.io/en/master/) is a C library and set of tools for interacting with the Linux GPIO character devices (/dev/gpiochipX). * [Pinctrl](https://github.com/raspberrypi/utils/tree/master/pinctrl) is a more powerful replacement for raspi-gpio, a tool for displaying and modifying the GPIO and pin muxing state of a system. It accesses the hardware directly, bypassing the kernel drivers * [Rpi-lgpio](https://rpi-lgpio.readthedocs.io/en/release-0.4/) is a compatibility package intended to provide compatibility with the rpi-gpio (aka RPi.GPIO) library, on top of kernels that only support the gpiochip device (and which have removed the deprecated sysfs GPIO interface). diff --git a/pages/learn/manage/actions.md b/pages/learn/manage/actions.md index efe72acc54..b2b02da24a 100644 --- a/pages/learn/manage/actions.md +++ b/pages/learn/manage/actions.md @@ -76,7 +76,7 @@ Balena currently exposes **port 80** for web forwarding. This setting enables we The Public Device URL feature is a tool for remote configuration, debugging, and other intermittent or periodic use cases. The feature is built on [Cloudlink](../welcome/security.md#cloudlink) and not designed for high availability. We do not recommend using the Public Device URL feature for continuous use as part of your application. -For applications that require a stable, continuously available public endpoint, we recommend using a dedicated tunneling service designed for production use. Popular services include [Cloudflare Tunnels](https://www.cloudflare.com/products/tunnel/) (See our [blog post](https://www.balena.io/blog/expose-your-balena-device-to-the-internet-with-cloudflare-tunnel/), [Tailscale](https://tailscale.com/) and [Ngrok](https://ngrok.com/). +For applications that require a stable, continuously available public endpoint, we recommend using a dedicated tunneling service designed for production use. Popular services include [Cloudflare Tunnels](https://www.cloudflare.com/products/tunnel/) (See our [blog post](https://blog.balena.io/how-to-expose-your-device-with-a-custom-url-using-cloudflare-tunnels/), [Tailscale](https://tailscale.com/) and [Ngrok](https://ngrok.com/).
diff --git a/pages/reference/base-images/balena-base-images.md b/pages/reference/base-images/balena-base-images.md index 9e7fb1702c..0a986c698f 100644 --- a/pages/reference/base-images/balena-base-images.md +++ b/pages/reference/base-images/balena-base-images.md @@ -129,7 +129,7 @@ The instructions for installing a language stack from the official binaries is b * Installing Golang from source: [https://linuxhit.com/how-to-install-go-on-linux-using-official-binary-releases/](https://linuxhit.com/how-to-install-go-on-linux-using-official-binary-releases/) * Installing OpenJDK from source: [https://openjdk.org/groups/build/doc/building.html](https://openjdk.org/groups/build/doc/building.html) And so on -Note that these instructions are not necessarily written for building a container, so you may have to adapt the steps to work in a Dockerfile. For example, if an instruction says to “download a file with wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz” the line in the Dockerfile would be: `RUN wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz` +Note that these instructions are not necessarily written for building a container, so you may have to adapt the steps to work in a Dockerfile. For example, if an instruction says to “download a file with `wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz`” the line in the Dockerfile would be: `RUN wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz` ## Installing L4T Library Stacks diff --git a/templates/cloud-iot-provisioning.md b/templates/cloud-iot-provisioning.md index 1020e6cf06..4a6e532ab7 100644 --- a/templates/cloud-iot-provisioning.md +++ b/templates/cloud-iot-provisioning.md @@ -11,7 +11,7 @@ Our IoT provisioning tools automate device registration to {{ $cloud.shortName } Provisioning includes three components: * **Service Container** like [Cloud Relay block](https://github.com/balena-io-examples/cloud-relay) on a device to request the provisioning and use the credential environment variables from balenaCloud -* **{{ $cloud.cloudFunctionName }} {{#isnt $cloud.cloudFunctionName "Cloud"}}(cloud){{/isnt}} function** to securely validate device identity and register the device with {{ $cloud.iotCoreName }}, triggered by an HTTP request ([source code](https://github.com/balena-io-examples/%7B%7B$cloud.provisionRepoName%7D%7D/blob/master/index.js)) +* **{{ $cloud.cloudFunctionName }} {{#isnt $cloud.cloudFunctionName "Cloud"}}(cloud){{/isnt}} function** to securely validate device identity and register the device with {{ $cloud.iotCoreName }}, triggered by an HTTP request ([source code](https://github.com/balena-io-examples/{{ $cloud.provisionRepoName}}/blob/master/index.js)) * **balenaCloud** to accept and store the generated key/certificate credentials for the device The cloud function first validates the device UUID in the provision request with balenaCloud. Then it generates a {{ $cloud.credentialType }} and registers with the {{ $cloud.iotCoreName }} service. The function then provides the generated credentials to balenaCloud, which stores and pushes them to the device as environment variables for use by the service container. diff --git a/templates/troubleshooting/var-som-mx6.md b/templates/troubleshooting/var-som-mx6.md index cc99047b06..15bb0c12b0 100644 --- a/templates/troubleshooting/var-som-mx6.md +++ b/templates/troubleshooting/var-som-mx6.md @@ -1,6 +1,6 @@ ### Detailed provisioning instructions -Currently balenaOS on the {{ $device.name }} is only capable of booting from SD card, but in the future [eMMC booting will be supported](https://github.com/balena-os/resin-imx6ul-var-dart/issues/64). To provision the device, do the following: +Currently balenaOS on the {{ $device.name }} is only capable of booting from SD card, but in the future [eMMC booting will be supported](https://github.com/balena-os/balena-variscite/issues/64). To provision the device, do the following: 1. Verify Switch SW5 is OFF (downwards). 2. Set Boot select switch (SW6) right to boot from microSD Card.