Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

I stopped reaching my homelab services by memorizing IP addresses and port numbers. My setup uses DHCP reservations to keep key devices at stable addresses, AdGuard Home to map service names to the proxy, and Nginx Proxy Manager (NPM) to send each hostname to the right service and port. The names work on my configured home network; this is one documented setup, not a universal recipe. Network ranges, router menus, and service ports vary.

Why reaching a service by IP and port gets old

A self-hosted service may be reachable at an address such as 192.168.0.4:8097, but remembering that combination is awkward. It is especially tedious to type on a television remote, and bookmarks can break if the host’s address changes. In my setup, I wanted to open Jellyfin by typing jellyfin.internal instead.

The solution has two separate jobs: DNS resolves a name to an IP address, while a reverse proxy uses the requested hostname to choose a service and its port. Keeping those roles distinct makes the setup easier to configure and troubleshoot.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How the pieces fit together

  • DHCP reservation: keeps the IP address of an important device stable on the home network.
  • AdGuard Home: provides local DNS rewrites so names such as jellyfin.internal resolve to the proxy host.
  • Nginx Proxy Manager: receives the request, matches its hostname to a proxy-host rule, and forwards it to the service’s backend address and port.

DNS does not select a TCP port. If Jellyfin and Home Assistant run on different ports of the same machine, pointing both names at that machine is not enough to distinguish them; NPM performs that routing.

#1 Best Overall
Glorlin Mini PC, AMD Ryzen 5 3501U CPU (Beats N95, Up to 3.7 GHz, 4C/8T) Small Desktop Computer 16GB DDR4 RAM 512GB NVMe SSD WiFi 6 Bluetooth 5.3 Dual HDMI DP Support Three 4K Display for Home Office
  • 【Great power in a small computer】Get fast performance from the Ryzen 5 3501U ​processor (2.1GHz-3.7GHz, 4 Cores 8 Threads) inside this mini pc, TDP 15W up to 25W. It's perfect for all your home office​ and business use, like daily computing, web browsing, and smooth media streaming. This small desktop computer​ handles everyday tasks easily and quietly.
  • 【Work on many things at once with lots of storage】This mini PC comes with 16GB of fast DDR4 RAM (expandable up to 32GB), allowing you to smoothly run multiple programs, dozens of browser tabs, and large files all at once. It also features a spacious 512GB SSD that provides ample storage and delivers dramatically faster boot-ups, app launches, and file transfers compared to a traditional hard drive.
  • 【See everything clearly on three 4K screens】Connect three monitors for more space to work or play. 1*Type-C 3.2 DP+DATA+PD and 2*HDMI ports​ on this mini pc​ support super sharp 4K Ultra HD​ video. It's great for doubling your work area for business​ or watching movies in high definition.
  • 【Fast modern connections in a tiny box】Enjoy a better and more stable internet connection with the latest WiFi 6. Use Bluetooth 5.3​ to connect wireless headphones, keyboards, and mice without wires. This small pc​ is very compact​ to save desk space and has extra USB ports (2*USB3.2, 2*USB 2.0, 1*Type-C 3.2 DP+DATA+PD, 1*Type-C 2.0, 2*HDMI 4K60Hz) for your printer, webcam, or other computer accessories.
  • 【Ready to use, saves space, and runs quiet】This mini desktop computer comes with the OS 11 Pro operating system pre-installed, so you can set it up and start using it immediately. Its compact, small form factor not only saves valuable desk space but also operates very quietly, ensuring it won't distract you whether you're working, studying, or streaming media.

1. Reserve stable addresses for the infrastructure

My example network uses router address 192.168.0.1 and a dynamic DHCP pool beginning at 192.168.0.10. I reserved 192.168.0.4 for an always-on ZimaBoard running AdGuard Home and NPM, and 192.168.0.5 for a ZimaCube 2 Pro that is not always on. These are addresses from my TP-Link network, not values to copy without checking your own subnet and router.

Reserve infrastructure addresses outside the dynamic pool, or otherwise ensure they cannot be handed to another device. A collision can make DNS rewrites or proxy targets point to the wrong machine. After changing a reservation, you may need to renew the device’s lease or reboot it before it uses the reserved address.

The local DNS server and proxy should be on a host that is reliably available. My ZimaBoard is just the hardware I had for the job; an existing capable, always-on server can fill the same roles. Consider available capacity, network interfaces, power, and processor architecture before buying anything solely for this setup.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

2. Make sure home-network clients use local DNS

I use AdGuard Home as the local DNS service. In my router configuration, clients ask the router for DNS and the router forwards requests to AdGuard Home. With that arrangement, AdGuard’s query log shows the router as the requester. Alternatively, a router’s DHCP settings may let you give clients the AdGuard address directly; that can make individual clients visible in the log.

A private name only resolves on devices using a resolver that knows its local record. A public resolver such as 1.1.1.1 will not know my private .internal rewrite. I configured it as a secondary DNS server, but some clients may query a secondary without waiting for the primary to fail. Resolver behavior varies, so a public fallback can make private-name lookups inconsistent rather than providing a dependable backup for those names.

