---
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 &amp; External Servers

This table tracks external public-facing domains, their current A-record IP destinations, and hosting providers.

<table id="bkmrk-domain-name-target-i"><thead><tr><td>**Domain Name**</td><td>**Target IP Address**</td><td>**Host / Provider**</td><td>**Status / Notes**</td></tr></thead><tbody><tr><td><span>`mcfetridge.us`</span></td><td><span>129.213.86.62</span></td><td><span>Oracle Server</span></td><td><span>Active</span></td></tr><tr><td><span>`mikemcfetridge.com`</span></td><td><span>75.152.47.1</span></td><td><span>Home</span></td><td><span>Active</span></td></tr><tr><td><span>`mmcfetridge.net`</span></td><td><span>216.144.227.142</span></td><td><span>RackNerd Server</span></td><td><span>Active</span></td></tr><tr><td><span>`mmcfetridge.xyz`</span></td><td><span>107.175.245.171</span></td><td><span>*N/A*</span></td><td><span>Deprecated / Not used anymore</span></td></tr></tbody></table>

## 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 &amp; Server Hosts

<table id="bkmrk-ip-address-server-na"><thead><tr><td>**IP Address**</td><td>**Server Name**</td><td>**Applications**</td><td>**Functional Comments**</td></tr></thead><tbody><tr><td><span>**192.168.2.1**</span></td><td><span>PVE</span></td><td><span>Proxmox</span></td><td><span>Main Proxmox Virtualization Environment</span></td></tr><tr><td><span>**192.168.2.2**</span></td><td><span>PVE2</span></td><td><span>Proxmox</span></td><td><span>Secondary Proxmox Node (Cluster/Failover)</span></td></tr><tr><td><span>**192.168.2.3**</span></td><td><span>docker-prod-01</span></td><td><span>Docker</span></td><td><span>Production Docker environment</span></td></tr><tr><td><span>**192.168.2.4**</span></td><td><span>pangolin</span></td><td><span>*None Listed*</span></td><td><span>Assigned host</span></td></tr><tr><td><span>**192.168.2.5**</span></td><td><span>Domain Locker</span></td><td><span>Docker Monitoring</span></td><td><span>Container ecosystem tracking &amp; monitoring</span></td></tr></tbody></table>

### Network Services &amp; Core Stacks

<table id="bkmrk-ip-address-server-na-1"><thead><tr><td>**IP Address**</td><td>**Server Name**</td><td>**Applications**</td><td>**Functional Comments**</td></tr></thead><tbody><tr><td><span>**192.168.2.8**</span></td><td><span>Pi-Hole</span></td><td><span>Ad-blocking / DNS</span></td><td><span>Network-wide ad blocker</span></td></tr><tr><td><span>**192.168.2.9**</span></td><td><span>TECHNITIUMDNS-SERVER</span></td><td><span>DNS</span></td><td><span>Local authoritative DNS Server</span></td></tr><tr><td><span>**192.168.2.10**</span></td><td><span>ArrStack</span></td><td><span>Media Management</span></td><td><span>Automation stack</span></td></tr><tr><td><span>**192.168.2.12**</span></td><td><span>linkwarden</span></td><td><span>lw</span></td><td><span>Web bookmark and internet link management</span></td></tr><tr><td><span>**192.168.2.15**</span></td><td><span>docker-deploy</span></td><td><span>CI/CD Deployer</span></td><td><span>Dedicated environment for deployments</span></td></tr><tr><td><span>**192.168.2.19**</span></td><td><span>VAULTWARDEN-SERVER</span></td><td><span>Passwords</span></td><td><span>Self-hosted Bitwarden backend (Password Server)</span></td></tr></tbody></table>

### End-User Devices &amp; Client Leases

<table id="bkmrk-ip-address-device-na"><thead><tr><td>**IP Address**</td><td>**Device Name**</td><td>**Device Type**</td><td>**Functional Comments**</td></tr></thead><tbody><tr><td><span>**192.168.2.248**</span></td><td><span>My iPad</span></td><td><span>Tablet</span></td><td><span>Personal client</span></td></tr><tr><td><span>**192.168.2.249**</span></td><td><span>My Laptop</span></td><td><span>Laptop</span></td><td><span>Primary workstation</span></td></tr></tbody></table>

> 💡 **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 &amp; 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 &amp; Licenses

