diff --git a/.vitepress/config/en.ts b/.vitepress/config/en.ts index 40cac86..0919023 100644 --- a/.vitepress/config/en.ts +++ b/.vitepress/config/en.ts @@ -2,143 +2,153 @@ import { defineConfig, type DefaultTheme } from "vitepress"; import pkg from "../../package.json"; export const en = defineConfig({ - lang: "en-US", - description: - "Lightweight server monitoring with historical data, Docker stats, and alerts.", - themeConfig: { - nav: nav(), + lang: "en-US", + description: + "Lightweight server monitoring with historical data, Docker stats, and alerts.", + themeConfig: { + nav: nav(), - sidebar: { - "/guide/": { base: "/guide/", items: sidebarGuide() }, - }, + sidebar: { + "/guide/": { base: "/guide/", items: sidebarGuide() }, + }, - editLink: { - pattern: "https://github.com/henrygd/beszel-docs/edit/main/:path", - text: "Edit this page on GitHub", - }, + editLink: { + pattern: "https://github.com/henrygd/beszel-docs/edit/main/:path", + text: "Edit this page on GitHub", + }, - footer: { - message: "Released under the MIT License", - }, - }, + footer: { + message: "Released under the MIT License", + }, + }, }); function nav(): DefaultTheme.NavItem[] { - return [ - { - text: "Guide", - link: "/guide/what-is-beszel", - activeMatch: "/guide/", - }, - { - text: pkg.version, - items: [ - { - text: "Releases", - link: "https://github.com/henrygd/beszel/releases", - }, - { - text: "New Issue", - link: "https://github.com/henrygd/beszel/issues/new/choose", - }, - ], - }, - ]; + return [ + { + text: "Guide", + link: "/guide/what-is-beszel", + activeMatch: "/guide/", + }, + { + text: pkg.version, + items: [ + { + text: "Releases", + link: "https://github.com/henrygd/beszel/releases", + }, + { + text: "New Issue", + link: "https://github.com/henrygd/beszel/issues/new/choose", + }, + ], + }, + ]; } function sidebarGuide(): DefaultTheme.SidebarItem[] { - return [ - { - text: "Introduction", - collapsed: false, - items: [ - { text: "What is Beszel?", link: "what-is-beszel" }, - { text: "Getting Started", link: "getting-started" }, - ], - }, - { - text: "Installation", - collapsed: false, - items: [ - { text: "Hub Installation", link: "hub-installation" }, - { text: "Agent Installation", link: "agent-installation" }, - { text: "Advanced Deployment", link: "advanced-deployment" }, - ], - }, - { - text: "Configuration / Guides", - collapsed: false, - items: [ - { text: "Additional Disks", link: "additional-disks" }, - { text: "Compiling", link: "compiling" }, - { text: "Environment Variables", link: "environment-variables" }, - { text: "GPU Monitoring", link: "gpu" }, - { text: "Healthchecks", link: "healthchecks" }, - { - text: "Notifications", - link: "notifications", - collapsed: true, - items: [ - { text: "Generic", link: "/notifications/generic" }, - { text: "Bark", link: "/notifications/bark" }, - { text: "Discord", link: "/notifications/discord" }, - { text: "Gotify", link: "/notifications/gotify" }, - { text: "Google Chat", link: "/notifications/googlechat" }, - { text: "IFTTT", link: "/notifications/ifttt" }, - { text: "Join", link: "/notifications/join" }, - { text: "Lark", link: "/notifications/lark" }, - { text: "Mattermost", link: "/notifications/mattermost" }, - { text: "Matrix", link: "/notifications/matrix" }, - { text: "Ntfy", link: "/notifications/ntfy" }, - { text: "OpsGenie", link: "/notifications/opsgenie" }, - { text: "Pushbullet", link: "/notifications/pushbullet" }, - { text: "Pushover", link: "/notifications/pushover" }, - { text: "Rocketchat", link: "/notifications/rocketchat" }, - { text: "Signal", link: "/notifications/signal" }, - { text: "Slack", link: "/notifications/slack" }, - { text: "Teams", link: "/notifications/teams" }, - { text: "Telegram", link: "/notifications/telegram" }, - { text: "WeCom", link: "/notifications/wecom" }, - { text: "Zulip Chat", link: "/notifications/zulip" }, - ], - }, - { text: "OAuth / OIDC", link: "oauth" }, - { text: "Podman Monitoring", link: "podman" }, - { text: "REST API", link: "rest-api" }, - { text: "Reverse Proxy", link: "reverse-proxy" }, - { text: "S.M.A.R.T. Data", link: "smart-data" }, - { text: "Systemd Services", link: "systemd" }, - { text: "User Accounts", link: "user-accounts" }, - { - text: "Third-Party Integrations", - collapsed: true, - items: [ - { text: 'Home Assistant Agent', link: '/third-party-integrations/home-assistant' }, - { text: 'Mobile Applications', link: '/third-party-integrations/mobile-apps' }, - ], - }, - ], - }, - { - text: "Troubleshooting", - collapsed: false, - items: [ - { text: "Common Issues", link: "common-issues" }, - { text: "Docker Shell", link: "docker-shell.md" }, - ], - }, - { - text: "About", - collapsed: false, - items: [ - { text: "Developer Guide", link: "developer-guide" }, - { - text: "Multilingual and Localization", - link: "multlingual-and-localization", - }, - { text: "Security Information", link: "security" }, - { text: "Support / Discussion", link: "support-discussion" }, - ], - }, - ]; + return [ + { + text: "Introduction", + collapsed: false, + items: [ + { text: "What is Beszel?", link: "what-is-beszel" }, + { text: "Getting Started", link: "getting-started" }, + ], + }, + { + text: "Installation", + collapsed: false, + items: [ + { text: "Hub Installation", link: "hub-installation" }, + { text: "Agent Installation", link: "agent-installation" }, + { text: "Advanced Deployment", link: "advanced-deployment" }, + ], + }, + { + text: "Configuration / Guides", + collapsed: false, + items: [ + { text: "Additional Disks", link: "additional-disks" }, + { text: "Compiling", link: "compiling" }, + { text: "Environment Variables", link: "environment-variables" }, + { text: "GPU Monitoring", link: "gpu" }, + { text: "Healthchecks", link: "healthchecks" }, + { + text: "Notifications", + link: "notifications", + collapsed: true, + items: [ + { text: "Generic", link: "/notifications/generic" }, + { text: "Bark", link: "/notifications/bark" }, + { text: "Discord", link: "/notifications/discord" }, + { text: "Gotify", link: "/notifications/gotify" }, + { text: "Google Chat", link: "/notifications/googlechat" }, + { text: "IFTTT", link: "/notifications/ifttt" }, + { text: "Join", link: "/notifications/join" }, + { text: "Lark", link: "/notifications/lark" }, + { text: "Mattermost", link: "/notifications/mattermost" }, + { text: "Matrix", link: "/notifications/matrix" }, + { text: "Ntfy", link: "/notifications/ntfy" }, + { text: "OpsGenie", link: "/notifications/opsgenie" }, + { text: "Pushbullet", link: "/notifications/pushbullet" }, + { text: "Pushover", link: "/notifications/pushover" }, + { text: "Rocketchat", link: "/notifications/rocketchat" }, + { text: "Signal", link: "/notifications/signal" }, + { text: "Slack", link: "/notifications/slack" }, + { text: "Teams", link: "/notifications/teams" }, + { text: "Telegram", link: "/notifications/telegram" }, + { text: "WeCom", link: "/notifications/wecom" }, + { text: "Zulip Chat", link: "/notifications/zulip" }, + ], + }, + { text: "OAuth / OIDC", link: "oauth" }, + { text: "Podman Monitoring", link: "podman" }, + { text: "REST API", link: "rest-api" }, + { text: "Reverse Proxy", link: "reverse-proxy" }, + { text: "S.M.A.R.T. Data", link: "smart-data" }, + { text: "Systemd Services", link: "systemd" }, + { text: "User Accounts", link: "user-accounts" }, + { + text: "Third-Party Integrations", + collapsed: true, + items: [ + { + text: "Home Assistant Agent", + link: "/third-party-integrations/home-assistant", + }, + { + text: "Mobile Applications", + link: "/third-party-integrations/mobile-apps", + }, + { + text: "Synology Agent Package", + link: "/third-party-integrations/synology-package", + }, + ], + }, + ], + }, + { + text: "Troubleshooting", + collapsed: false, + items: [ + { text: "Common Issues", link: "common-issues" }, + { text: "Docker Shell", link: "docker-shell.md" }, + ], + }, + { + text: "About", + collapsed: false, + items: [ + { text: "Developer Guide", link: "developer-guide" }, + { + text: "Multilingual and Localization", + link: "multlingual-and-localization", + }, + { text: "Security Information", link: "security" }, + { text: "Support / Discussion", link: "support-discussion" }, + ], + }, + ]; } diff --git a/en/guide/agent-installation.md b/en/guide/agent-installation.md index 7bb34d9..7d3d71c 100644 --- a/en/guide/agent-installation.md +++ b/en/guide/agent-installation.md @@ -372,3 +372,9 @@ winget uninstall henrygd.beszel-agent ## Home Assistant See the [Home Assistant Agent page](./home-assistant.md) for instructions on setting up the agent as a Home Assistant add-on. + +## Synology NAS + +The agent can be installed via Docker on Synology NAS systems that support Docker. + +For older systems or simpler setups, see the [Synology NAS Agent Package page](./third-party-integrations/synology-package.md) for instructions on setting up the agent as a native Synology package. \ No newline at end of file diff --git a/en/guide/third-party-integrations/synology-package.md b/en/guide/third-party-integrations/synology-package.md new file mode 100644 index 0000000..ead7151 --- /dev/null +++ b/en/guide/third-party-integrations/synology-package.md @@ -0,0 +1,92 @@ +# Synology NAS Agent Package + +The beszel agent can be installed onto any Synology NAS as a Synology package. This allows the agent to run on devices that may not support Docker, and provides a more integrated experience with Synology's DSM operating system. + +The package is maintained by not-first and published as '[Beszel Agent ADD THIS LINK WHEN AVAILABLE](https://example.com/)' on the [SynoCommunity package repository](https://synocommunity.com/). The code is open source and can be viewed on [Github](https://github.com/SynoCommunity/spksrc/tree/master/spk/beszel-agent). + + +## Before You Begin + +### Add the SynoCommunity Repository + +::: tip **If on DSM6 or below** + + Log into your NAS as administrator and go to: + - Main Menu → Package Center → Settings + - Set Trust Level to "Synology Inc. and trusted publishers" +::: + +In the Package Sources tab of Package Center Settings: +- Click **Add** +- Enter `SynoCommunity` as Name +- Enter `https://packages.synocommunity.com/` as Location +- Click **OK** to validate + +### (Optional) SMART Monitoring Prerequisites + +SMART monitoring is **optional** and can be skipped if you don't need disk health monitoring. + +::: warning Important +If you want SMART monitoring, you should follow the dependency steps **before** installing the beszel agent. +::: + +If you want SMART monitoring, install the `SynoCli Disk Tools` package from SynoCommunity now: +1. Open Package Center and go to the **Community** tab +2. Search for `SynoCli Disk Tools` +3. Click **Install** and complete the installation + +This package provides an updated `smartctl` binary, as the default version included with DSM is severely outdated. + +After this installation is complete, run the command `sudo setcap 'cap_sys_rawio+ep' $(readlink -f /usr/local/bin/smartctl)` in a terminal session with root access (e.g SSH) to allow the smartctl binary to access SMART data. + + +## Installing the Beszel Agent Package + +1. Open Package Center and go to the **Community** tab +2. Search for `beszel agent` +3. Click **Install** + +You will immediately be prompted with a configuration screen. See the next section for how to fill in these settings. + + +## Configuring the Beszel Agent + +During the installation process, you will be prompted to input configuration details for the beszel agent. + + + Beszel agent package configuration screen + + +### Public Key + +**Required.** Enter your beszel agent's public key. + +### Filesystems to Monitor +**Optional.** Sets the value of the `EXTRA_FILESYSTEMS` environment variable. See the [relevant documentation](./additional-disks#binary-agent) for more information. + +This is advised, as by default the beszel agent only monitors the root filesystem (`/`), which may not include all disks on your NAS. Utilise the path format `/volume{n}__Label` to specify additional filesystems to monitor, separated by commas. If an external USB drive is connected, it can be specified using the `/volumeUSB{n}/usbshare__Label` format. + +**Example:** `/volume1__Main Storage,/volumeUSB1/usbshare__External Backup` + +### SMART Monitoring + +**Optional.** Sets the value of the `ENABLE_SMART` environment variable. See the [relevant documentation](./environment-variables#smart-devices) for more information. Leave blank to disable SMART monitoring. If you have not followed the prerequisite steps above, cancel the installation and do so now. + +::: warning +This requires that you have followed the dependency steps as described in the [prerequisites section](#optional-smart-monitoring-prerequisites) above. +::: + +Specify your drives in the format `/dev/sd{x}:sat`, separated by commas. + +**Example:** `/dev/sda:sat,/dev/sdb:sat,/dev/sdc:sat` + +- `/dev/sda:sat` for Drive 1 +- `/dev/sdb:sat` for Drive 2 +- `/dev/sdr:sat` is typically used for an external USB drive + +::: info +Although your disks may not be of the `sat` type, this is the required format for beszel to be able to read SMART data. +::: + + + diff --git a/public/image/synology-agent-package-setup-ui.png b/public/image/synology-agent-package-setup-ui.png new file mode 100644 index 0000000..06156f4 Binary files /dev/null and b/public/image/synology-agent-package-setup-ui.png differ