mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-26 20:00:08 +00:00
cfb42af4e0
* fix(dashboard): replace Stack Health update badge with an icon The pill badge duplicated space already used by the stack name column. A CircleArrowUp icon after the name signals an update is available without competing with the existing ArrowUp/ArrowDown sort indicators in the same table. * fix(dashboard): add accessible name to update-available icon Icon-only indicators need an aria-label directly on the icon; title on a non-interactive span is not reliably announced by screen readers. * test(dashboard): cover the update-available icon's accessible name The icon-only indicator and its aria-label fix had no regression guard, unlike the equivalent update dot in StackRow. * refactor(dashboard): compute the update-available label once per row It was being derived twice (title and aria-label) from the same row.outdatedServices input. * fix: drop Community-tier pricing upsells from settings Community operators no longer see the "See pricing" link in Licensing or the "Need direct support?" callout in Support. The pricing link now only shows for an expired paid license needing to renew. * fix: make Resources images/volumes tables actually scrollable The tables were wrapped in a Radix ScrollArea sized with max-h-[62vh]. Radix's viewport uses height:100%, which cannot resolve against an ancestor whose computed height is auto (max-height alone isn't a definite height), so the viewport silently grew past the visible box and the extra rows were clipped with no way to reach them. Verified live: several image rows were permanently unreachable, with no working internal scrollbar and not enough outer page scroll to compensate. Switched to an explicit h-[62vh], which the viewport can resolve correctly, matching every other working ScrollArea in the codebase. Falls back to h-auto below the md breakpoint so the bespoke mobile layout keeps shrinking to content and scrolling via the outer page instead of gaining a fixed-height inner scroll box. * fix: apply ScrollArea definite-height fix across remaining lists Radix ScrollArea needs an explicit height, not max-height, or the viewport collapses and clipped rows become unreachable. Extend the Resources fix to security, settings, git, and create/import surfaces, and drop redundant outer wrappers where ModalBody already scrolls. * fix: migrate Networking tables to Radix ScrollArea Networks and Findings used native max-h + overflow-auto, which worked but broke glass scrollbar consistency with Resources and the design system. Switch them to ScrollArea with a definite height and the same mobile fallback as the other inventory tables. * fix: warn Classic bar users that the style is retiring soon When Appearance Navigation is set to Classic bar, show the same warn SettingsCallout pattern used for Constrained graphics. Preference is kept until removal; no alternate style is named in the copy. * fix: move Channels delivery retries below channel tabs Put channel configuration first and keep Delivery retries as a shared footer control under the Discord/Slack/Webhook/Apprise tabs. * fix: drop redundant More masthead from Smart bar overflow menu The trigger already reads More, so the dropdown masthead repeated the same label. Leave titled mastheads on Compact Navigate and Add quick link menus. * test: align Smart More E2E with masthead removal The overflow menu no longer shows a More heading. Assert the menu via the Logs item and lock that the redundant masthead stays gone. * fix: consolidate Fleet Map toolbar filters into a single row Adopt the same retractable search control used on Fleet > Overview and move the flag filters (missing deps, port conflicts, orphans, shared) onto the toolbar row right after the Graph/List selector. The node filter becomes a dropdown instead of individual toggle chips so it does not clutter the row as fleet size grows. * fix: move Networking Topology filters onto the search toolbar row Merge the ownership selector and boolean filter chips (include system, exposed, drift, missing external, shared) onto the same row as the stack/network search inputs, matching the Fleet Map toolbar layout. * fix: default the reclaimable-space banner off Resources > Docker & Storage's "Show reclaimable-space banner" toggle now defaults to off instead of on. Also flips the /settings fetch failure path to fail closed (hide the banner) to match the new default, instead of failing open. * fix: raise Compact launcher quick links cap from 5 to 7 * fix: add Discord link to Settings Support Self-serve Gives users a community chat channel alongside Documentation and GitHub Issues, using the official Discord mark since lucide-react has no brand icon for it. * fix: stop container NET I/O metric row height jump Give NET I/O more column share than CPU/MEM and keep metric values on one line with truncate so three-digit rates cannot grow the strip. * fix: elevate Doctor tab between Activity and Drift Make Compose Doctor easier to find in the anatomy strip by placing it with the ops judgment cluster, ahead of Dossier and inventory tabs.
750 lines
39 KiB
Plaintext
750 lines
39 KiB
Plaintext
---
|
||
title: Settings Reference
|
||
sidebarTitle: Settings
|
||
description: Complete reference for every option in the Sencho Settings Hub.
|
||
---
|
||
|
||
Open the Settings Hub by clicking the **Profile** icon in the top bar and selecting **Settings**. The sidebar groups every section into themed groups so related settings live together.
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-hub-grouped.png" alt="Settings Hub with the grouped sidebar" />
|
||
</Frame>
|
||
|
||
### Sidebar groups
|
||
|
||
| Group | What it covers |
|
||
|-------|----------------|
|
||
| **Personal** | Account, Appearance |
|
||
| **Access** | Admiral Account, Users, SSO, API Tokens |
|
||
| **Infrastructure** | Nodes, Stacks, Fleet, Registries, Recovery Vault, App Store |
|
||
| **Monitoring** | Host Alerts, Container Alerts, Docker & Storage |
|
||
| **Notifications** | Channels, Notification Routing, Mute Rules |
|
||
| **Automation** | Image update checks, Webhooks |
|
||
| **Organization** | Labels |
|
||
| **Operations** | Data Retention, Developer Diagnostics, Recovery |
|
||
| **Help** | Support, About |
|
||
|
||
Vulnerability scanning is no longer a Settings section: scanner setup, scan policies, suppressions, and acknowledgements now live on the dedicated [Security page](/features/security).
|
||
|
||
Sections that require a higher license tier or the admin role are limited to operators who meet that requirement (Users, SSO, API Tokens, Fleet, Registries, Recovery Vault, Notification Routing are admin-only).
|
||
|
||
### Page chrome
|
||
|
||
Every section renders inside the same masthead-and-sidebar layout. The masthead breadcrumb on the left tells you exactly where you are. Metadata pills on the right tell you what's loaded.
|
||
|
||
| Pill | Meaning |
|
||
|------|---------|
|
||
| **SCOPE** `operator` / `browser` / `global` | Setting applies to your account (`operator`), to this browser only (`browser`, for browser-local sections such as Appearance), or to the whole instance (`global`, every other non-node group) |
|
||
| **NODE** `<node name>` | Setting is per-node and is currently being edited against this node |
|
||
| **EDITED** `<count>` pending / `saved` | The current section has unsaved changes |
|
||
| Section-specific stats | Each section can publish its own pills: `2FA on`/`off` and `BACKUP <n> left` (Account); `PLAN`, `DURATION`, `TRIAL <n>d left`, `RENEWS`, `STATUS` (Admiral Account); `OPERATORS` (Users); `PROVIDERS`, `ENABLED` (SSO); `CHANNELS` (Channels); `ROUTES`, `ENABLED` (Notification Routing); `WEBHOOKS` and `ENABLED` (Webhooks); `LABELS` (Labels); `PROVIDER`, `USED` (Recovery Vault); `DEV MODE` (Developer Diagnostics) |
|
||
|
||
### Quick search
|
||
|
||
Click **Filter** at the top of the sidebar, or press `Ctrl+K` / `⌘K` while the hub is open, to open the command palette. Type any section name, keyword, or synonym (for example, `saml` finds SSO) and press Enter to jump to it.
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-search.png" alt="Settings command palette filtered to a webhook query" />
|
||
</Frame>
|
||
|
||
### Node scope
|
||
|
||
For node-scoped sections the masthead replaces the **SCOPE** pill with a **NODE** pill showing the active node name. Switch the active node from the top bar's **Switch node** button to edit a different node's per-node settings.
|
||
|
||
If settings for the active node fail to load, Sencho shows an error and keeps Save unavailable until an authoritative load for that node succeeds.
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-node-scope.png" alt="Host Alerts section showing the NODE pill in the masthead" />
|
||
</Frame>
|
||
|
||
---
|
||
|
||
## Account
|
||
|
||
**Scope:** Operator (applies to the signed-in account)
|
||
|
||
The Account section manages password and two-factor authentication for the operator currently signed in. The masthead publishes a **2FA** pill so you can see at a glance whether the second factor is enabled.
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-account-2fa.png" alt="Account section showing the Password form and the Two-factor authentication card" />
|
||
</Frame>
|
||
|
||
### Password
|
||
|
||
| Field | Description |
|
||
|-------|-------------|
|
||
| **Current password** | Your existing password. Required to change any auth setting. |
|
||
| **New password** | 8 characters minimum, enforced. The strength indicator recommends 12+ characters with mixed case and a number, but this is guidance only. |
|
||
| **Confirm new password** | Must match New password. |
|
||
|
||
Click **Update password** to apply. Your current session stays signed in; every other session for this account is invalidated immediately.
|
||
|
||
### Two-factor authentication
|
||
|
||
When 2FA is off, a **Set up 2FA** button opens the enrolment dialog. The dialog walks through scanning the QR code in an authenticator app (Authy, 1Password, Aegis, etc.) and verifying a code.
|
||
|
||
Once enrolled, the card shows:
|
||
|
||
| Element | Description |
|
||
|---------|-------------|
|
||
| **Authenticator app** | Confirms the enrolment is active. |
|
||
| **Backup codes** | Shows how many single-use recovery codes remain. **Regenerate** issues a fresh set; the count resets to ten. |
|
||
| **Require 2FA on SSO sign-in** | Visible only when an SSO provider is configured. When on, SSO logins must also pass the second factor; when off, SSO logins skip it. |
|
||
| **Disable 2FA** | Removes the second factor after a confirmation prompt. |
|
||
|
||
See [Two-Factor Authentication](/features/two-factor-authentication) for the enrolment walkthrough and recovery options. If you lose access to your authenticator and have no backup codes left, an admin can clear your second factor from the [Users](#users) section.
|
||
|
||
---
|
||
|
||
## Appearance
|
||
|
||
**Scope:** This browser (preferences are saved to local storage)
|
||
|
||
Control how Sencho looks and how dense the workspace feels. Each browser remembers its own choices so a compact laptop setup does not force the same rhythm on a larger desktop. See [Appearance](/features/appearance) for the full walkthrough.
|
||
|
||
<Frame>
|
||
<img src="/images/settings/appearance-density.png" alt="Appearance settings showing the Density selector" />
|
||
</Frame>
|
||
|
||
### Visual style and readability
|
||
|
||
| Control | What it does |
|
||
|---------|--------------|
|
||
| **Visual style** | Master switch between **Calm** (upright headings, muted charts, reduced effects, the default) and **Signature** (italic Instrument Serif headings, saturated charts). |
|
||
| **Readability mode** | One switch for the most legible result: upright headings, muted charts, reduced effects, and a contrast lift. Locks the heading and chart controls while on. |
|
||
| **Header style** | Clean (upright interface face) or Signature (italic serif). |
|
||
| **Contrast** | Spreads the page tone, borders, and text tiers together. |
|
||
|
||
### Charts and effects
|
||
|
||
| Control | What it does |
|
||
|---------|--------------|
|
||
| **Chart palette** | Colors the Security page charts: **Muted**, **Heat** (one warm ramp), or **Signature** (saturated). |
|
||
| **Reduced motion** | Minimizes interface animations and transitions. Calm enables it by default; Signature disables it. Independently toggleable afterward. First control to try for high idle GPU use on constrained graphics. Toasts are unaffected. |
|
||
| **Reduced effects** | Flattens card bevels, the accent glow, and chart gradients, turns off glass blur with solid chrome fills, and stops decorative masthead rail animations. Optional secondary material simplification; not a substitute for Reduced motion on the reported idle-GPU symptom. |
|
||
| **Ambient glow** | Intensity of the accent-tinted page glow. |
|
||
|
||
### Theme and typography
|
||
|
||
A live preview card shows a sample fleet-status tile so you can see a color choice before committing to it. The **Mode** (Dim, OLED, Light, Auto) and **Accent** (one of eight hues) set the surface palette and data color; **Border brightness** tunes every hairline.
|
||
|
||
| Control | Options |
|
||
|---------|---------|
|
||
| **Interface font** | Geist, IBM Plex, or Hanken. The sans face for body text, labels, navigation, and buttons. Heading style follows your Visual style choice. |
|
||
| **Data font** | Geist Mono, Plex Mono, or Fira Code. The monospace face for terminal output, stats, codes, and timestamps. |
|
||
| **Text size** | Scales the whole interface from a single root multiplier. Default 1.00x. |
|
||
|
||
### Display
|
||
|
||
| Control | What it does |
|
||
|---------|--------------|
|
||
| **Density** | **Comfortable** (default spacing, roomier rows and tiles for review and orientation) or **Compact** (tighter rows and tiles, fits more stacks, tasks, and audit entries on screen at once). Affects the dashboard stack table, the resource gauge strip, the Settings Hub sidebar, the Schedules and Audit Log tables, and every other data table in Sencho. Typography, color, and layout structure stay the same; only vertical padding compresses. |
|
||
| **Log chip color** | Applies on multi-service or multi-container stacks (chips are hidden for a single service with a single container). **Unified** uses the accent color for every service's log chip. **Per service** assigns each service a stable label color for faster visual scanning across a busy log stream. |
|
||
|
||
### Navigation
|
||
|
||
| Control | What it does |
|
||
|---------|--------------|
|
||
| **Navigation style** | **Smart bar** (recommended default): primary destinations stay visible in the top bar and the rest live under **More**. **Classic bar** keeps the full horizontal strip of destinations (retiring soon; a callout appears while it is selected). **Compact launcher** puts every destination in a menu, with optional quick links. |
|
||
| **Top navigation labels** | On by default. Shows text labels beside the top navigation icons; turn off for a more compact bar with icons only. |
|
||
|
||
Deploy-progress behavior and the diff-preview-before-save step are stack workflow preferences and live in their own [Stacks](#stacks) section under Infrastructure.
|
||
|
||
---
|
||
|
||
## Admiral Account
|
||
|
||
**Scope:** Operator-facing, but reflects the instance license
|
||
|
||
Activate, view, or deactivate the license for this Sencho control plane, and see which image channel it is tracking. The masthead publishes a **PLAN** pill showing the current tier, a **DURATION** pill (for example `lifetime` or a renewal cadence), a **TRIAL** pill with days remaining if a trial is active, a **RENEWS** pill with the next renewal date, and a **STATUS** pill if the license is in an unusual state (expired, error).
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-license.png" alt="Admiral Account section showing the Plan, image channel, Customer, Product, and License key" />
|
||
</Frame>
|
||
|
||
| Element | Description |
|
||
|---------|-------------|
|
||
| **Sencho Admiral** | The active license on this control plane, with a tier badge. Community instances see an upgrade prompt here instead. |
|
||
| **Recovery Vault** | Whether the current subscription includes Recovery Vault entitlement. |
|
||
| **Hardened Build** | Switches this control plane between the Community image channel and the Admiral Hardened Build channel. Review entitlement and registry access before switching; see [Plans](/features/licensing#feature-breakdown) for what Hardened Build changes. |
|
||
| **Current image** | The image reference this control plane is currently running, so you can confirm which channel took effect after a switch. |
|
||
| **Channel** | The active image channel (Community or Hardened). |
|
||
| **Customer** | The customer name on file with Lemon Squeezy (paid plans only). |
|
||
| **Product** | The product (paid plans only). |
|
||
| **License key** | The active key, masked to the last four characters. |
|
||
| **Trial countdown** | Days remaining. Visible only while a trial is active. |
|
||
| **Manage subscription** | Opens the Lemon Squeezy customer portal to update payment, view invoices, or cancel. |
|
||
| **Deactivate** | Releases the key from this instance and reverts to Community features. |
|
||
| **See pricing** | Direct link to the pricing page; visible on Community or when an existing license has expired. |
|
||
|
||
Lemon Squeezy manages billing for Admiral subscriptions; the customer portal link and invoice history live there, not in Sencho.
|
||
|
||
See [Licensing & Billing](/features/licensing) for the full walkthrough including trial activation.
|
||
|
||
---
|
||
|
||
## Users
|
||
|
||
<Note>
|
||
User management requires an admin role. Community supports unlimited accounts with the Admin and Viewer roles.
|
||
</Note>
|
||
|
||
**Scope:** Global
|
||
|
||
Create and manage user accounts with role-based access. The masthead publishes an **OPERATORS** pill with the total user count.
|
||
|
||
| Action | Description |
|
||
|--------|-------------|
|
||
| **Create user** | Add a new account with username, password, and role. |
|
||
| **Edit user** | Change an existing user's password or role. |
|
||
| **Delete user** | Remove a user account (you cannot delete your own account). |
|
||
| **Reset MFA** | Clears the second factor for a user who has lost access to their authenticator. |
|
||
|
||
**Available roles:**
|
||
|
||
| Role | Tier | Description |
|
||
|------|------|-------------|
|
||
| **Admin** | Community | Full access to all features |
|
||
| **Viewer** | Community | Read-only access to stacks and nodes |
|
||
| **Deployer** | Admiral | Can view stacks and trigger deployments |
|
||
| **Node Admin** | Admiral | Full stack and node management, no system settings |
|
||
| **Auditor** | Admiral | Read-only plus audit log access |
|
||
|
||
See [RBAC & User Management](/features/rbac) for details on what each role can access.
|
||
|
||
---
|
||
|
||
## SSO
|
||
|
||
<Note>
|
||
Custom OIDC and the preset providers (Google, GitHub, Okta) are available on Community; LDAP / Active Directory requires Admiral.
|
||
</Note>
|
||
|
||
**Scope:** Global, admin-only
|
||
|
||
Configure Single Sign-On providers for centralized authentication. Each provider type has its own configuration card with connection fields, a test button, and an active toggle.
|
||
|
||
See [SSO](/features/sso) for the full configuration walkthrough.
|
||
|
||
---
|
||
|
||
## API Tokens
|
||
|
||
<Note>
|
||
API Tokens are available on every tier. Creation, listing, and revocation require an admin role.
|
||
</Note>
|
||
|
||
**Scope:** Global, admin-only
|
||
|
||
Create and manage long-lived API tokens for external integrations and automation. Tokens can be scoped to specific permissions.
|
||
|
||
See [API Tokens](/features/api-tokens) for the full walkthrough.
|
||
|
||
---
|
||
|
||
## Host Alerts
|
||
|
||
**Scope:** Per-node (applies to the currently selected node)
|
||
|
||
Configure the host resource thresholds that trigger warnings and the suppression cadence for repeated alerts. These are alerting thresholds, not enforcement: Sencho warns when a metric crosses a line, it never throttles or kills containers. The masthead **NODE** pill names which node you are configuring; the **EDITED** pill counts unsaved changes.
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-host-alerts.png" alt="Host Alerts section showing the Host thresholds subsection with the master toggle and CPU, RAM, Disk, and Alert suppression controls" />
|
||
</Frame>
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Host threshold alerts** | On | Master switch for CPU, RAM, and disk threshold alerts only. When OFF, no host threshold checks run and the controls below are inactive. |
|
||
| **CPU limit** | 90% | Alerts fire when host CPU utilization exceeds this percentage. The input warns at values above 95%. |
|
||
| **RAM limit** | 90% | Set this below the point at which the host starts paging to swap. |
|
||
| **Disk limit** | 90% | Low free space slows image pulls and backups. |
|
||
| **Alert suppression** | 60 min | How long to wait before resending a host alert while the metric stays over threshold. The follow-up message includes a count of suppressed cycles. Range 1 to 1,440 minutes. |
|
||
|
||
Click **Save alerts** to apply.
|
||
|
||
---
|
||
|
||
## Container Alerts
|
||
|
||
**Scope:** Per-node (applies to the currently selected node)
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-container-alerts.png" alt="Container Alerts section showing the crash and health alerts toggle" />
|
||
</Frame>
|
||
|
||
Controls whether Sencho watches every managed container on this node for unexpected exits, OOM kills, and Docker healthcheck failures, and dispatches alerts for each. Auto-Heal observes crash signals independently regardless of this toggle, so turning it off stops alerts but does not stop Auto-Heal.
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Container crash & health alerts** | On | Send alerts for unexpected container exits, OOM kills, and Docker healthcheck failures. Auto-Heal can still observe crash signals independently. |
|
||
|
||
Click **Save settings** to apply.
|
||
|
||
---
|
||
|
||
## Docker & Storage
|
||
|
||
**Scope:** Per-node (applies to the currently selected node)
|
||
|
||
Configure the reclaimable-space alert, the reclaimable-space banner, and automatic image cleanup after updates.
|
||
|
||
### Storage alerts
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Reclaimable Docker data threshold** | 5 GiB | Alert when reclaimable Docker data (images, volumes, build cache that `docker prune` could free) exceeds this size. Set to `0` to disable the alert. |
|
||
| **Show reclaimable-space banner** | Off | Show the reclaimable-space banner at the top of the Resource Hub when this node has unused images, stopped containers, or dangling volumes to clear. |
|
||
|
||
### Image cleanup
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Prune dangling images after updates** | On | When a stack update or a Sencho self-update finishes, remove the node's dangling (untagged) image layers, including the one the update just orphaned. Only untagged layers are touched: tagged images, your volumes, and your data are never removed. Turn it off to keep every old layer. |
|
||
|
||
Click **Save settings** to apply.
|
||
|
||
---
|
||
|
||
## Fleet
|
||
|
||
<Note>
|
||
Fleet is admin-only.
|
||
</Note>
|
||
|
||
**Scope:** Per-node (applies to the currently selected node)
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-fleet.png" alt="Fleet section showing the Documentation snapshots subsection" />
|
||
</Frame>
|
||
|
||
### Mesh data plane
|
||
|
||
<Note>
|
||
This subsection is not on every installation. It appears once mesh discovery is turned on for this control plane.
|
||
</Note>
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Auto-recreate mesh network** | Off | If `sencho_mesh` is removed at runtime, rebuild it at the same subnet on the next 10-second tick. Off by default; leave it off and restart Sencho manually for the safest path. See [Sencho Mesh](/features/sencho-mesh) for the reconciler behavior. |
|
||
|
||
### Documentation snapshots
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Capture stack documentation in snapshots** | Off | Preserve each stack's Dossier notes alongside its captured files when a fleet snapshot is taken. Restoring a stack never overwrites current notes unless you explicitly choose to. |
|
||
|
||
Click **Save settings** to apply.
|
||
|
||
---
|
||
|
||
## Registries
|
||
|
||
<Note>
|
||
Docker Hub, GHCR, and custom registry credentials are available on every tier. AWS ECR requires a Sencho Admiral license.
|
||
</Note>
|
||
|
||
**Scope:** Global, admin-only
|
||
|
||
Configure private Docker registries so Sencho can pull images that require authentication.
|
||
|
||
See [Private Registries](/features/private-registries) for the full walkthrough.
|
||
|
||
---
|
||
|
||
## Recovery Vault
|
||
|
||
<Note>
|
||
Custom S3-compatible storage is available on every tier. Recovery Vault is an Admiral feature.
|
||
</Note>
|
||
|
||
**Scope:** Global, admin-only
|
||
|
||
Mirror fleet snapshots to Recovery Vault or any S3-compatible storage so a control-plane loss does not take the recovery history with it. The masthead publishes a **PROVIDER** pill (`sencho` / `s3` / `disabled`) and a **USED** pill showing storage consumption; the object count appears inline in the Storage used row.
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-cloud-backup.png" alt="Recovery Vault section with Recovery Vault mode selected" />
|
||
</Frame>
|
||
|
||
### Storage modes
|
||
|
||
| Mode | When to pick it |
|
||
|------|-----------------|
|
||
| **Disabled** | Snapshots stay on the control plane's local disk only. Default for fresh installs. |
|
||
| **Recovery Vault (included)** | Replicate snapshots to managed storage that ships with the Admiral subscription. On first selection, click **Activate** to provision the 500 MB allowance. Auto-upload is always on for this mode. The **Test** and **Reprovision** buttons appear on the activated card if you need to verify connectivity or replace the credentials. |
|
||
| **Custom S3 (BYOB)** | Point Sencho at your own S3-compatible bucket (AWS S3, Cloudflare R2, MinIO, Backblaze B2). Required fields: **Endpoint URL**, **Region**, **Bucket**, **Path Prefix** (default `sencho/`), **Access Key ID**, **Secret Access Key**. The secret access key is masked after save. Use **Test connection** to verify credentials, then toggle **Auto-upload** to start replicating snapshots. |
|
||
|
||
The **Cloud Snapshots** list at the bottom of the section is an inventory of objects currently in the configured destination. Each row exposes a **Download** icon and a **Delete** icon.
|
||
|
||
See [Fleet Snapshots & Backups](/features/fleet-backups) for restore workflows.
|
||
|
||
---
|
||
|
||
## Nodes
|
||
|
||
**Scope:** Global
|
||
|
||
Manage connections to local and remote Sencho instances. This is the same interface as the [Multi-Node](/features/multi-node) feature; see that page for the full walkthrough.
|
||
|
||
Quick reference:
|
||
|
||
| Action | How |
|
||
|--------|-----|
|
||
| Add a remote node | Click **+ Add Node** |
|
||
| Generate a token for this instance | Click **Generate Token** |
|
||
| Test an existing node's connectivity | Click the wifi icon on any row |
|
||
| Edit a node | Click the pencil icon |
|
||
| Delete a node | Click the trash icon (remote nodes only) |
|
||
|
||
---
|
||
|
||
## Channels
|
||
|
||
**Scope:** Per-node (each node has its own notification agents; remote nodes dispatch alerts through their own channels)
|
||
|
||
Configure external destinations for alert notifications. Four agent types are available on separate tabs: **Discord**, **Slack**, **Webhook**, and **Apprise**. The masthead publishes a **CHANNELS** pill showing how many agents are enabled (for example, `2/4`).
|
||
|
||
Below the channel tabs, **Delivery retries** (admin-only) sets how many extra in-process attempts (0 to 3, default 0) this node makes after a transient channel failure, with a fixed one-second delay between attempts. There is no durable queue; ambiguous network failures can produce duplicate notifications.
|
||
|
||
For each agent:
|
||
|
||
| Field | Description |
|
||
|-------|-------------|
|
||
| **Enabled** toggle | Activates or deactivates this agent. Disabled agents receive no messages even if a URL is saved. |
|
||
| **Webhook URL** | The endpoint Sencho will POST to when an alert fires. |
|
||
| **Apprise** | Use a keyed `/notify/<key>` endpoint with optional tags, or a stateless `/notify` endpoint with destination URLs. Apprise accepts HTTP or HTTPS. |
|
||
|
||
Click **Save** to persist changes. Click **Test** to send a test payload immediately and verify delivery.
|
||
|
||
At least one agent must be enabled for stack alerts to deliver notifications. See [Alerts & Notifications](/features/alerts-notifications) for how to create alert rules.
|
||
|
||
---
|
||
|
||
## Notification Routing
|
||
|
||
<Note>
|
||
Creating, editing, and deleting routes is admin-only.
|
||
</Note>
|
||
|
||
**Scope:** Global, admin-only
|
||
|
||
Create routing rules that direct specific alert types to specific notification channels. Rules let you send critical alerts to one channel and informational alerts to another. The masthead publishes a **ROUTES** pill with the active rule count.
|
||
|
||
| Field | Description |
|
||
|-------|-------------|
|
||
| **Name** | Operator-facing label for the rule. |
|
||
| **Node** | Specific node, or all nodes if left empty. |
|
||
| **Stack patterns** | Glob patterns with `*` (for example `prod-*`) matching stack names. |
|
||
| **Labels** | Apply this rule to stacks that carry any of the selected labels. |
|
||
| **Categories** | Event categories that trigger the rule (crash, deploy, vulnerability, etc.). |
|
||
| **Severity** | Info, warning, and/or error levels. Empty matches any severity. |
|
||
| **Channel type** | `discord`, `slack`, `webhook`, or `apprise`. |
|
||
| **Channel URL** | The destination endpoint for this rule. |
|
||
| **Priority** | Sort order among matching rules. Every matching route fires; priority does not stop later matches. |
|
||
| **Enabled** toggle | Mute a rule without deleting it. |
|
||
|
||
Each rule keeps an execution history (collapsible per row) showing which alerts triggered it, when, and whether the delivery succeeded.
|
||
|
||
See [Notification Routing](/features/alerts-notifications#notification-routing) for the full walkthrough.
|
||
|
||
---
|
||
|
||
## Mute Rules
|
||
|
||
<Note>
|
||
Creating, editing, and deleting mute rules is admin-only.
|
||
</Note>
|
||
|
||
**Scope:** Global, admin-only
|
||
|
||
Create notification suppression rules that mute or drop matching alerts from the bell, external channels, or both. Suppression is evaluated before routing. The masthead publishes **RULES** and **ACTIVE** counts.
|
||
|
||
| Field | Description |
|
||
|-------|-------------|
|
||
| **Name** | Operator-facing label for the rule. |
|
||
| **Node** | Specific node, or all nodes if left empty. |
|
||
| **Stack patterns** | Glob patterns with `*` matching stack names (for example `prod-*`). |
|
||
| **Labels** | Match stacks that carry any selected label. |
|
||
| **Categories** | Notification categories to suppress. |
|
||
| **Severity** | Info, warning, and/or error levels to suppress. |
|
||
| **Apply to** | Bell only, external channels only, or both. |
|
||
| **Expiration** | Forever, 1 hour, 24 hours, or a custom timestamp. |
|
||
| **Weekly window (UTC)** | Optional recurring weekly window. Off means no window (always eligible while enabled and unexpired). ACTIVE counts still reflect enabled and unexpired rules, not whether the window is currently open. |
|
||
| **Enabled** toggle | Disable a rule without deleting it. |
|
||
|
||
See [Mute Rules](/features/alerts-notifications#mute-rules) for the full walkthrough, weekly-window semantics, best-effort fleet sync, and bell quick-mute.
|
||
|
||
---
|
||
|
||
## Image update checks
|
||
|
||
**Scope:** Per-node (applies to the currently selected node)
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-image-updates.png" alt="Image update checks section showing the scheduling mode selector and interval dropdown" />
|
||
</Frame>
|
||
|
||
Configure how often this node polls container registries to detect available image updates. The masthead publishes an **INTERVAL** pill showing the current check cadence. Each node checks on its own independent schedule.
|
||
|
||
### Registry checks
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Scheduling mode** | Interval | **Interval**: check every fixed period. **Cron**: check on a precise cron schedule (runs in the node's local timezone). |
|
||
| **Check interval** | 2 hours | How often to poll registries when in Interval mode. Presets: 15 min, 30 min, 1 h, 2 h, 6 h, 12 h, 24 h. Selecting a new preset saves immediately. |
|
||
| **Cron expression** | - | A standard five-field cron expression (for example, `0 3 * * 1` for every Monday at 03:00). A human-readable description appears below the field as you type. Click **Save schedule** to apply. |
|
||
|
||
The section footer shows the last-checked timestamp and when the next check is scheduled.
|
||
|
||
### Sidebar
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Show update status in sidebar** | On | When on, the sidebar shows a pulsing dot on stacks with an available update, a warning icon when a check fails, and an Updates filter chip. The Stack Health table on the home page always shows update status regardless of this setting. Notifications are unaffected. |
|
||
|
||
<Note>
|
||
Nodes running older versions of Sencho do not expose this setting. Upgrade the node to enable the toggle.
|
||
</Note>
|
||
|
||
---
|
||
|
||
## Webhooks
|
||
|
||
<Note>
|
||
Managing webhooks is admin-only.
|
||
</Note>
|
||
|
||
**Scope:** Global
|
||
|
||
Create and manage HTTP webhooks that external systems (CI/CD pipelines, automation tools) can call to trigger stack actions. The masthead publishes **WEBHOOKS** and **ENABLED** counts.
|
||
|
||
| Field | Description |
|
||
|-------|-------------|
|
||
| **Name** | Operator-facing label. |
|
||
| **Stack** | Target stack for this webhook. |
|
||
| **Action** | `deploy`, `restart`, `update`, etc. |
|
||
| **Secret** | Auto-generated on create. Shown once in a confirmation dialog so you can copy it into your CI secret store; recoverable later via **Copy secret** on the row. |
|
||
| **Enabled** toggle | Mute a webhook without deleting it. |
|
||
|
||
Each row exposes an execution history with timestamp, trigger source, duration, and any error returned to the caller.
|
||
|
||
See [Webhooks](/features/webhooks) for the full walkthrough including authentication and CI examples.
|
||
|
||
---
|
||
|
||
## Labels
|
||
|
||
<Note>
|
||
Label organization (create, edit, assign, remove) and bulk label actions (apply or remove a label across multiple stacks in one operation) are available on every tier.
|
||
</Note>
|
||
|
||
**Scope:** Per-node
|
||
|
||
Create, edit, and delete labels used to organize and filter stacks across your fleet. Each label has a name and one of ten available colors. Up to 50 labels per node. The masthead publishes a **LABELS** pill with the current and maximum counts.
|
||
|
||
See [Stack Labels](/features/stack-labels) for the full walkthrough.
|
||
|
||
---
|
||
|
||
## Data Retention
|
||
|
||
**Scope:** Per-node
|
||
|
||
How long Sencho keeps historical data on this node before pruning it.
|
||
|
||
| Setting | Default | Max | Description |
|
||
|---------|---------|-----|-------------|
|
||
| **Container metrics** | 24 hrs | 8,760 (1 year) | How long to keep per-container CPU, RAM, and network history for dashboard charts. |
|
||
| **Notification log** | 30 days | 365 | Maximum how long to keep alert and notification history. Stack-associated entries are also removed when that stack is deleted. |
|
||
| **Scan history per digest** | 50 scans | 1,000 | How many vulnerability scans to keep per image digest (or per image reference when no digest is stored). Older scans beyond the cap are pruned. |
|
||
| **Remove scans for deleted images and stacks** | On | - | When on, scan results are deleted once their image is gone from this node or their stack is deleted, so the Security Overview stays tied to what still exists. Turn it off to keep scan history for removed images and stacks. |
|
||
| **Audit log** | 90 days | 365 | How long to keep audit trail entries. Requires Admiral. |
|
||
|
||
Removing scans for deleted artifacts runs in the background a few minutes after an image or stack disappears, and immediately when you delete a stack. An image that is still present on the node keeps its scan results, even when no stack uses it.
|
||
|
||
Click **Save settings** to apply.
|
||
|
||
---
|
||
|
||
## Developer Diagnostics
|
||
|
||
**Scope:** Per-node
|
||
|
||
Debug diagnostics for this node. Most operators can leave this off. The masthead publishes a **DEV MODE** pill (`on` / `off`).
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Developer mode** | Off | Enables real-time metrics streams and verbose debug diagnostics in the UI. Does not affect [Global Observability](/features/global-observability) streaming, which is always on. |
|
||
|
||
<Note>
|
||
With Developer mode on, reload the dashboard to capture the startup timeline. A small timing chip appears in the lower corner showing how long the stack list took to become visible from boot; click it to expand the full phase report, which you can copy as JSON. The overlay follows the active node, so switching nodes starts a fresh timeline.
|
||
|
||
For the matching server-side timings, filter the backend logs for `[Stacks:debug]` (stack list, statuses, and per-container timing, including the Docker call duration), `[Nodes:debug]`, and `[Proxy:debug]`. When the active node is remote, the `[Nodes:debug]` and `[Proxy:debug]` lines, along with the overlay's proxy note, depend on Developer mode being enabled on the gateway you sign in to, while the destination route logs and the overlay itself follow Developer mode on the active node.
|
||
</Note>
|
||
|
||
Click **Save settings** to apply.
|
||
|
||
---
|
||
|
||
## Recovery
|
||
|
||
<Note>
|
||
Recovery is admin-only and is not visible on remote nodes.
|
||
</Note>
|
||
|
||
**Scope:** Global, admin-only
|
||
|
||
A read-only diagnostic panel and safe recovery tools for the control plane. It is the first place to look when the dashboard behaves unexpectedly.
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-recovery.png" alt="Recovery section showing the System health snapshot with database, encryption key, Docker, and administrator status" />
|
||
</Frame>
|
||
|
||
### System health
|
||
|
||
A read-only snapshot of the control plane. It loads without Docker or live metrics, so it stays available when the dashboard does not. **Refresh** reloads the snapshot. **Export diagnostics** downloads the full report as a JSON file.
|
||
|
||
| Field | Status indicators |
|
||
|-------|------------------|
|
||
| **Version** | Current Sencho version string |
|
||
| **Database** | `Healthy` (green check) or `Problem detected` (red X) |
|
||
| **Encryption key** | `Present` (green check), `Missing`, or `Invalid` (red X) |
|
||
| **Docker** | `Reachable` (green check) or `Unreachable` (amber warning) |
|
||
| **Administrators** | Count of admin accounts out of total users |
|
||
| **Two-factor enrolled** | Count of users with an active second factor |
|
||
| **SSO providers** | Each configured provider and whether it is enabled |
|
||
|
||
### Environment (preflight)
|
||
|
||
Checks what deployments depend on: the Docker engine, the Compose plugin, the compose directory and its host path mapping, TLS, and disk headroom. Each failed check includes a fix.
|
||
|
||
### Safe actions
|
||
|
||
| Action | Description |
|
||
|--------|-------------|
|
||
| **Reset interface preferences** | Clears density and editor display options from this browser's local storage and reloads the page. Use this if a display setting wedges the layout. |
|
||
| **Recovery guide** | Opens the step-by-step recovery guide at docs.sencho.io. |
|
||
|
||
### Command-line recovery
|
||
|
||
When the UI is fully unreachable, run these from a shell on the host. Prefix each with `docker compose exec sencho`:
|
||
|
||
| Command | What it does |
|
||
|---------|-------------|
|
||
| `node dist/cli/resetMfa.js <username>` | Clear a user's two-factor enrolment |
|
||
| `node dist/cli/resetPassword.js <username> <new-password>` | Reset a local user's password |
|
||
| `node dist/cli/createEmergencyAdmin.js <username> <password>` | Create a new admin account |
|
||
| `node dist/cli/clearSessions.js` | Sign every user out |
|
||
| `node dist/cli/disableSso.js [provider]` | Disable a broken SSO provider |
|
||
| `node dist/cli/diagnostics.js` | Print the diagnostics report as JSON |
|
||
| `node dist/cli/validateDb.js` | Check database and encryption-key integrity |
|
||
| `node dist/cli/backupData.js [dir]` | Back up the data directory |
|
||
|
||
**Download commands** saves a plain-text copy of the reference so it is on hand when the dashboard is unavailable.
|
||
|
||
---
|
||
|
||
## App Store
|
||
|
||
**Scope:** Per-node
|
||
|
||
Configure the template source used by the App Store.
|
||
|
||
| Element | Description |
|
||
|---------|-------------|
|
||
| **Default registry** | `api.linuxserver.io/api/v1/images` (read-only; used when no custom URL is set). |
|
||
| **Custom registry URL** | A URL pointing to a Portainer v2 compatible template JSON file. Overrides the default registry. Leave empty to use the default. |
|
||
| **Reset to default** | Clears the custom URL and reverts to the default registry. |
|
||
| **Save & refresh** | Saves the URL and immediately refreshes the cached template list. |
|
||
|
||
See [App Store](/features/app-store#custom-template-registry) for more on custom registries.
|
||
|
||
---
|
||
|
||
## Stacks
|
||
|
||
Stack editor, lifecycle workflow preferences, and deploy guardrails. The Workflow controls are browser-local (each browser remembers its own choices). The Deploy Guardrails are node-scoped backend settings. The masthead shows the **NODE** pill for this section.
|
||
|
||
### Workflow
|
||
|
||
**Scope:** This browser (preferences are saved to local storage)
|
||
|
||
#### Deploy progress
|
||
|
||
Sencho streams live output whenever you deploy, restart, update, install, or run a Git operation. It is on by default; turn it off to run operations without it. When it is on, **Progress style** chooses how it appears: **Modal** (a centered overlay that closes automatically on success or stays open on failure) or **Inline** (a quiet status band on the stack detail). See [Deploy Progress](/features/deploy-progress) for the full reference.
|
||
|
||
| Value | Behavior |
|
||
|-------|----------|
|
||
| **Enabled** (default) | A progress surface (the Modal overlay or the Inline band, per Progress style) shows for every long-running operation |
|
||
| **Disabled** | Operations run without it; results surface via toast notifications, and a failed operation still shows recovery actions on the stack page |
|
||
|
||
#### Diff preview before save
|
||
|
||
When enabled, clicking **Save & Deploy** or **Save Only** in the compose or env editor opens a side-by-side diff modal before writing anything to disk. The left pane shows the current on-disk content; the right pane shows your unsaved edits, with additions highlighted green and removals highlighted red.
|
||
|
||
| Value | Behavior |
|
||
|-------|----------|
|
||
| **Enabled** | Diff modal opens on every save that has unsaved changes |
|
||
| **Disabled** (default) | File is saved directly without a review step |
|
||
|
||
If there are no unsaved changes the modal is skipped and the save proceeds immediately. See [Diff preview before save](/features/editor#diff-preview-before-save) in the Editor guide for the full workflow.
|
||
|
||
### Deploy Guardrails
|
||
|
||
**Scope:** Per-node (saved on the active node, admin-only)
|
||
|
||
<Frame>
|
||
<img src="/images/settings/settings-stacks-guardrails.png" alt="Stacks section showing the Deploy Guardrails subsection with health gate and env-var block controls" />
|
||
</Frame>
|
||
|
||
Node-level safety checks and post-deploy observation used during stack deploys and updates.
|
||
|
||
| Setting | Default | Description |
|
||
|---------|---------|-------------|
|
||
| **Observe health after updates** | On | After a stack deploy or update succeeds, watch its containers for the observation window and record a passed or failed verdict on the stack timeline. Observational only: nothing is restarted or rolled back automatically. |
|
||
| **Observation window** | 90 s | How long to watch containers before declaring the update healthy. Raise it for stacks that take a while to settle. Range 15 to 600 seconds. |
|
||
| **Block deploy on missing required env vars** | Off | When on, a deploy or update is refused before it starts if a required `${VAR:?message}` variable is unset or empty, so the stack fails fast with a clear message instead of mid-deploy. |
|
||
| **Automatically create missing external networks during deploy** | Off | When on, safe missing external bridge networks are created automatically before deploy continues. When off, interactive deploy prompts first. Advanced drivers and custom options are never auto-created. |
|
||
|
||
Click **Save settings** to apply.
|
||
|
||
---
|
||
|
||
## Support
|
||
|
||
**Scope:** Global
|
||
|
||
Links to help resources, with an additional channel for Admiral operators.
|
||
|
||
### Resources (all tiers)
|
||
|
||
| Resource | Description |
|
||
|----------|-------------|
|
||
| **Documentation** | Opens docs.sencho.io. |
|
||
| **GitHub Issues** | Report bugs and request features on GitHub. |
|
||
| **Discord** | Chat with the community and the team. |
|
||
|
||
### Admiral support
|
||
|
||
| Channel | Tier | Description |
|
||
|---------|------|-------------|
|
||
| **Priority Email Support** | Admiral | Direct email support during business hours (Mon–Fri 09:00–17:00 America/New_York). We aim to first-respond within one business day. This is not a contractual SLA or 24/7 service. |
|
||
|
||
Community operators see an upgrade callout with a link to the pricing page in place of the support channels.
|
||
|
||
---
|
||
|
||
## About
|
||
|
||
**Scope:** Global
|
||
|
||
Displays instance information at a glance.
|
||
|
||
| Field | Description |
|
||
|-------|-------------|
|
||
| **Version** | Current Sencho version. |
|
||
| **Tier** | Community or Admiral badge. |
|
||
| **Plan Status** | active, trial, expired, or community (Admiral entitlement state, not the AGPL software license). |
|
||
| **Instance ID** | First eight characters of the unique identifier for this Sencho control plane (used by the license server to identify it). |
|
||
|
||
The **Links** section contains Source code, AGPLv3 License, Licensing documentation, and Changelog links.
|