Files
2026-07-20 09:23:17 -04:00

13 KiB

tags
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.62Oracle ServerActive
`mikemcfetridge.com`75.152.47.1HomeActive
`mmcfetridge.net`216.144.227.142RackNerd ServerActive
`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**PVEProxmoxMain Proxmox Virtualization Environment
**192.168.2.2**PVE2ProxmoxSecondary Proxmox Node (Cluster/Failover)
**192.168.2.3**docker-prod-01DockerProduction Docker environment
**192.168.2.4**pangolin*None Listed*Assigned host
**192.168.2.5**Domain LockerDocker MonitoringContainer ecosystem tracking & monitoring

Network Services & Core Stacks

**IP Address****Server Name****Applications****Functional Comments**
**192.168.2.8**Pi-HoleAd-blocking / DNSNetwork-wide ad blocker
**192.168.2.9**TECHNITIUMDNS-SERVERDNSLocal authoritative DNS Server
**192.168.2.10**ArrStackMedia ManagementAutomation stack
**192.168.2.12**linkwardenlwWeb bookmark and internet link management
**192.168.2.15**docker-deployCI/CD DeployerDedicated environment for deployments
**192.168.2.19**VAULTWARDEN-SERVERPasswordsSelf-hosted Bitwarden backend (Password Server)

End-User Devices & Client Leases

**IP Address****Device Name****Device Type****Functional Comments**
**192.168.2.248**My iPadTabletPersonal client
**192.168.2.249**My LaptopLaptopPrimary 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:

Bash
``` 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

Completely clear any auto-generated text and replace it with the following clean, accurate configuration block for Namecheap:
Ini, TOML
``` # 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

## 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:

Bash
``` 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

If you see `SUCCESS: updating @: good`, your settings are valid, and `ddclient` is safely maintaining your public IP routing mapping behind the scenes!