> 🔑 **Windows 10 Pro Generic KMS / Setup Key:** &gt; `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:

<div class="code-block ng-tns-c1605810258-312 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-bash"><div class="formatted-code-block-internal-container ng-tns-c1605810258-312"><div class="animated-opacity ng-tns-c1605810258-312"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-312 ng-star-inserted"><span class="ng-tns-c1605810258-312">Bash</span><div class="buttons ng-tns-c1605810258-312 ng-star-inserted"></div></div></div></div></div>```
sudo apt update && sudo apt install ddclient -y

```

<div class="code-block ng-tns-c1605810258-312 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--1"><div class="formatted-code-block-internal-container ng-tns-c1605810258-312"><div class="animated-opacity ng-tns-c1605810258-312"></div></div></div>> 💡 **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:

<div class="code-block ng-tns-c1605810258-313 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-bash-1"><div class="formatted-code-block-internal-container ng-tns-c1605810258-313"><div class="animated-opacity ng-tns-c1605810258-313"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-313 ng-star-inserted"><span class="ng-tns-c1605810258-313">Bash</span><div class="buttons ng-tns-c1605810258-313 ng-star-inserted"></div></div></div></div></div>```
sudo nano /etc/ddclient.conf

```

<div class="code-block ng-tns-c1605810258-313 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--4"><div class="formatted-code-block-internal-container ng-tns-c1605810258-313"><div class="animated-opacity ng-tns-c1605810258-313"></div></div></div>Completely clear any auto-generated text and replace it with the following clean, accurate configuration block for Namecheap:

<div class="code-block ng-tns-c1605810258-314 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-ini%2C-toml"><div class="formatted-code-block-internal-container ng-tns-c1605810258-314"><div class="animated-opacity ng-tns-c1605810258-314"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-314 ng-star-inserted"><span class="ng-tns-c1605810258-314">Ini, TOML</span><div class="buttons ng-tns-c1605810258-314 ng-star-inserted"></div></div></div></div></div>```
# 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'
@

```

<div class="code-block ng-tns-c1605810258-314 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--7"><div class="formatted-code-block-internal-container ng-tns-c1605810258-314"><div class="animated-opacity ng-tns-c1605810258-314"></div></div></div>### 📋 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:

<div class="code-block ng-tns-c1605810258-315 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-bash-2"><div class="formatted-code-block-internal-container ng-tns-c1605810258-315"><div class="animated-opacity ng-tns-c1605810258-315"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-315 ng-star-inserted"><span class="ng-tns-c1605810258-315">Bash</span><div class="buttons ng-tns-c1605810258-315 ng-star-inserted"></div></div></div></div></div>```
# 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

```

<div class="code-block ng-tns-c1605810258-315 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--10"><div class="formatted-code-block-internal-container ng-tns-c1605810258-315"><div class="animated-opacity ng-tns-c1605810258-315"></div></div></div>## 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:

<div class="code-block ng-tns-c1605810258-316 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-bash-3"><div class="formatted-code-block-internal-container ng-tns-c1605810258-316"><div class="animated-opacity ng-tns-c1605810258-316"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-316 ng-star-inserted"><span class="ng-tns-c1605810258-316">Bash</span><div class="buttons ng-tns-c1605810258-316 ng-star-inserted"></div></div></div></div></div>```
sudo ddclient -daemon=0 -debug -verbose -noquiet -force

```

<div class="code-block ng-tns-c1605810258-316 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--13"><div class="formatted-code-block-internal-container ng-tns-c1605810258-316"><div class="animated-opacity ng-tns-c1605810258-316"></div></div></div>### 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:

<div class="code-block ng-tns-c1605810258-317 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-plaintext"><div class="formatted-code-block-internal-container ng-tns-c1605810258-317"><div class="animated-opacity ng-tns-c1605810258-317"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1605810258-317 ng-star-inserted"><span class="ng-tns-c1605810258-317">Plaintext</span><div class="buttons ng-tns-c1605810258-317 ng-star-inserted"></div></div></div></div></div>```
opt{daemon}                        : 0
opt{debug}                         : 1
...
RECEIVE:    <debug><![CDATA[]]></debug>
RECEIVE:  </interface-response>
SUCCESS:  updating @: good: IP address set to 174.179.116.220

```

<div class="code-block ng-tns-c1605810258-317 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--16"><div class="formatted-code-block-internal-container ng-tns-c1605810258-317"><div class="animated-opacity ng-tns-c1605810258-317"></div></div></div>If you see `SUCCESS: updating @: good`, your settings are valid, and `ddclient` is safely maintaining your public IP routing mapping behind the scenes!