Docker
A platform for packaging applications and their dependencies into lightweight, portable containers.
Docker is the most popular way to run self-hosted apps. Each container is isolated, reproducible and easy to update or remove. With Docker Compose you define your whole stack in a single YAML file. Containers share the host kernel, so they start in seconds and use far less overhead than virtual machines.
In practice, a home server usually runs a Docker host with each application defined as a Compose service, its persistent data mapped to a named volume or bind mount, and its web interface published behind a single reverse proxy. This pattern makes updates trivial (pull a new image and recreate the container), backups straightforward (save the volumes and compose files), and rebuilds boring (restore from Git plus your backups). The main concepts to learn are volumes (so data survives container recreation), networks (so containers can talk to each other by name), and image tags (pin versions instead of using :latest to keep upgrades predictable).
Related articles
Container
An isolated, self-contained package that bundles an application with everything it needs to run.
Docker Compose
A tool that defines and runs multi-container applications from a single declarative YAML file.
Self-Hosting
Running software on hardware you control instead of relying on third-party cloud services.