Project Khanz · Engineering case study · 2026
Private AI. Real infrastructure.
A two-node Ubuntu homelab built from repurposed laptops to explore Linux administration, Docker, DNS, security, monitoring, automation and private local AI—through practical deployment rather than theory alone.
- Nodes
- 2 Ubuntu servers
- Infrastructure
- Khanz Toshiba
- AI
- Khanz AI Server
- Principle
- Explain → visualise → prove
Why I built the lab
Project Khanz began with a simple question: how much modern infrastructure could I build and understand using hardware I already owned?
Rather than relying only on cloud platforms, I wanted direct experience with the operating system, network, storage, services, containers and failures underneath an application. Two older laptops became a practical learning environment where I could deploy real services, observe how they interact, break configurations safely and repair them.
The final design separates infrastructure services from local AI workloads. This gives each machine a clear responsibility and makes the environment easier to understand, troubleshoot and extend.
Engineering principle
Start with the problem, assign clear responsibilities, and document every meaningful decision.
From spare hardware to a working lab
FILES
DATABASE
MONITORING
OPEN WEBUI
LOCAL MODELS
DOCKER
Khanz Toshiba: the infrastructure node
The Toshiba Satellite is the environment's infrastructure node. It runs Ubuntu 24.04 LTS on modest hardware: an AMD E1-1200 processor, 1.5 GB of RAM and a 500 GB hard drive.
Instead of forcing every service into containers, the server uses a practical mixed model. Pi-hole, MotionEye, PostgreSQL, Samba, Fail2Ban, SSH and Tailscale run as native services, while Docker hosts Portainer and the UFS web analytics dashboard.
The node provides DNS filtering, storage access, camera monitoring, database services, container management and secure remote connectivity for the lab.
Verified services
Pi-hole · MotionEye · PostgreSQL 16 · Samba · Docker · Portainer · Fail2Ban · SSH · Tailscale · cron automation.
The quiet machine running everything
$ hostname khanz-toshiba $ systemctl --type=service --state=running pihole-FTL.service active postgresql.service active motioneye.service active smbd.service active fail2ban.service active tailscaled.service active docker.service active $ docker ps portainer Up ufs-dashboard Up
Defending the network
Hosting services is only half the work. The next responsibility is controlling how those services can be reached and understanding what is happening on the network.
The Toshiba node uses UFW with a default-deny incoming policy. Only required services are allowed, while Samba access is limited to the trusted LAN and Tailscale network. Fail2Ban watches for abusive behaviour, and Pi-hole provides DNS-level filtering and query visibility.
Security tools such as Nmap, arp-scan, tcpdump, Gobuster, Hydra, SQLMap and SecLists form a controlled learning toolkit for discovering systems and understanding common attack surfaces within an authorised lab.
Security principle
Expose only what is necessary, restrict access by network, log activity and verify assumptions with tools.
Services behind deliberate boundaries
Khanz AI Server: local intelligence
The second node is dedicated to local AI experimentation. The HP 250 G8 runs Ubuntu 24.04 LTS on an Intel Celeron N4020, 4 GB of RAM and a 500 GB hard drive.
Docker Compose runs the AI stack. Open WebUI provides the browser interface, while Ollama handles local model execution. Both containers share the same Docker network, allowing the interface to communicate with the model service internally.
There is no dedicated GPU. That limitation became part of the engineering challenge: selecting lightweight workloads, understanding resource constraints and learning what practical local inference looks like on entry-level hardware.
Verified stack
Open WebUI · Ollama · Docker Compose · Portainer Agent · Motion · Tailscale.
Prompts stay inside the network
CONTAINER 8080
LOCAL MODELS
One network, two responsibilities
The environment is designed as a small ecosystem rather than two unrelated machines. Client devices use the infrastructure node for local services and filtered DNS, while the AI node supplies private model access.
Tailscale extends secure access beyond the home network without exposing every service directly to the public internet. SSH provides administrative access, and clear hostnames make each node's purpose immediately understandable.
Network principle
Separate responsibilities, keep service paths understandable and use private connectivity before public exposure.
Traffic moving through the ecosystem
PHONE
CLIENTS
DNS FILTER
INFRASTRUCTURE
LOCAL AI
Monitoring and daily operations
A system is only useful when it can be observed and maintained. Portainer provides a visual view of containers, MotionEye exposes camera monitoring, Pi-hole records DNS activity and systemd reports the state of native services.
Cron jobs and service managers automate recurring work and restart behaviour. Logs, port checks, process inspection and Docker commands form the everyday operational workflow.
Operations principle
Know what is running, where it is listening, how it starts, what it logs and how it fails.
Seeing the system, not guessing
DNS ACTIVITY
CONTAINERS
SERVICE HEALTH
REMOTE ACCESS
What the build taught me
This project developed practical experience across Linux administration, networking, SSH, DNS, firewalls, Docker, Docker Compose, databases, file sharing, monitoring, automation, troubleshooting and local AI deployment.
More importantly, it taught me to treat failures as evidence. An unavailable page can mean a missing route, a stopped container, an incorrect port, a firewall restriction or a service dependency. Troubleshooting became a process of forming hypotheses, checking the system and narrowing the cause.
Capabilities demonstrated
Linux · Docker · DNS · networking · security · monitoring · automation · systems integration · local AI · technical documentation.
The system grew—and so did the engineer
SYSTEMD
BASH
POSTGRESQL
OLLAMA
The verified system blueprint
The final blueprint represents the environment as it actually operates: clients use the private network, the Toshiba provides infrastructure services, and the HP node provides local AI. Tailscale and SSH support administration, while Docker is used selectively where containerisation adds value.
This architecture is intentionally small, but the underlying principles scale: clear node responsibilities, controlled access, observable services and documented dependencies.
Next improvements
Backups · centralised monitoring · reverse proxy · HTTPS certificates · stronger service isolation · expanded automation.
Two nodes. One private ecosystem.
Docker · Portainer · MotionEye · PostgreSQL · Samba · Fail2Ban
Ollama · Open WebUI · Motion · Portainer Agent
Project status · continuously evolving
Built for learning. Designed for control. Made to evolve.
Project Khanz is not presented as a finished product. It is a living engineering environment that grows as new services, controls, automations and ideas are tested.