On one Linux client, changing DNS manually did not affect the active connection until I reconnected Wi-Fi. I used resolvectl status to check the active resolver. For a NetworkManager connection, the commands below show the procedure I used; replace the connection name and address with your own values:

Rank #2
Sale
KAMRUI Pinova P2 Mini PC 16GB RAM 512GB SSD, AMD Ryzen 4300U(Beats 5400U/3500U/N95,Up to 3.7GHz,4C/8T) Mini Computers,Triple 4K Display/HDMI+DP+Type-C/WiFi/BT for Home/Business Mini Desktop Computers
  • 【AMD Ryzen 4300U True 4-Core CPU: Outperforms N95 & i3-10110U】KAMRUI P2 Mini PC is equipped with true 4-core AMD Ryzen 4300U processor built on advanced 7nm Zen2 architecture,This means you get consistent, unthrottled performance for hours on end, whether you’re running multiple browser tabs, streaming 4K content, or managing virtual machines. Compare that to Intel N95 (4 efficiency cores that throttle under load) or Intel i3-10110U (only 2 cores total), and the difference is night and day: The KAMRUI P2 AMD Ryzen 4300U (28W) is 40% faster than the Intel i3-10110U and 25% faster than the Intel N95 in multi-core tasks, ensuring smooth, lag-free performance even during heavy workloads.
  • 【Integrated AMD Radeon Graphics: 2.5X Stronger for Tri 4K】The KAMRUI P2 AMD 4300U Mini PC have unlocked the full potential of the built-in AMD Radeon Vega 5 graphics with 28W power delivery, making it 2.5 times stronger than the Intel UHD graphics found in the N95 and i3-10110U. This means you can enjoy Tri 4K@60Hz displays without a single stutter, perfect for productivity setups, home theaters, or even light photo/video editing and casual gaming. While the Intel N95/i3-10110U struggle to run a single 4K display without lag, The KAMRUI AMD 4300U Mini PC handles Tri 4K effortlessly, turning your workspace into a high-efficiency hub or your living room into a premium entertainment center.
  • 【Large Storage Capacity, Easy Expansion】KAMRUI Pinova P2 mini computers is equipped with 16GB LPDDR4 for faster multitasking and smooth application switching. 512GB M.2 SSD ensures fast startup, fast file transfers and plenty of storage space,eliminating slow loading times and ensuring fast responsiveness. the two storage slots (1x M.2 2280 SATA/NVMe PCIe3.0 slot, 1x M.2 2280 SATA slot) can be combined to provide up to 4TB of total storage(Not included). This gives you enough space for all your projects, media and data.
  • 【4K Triple Display】KAMRUI Pinova P2 4300U mini desktop computers is equipped with HDMI2.0 ×1 +DP1.4 ×1+USB3.2 Gen2 Type-C ×1 interfaces for faster transmission, Triple 4K@60Hz Display, KAMRUI P2 mini computer is ideal for visual home entertainment, home office, conference rooms, etc. USB3.2 Gen2 Type-A port ×2 with a transfer speed of up to 10 Gbps (21 times faster than USB 2.0) for efficient data transfer. Ideal for seamless multitasking between spreadsheets, browsers and presentations, or for an immersive entertainment experience.
  • 【USB3.2 Gen2 Type-C 10Gbps, Versatile connectivity】KAMRUI P2 mini desktop pc fast and versatile connectivity! The USB3.2 Gen2 Type-C port offers a data transfer rate of 10Gbps and simultaneously supports DisplayPort 1.4 video output. The P2 AMD Ryzen 4300U Mini PC is complemented by Gigabit LAN, WiFi and Bluetooth, so nothing stands in the way of a productive working environment.
nmcli connection show
nmcli connection modify "Your Wi-Fi connection" ipv4.dns "192.168.0.4"
nmcli connection up "Your Wi-Fi connection"

The final command reconnects the named connection. Check its DNS status afterward rather than assuming the setting took effect.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Create local DNS rewrites

In AdGuard Home, I add a rewrite under Filters → DNS rewrites. For example, jellyfin.internal points to the IP address of the machine running NPM. The rewrite contains an address, not Jellyfin’s port; the proxy rule handles the port in the next step.

I use .internal for these private names. My explanation in the original setup was that .local is used by multicast DNS systems such as Bonjour and Avahi and may resolve inconsistently, while .lan and .home could overlap with real domains. The article also identifies .home.arpa as an alternative and reports that ICANN reserved .internal for private networks in 2024; treat that standards detail as the article’s explanation rather than a claim independently verified here.

4. Add a proxy-host rule for each service

In NPM, create a proxy host whose domain name matches the DNS rewrite, then enter the backend address and port for that service. For my example, jellyfin.internal points to the NPM host in DNS, and NPM forwards it to Jellyfin on port 8097. My Home Assistant service uses port 8123, so it needs its own hostname rule and backend port.

NPM’s official setup documentation shows Docker image jc21/nginx-proxy-manager:2.16.0 and example port mappings 80:80 for HTTP, 443:443 for HTTPS, and 81:81 for the administrative web interface. The documentation, checked 2026-10-03, lists amd64 and arm64 support; it says armv7 support ended with version 2.14 and directs users who need it to version 2.13.7. Check the NPM setup documentation for current image and architecture details.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

