Skip to content

Glossary

The technical words in this documentation, in two tables: acronyms and abbreviations and concepts and tools. On any page, underlined acronyms show their meaning on hover, and the first time they appear on each page they include the meaning in parentheses.

Acronyms and Abbreviations

Abbreviation Meaning What It Is
ACL Access Control List Access Control List: who can query a service (in BIND, an ACL lan might limit queries to certain networks; in this homelab, DNS is open to the entire network).
API Application Programming Interface Interface through which a program exposes operations to others (e.g., the Kubernetes API on :6443).
ARC Actions Runner Controller Controller that runs GitHub Actions runners inside Kubernetes.
ARM64 64-bit ARM architecture CPU architecture of the Orange Pi (deborah); the other nodes are x86_64.
ARP Address Resolution Protocol Protocol that translates IPs to MAC addresses on the local network.
BD database Where a service stores its data; in the HomeLab, dqlite (Incus), SQLite (K3s) and the VictoriaMetrics and VictoriaLogs volumes.
BGP Border Gateway Protocol Routing protocol; MetalLB/Calico can announce IPs via BGP (L2 is used here).
BIND Berkeley Internet Name Domain DNS server that resolves internal zones in the homelab.
BPF Berkeley Packet Filter Linux kernel technology (eBPF) used by Cilium for networking.
C4 C4 model Way of drawing architecture in 4 levels: context, containers, components, and deployment.
CA certificate authority Entity that signs TLS certificates.
CAPI Cluster API Kubernetes project to create and manage clusters declaratively.
CAPN Cluster API Provider for Incus Cluster API provider that creates Kubernetes nodes as Incus instances.
CI continuous integration Automatically compile and test code on every change (GitHub Actions).
CIDR Classless Inter-Domain Routing Notation for IP ranges, e.g., 10.42.0.0/16.
CIFS Common Internet File System Windows shared folder protocol (SMB).
CINC CINC Is Not Chef Free distribution of Chef.
CIS Center for Internet Security Organization that publishes hardening guides (CIS Benchmarks).
CLI command-line interface Tool used from the terminal (e.g., incus, kubectl).
CNCF Cloud Native Computing Foundation Foundation that hosts Kubernetes and related projects.
CNI / CNIs Container Network Interface Plugin that provides networking to Kubernetes pods (Flannel, Calico, Cilium…).
CP control plane Part of Kubernetes that manages the cluster (API server, scheduler, etcd).
CPU central processing unit
CR / CRs Custom Resource Kubernetes object defined by an operator (e.g., a SUC plan).
CRD / CRDs Custom Resource Definition Definition of a new Kubernetes object type (installed by an operator, e.g., the SUC).
CSV Comma-Separated Values Text file of data where columns are separated by commas.
Dex Dex HomeLab's OIDC identity provider: allows login with the GitHub account (team devops) to Argo CD, Grafana, Open WebUI, and SSH.
DHCP Dynamic Host Configuration Protocol Protocol by which the router assigns IPs automatically.
DMZ demilitarized zone Router option that exposes a device directly to the internet.
DNS Domain Name System System that translates names (argocd.homelab.local) to IPs.
DR disaster recovery Disaster recovery: how to bring a service back up after losing it.
DTB Device Tree Blob Binary description of the hardware that the kernel reads on boot on ARM boards like the Orange Pi.
eBPF extended Berkeley Packet Filter Programs that run inside the Linux kernel; Cilium uses them for networking and policies.
eMMC embedded MultiMediaCard Flash storage soldered to the board; it's the disk of deborah and does not have SMART.
EOL End Of Life End of life of a component (on the eMMC, warning that few reserve blocks remain).
ESO External Secrets Operator Kubernetes operator that synchronizes secrets from external managers.
etcd etcd Distributed database where Kubernetes stores its state; K3s can integrate it into the server (embedded etcd).
FRR Free Range Routing Routing software that MetalLB uses to speak BGP; its management port is 2623.
FTP File Transfer Protocol Protocol for uploading files to hosting (cPanel); also FTPS/SFTP.
GPU graphics processing unit Card or chip designed for parallel calculations; accelerates AI models. The Pi in this homelab does not use it: the models run on the CPU.
HA high availability Design to keep a service running if a node fails.
HDD Hard Disk Drive Mechanical hard disk.
HDMI High-Definition Multimedia Interface Video output; useful to see the console of a node when the network is down.
HTTP Hypertext Transfer Protocol
HTTPS HTTP secure (over TLS)
IA artificial intelligence Programs that answer questions, summarize text, or generate exercises; here they serve as a tutor to study the guide (see Learn with AI).
IdP Identity Provider Identity Provider: the system that verifies who you are (in the homelab, GitHub through Dex).
Incus Incus Container and virtual machine manager (community fork of LXD); hosts the instances where the homelab nodes run.
IP / IPs IP address Address of a device on the network (Internet Protocol).
JEDEC Joint Electron Device Engineering Council Organization that standardizes memory; defines the wear fields of the eMMC.
journald journald systemd service that stores the logs of each node's services; Vector reads them from there.
JSON JavaScript Object Notation Text format for structured data.
K3s lightweight Kubernetes distribution Kubernetes packaged into a single binary, designed for edge and homelabs.
K8s Kubernetes Abbreviation of Kubernetes: the K, the 8 letters in the middle and the s.
KIC Kong Ingress Controller Kong controller for Kubernetes; here it implements Gateway API.
Kubernetes Kubernetes (K8s) Platform that orchestrates containers: it decides which node runs each pod, restarts it if it fails and gives it networking and storage. In this homelab it runs as K3s.
KVM Kernel-based Virtual Machine Hardware-integrated virtualization in the Linux kernel; used by Incus VMs.
L2 layer 2 of the OSI model OSI model's data link layer: traffic within the same local network (MAC, ARP).
L3 layer 3 of the OSI model OSI model's network layer: IPs and routing.
L7 layer 7 of the OSI model OSI model's application layer: HTTP and similar.
LAN local area network Local Area Network: the home network (192.168.20.0/22).
launchd launchd macOS service manager (equivalent to systemd); activates the Ollama socket on the Mac only when a request arrives.
LB load balancer Kubernetes service of type LoadBalancer (provided by MetalLB).
LLM Large Language Model Large language model: the type of AI that understands and writes text (here, the Ollama models).
LogsQL LogsQL VictoriaLogs query language, written in Grafana → Explore.
LVM Logical Volume Manager Linux logical volume manager.
LXC Linux Containers Full system containers; Incus uses them as instances.
LXD LXD Container and VM manager from which Incus is a community fork.
MAC MAC address (Media Access Control) Unique identifier of a network card; the router uses it to always reserve the same IP for a device.
MCP Model Context Protocol Standard to give tools to an AI model (here, read-only queries to the cluster).
MD5 Message-Digest 5 Algorithm that BGP used to authenticate sessions between routers; here BGP runs without it.
NAT Network Address Translation Network translation that the router does between the local network and the internet.
NFS Network File System Protocol for shared folders over the network in Linux.
nftables nftables Linux kernel firewall that uses the host_firewall role on each node.
NIC network interface card Network Interface Card.
NTP Network Time Protocol Protocol that synchronizes the clock of devices; without it TLS certificates may appear "not yet valid".
NVMe SSD over PCIe Non-Volatile Memory Express: high-speed SSDs.
NXDOMAIN Non-Existent Domain DNS server response that says the name does not exist; the router gives it for homelab.local, so the pods use only BIND.
OAuth Open Authorization Standard for an application to act on behalf of a user without knowing their password; OIDC is built on top of it.
oauth2-proxy oauth2-proxy Proxy that puts the Dex login in front of a web interface that does not have its own login.
OCI Open Container Initiative Standard for images and registries; ARC and NGINX Gateway Fabric publish their Helm chart in an OCI registry.
OIDC OpenID Connect Login protocol over OAuth 2.0; Dex uses it for GitHub login.
Open Terminal Open Terminal Terminal with code execution that Open WebUI uses as a tool for the assistant; runs isolated in the ai-sandbox namespace.
OpenPubkey OpenPubkey Project that converts an OIDC login into a short-lived SSH key; used by opkssh to log into hosts with the Dex identity.
OS operating system Operating System.
OVN Open Virtual Network Software-defined virtual network that Incus can use.
OVS Open vSwitch Virtual switch that OVN uses to connect Incus instances.
PAT Personal Access Token GitHub personal access token that replaces the password in the API and CLI.
PDB PodDisruptionBudget Kubernetes limit on how many pods of an application can be down at once during a node drain.
PKCE Proof Key for Code Exchange OAuth extension for public clients (without a secret), such as incus-ui and opkssh in Dex.
PR / PRs pull request GitHub change request.
PSA Pod Security Admission Kubernetes control that applies Pod Security Standards levels to each namespace (warn, audit or enforce).
PSS Pod Security Standards Kubernetes pod security levels (privileged, baseline, restricted).
PVC / PVCs PersistentVolumeClaim Kubernetes pod request for persistent storage.
RAG Retrieval-Augmented Generation Feeding documents to the model so it responds with them instead of inventing (here, the HomeLab documentation).
RAM memory RAM Working memory of the computer.
RBAC Role-Based Access Control Role-based access control: what each user or service account can do.
RWX ReadWriteMany Volume access mode that multiple pods can mount at once, even on different nodes.
SAN Subject Alternative Name Extra name or IP that a TLS certificate accepts (singular of SANs).
SANs Subject Alternative Names Extra names and IPs that a TLS certificate accepts.
SATA Serial ATA Interface for 2.5-inch disks and SSDs (invincible and oliver).
SBC Single Board Computer Computer on a single board, such as the Orange Pi 5 Plus.
SD Secure Digital Memory card; some ARM boards boot from it.
SDK Software Development Kit Library to use a service from code (e.g., the 1Password SDK).
SMART Self-Monitoring, Analysis and Reporting Technology Self-diagnosis that comes with disks and SSDs; warns before they fail.
SO operating system
SOPS Secrets OPerationS Tool to encrypt secrets within YAML/JSON files.
SPDK Storage Performance Development Kit Longhorn v2 storage engine (not used here).
SPI Serial Peripheral Interface Bus for small chips; on the Orange Pi, the SPI flash memory stores the boot loader.
SQLite SQLite Single-file database; it is the default data store for K3s with a single server.
SSD solid-state drive
SoC system on chip Chip that integrates CPU, graphics, and other components; the RK3588 of deborah is one.
SSH Secure Shell Protocol to connect to another computer via terminal in an encrypted way.
SSL Secure Sockets Layer Predecessor of TLS; the name is still used to refer to certificates and encrypted connections.
SSO single sign-on Single Sign-On: sign in to multiple services with the same account (here, GitHub via Dex).
SUC System Upgrade Controller Rancher controller that updates K3s node by node.
TLS Transport Layer Security Connection encryption (the S in HTTPS).
TTL Time To Live Time a data is cached before it is requested again.
UDP User Datagram Protocol Connectionless transport protocol; it is used, for example, by DNS and VXLAN.
UEFI Unified Extensible Firmware Interface Modern computer boot firmware (replaces BIOS).
UI user interface Web or graphical interface of a tool.
URI / URIs Uniform Resource Identifier Identifier of a resource; a URL is a type of URI.
URL / URLs web address Uniform Resource Locator.
USB Universal Serial Bus
UUID Universally Unique Identifier 128-bit unique identifier; Linux uses it to name disks and partitions.
Vector Vector Log collector that runs on each node and sends logs to VictoriaLogs.
VictoriaLogs VictoriaLogs HomeLab log database (30-day retention); queried from Grafana.
VIP virtual IP Virtual IP: an IP that is not fixed to a machine and can move between nodes (kube-vip, MetalLB).
VLAN / VLANs virtual local network Virtual LAN: splitting a physical network into several logical networks.
VM / VMs virtual machine Virtual machine.
VPN virtual private network Virtual Private Network: encrypted access to the home network from outside.
VXLAN Virtual Extensible LAN Layer 2 network encapsulated over UDP; with it, Flannel and Calico connect pods between nodes.
YAML YAML Ain't Markup Language Text configuration format used by Kubernetes and Ansible.

