---
tags:
- Documentation
- Bookstack
- Notes
---
# Home-Lab Environment
# Environment Documentation
I have standardized your domain listings into a clean table, removed the empty unassigned IP rows to reduce clutter (while keeping your standard sequential block visible), and extracted the miscellaneous Windows 10 license key into a dedicated, secure metadata section so it doesn't skew your networking tables.
# Home-Lab Environment Documentation
## 1. Public Domains & External Servers
This table tracks external public-facing domains, their current A-record IP destinations, and hosting providers.
| **Domain Name** | **Target IP Address** | **Host / Provider** | **Status / Notes** |
| `mcfetridge.us` | 129.213.86.62 | Oracle Server | Active |
| `mikemcfetridge.com` | 75.152.47.1 | Home | Active |
| `mmcfetridge.net` | 216.144.227.142 | RackNerd Server | Active |
| `mmcfetridge.xyz` | 107.175.245.171 | *N/A* | Deprecated / Not used anymore |
## 2. Local IP Asset Management (Subnet: `192.168.2.0/24`)
This mapping tracks internal static IPs, infrastructure hosts, container stacks, and active client hardware.
### Infrastructure & Server Hosts
| **IP Address** | **Server Name** | **Applications** | **Functional Comments** |
| **192.168.2.1** | PVE | Proxmox | Main Proxmox Virtualization Environment |
| **192.168.2.2** | PVE2 | Proxmox | Secondary Proxmox Node (Cluster/Failover) |
| **192.168.2.3** | docker-prod-01 | Docker | Production Docker environment |
| **192.168.2.4** | pangolin | *None Listed* | Assigned host |
| **192.168.2.5** | Domain Locker | Docker Monitoring | Container ecosystem tracking & monitoring |
### Network Services & Core Stacks
| **IP Address** | **Server Name** | **Applications** | **Functional Comments** |
| **192.168.2.8** | Pi-Hole | Ad-blocking / DNS | Network-wide ad blocker |
| **192.168.2.9** | TECHNITIUMDNS-SERVER | DNS | Local authoritative DNS Server |
| **192.168.2.10** | ArrStack | Media Management | Automation stack |
| **192.168.2.12** | linkwarden | lw | Web bookmark and internet link management |
| **192.168.2.15** | docker-deploy | CI/CD Deployer | Dedicated environment for deployments |
| **192.168.2.19** | VAULTWARDEN-SERVER | Passwords | Self-hosted Bitwarden backend (Password Server) |
### End-User Devices & Client Leases
| **IP Address** | **Device Name** | **Device Type** | **Functional Comments** |
| **192.168.2.248** | My iPad | Tablet | Personal client |
| **192.168.2.249** | My Laptop | Laptop | Primary workstation |
> 💡 **Note:** IP addresses `192.168.2.6` through `192.168.2.7`, `192.168.2.11`, `192.168.2.13` through `192.168.2.14`, `192.168.2.16` through `192.168.2.18`, and `192.168.2.20` through `192.168.2.30` are currently unassigned and reserved for future static scaling.
## 3. Network Security & Trusted Subnets (CIDR)
The following blocks are designated as **Trusted IP CIDRs** within internal firewall and reverse proxy definitions.
- `127.0.0.0/8` — Localhost loopback network
- `10.0.0.0/8` — Class A Private network space
- `172.16.0.0/12` — Class B Private network space (Commonly used by internal Docker bridges)
- `192.168.0.0/22` — Covers local scopes from `192.168.0.0` through `192.168.3.255`
## 4. Environment Metadata & Licenses
> 🔑 **Windows 10 Pro Generic KMS / Setup Key:** > `W269N-WFGWX-YVC9B-4J6C9-T83GX`
# 🌐 Configuring Dynamic DNS (DDNS) with ddclient and Namecheap
This guide walks you through installing and configuring `ddclient` on Ubuntu to automatically update your Namecheap domain with your network's public IP address.
## 1. Installation
Install the `ddclient` utility from the standard package manager:
```
sudo apt update && sudo apt install ddclient -y
```
> 💡 **Note:** During the installation, a text-based setup wizard will appear in your terminal. You can safely select **"Other"** when prompted for a provider and cycle through the defaults. We will completely overwrite these wizard settings manually in the next step.
## 2. Configuration
Open the configuration file using the `nano` text editor:
```
sudo nano /etc/ddclient.conf
```
Completely clear any auto-generated text and replace it with the following clean, accurate configuration block for Namecheap:
```
# Configuration for Namecheap Dynamic DNS
protocol=namecheap
server=dynamicdns.park-your-domain.com
use=web, web=https://api.ipify.org
login=mikemcfetridge.com
password='your_namecheap_ddns_password'
@
```
### 📋 Configuration Breakdown:
- **`server`**: Points directly to Namecheap's dedicated dynamic DNS handling infrastructure.
- **`use=web`**: Tells the client to fetch your external public IP using a web lookup utility (`ipify.org`) rather than checking your local router or network interface directly.
- **`login`**: Your root registered domain name.
- **`password`**: The unique, long alphanumeric DDNS password/token generated inside your Namecheap domain dashboard (this is *not* your Namecheap account password).
- **`@`**: Instructs `ddclient` to update the root domain apex itself. *(If you wanted to update a subdomain like `vpn.mikemcfetridge.com`, you would replace `@` with `vpn`).*
Save the file by pressing `CTRL + O`, then hit `Enter`, and exit the editor by pressing `CTRL + X`.
## 3. Managing the Service
Enable and start the background daemon process so that your system tracks and updates your IP automatically on reboots:
```
# Enable the service to start automatically on system boot
sudo systemctl enable ddclient
# Start the service right now
sudo systemctl start ddclient
# Check the running operational status of the service
sudo systemctl status ddclient
```
## 4. Verification and Debugging
To verify that your configuration is error-free and successfully communicating with Namecheap's servers, run a manual forced update simulation with verbose logging enabled:
```
sudo ddclient -daemon=0 -debug -verbose -noquiet -force
```
### Expected Output
Your terminal will print comprehensive initialization flags. Scroll down to the bottom of the output stream and verify that you see a `SUCCESS` confirmation similar to this:
```
opt{daemon} : 0
opt{debug} : 1
...
RECEIVE:
RECEIVE:
SUCCESS: updating @: good: IP address set to 174.179.116.220
```
If you see `SUCCESS: updating @: good`, your settings are valid, and `ddclient` is safely maintaining your public IP routing mapping behind the scenes!