Glossary
Glossary of concepts, terminology, and technical patterns used in SHC (Self-Hosted Cloud).
Access
Section titled “Access”Per-deployment open/gated axis. gated routes the stack through SHC’s SSO gate (Traefik forward-auth against the tenant’s Keycloak realm); open leaves it ungated so the app relies on its own auth. Set at install with the mutually-exclusive --gated / --open flags; open is the default. Orthogonal to exposure (the LAN-vs-internet reach axis), so a deployment can be open + internet or gated + lan. See Access control; resolved by NormalizeDeploymentDisposition in modules/app/disposition.go.
Automatic Certificate Management Environment. Protocol used by Let’s Encrypt and other CAs to automate SSL/TLS certificate issuance. Traefik uses ACME to automatically obtain and renew certificates for hosted services.
Adapter
Section titled “Adapter”Per-platform component that connects SHC to another self-hosting platform (Runtipi, CasaOS, Umbrel, Coolify, Cloudron, Portainer, and more). An adapter understands the platform’s app grammar and on-box layout, and powers shc adapter load and shc adapter migrate. Each adapter’s declared capabilities are published in the Adapter reference.
Adapted app
Section titled “Adapted app”The result of shc adapter load: an SHC app package transpiled from another platform’s app (compose, typed vars, secrets, plugs), installed and run on SHC like any catalog app — with the source install’s data pulled along.
Historical term. In the current architecture, every node runs the full SHC server. There is no separate agent binary.
Declarative database migration tool (ariga/atlas). SHC uses Atlas to manage database schema changes. Migration files are stored in migrations/ with an integrity manifest in migrations/atlas.sum.
Cron registry
Section titled “Cron registry”Internal cron-style registry in modules/task/. The queue subsystem polls each registered cron’s schedule and enqueues a task entry when due.
A deployable application definition consisting of compose.yaml, optional app.yaml metadata, variables, and integration definitions. Apps are installed as stacks.
App Catalog
Section titled “App Catalog”The indexed collection of available apps from synced repositories. Uses SQLite FTS5 for full-text search.
App Definition
Section titled “App Definition”The set of files that define an app: compose.yaml (required), app.yaml (metadata), vars.yaml (variables), *.plug.yaml, *.socket.yaml, etc.
app.yaml
Section titled “app.yaml”Optional metadata file for an app containing name, version, description, categories, tags, hooks, and other configuration. If absent, metadata is inferred from compose.yaml.
AR Archive
Section titled “AR Archive”Unix archive format (like .deb packages). SHC uses AR format for .bak and .exp files to allow reading manifest without extracting data.
Archive Source
Section titled “Archive Source”Installation source from a compressed archive file (.tar, .tar.gz, .tgz, .zip). Can be local or remote (HTTPS).
Audit Event
Section titled “Audit Event”Structured log event recording security-relevant operations like vault access, secret changes, and authentication. Uses event codes with audit flag.
Backup
Section titled “Backup”A point-in-time snapshot of a deployment’s DATA mounts, secrets, and configuration. Stored as .bak files in AR format.
backup.yaml
Section titled “backup.yaml”App-specific backup configuration defining converters, pre/post backup jobs, restore jobs, include/exclude rules, and pause timeout.
Base Scope
Section titled “Base Scope”The global configuration scope in the database. All other scopes inherit from base (global).
Berkeley Software Distribution. One of the supported operating systems with specific path conventions.
Buffer Size
Section titled “Buffer Size”The maximum number of events stored in an SSE ring buffer per operation. Default: 1000 events.
Temporary storage for cloned git repositories and other reusable data. Located at {cache_home}/. Can be safely deleted.
cache_home
Section titled “cache_home”XDG-compliant cache directory. User: ~/.cache/shc, System: /var/cache/shc.
Cascade
Section titled “Cascade”The inheritance behavior of configuration values from broader to narrower scopes (base → tenant → environment → stack → deployment).
Certificate Resolver
Section titled “Certificate Resolver”Traefik component that obtains TLS certificates. Default is letsencrypt using ACME protocol.
CLI (Command Line Interface)
Section titled “CLI (Command Line Interface)”The shc command-line tool. Primary interface for all SHC operations. Built with spf13/cobra.
Create a copy of an existing stack, optionally to a different node or with a new name.
Cluster
Section titled “Cluster”The multi-node group linked by the raft engine (rqlited): one elected leader plus voter nodes, providing control-plane HA via leader election. The voter set is capped at 3 (RaftTargetVoters, the canonical homelab quorum). Writes need quorum — (voters/2)+1 reachable voters — or the cluster goes read-only. See modules/cluster (ce module) and core/rqlited. See also: Leader, Voter, Quorum.
Compose
Section titled “Compose”Docker Compose. The container orchestration tool SHC builds upon. SHC supports Compose v2 format.
compose.yaml
Section titled “compose.yaml”Docker Compose file defining services, volumes, networks, and other container configuration. Required for every app.
Composite Key
Section titled “Composite Key”Unique identifier formed from multiple values. A deployment is identified by tenant + stack + environment.
Configuration
Section titled “Configuration”User-controlled settings stored in the database. Read-only by the system. Cascades across scopes (global → tenant → stack).
Config Scope
Section titled “Config Scope”Hierarchical configuration level: base, tenant, environment, stack, or deployment. More specific scopes override broader ones.
Consistency ID
Section titled “Consistency ID”Shared identifier for coordinated multi-stack backups. Ensures backups were taken at the same logical point in time.
Container
Section titled “Container”A running Docker container instance. Multiple containers can exist for a single service (replicas).
Controller
Section titled “Controller”The primary SHC node running the server. Manages all orchestration and serves the API. Other nodes are workers.
Converter
Section titled “Converter”A backup job that transforms volume data during backup (e.g., pg_dump instead of raw files). Runs against a snapshot copy.
Cooldown
Section titled “Cooldown”Minimum time between reconciliation attempts. Prevents rapid repeated actions. Default: 60 seconds.
CPU Quota
Section titled “CPU Quota”Resource limit for CPU usage. Specified in millicores (e.g., 1000m = 1 CPU core).
Time-based job scheduling format. SHC uses cron expressions for backup schedules and recurring tasks.
Server
Section titled “Server”The SHC server process running as a systemd service. Listens on Unix socket, manages all operations.
DATA Mount
Section titled “DATA Mount”Volume type for persistent application data (databases, uploads). Backed up automatically. Stored in mounts/ directory.
Database
Section titled “Database”SQLite database (shc.db) in single-node mode, or rqlite (raft-replicated, served by an external rqlited process) in cluster mode. Stores operational data: stacks, services, containers, backups, schedules, audit events, and configuration.
Deduplication
Section titled “Deduplication”Prevention of duplicate event processing. SHC uses a 5-second time window cache in handle_event() to deduplicate Docker events.
Default Environment
Section titled “Default Environment”The environment used when none is specified. Value: default.
Default Tenant
Section titled “Default Tenant”The tenant used when none is specified. Value: default.
Degraded
Section titled “Degraded”Status indicating a deployment is not fully healthy. Containers may be missing, exited unexpectedly, or unhealthy.
Deployment
Section titled “Deployment”A specific instance of a stack in an environment. Identified by tenant + stack + environment. Has its own data, config, and secrets.
deployment_id
Section titled “deployment_id”String identifier for a deployment: {tenant}_{environment}_{stack}. Used for Docker Compose project naming and container labels.
Deployment Tracker
Section titled “Deployment Tracker”Component that monitors Docker events during operations and displays live progress. Used for install, upgrade, start, stop.
Derived Status
Section titled “Derived Status”Stack status computed from service statuses (running, degraded, complete, failed, stopped). Contrasts with operational status.
Desired Replicas
Section titled “Desired Replicas”The target number of container instances for a service. Defined in compose.yaml deploy.replicas.
Dev Mode
Section titled “Dev Mode”Development mode when running from source. All paths consolidate under {project_root}/.shc/. Enabled by detecting go.mod.
Discovery Jobs
Section titled “Discovery Jobs”Integration jobs that run before main integration to gather information (e.g., checking if a database server is ready).
DNS Provider
Section titled “DNS Provider”External service for DNS record management (Cloudflare, Hetzner, PowerDNS, etc.). Used for automatic A/AAAA/CNAME creation.
Docker
Section titled “Docker”Container runtime. SHC requires Docker Engine or compatible runtime (Podman).
docker_health
Section titled “docker_health”Raw health check status from Docker: none, starting, healthy, unhealthy.
docker_status
Section titled “docker_status”Raw container status from Docker: created, running, paused, restarting, exited, dead.
Docker Compose
Section titled “Docker Compose”Tool for defining and running multi-container applications. SHC extends Compose with multi-tenancy, backups, and integrations.
Docker Event
Section titled “Docker Event”Notification from Docker daemon about container lifecycle changes (create, start, stop, die, health_status).
Docker Network
Section titled “Docker Network”Virtual network for container communication. SHC creates per-deployment networks and shared ingress networks.
Docker Swarm
Section titled “Docker Swarm”Docker’s native clustering and orchestration. SHC supports Swarm mode with read-only status tracking (no reconciliation).
Drain3
Section titled “Drain3”Log template mining library. Clusters similar log messages to reduce cardinality. Optional dependency.
Endpoint
Section titled “Endpoint”API URL or service address. SSE endpoint: /api/method/shc.operation.stream/{operation_id}.
Entrypoint
Section titled “Entrypoint”Traefik listener configuration. Default entrypoints: web (HTTP/80), websecure (HTTPS/443).
Environment
Section titled “Environment”Deployment context within a stack (default, prod, staging, dev). Enables running the same app with different configurations.
Environment Variable
Section titled “Environment Variable”Shell variable for configuration. SHC respects XDG variables and provides SHC_* overrides.
A structured occurrence in the system (Docker events, audit events, config changes). Has a code, timestamp, and payload.
Event Code
Section titled “Event Code”Unique identifier for event types. Format: {prefix}{http_status}{sequence}{mnemonic} with prefix V (info), A (audit), or X (coded error/warning). Example: A200100STKINS (stack installed).
Event Flow
Section titled “Event Flow”Path of events from source to consumer: Docker → event collector → handle_event() → broadcast → SSE. Each node collects its own Docker events directly.
Event Handler
Section titled “Event Handler”Function that processes events. handle_event() updates database and broadcasts to subscribers.
Event Collector
Section titled “Event Collector”Component on each node that watches Docker events and processes them directly. Part of the SHC server.
Exit Code
Section titled “Exit Code”Integer returned by a container when it stops. 0 = success, non-zero = failure.
Export
Section titled “Export”Application-level data extraction using app-defined exporters (e.g., pg_dump for a single database). Contrast with backup (volume-level).
.exp File
Section titled “.exp File”Export artifact in AR format. Contains manifest.json and data.tar.gz.
Failed
Section titled “Failed”Status indicating a job container exited with non-zero exit code and won’t retry (restart_policy=no).
Provider ordering
Section titled “Provider ordering”Subsystem-defined order for DNS or vault providers when resolving a request.
Lightweight Go HTTP router used for SHC’s API. Mounted by each module’s RegisterRoutes and walked by /internal/_manifest for introspection.
Fernet
Section titled “Fernet”Symmetric encryption scheme used for vault secrets. Uses AES-128-CBC + HMAC-SHA256.
FILE Mount
Section titled “FILE Mount”Volume type for configuration files copied from app definition. Not backed up (regenerated on install/upgrade).
Fingerprint
Section titled “Fingerprint”Unique identifier for a deployment instance. Used to detect if a restore targets the original or different deployment.
Fragment Syntax
Section titled “Fragment Syntax”Git URL extension for specifying ref and path: git+https://...#ref:path.
Frappe API
Section titled “Frappe API”REST API format compatible with Frappe/ERPNext SDK. SHC implements method API (/api/method/) and resource API (/api/resource/).
SQLite Full-Text Search version 5. Used for app catalog search with fuzzy matching and relevance sorting.
Gap Event
Section titled “Gap Event”SSE event indicating the client missed events due to buffer overflow. Client should query current state to resync.
Git Source
Section titled “Git Source”Installation source from a git repository. Supports HTTPS, SSH, and various hosting providers.
File pattern matching (e.g., *.yaml). Used for file discovery and filtering.
Grafana
Section titled “Grafana”Visualization platform for metrics. SHC provides dashboard definitions for SSE and other metrics.
Group (Backup Group)
Section titled “Group (Backup Group)”Collection of related stacks backed up together with a shared consistency ID. Ensures coordinated point-in-time snapshots across integrated stacks.
Handle Event
Section titled “Handle Event”Core function (handle_event()) that processes Docker events, updates database, and broadcasts to subscribers.
Health
Section titled “Health”Application health status independent of lifecycle status. A container can be running but unhealthy.
Health Check
Section titled “Health Check”Docker mechanism to verify application health. Runs commands periodically and reports healthy/unhealthy.
Health Monitor
Section titled “Health Monitor”Background task that polls node and deployment health every 60 seconds. Triggers reconciliation when needed.
Health Poll
Section titled “Health Poll”Periodic check of all nodes and deployments. Default interval: 60 seconds.
Heartbeat
Section titled “Heartbeat”SSE keep-alive message sent during idle periods. Prevents connection timeout. Default interval: 30 seconds.
Lifecycle callback defined in app.yaml (pre_install, post_install, pre_upgrade, post_upgrade, etc.).
Domain name for service access (e.g., app.example.com). Configured via --host flag.
Hot-Reloading
Section titled “Hot-Reloading”Automatic application of config changes without restart. Config files are watched via inotify/FSEvents.
Docker image containing application code and dependencies. Pulled from registry on install/upgrade.
Import
Section titled “Import”Load data from an export artifact into a deployment.
Ingress
Section titled “Ingress”Network entry point for external traffic. Traefik handles ingress routing to services.
inotify
Section titled “inotify”Linux kernel subsystem for file change notifications. Used for config hot-reloading.
Install
Section titled “Install”Deploy an app as a new stack. Creates deployment directory, pulls images, starts containers.
Integration
Section titled “Integration”Connection between apps via plugs and sockets. Enables database provisioning, secret sharing, etc.
Integration Job
Section titled “Integration Job”Job that runs during integration to set up resources (create database, create user, etc.).
Jinja2
Section titled “Jinja2”Templating syntax used for compose.yaml, config files, and integration definitions. SHC uses a Go Jinja2-compatible template engine.
One-shot container that runs to completion (restart_policy=no or on-failure). Contrast with daemon (always running).
Job Container
Section titled “Job Container”Container for running hooks, integration jobs, converters, or restore jobs.
JavaScript Object Notation. Used for API responses, event payloads, and some configuration.
Key Derivation
Section titled “Key Derivation”Process of generating encryption key from password. SHC uses PBKDF2-HMAC-SHA256 with 480,000 iterations.
Docker container metadata. SHC uses labels for tenant, stack, environment, app, and version.
Last-Event-Id
Section titled “Last-Event-Id”HTTP header for SSE reconnection. Client sends last received sequence number to resume from that point.
Leader
Section titled “Leader”The primary node in a cluster responsible for coordinating cluster-wide operations. Elected via Raft consensus in the raft engine (rqlited). See also: Voter, Quorum.
Leader Election
Section titled “Leader Election”Process to select one server instance as leader in multi-node deployments. Uses Raft consensus in the raft engine (rqlited).
Let’s Encrypt
Section titled “Let’s Encrypt”Free certificate authority. Default ACME provider for Traefik TLS certificates.
Lifecycle
Section titled “Lifecycle”Container or deployment state progression: install → start → run → stop → uninstall.
Live Display
Section titled “Live Display”Real-time terminal output showing deployment progress. Uses Rich library for TTY formatting.
Log Collector
Section titled “Log Collector”Component on each node that tails container logs. Part of the SHC server, collects logs directly without intermediate spool files.
Log Level
Section titled “Log Level”Logging verbosity. SHC uses binary mode: INFO (default) or DEBUG (—debug flag).
Log Parsing
Section titled “Log Parsing”Multi-format log analysis. Supports JSON, logfmt, syslog, nginx, apache, Drain3 templates.
Log Rotation
Section titled “Log Rotation”Automatic archival of log files when they exceed size limit. Configurable size and keep count.
logs_dir
Section titled “logs_dir”Directory for log files. User: ~/.local/share/shc/logs, System: /var/log/shc.
logfmt
Section titled “logfmt”Log format using key=value pairs. Common in Go applications.
Makefile
Section titled “Makefile”Build automation file. SHC’s Makefile provides dev, test, build, install, and diagrams targets.
Mutual TLS. Authentication mechanism where both client and server present certificates. Used for inter-node communication on ports 4001-4003. Each node has certificates signed by a cluster CA.
Manifest
Section titled “Manifest”Metadata file in backup/export archives. Contains version, timestamps, sizes, and restoration information.
Memory Quota
Section titled “Memory Quota”Resource limit for memory usage. Specified in bytes or with units (e.g., 512Mi).
Mermaid
Section titled “Mermaid”Markdown-based diagramming syntax. SHC uses Mermaid for architecture diagrams in docs/architecture/diagrams/.
The overlay network giving nodes cross-node peer reachability — either a nebula overlay (modules/nebula) or a routed WireGuard fabric (modules/fabric, --fabric shc), driven by the cluster mesh commands. Peer liveness is probed on the mesh_ping timeout role (DefaultMeshPing / RoleMeshPing, “mesh-overlay peer reachability”). Raft (rqlited) does NOT ride the mesh — control-plane consensus uses the direct mTLS ports.
Metrics
Section titled “Metrics”Quantitative measurements exported for monitoring. SHC exports Prometheus-format metrics via OpenTelemetry.
Method API
Section titled “Method API”Frappe-compatible API pattern: /api/method/{dotted.path}. Used for RPC-style operations.
Migration
Section titled “Migration”Database schema change managed by Atlas. Also: moving a stack between nodes.
Volume binding between host and container. Types: DATA, FILE, RUNTIME, SYSTEM.
mounts/
Section titled “mounts/”Directory containing DATA mount volumes for a deployment. This is what gets backed up.
Relocate a stack from one node to another. In Swarm mode, stacks can span multiple nodes via overlay networks.
Network
Section titled “Network”Docker virtual network for container communication. Deployment networks are isolated; ingress networks are shared.
A host machine running Docker and the SHC server. In cluster mode, nodes are classified as leader (runs background tasks), voter (participates in consensus), or non-voter (read replica).
Node Discovery
Section titled “Node Discovery”Process of finding nodes in a network. Supports subnet scanning and manual registration.
Node ID
Section titled “Node ID”Unique identifier for a node. Auto-generated or specified during registration.
Node Target
Section titled “Node Target”Connection parameters for a cluster node (address, node ID, certificates).
Normalization
Section titled “Normalization”Converting values to a standard form. SHC normalizes restart policies (unless-stopped → always).
OpenObserve
Section titled “OpenObserve”Observability platform for logs, metrics, and traces. Default export destination for SHC telemetry.
OpenTelemetry (OTEL)
Section titled “OpenTelemetry (OTEL)”Vendor-neutral observability framework. SHC uses OTEL for logs, metrics, and traces export.
Operation
Section titled “Operation”A tracked long-running action (install, backup, restore). Has an operation_id for SSE streaming.
operation_id
Section titled “operation_id”UUID identifying a long-running operation. Used for SSE progress streaming.
Operation Registry
Section titled “Operation Registry”Component that tracks active operations and their SSE subscribers.
Operational Status
Section titled “Operational Status”Stack status set by user commands: created, starting, stopping, updating, removing. Blocks derived status updates.
Output Formatter
Section titled “Output Formatter”Component that renders data structures to TTY, plain text, JSON, or YAML based on context.
Paramiko
Section titled “Paramiko”SSH library. Not used by SHC — inter-node communication uses mTLS. SSH is only for human admin access.
Path Source
Section titled “Path Source”Installation source from a local filesystem directory.
Docker command to suspend container processes. Used during backup snapshots for consistency.
PBKDF2
Section titled “PBKDF2”Password-Based Key Derivation Function 2. Used for vault encryption key derivation.
PID File
Section titled “PID File”File containing server process ID. Located at {runtime_dir}/shc.pid.
Platform Constraints
Section titled “Platform Constraints”Node requirements for deployment (architecture, OS, available resources).
What an app requires from another app. Defines data schema and references socket provider.
Podman
Section titled “Podman”Docker-compatible container runtime. SHC supports Podman with podman-compose.
Collection of reusable connections. SHC uses HTTP connection pooling for internal API calls between nodes.
Port Exposure
Section titled “Port Exposure”Making a container port accessible from outside. Can be public (via Traefik) or direct (host port binding).
Post-deployment Jobs
Section titled “Post-deployment Jobs”Integration jobs that run after both stacks are deployed and healthy.
Progress
Section titled “Progress”Completion percentage (0-100%) of a long-running operation. Streamed via SSE.
Prometheus
Section titled “Prometheus”Metrics monitoring system. SHC exports Prometheus-format metrics.
Provider
Section titled “Provider”External service implementation (DNS provider, vault provider). Multiple providers can be configured; resolution order is defined per subsystem.
Provider seam
Section titled “Provider seam”The dependency-inversion interface modules expose for cross-module deps (e.g. clone.StackProvider, clone.BackupProvider). The daemon implements each seam in daemon/clone_adapters.go so the producer module stays import-cycle-free.
Task queue for background job execution. SHC uses an internal queue with worker processes.
Quorum
Section titled “Quorum”The minimum number of voter nodes required for cluster consensus. Requires (N/2)+1 nodes for N voters. Without quorum, the cluster becomes read-only. See also: Leader, Voter.
Resource limit at a scope (tenant, stack, deployment). Includes CPU, memory, disk, stack count.
Reconciliation
Section titled “Reconciliation”Automatic recovery of degraded stacks. SHC runs compose up -d when containers are missing or dead.
Recover
Section titled “Recover”Create new stacks from coordinated backups. Validates consistency_id and auto-wires integrations.
Git reference (branch, tag, or commit). Specified in git URL fragment or —ref flag.
Registry (Container)
Section titled “Registry (Container)”Docker image storage (Docker Hub, private registries). Images are pulled during install/upgrade.
Registry (Operation)
Section titled “Registry (Operation)”Internal tracking of active operations for SSE streaming.
Remote Archive
Section titled “Remote Archive”Installation source from an HTTPS URL pointing to an archive file.
Remote Shell
Section titled “Remote Shell”SSH is only used for human admin access. Inter-node operations use mTLS-authenticated internal APIs.
Replica
Section titled “Replica”Container instance of a service. Services can have multiple replicas for scaling.
Repository
Section titled “Repository”Source of app definitions. Types: git, local, HTTP. Synced to local catalog cache.
Resource API
Section titled “Resource API”Frappe-compatible CRUD pattern: /api/resource/{type}. Used for data operations.
Restart Policy
Section titled “Restart Policy”Docker configuration for container restart behavior: no, on-failure, always.
Restic
Section titled “Restic”Backup program with deduplication and encryption. SHC uses Restic for remote backup storage (S3, B2, etc.).
Restore
Section titled “Restore”In-place data recovery to an existing stack from a backup.
Restore Job
Section titled “Restore Job”Job that processes converter outputs during restore (e.g., pg_restore).
Retention
Section titled “Retention”Policy for keeping/deleting old backups. Configurable by count and age.
Rich (historical)
Section titled “Rich (historical)”SHC uses charmbracelet/lipgloss and bubbletea for terminal formatting, tables, progress bars, and live displays.
Ring Buffer
Section titled “Ring Buffer”Fixed-size circular buffer for SSE events. Oldest events are overwritten when full. Default size: 1000 events.
Rollback
Section titled “Rollback”Revert a deployment to a previous backup state.
rqlite
Section titled “rqlite”Distributed SQLite database with Raft consensus, served by an external rqlited process the daemon supervises. Used for cluster state synchronization. Runs on ports 4001 (HTTP API) and 4002 (Raft consensus). Provides strong consistency across cluster nodes.
Rotation
Section titled “Rotation”Log file archival when size limit exceeded. Old files renamed with numeric suffix (.1, .2, etc.).
Router
Section titled “Router”go-chi component grouping related API endpoints. Each module exposes its own router via its init() block in modules/<name>/register.go (ce module; ee-only modules under modules/).
Runtime
Section titled “Runtime”Container runtime environment: compose, swarm, or podman. Affects reconciliation behavior.
runtime_dir
Section titled “runtime_dir”Directory for runtime files (PID, socket). User: $XDG_RUNTIME_DIR/shc, System: /run/shc.
RUNTIME Mount
Section titled “RUNTIME Mount”Volume type for ephemeral data (caches, temp files). Cleared on reboot. Not backed up.
Adjust the number of replicas for a service.
Schedule
Section titled “Schedule”Cron-based timing for recurring operations (backups, maintenance).
Schema
Section titled “Schema”Structure definition for data validation (Go structs with validate: tags, Vault variable schemas).
Hierarchical level in configuration: base, tenant, environment, stack, deployment.
Secret
Section titled “Secret”Encrypted value stored in vault. Accessed via !ref+vault://path.
SecretRef
Section titled “SecretRef”YAML tag (!ref+vault:// or !ref+env://) for referencing secrets or environment variables.
Semaphore
Section titled “Semaphore”Concurrency control mechanism. Used to limit concurrent operations (e.g., parallel deployments).
Sequence Number
Section titled “Sequence Number”Incrementing identifier for SSE events. Enables gap detection and reconnection.
Server-Sent Events (SSE)
Section titled “Server-Sent Events (SSE)”HTTP-based streaming protocol. SHC uses SSE for real-time operation progress and status updates.
Service
Section titled “Service”Logical grouping of containers defined in compose.yaml. Can have multiple replicas.
shc adapter load
Section titled “shc adapter load”Transpiles a live install of a supported platform into an adapted app and pulls its data with it: shc adapter load <adapter> ssh://[user@]host [app].
shc adapter migrate
Section titled “shc adapter migrate”Extracts a platform app’s data package-free and replays it into the matching native SHC catalog app through a migration recipe: shc adapter migrate <app> --from <src>. A transform into the native app, not a shim around the foreign one.
shc_status
Section titled “shc_status”Semantic container status derived from docker_status, docker_health, exit_code, and restart_policy. Values: starting, running, paused, complete, failed, degraded.
SHC (Self-Hosted Cloud)
Section titled “SHC (Self-Hosted Cloud)”The project itself. CLI tool and server for managing self-hosted applications.
shc.db
Section titled “shc.db”SQLite database file containing all operational data.
shc.sock
Section titled “shc.sock”Unix socket for CLI-server communication.
Shallow Clone
Section titled “Shallow Clone”Git clone with limited history (—depth 1). Faster than full clone.
Shell Completion
Section titled “Shell Completion”Tab-completion for CLI commands. Supports bash, zsh, fish.
Snapshot
Section titled “Snapshot”Point-in-time copy of volume data. Uses ZFS/BTRFS instant snapshots or rsync two-pass for traditional filesystems.
Socket (Integration)
Section titled “Socket (Integration)”What an app provides to other apps. Defines data schema and provisioning jobs.
Socket (Unix)
Section titled “Socket (Unix)”IPC mechanism for CLI-server communication. Located at {runtime_dir}/shc.sock.
Source
Section titled “Source”Origin of an app definition: repo, path, git, archive.
Source Tracking
Section titled “Source Tracking”Recording the original source of an installed stack for upgrades.
Historical concept. In the current architecture, events and logs are processed directly without intermediate spool files.
SQLAlchemy (historical)
Section titled “SQLAlchemy (historical)”SHC uses Go’s database/sql — the sqlite driver single-node, the rqlite driver in cluster mode — for database operations. No ORM layer.
SQLite
Section titled “SQLite”Embedded SQL database. SHC stores all operational data in SQLite.
SSE Configuration
Section titled “SSE Configuration”Settings for Server-Sent Events: buffer_size, max_connections, heartbeat_interval, etc.
SSE Metrics
Section titled “SSE Metrics”Prometheus metrics for SSE monitoring: connections, events_emitted, latency, memory, slow_clients.
An installed app instance. Identified by name within a tenant. Can have multiple environments.
System-managed operational data stored in YAML files. Does not cascade. Travels with backups.
state_home
Section titled “state_home”Directory for state files and database. User: ~/.local/share/shc, System: /var/lib/shc.
state.yaml
Section titled “state.yaml”Per-scope state file containing system-generated values (ports, IDs, timestamps).
Status
Section titled “Status”Lifecycle state of a container, service, or deployment. See: Operational Status, Derived Status.
Progress milestone in a long-running operation. Emitted as SSE step events.
Stopped
Section titled “Stopped”Status indicating intentional shutdown via shc stop. Stacks with stopped=True don’t auto-start.
Subdirectory
Section titled “Subdirectory”Path within a git repository containing the app definition. Specified via —path flag or fragment syntax.
Swarm Mode
Section titled “Swarm Mode”Docker Swarm orchestration. SHC is read-only in Swarm mode (no reconciliation).
Update local cache from remote source (repository sync, backup cache sync).
systemd
Section titled “systemd”Linux service manager. SHC server runs as a systemd service.
SYSTEM Mount
Section titled “SYSTEM Mount”Host path binding (e.g., /var/run/docker.sock). Passed through unchanged. Not backed up.
Tailer
Section titled “Tailer”Component that follows log output in real-time. ContainerLogTailer tails Docker container logs.
Background job executed by queue workers.
Template
Section titled “Template”Jinja2 file with variable placeholders. Processed before YAML parsing.
Tenant
Section titled “Tenant”Top-level isolation boundary. Each tenant has separate stacks, config, and secrets.
Thread Pool
Section titled “Thread Pool”Collection of worker threads for parallel operations. Configurable size.
Time Window
Section titled “Time Window”Duration for event deduplication. SHC uses 5-second windows.
Transport Layer Security. Encryption for HTTPS connections. Managed by Traefik via ACME.
Authentication credential for private git repositories. Never stored permanently.
Distributed tracing record. SHC exports traces via OpenTelemetry.
Traefik
Section titled “Traefik”Cloud-native reverse proxy. SHC uses Traefik for ingress routing and TLS termination.
Time To Live. Duration before expiration (operation_ttl, leader_ttl).
Terminal device. SHC uses different output formats for TTY vs non-TTY.
Unified Events
Section titled “Unified Events”Event hierarchy (container → service → stack) with consistent derived status.
Uninstall
Section titled “Uninstall”Remove a stack and its resources. Deletes containers, networks, and optionally volumes.
Unix Socket
Section titled “Unix Socket”IPC mechanism for local communication. SHC server listens on Unix socket.
Upgrade
Section titled “Upgrade”Update a deployed stack to a new version or configuration.
URL Hash
Section titled “URL Hash”SHA-256 hash of normalized git URL. Used for cache directory naming.
Validation
Section titled “Validation”Checking correctness of configuration, variables, and app definitions.
VApp (Virtual App)
Section titled “VApp (Virtual App)”Extension that installs into a parent app. Examples: WordPress plugins, Keycloak realms.
Variable
Section titled “Variable”Configurable value in app definition. Defined in vars.yaml with type, default, validation.
vars.yaml
Section titled “vars.yaml”Variable definition file specifying schema, defaults, and validation rules.
Encrypted secret storage. Secrets are scoped and inherit through the hierarchy.
Vault Provider
Section titled “Vault Provider”External secret management service (AWS Secrets Manager, HashiCorp Vault, 1Password).
Version
Section titled “Version”App release identifier. Extracted from app.yaml or defaults to “latest”.
A cluster node that participates in leader election and Raft consensus. Voter nodes must maintain quorum for write operations. Non-voter nodes can read data but don’t participate in elections. See also: Leader, Quorum.
.vlt File
Section titled “.vlt File”Vault export file. JSON format with version, encryption flag, and base64-encoded secrets.
Volume
Section titled “Volume”Docker persistent storage. Types: named volumes, bind mounts, tmpfs.
Plug definition for VApp integration with parent.
VSocket
Section titled “VSocket”Socket definition for what a VApp provides.
Variable values for a VApp instance. Stored in {instance}.{vapp}.vvars.yaml.
Watchdog
Section titled “Watchdog”Filesystem monitoring for config hot-reloading. SHC uses Go’s fsnotify package.
Webhook
Section titled “Webhook”HTTP callback for notifications. SHC supports webhook notifications for events.
Worker
Section titled “Worker”Background process executing tasks from the queue. Also: non-controller node in multi-node setup.
freedesktop.org Base Directory Specification. Defines standard locations for config, data, cache, runtime files.
XDG_CACHE_HOME
Section titled “XDG_CACHE_HOME”Environment variable for user cache directory. Default: ~/.cache.
XDG_CONFIG_HOME
Section titled “XDG_CONFIG_HOME”Environment variable for user config directory. Default: ~/.config.
XDG_DATA_HOME
Section titled “XDG_DATA_HOME”Environment variable for user data directory. Default: ~/.local/share.
XDG_RUNTIME_DIR
Section titled “XDG_RUNTIME_DIR”Environment variable for user runtime directory. Typically /run/user/{uid}.
XDG_DATA_HOME
Section titled “XDG_DATA_HOME”Environment variable for user data/state directory. Default: ~/.local/share. SHC uses this for state_home in non-root mode.
YAML Ain’t Markup Language. Primary configuration format for SHC.
Zettabyte File System. Copy-on-write filesystem supporting instant snapshots. SHC detects ZFS for efficient backups.
Archive format (.zip). Supported for archive source installation.
Numeric / Symbols
Section titled “Numeric / Symbols”5-Second Window
Section titled “5-Second Window”Default deduplication time window for Docker events in handle_event().
60-Second Poll
Section titled “60-Second Poll”Default health monitor poll interval.
480,000 Iterations
Section titled “480,000 Iterations”PBKDF2 iteration count for vault key derivation (OWASP recommendation).
1000 Events
Section titled “1000 Events”Default ring buffer size per SSE operation.
!ref+vault://
Section titled “!ref+vault://”YAML tag for vault secret reference. Resolved during template processing.
!ref+env://
Section titled “!ref+env://”YAML tag for environment variable reference.
@prefix
Section titled “@prefix”Prefix for converter output archives in backup data/ directory (e.g., @database.tar).
Backup archive file extension.
Export artifact file extension.
Mermaid diagram source file extension.
Vault export file extension.
Event Codes
Section titled “Event Codes”Event codes follow the pattern V{severity}{module}{sequence}{mnemonic}:
Severity Prefixes
Section titled “Severity Prefixes”V200- Success (2xx)V400- Client error (4xx)V404- Not foundV500- Server error (5xx)
Module Codes
Section titled “Module Codes”100- Stack operations200- Config operations300- Vault operations400- Health/status operations
Example Events
Section titled “Example Events”A200100STKINS- Stack installedA200102STKUPD- Stack updatedV500320STKERR- Stack transitioned to errorV200300VLTSET- Vault secret setV200320STKRUN- Stack transitioned to runningV200322STKDGR- Stack transitioned to degraded
Status Values
Section titled “Status Values”Container Status (shc_status)
Section titled “Container Status (shc_status)”starting- Initializing or health check pendingrunning- Running and healthypaused- Processes suspendedcomplete- Job finished successfully (exit 0)failed- Job failed (exit ≠ 0, no retry)degraded- Unexpected state
Service Status
Section titled “Service Status”stopped- Desired replicas = 0starting- Any container startingrunning- All replicas runningcomplete- All jobs completefailed- All jobs faileddegraded- Partial availability
Deployment Status (Operational)
Section titled “Deployment Status (Operational)”created- After install, before startstarting- Start in progressstopping- Stop in progressupdating- Upgrade in progressremoving- Uninstall in progress
Deployment Status (Derived)
Section titled “Deployment Status (Derived)”running- All services runningdegraded- Any service degradedcomplete- All services completefailed- All services failedstopped- All services stopped
Health Values
Section titled “Health Values”unknown- No containersunhealthy- Any container unhealthystarting- Health check pendinghealthy- All health checks passingnone- No health checks defined