Concepts and Tools

Terms the guide uses without explaining them every time: Kubernetes building blocks, homelab tools and operations jargon. If a word slows you down while reading, look it up here.

Term What It Is
1Password Password manager. Here it is the vault that holds the homelab's real secrets (keys, tokens, GitHub Apps); scripts read them with its SDK.
age Simple key-based encryption tool; SOPS uses it to encrypt the repo's secret files.
Alert rule Condition on the metrics (e.g. "disk over 90 % for 10 min") that fires an alert when it holds. vmalert evaluates them.
Alertmanager Receives alerts, groups them, avoids repeats and sends them to their destination; here, Discord channels.
Ansible Tool that configures servers over SSH from YAML files. Here it prepares the nodes and installs the network, Incus and K3s (Phases 0 to 3).
Application / ApplicationSet Argo CD resources. An Application says which Git folder to deploy and to which cluster; an ApplicationSet generates many Applications from a template (here homelab-root creates all the others).
apt Debian's package manager: installs and updates system software.
Argo CD The homelab's GitOps tool: it watches the gitops repo and applies its changes to the K3s cluster. It has a web UI that shows the state of each application.
Bootstrap The initial startup: the first manual steps that leave a system ready to manage itself. Here Ansible installs the basics and then Argo CD takes over.
Bridge Virtual network interface that works like a switch. The br0 bridge connects VMs and containers to the LAN as if they were one more machine.
Calico The cluster's CNI: it connects pods across nodes and enforces NetworkPolicies.
cert-manager Issues and renews TLS certificates inside Kubernetes on its own. Here the homelab's own CA signs them for the *.homelab.local domains.
Cilium eBPF-based CNI. The guide mentions it as an alternative to Calico.
Cluster Group of machines that work together as if they were a single system. This homelab has two on the same 3 nodes: the Incus one and the K3s one.
Container Isolated process that brings everything it needs to run but shares the host's kernel, which makes it lighter than a VM. Incus runs system containers (LXC) and Kubernetes runs application containers inside pods.
Control plane / worker The control plane is the cluster's "brain": it stores the state and decides which node runs what (here it is on deborah). Workers only run the applications; K3s calls them agents and calls the control plane the server.
Controller / operator A controller is a program in the cluster that watches resources and acts until the real state matches the desired one. An operator is a controller that manages a specific application through its own CRDs (e.g. the VictoriaMetrics one). In the guide, "operator" sometimes also means the person who runs the homelab.
Cordon / drain kubectl cordon marks a node so it gets no new pods; kubectl drain also moves the pods it already has to other nodes. You do it before rebooting or patching a node, and uncordon enables it again.
CoreDNS Kubernetes' internal DNS: it resolves the names of Services and pods inside the cluster.
CronJob Kubernetes task that runs by itself on a fixed schedule, like a Linux cron job.
DaemonSet Kubernetes resource that puts one copy of a pod on every node. Vector, which collects the logs, runs this way.
Dashboard Grafana panel with several charts about one topic, e.g. "HomeLab / Ollama".
Debian The Linux distribution installed on the three nodes.
Deployment Kubernetes resource that keeps N copies (replicas) of a pod running and replaces them if they fail.
dqlite Distributed SQLite database where Incus stores the cluster state, replicated across the 3 nodes.
Drift / self-heal Drift is the difference between what Git says and what is actually in the cluster. With self-heal, Argo CD fixes it on its own.
Exporter Small program that publishes metrics for vmagent to collect: node-exporter provides each node's system metrics and blackbox-exporter tests URLs and DNS from the outside.
Firewall Filter that decides which network traffic is allowed and which is blocked (on Linux, ufw or nftables).
Flannel The CNI that K3s ships by default. This homelab replaces it with Calico.
Fork Copy of a project that keeps being developed separately from the original; e.g. Incus is a fork of LXD and OpenTofu of Terraform.
Gateway API / HTTPRoute The Kubernetes standard for publishing web services to the outside; it replaces Ingress. The Gateway is the entry point (implemented here by Kong) and each HTTPRoute says which domain or path goes to which Service.
GitHub Actions / workflow / runner GitHub Actions is GitHub's CI: it runs tasks when you push or open a PR. A workflow is the YAML file that describes those tasks and the runner is the machine that runs them; here the runners are pods in the cluster, created by ARC.
GitHub App Application identity on GitHub with scoped permissions, used to automate without a personal account (ARC, Argo CD and OpenTofu use them).
GitOps Way of operating in which Git is the source of truth: you change a file in the repo and a tool (here Argo CD) makes the cluster match. It is also the name of the maceosoft/gitops repo.
Grafana The web UI where you view metrics in dashboards and search logs (in "Explore").
group_vars / host_vars Ansible folders with the variables for a group of machines or for one specific machine.
Hardening Tightening a system's security: closing ports, removing unneeded access and applying secure settings.
healthchecks.io External service that expects a periodic "ping" and alerts if it stops arriving. It watches that the monitoring itself is still alive.
Heartbeat Short message a machine sends every so often to say "I'm still here". Each Ollama node sends one to the router every 60 seconds; if the router misses 3 heartbeats (180 s), it considers the node off.
Helm / chart / values Helm is Kubernetes' package manager. A chart is a package of templated manifests and the values are the parameters that adjust it. Argo CD installs several homelab components as charts.
Idempotent You can run it several times and the result is the same: if something is already done, it doesn't repeat it or break it. Ansible playbooks are designed this way.
Image Read-only template from which a container or a VM is created (e.g. bitnami/kubectl). It is downloaded from a registry.
Ingress The classic way to expose HTTP services in Kubernetes. The homelab doesn't use it (it uses Gateway API), but it comes up for comparison.
Instance In Incus, each container or VM it creates. The Kubernetes nodes of CAPN and vCluster are instances.
Inventory List of the machines Ansible manages, with their groups and variables.
K8sGPT Tool that analyzes cluster problems and explains them in natural language with an LLM (here, from Ollama).
Kernel The core of the operating system, the part that talks directly to the hardware. Containers share the host's kernel.
Kong The cluster's HTTP/HTTPS entry point: it implements Gateway API (through KIC), receives the traffic and spreads it across the services.
kube-vip Puts a virtual IP (VIP) in front of the Kubernetes API so it doesn't depend on a single node. Optional here; don't confuse it with MetalLB.
kubeconfig File with the cluster address and your credentials; kubectl uses it to know which cluster to connect to and as whom (here, ~/.kube/homelab-k3s.yaml).
kubectl The CLI for talking to Kubernetes: list pods, read logs, apply manifests or restart things.
kubelet Kubernetes agent that runs on every node and starts the pods the control plane assigns to it.
Kustomize Tool that builds and adjusts YAML manifests by layering changes over a base, without templates. The gitops repo pipeline uses it to validate the repo.
Longhorn Distributed storage for Kubernetes: it keeps each volume with replicas on several nodes so no data is lost if one goes down (StorageClass longhorn-mixto).
Manifest YAML file that describes a Kubernetes resource the way you want it to exist. You say what you want, not how to do it; Argo CD applies them from Git.
Merge / branch A branch is a separate line of changes in Git. Merging joins it into main, usually when a PR is approved.
MetalLB Gives LAN IPs (pool 192.168.23.200–.220) to Services of type LoadBalancer, something the provider does in the cloud.
Metric / scrape A metric is a number measured over and over in time (e.g. CPU usage). A scrape is vmagent's periodic read of each service's metrics.
Namespace Named space inside the cluster that separates resources and permissions, like a folder (e.g. ai, kong or arc-runners). Almost every kubectl command takes -n <namespace>.
Netplan Tool that configures the network from YAML files. Here it creates the br0 bridge and each node's static IP (Phase 1).
NetworkPolicy Kubernetes rule that says which pods can talk to which, like a firewall inside the cluster. The CNI enforces it.
Node Each machine (physical or VM) that is part of a cluster and contributes CPU, memory and disk. Here they are deborah, oliver and invincible.
Ollama Server that runs language models (LLMs) on your own machines, without sending data out. Open WebUI and K8sGPT use it.
Open WebUI Chat-style web interface for talking to Ollama's models.
OpenEBS Storage for Kubernetes. Here LocalPV is used (StorageClass openebs-hostpath): volumes on the node's local disk, fast but without replicas.
OpenTofu / Terraform Infrastructure-as-code tools: you describe resources in files and they create them. OpenTofu is the open-source fork of Terraform; here it configures the GitHub organization.
Pipeline Automatic sequence of steps (validate, build, deploy) that runs when you change the code.
Playbook Ansible YAML file with the ordered list of tasks applied to a group of machines (e.g. playbook-k3s.yml installs K3s).
Pod The smallest unit Kubernetes runs: one or more containers that share network and storage. If a pod dies, Kubernetes creates another.
port-forward kubectl port-forward opens a temporary tunnel from your computer to a service inside the cluster; that's why some URLs are http://127.0.0.1:<port>.
Probe Automatic check that visits a URL every so often to see whether it responds (done by blackbox-exporter).
Profile / project / storage pool Incus concepts. A profile is a reusable configuration for instances (disk, network), a project groups and isolates instances and a storage pool is the place on disk where instances and their snapshots are stored.
Quorum Minimum majority of a cluster's members that must be alive and in agreement to keep making decisions. With 3 nodes, 2 must stay up; that's why Incus and K3s use three.
Renovate Bot that checks for new versions of the components and opens a PR to update them.
Replica Identical copy of a pod or a volume kept alongside the original to tolerate failures.
Retention How long data is kept before it is deleted (e.g. 30 days of logs in VictoriaLogs).
Role (Ansible) Reusable package of tasks, templates and variables with a single purpose, stored in ansible/roles/ (e.g. netplan_bridge). Playbooks combine several roles.
Rollout / rollback A rollout deploys or restarts a version gradually (kubectl rollout restart); a rollback goes back to the previous version if something failed.
Sealed Secrets Controller that decrypts encrypted secrets (SealedSecret) inside the cluster. That way you can keep them in Git: only the cluster has the key.
Secret Kubernetes resource for sensitive data (passwords, tokens). Careful: by default it is only base64-encoded, not encrypted; that's why here it is encrypted before going into Git.
Service Stable address for reaching a group of pods. ClusterIP is internal only, NodePort opens a port on every node and LoadBalancer requests a LAN IP (MetalLB provides it).
Snapshot Picture of the state of a disk or an instance at a given moment, which you can go back to if something goes wrong. It doesn't replace a backup on another machine.
StorageClass "Kind" of disk a PVC can request. Here there are openebs-hostpath (local, default) and longhorn-mixto (replicated).
sudo Command to run something as administrator (root) on Linux.
Sync / Synced / OutOfSync / Healthy Argo CD states. Syncing is applying what Git says to the cluster; Synced means they already match, OutOfSync that there are pending differences and Healthy that the resources also work fine.
systemd / timer systemd starts and watches Linux services (such as k3s or incus). A timer is its way of scheduling periodic tasks, similar to cron.
Token Secret key (a long string) that identifies a program or person to a service instead of a username and password. It is usually sent in the HTTP header Authorization: Bearer ….
Traefik Ingress proxy that K3s installs by default. Here it is disabled and kept as an alternative to Kong.
vCluster "Virtual" Kubernetes cluster that runs inside a namespace of another cluster: each team gets its own without new machines (Phase 5).
VictoriaMetrics / vmagent / vmalert VictoriaMetrics is the homelab's metrics database, compatible with Prometheus. vmagent collects the metrics (scrape) and vmalert evaluates the alert rules and passes them to Alertmanager.
Volume Disk space mounted into a pod to keep data that must survive a restart. A PVC requests it and a StorageClass provides it.
Webhook URL that a system sends an automatic message to when something happens. Here alerts reach Discord through webhooks.