Introduction
One of the biggest changes in Realm Labs was moving from installing applications directly onto individual machines to running services in containers.
Docker completely changed the way I approach self-hosting.
Instead of dedicating an entire computer or virtual machine to a single application, containers allow multiple services to run efficiently while remaining separated and easy to manage.
What Is Self Hosting?
Self hosting means running your own services instead of relying entirely on third-party platforms.
There are many reasons to self host:
- Greater control over data
- Learning new technologies
- Reducing dependency on external services
- Creating customised solutions
- Building a better understanding of infrastructure
The goal is not to replace every cloud service, but to understand what can be achieved locally.
Introducing Docker
Docker packages applications and their requirements into containers.
A container includes everything an application needs to run:
- Application files
- Dependencies
- Configuration
- Runtime environment
This makes deployments much more predictable.
A service that works on one system can usually be moved to another with minimal changes.
Managing Containers with Portainer
While Docker can be managed entirely from the command line, Portainer provides a much easier visual interface.
Portainer allows me to:
- Create containers
- Deploy stacks
- Manage images
- Monitor running services
- View logs
- Update applications
For a home lab environment, it provides the perfect balance between learning Docker concepts and having a practical management interface.
Docker Compose and Stacks
Rather than creating containers manually, services can be defined using Docker Compose files.
A stack describes:
- Which images to use
- Environment variables
- Storage locations
- Network configuration
- Restart behaviour
This makes services repeatable and easier to rebuild.
Storage and Persistence
One of the most important parts of running containers is managing data correctly.
Containers themselves are temporary. Important data needs to be stored separately using volumes.
Examples:
- Database files
- Application settings
- User data
- Configuration files
This allows containers to be updated or recreated without losing important information.
Services Running in Realm Labs
The container environment continues to grow and currently supports services including:
- WordPress
- MariaDB
- Home automation tools
- Utility services
- Development environments
Each service can be isolated while still communicating with the wider infrastructure.
Lessons Learned
Docker makes deploying applications easier, but it also introduces new areas to understand:
- Container networking
- Volume management
- Backup strategies
- Security
- Updates
The biggest lesson is that good documentation and planning become more important as the number of services increases.
Future Plans
The container platform will continue to expand with projects including:
- More self-hosted applications
- Better monitoring
- Automated backups
- Improved deployment workflows
- Local AI services
Conclusion
Docker and Portainer have become one of the foundations of Realm Labs.
They provide a flexible way to experiment, build and host services while keeping the environment organised and manageable.
For a home lab, containers provide the perfect combination of learning and practicality.

