DevHomeLab
My personal dev+home lab setup which allows me to do some personal as well as dev work with a breeze
The Problem
To create a robust system which will allow me to experiment different software, services, design patterns also while keeping my devices connected, synced.
Solution
Created an infrastructure which keeps all my system connected and while keeping good security measures. Can run multiple services and resource intensive services as well. Keeps me connected across all devices. Light weight tech stack and also which is opensource
- Secure - Infrastructure, Authentication, Authorization
- Development environment accessible and working across all systems
- Easy to deploy and test docker containerized or any other type of opensource services
- Daily Life with Tech at ease with Sync, Backup, Media Server etc.
Tech Stack
- Ubuntu: Free, open-source Linux operating system for desktops, servers, and cloud
- Wireguard: Simple, fast, and modern VPN tunnel for connecting devices securely across the public internet
- Terraform: Open-source infrastructure as code (IaC) tool for automating infrastructure provisioning across cloud providers, on-premises, and hybrid environments.
- Traefik: Modern HTTP reverse proxy and load balancer for microservices deployments.
- Nomad: Lightweight, flexible, and easy-to-use open-source workload orchestrator for deploying and managing containerized applications. (Alternative to Kubernetes)
- Consul: Open-source service mesh solution for service discovery, load balancing, and secure service communication. (https://www.consul.io/)
- Rustdesk: Open-source remote desktop software with a focus on simplicity, security, and performance.
- Code Server : Open-source development environment that turns any machine with a browser into a powerful development workstation.
- Metabase: Open-source business intelligence (BI) tool that helps users explore and analyze data from various data sources.
- Netdata: Real-time performance monitoring tool for servers, applications, and infrastructure.
- Minio: Open-source high-performance object storage server for cloud, on-premises, and hybrid deployments. (Alternative to S3)
- Authelia: Open-source multi-factor authentication (MFA) server for securing web applications.
- Nginx: Open-source, high-performance web server and reverse proxy.
- Resilio Sync: P2P file synchronization software for keeping files in sync across multiple devices.
- Uptime Kuma: Open-source monitoring tool for web applications and servers.
- Jellyfin: Open-source media server for managing and streaming personal media libraries.
Functional Features
- Any Device backup through Resilio sync
- Media server with Jellyfin
- Allows access to vs code over any machine, with desktop compute
- Secured through wireguard vpn network and sites are multi factor authenticated
- Allows deploying services and exposed to internet quickly thus allowing fast experimentation
- Can check on Uptime of services
- And lot many other features as I need
Non-Functional Features
- The latency between devices is quite low and devices work over multiple nat layers
- As all compute is accessible of desktop machine other devices like laptop can have extended period of battery life
- Zero cost, as working with oracles free tier
- Light weight yet extensible infrastructure with hashicorp stack
Project Outcome
Gives me piece of mind when syncing all my mobile data or any data across devices thus allowing me to easily switch between desktop, mobile, ipad or laptop. Gives me perspective of whole infrastructure. Allows me to iterate on different services and run different projects. Later doing other projects was really easy like gdelt project with ease after having experimented so much on this dev lab



