Self Hosted Nginx Server

Computer networking has always been a fascination of mine. As a personal project to improve my self-hosting and DevOps skills, I hosted my own website using Nginx* (pronounced engine-x). My goal was to create a lightweight and reliable environment to showcase personal projects, host applications, and centralize access to my resume and portfolio. To make the setup both secure and accessible from anywhere, I integrated a Cloudflared* tunnel. This tunnel establishes an encrypted, private connection between my self-hosted services and the public internet, without exposing them directly.
Nginx* plays a critical role as a reverse proxy, routing incoming requests to individual services such as RTSPtoWeb⁺, Jellyfin⁺, or FileBrowser⁺ The server runs on an old Windows 10 (Pro, for added server access) laptop with several config changes to keep uptime as high as possible. Docker* is used to run Linux containers via the Windows Subsystem for Linux (WSL)*, with Portainer* (a GUI for WSL) simplifying the container management process. Each application runs in its own container, and files are synced with the host system through bind mounts. With each container hosted on a separate internal port, Nginx handles SSL and URL routing to deliver a seamless experience.
Looking back, configuring Cloudflared* correctly was the most challenging part of the project. I had never used Cloudflare before and had to learn key networking concepts from scratch. Topics like SSL certificates, CNAME records, and HTTPS protocol were implemented using Cloudflared* configurations, OpenSSL*, and a Nginx reverse proxy*. While difficult, the process was rewarding—Cloudflare provided security and networking features that would have otherwise been inaccessible for a beginner. The result is a self-hosted, cloud-accessible server that supports practical use cases while also showcasing my ability to build and maintain scalable infrastructure.
I have an ongoing list of improvements and features I’d like to implement, but for now, the Nginx server fulfills its main goal: serving as a hub for my portfolio and resume, while also acting as a reverse proxy for applications. Each iteration has taught me more about networking, organization, and file/database management that would have otherwise been foreign to me. Networking has always been a personal interest, and it's been exciting to explore it through a hands-on, real-world project that serves both practical and professional purposes.
For more information about setup and configuration of RTSPtoWEB, Jellyfin, or FileBrowser and how they're used, follow each hyperlink.
* Links marked with an asterisk redirect to the official GitHub repository for that tool.
⁺ Jellyfin is a media server with the ability to stream video files while handling transcoding and port proxying. To learn more click here*.
⁺ RTSPtoWEB is a linux container that converts an RTSP Stream (like one provided by a security camera) to a web accessible link. To learn more click here*.
⁺ FileBrowser is a cloud based storage service, like Dropbox or Google Drive. To learn more click here*.