NPM provides a web interface for proxy hosts and supports Let’s Encrypt certificates, as described on its official site. I left SSL unconfigured for my .internal names, so this setup does not establish HTTPS for those local addresses. A public certificate workflow should not be assumed to work for private-only names.

Rank #3
Sale
BOSGAME E5 Mini PC Ryzen 3 5300U, 16GB DDR4 512GB NVMe SSD
  • 【Responsive Quad-Core Productivity】 Powered by the AMD Ryzen 3 5300U processor (4 Cores/8 Threads, up to 3.8GHz), the BOSGAME E5 delivers stable and efficient processing for your daily workflows. It is perfectly optimized to run standard business software, manage large spreadsheets, and handle online classes smoothly. Please note: This budget-friendly PC excels at daily office productivity and network server applications, but is not designed for demanding professional 3D rendering or intensive 3A gaming.
  • 【Expandable Memory & Dual NVMe Storage】 Equipped with 16GB DDR4 memory and a fast 512GB M.2 2280 NVMe PCIe 3.0 SSD out of the box, ensuring quick boot times and fluid application loading. Designed for future flexibility, the system features dual SODIMM slots supporting memory upgrades up to 64GB, along with an additional empty M.2 2280 NVMe PCIe 3.0 slot for seamless dual-drive expansion without removing your original system drive.
  • 【Dual 2.5G LAN & Pro-Level Networking】 Featuring two ultra-fast 2.5GbE RJ45 LAN ports (Realtek RTL8125) and built-in Wi-Fi 5, this micro computer is a powerhouse for advanced network environments. It serves as the perfect hardware foundation for IT enthusiasts and professionals looking to build a secure home server, deploy a pfSense/OPNsense firewall appliance, configure a high-speed NAS, or run stable virtual machines.
  • 【True Triple 4K Display Productivity】 Maximize your screen real estate and eliminate constant window switching. Integrated AMD Radeon Graphics easily drive up to three independent 4K@60Hz monitors via 1x HDMI 2.0, 1x DisplayPort, and 1x Full-Function Type-C port. This versatile multi-screen setup is the ultimate solution for side-by-side document editing, financial stock tracking, or home entertainment.
  • 【Full-Function Type-C & Quiet Efficiency】 Streamline your workspace with the front-facing full-function USB Type-C port, supporting high-speed data transfer, 4K display output, and Power Delivery (PD 3.0). Engineered with an optimized cooling fan and copper heat pipes, the E5 operates at whisper-quiet noise levels. Its ultra-compact footprint easily replaces bulky traditional computer towers, pre-installed with a clean system.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

5. Test both routes and handle service-specific trust

Test the service directly on its own address and port, then test it by its local hostname through NPM. If direct access works but the proxied request fails, the proxy rule or the service’s trust settings may be the issue.

Home Assistant returned 400: Bad Request through NPM in my setup even though its direct port worked. Adding the NPM container to Home Assistant’s trusted proxies resolved that case. Follow the current trusted-proxy guidance for each service; use only the actual proxy address or a narrowly correct network range. Container IPs may change when containers are recreated, so verify the address rather than relying on a stale one.

Troubleshooting port conflicts and filtering side effects

Find what is using a port before changing it

A proxy needs its listener ports to be available. I found port 80 already used by the host dashboard, moved that dashboard to port 8888, and rebooted after an installer check appeared stale. That was a platform-specific conflict, not a required NPM change. On Linux, ss can show listening sockets; docker ps shows container port mappings. Identify the process or container that owns a port before altering the intended proxy listener.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check DNS and client behavior separately

  • If a name does not resolve, check the rewrite and verify the client is using the local resolver.
  • If the name resolves to an old or unexpected address, check the reservation and the DNS record’s target.
  • If the name resolves but the page does not load, check the matching NPM rule, backend address, and service port.
  • If direct access works but proxied access fails, check service-specific trusted-proxy configuration.

Account for app-specific filtering

AdGuard’s filtering caused a connectivity issue with my Netflix TV app because telemetry hostnames were blocked. I resolved it with allowlist rules. That is my reported experience, not evidence that every AdGuard setup blocks Netflix or that the same allowlist entries are appropriate for everyone.

What this arrangement does—and does not—solve

For several services sharing a host, DNS rewrites plus NPM give each one a memorable local name while keeping its port out of the address I type. DNS-only records may be sufficient when names map directly to distinct IP addresses; a reverse proxy is useful in the shared-host arrangement because it can route multiple hostnames to different backend ports.

Local names such as these resolve only for clients configured to use the home network’s local DNS. NPM does not make them available remotely by itself. Remote access is a separate design decision; my article points to a VPN approach such as Tailscale rather than treating the local reverse proxy as an internet-access solution.

I chose NPM over Caddy because NPM was available as a one-click ZimaOS app and offered a web interface. That is a convenience choice for my setup, not a measured comparison of performance or security. The sources provide no tested power, cost, or time-savings figures for the arrangement.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.