Skip to content
DavidInfosec.com DavidInfosec.com

Technical discoveries, lessons learned, and helpful tips

DavidInfosec.com
DavidInfosec.com

Technical discoveries, lessons learned, and helpful tips

Docker Container Deployments: How I’ve been refining my homelab

DavidInfosec.com, January 14, 2024March 3, 2024

Nginx Proxy Manager

I recently upgraded from my traditional method of using PfSense’s built in DNS Resolver to translate to my local domain names, and I pointed the DNS in the resolver to a container running Nginx Proxy Manager. There are some upsides to this as everything is able to be issued a certificate by Nginx Reverse Proxy a little easier, but I also noticed some challenges with SSH, since the way SSH works, it doesn’t properly translate on a layer the SSH operates on. You can read more about this issue here

In short, HTTP is layer 7 (Application layer) of the OSI model, and SSH is layer 3 (Network layer); when the connection sees the proxy host, since all the hosts are the pointing to the proxy manager (172.22.22.93), when you try to SSH to a certain host name, (pf.box for example), it will resolve to 172.22.22.93 and you will only be able to SSH into the Nginx Proxy Manager box. This is mainly only for hostnames, so if you remember the IP address of the PfSense box in this example, you can SSH to its IP address at 172.22.22.1 and it will work as normal. The HTTP layer comprises a socket which the proxy manager is able to forward and translate those pieces of information, while at the Network layer, it would have to split apart the packet.

Nginx Proxy Manager Dashboard
Nginx Proxy Manager Dashboard

Nevertheless, the switch so far has piggybacked off of my Email server lab where I’ve been able to challenge myself more into the realm of understanding how Public Key Infrastructure works. I’ve been able to use PfSense to issue certificates for all these boxes, with the addition of Nginx Proxy Manager, and I’ve allocated them in, with my own Root Authority, which signs an Intermediate Certificate Authority certificate, which I can then issue and have a chain of trust. It’s still a little more complex than I had hoped to get it set up, and I want to experiment with ways I can automate the certificate generation process, but being able to configure them semi-manually has opened my eyes up to why the automation part will be so fulfilling to get going.

For my mail server, I was able to use Let’s Encrypt since it was going to the public web, but since this is all local, I had to issue the certificates myself, which is probably why it starts to get a little bit more complex. The other downside is that I have to manually install the certificates myself, but at least I get them installed and then they’re pretty much good to go. I don’t have anymore SSL certificate warnings or malicious site warnings for my main desktop which helps streamline my system administration processes.

The other plus side I’ve had with Nginx Proxy Manager is that I can proxy the port number with the IP address, which means that I can potentially run multiple services on the same container without having to worry too much about what port things are on, since I can allocate them better, and for something like my RSS feed box which runs on a port that might be repetitive to type in, I don’t need to worry about typing it in anymore since the proxy manager calls that for me with the domain name. It’s very seamless.

Some new container deployments

I’ve added Dashy, a beautiful web interface that helps me access all my favorite tools. I’ve allocated some of my resources so that people in the local network can access them when necessary.

Dashy Dashboard
Dashy Dashboard

Next, I’ve added Uptime Kuma, which is a beautiful dashboard to pulse how my servers are doing. I think this is neat because I can set it up to integrate with NTFY, which I have locally deployed as well.

Uptime Kuma Dashboard
Uptime Kuma Dashboard

NTFY is a new addition that helps me with push notifications to my Android device, and I love how well it works for being open source. A major fun aside to this project was that I bit the bullet to try Cloudflare Tunnels, (which I didn’t necessarily want to do my Mail Server in the previous post because that would be harder to proxy) and it works very well, which provides a major advantage that I can now call my own domain for my notifications. It is password protected and runs in a Ubuntu LXC container, just can’t get any better than that.

NTFY Dashboard
NTFY Dashboard

Another amazing tool I found when I was looking at Dashy documentation and stumbled upon the creator’s GitHub, was that the creator created a tool called ‘Who Dat’. I’ve deployed Who Dat because funnily enough, I’ve made a similar tool but it was tied to a paid API. Who Dat is a free API and you can self-host it, so that means I can point it to my domain with Cloudflare Tunnels and have a generous amount of queries on any domain(s). I updated my WHOIS python script to use this API instead of the previous paid one and now I can use it for my general use-case of keeping my domains organized. I was happy to find this one because one of my friends, who also buys a lot of domains, was just about to pay for more credit on an API but loved the project I sent him. Feel free to check it out! I’ll leave the links below for all of these.

Who Dat Whois Tool
Who Dat Whois Tool

I was experimenting with a self-hosted version of Bitwarden, Guacamole, and a self-hosted Wireguard container, which I was wondering if I could set up with Cloudflare tunnels for a VPN, but I think I will table them for somewhere in the near future as I don’t have an immediate need for them.

I’ll be continuing to keep up on more frequent updates with this blog as I’ve been constantly with exploring new technologies and having lots of fun. I’ve had plenty of time to experiment, produce music, work on my websites and software, and study for my CCNA, which I have aimed for February. I feel pretty good about my CCNA studies, which would be a cherry on top to have that certification with all these fun projects.

Take this as a testament though, you see the end-result, but I will also let you know that there were lots of moments, and even now, where I am constantly questioning why something is working because sometimes it just gets complex. There are going to be things that we’re confused, but we need to understand that we can take things one step at a time, and learn by doing. I know more about TLS now than I did yesterday simply because I took the time to mess up, and that helped me understand what doesn’t work, and what does. Whether you’re a technical person or just a friend or family member of mine, I hope this is encouraging!

Helpful Resources

Nginx Proxy Manager
https://www.nginxproxymanager.com

Ntfy – Documentation
https://ntfy.sh

Lets Encrypt
https://letsencrypt.org/

Pfsense
https://pfsense.org

Cloudflare
https://www.cloudflare.com/
https://www.cloudflare.com/products/tunnel/

Bitwarden
https://www.bitwarden.com

Uptime-Kuma
https://github.com/louislam/uptime-kuma
https://uptime.kuma.pet/

Who Dat – Documentation
https://who-dat.as93.net/
https://github.com/Lissy93/who-dat

Dashy – Documentation
https://dashy.to/docs

Guacamole – Documentation
https://guacamole.apache.org/doc/gug

Mail Server post that I was referencing:

Alerting Scam Victims with Self-Hosted Email (Mailcow)

Reddit Post about the TCP layers and SSH with Nginx:

SSH reverse proxy
byu/zeitue inselfhosted

Support Me:

  • TaskRunway.com – Take flight into your favorite tools. Free and Open Source.
  • ReportName.com – An organized approach to reporting cybercrime.
Uncategorized

Post navigation

Previous post
Next post

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • IT Help Desk: Closing The 1st Chapter
  • IT Help Desk – Past The Rush
  • IT Help Desk – Peak Season
  • IT Help Desk – Getting Comfortable
  • IT Help Desk – 2nd Week After Training

Recent Comments

No comments to show.

Archives

  • September 2024
  • August 2024
  • July 2024
  • May 2024
  • March 2024
  • February 2024
  • January 2024
  • October 2023
  • July 2023
  • May 2023
  • March 2022

Categories

  • System Administration
  • Uncategorized
©2025 DavidInfosec.com | WordPress Theme by SuperbThemes