Hey everyone! π
Over the past few weeks, Iβve been cooking up something in my homelab that started as a “cool idea” and is now a full-blown system I use daily:
Introducing π§± LabPortal β my modular, real-time, self-hosted portal that ties everything together.
What started as a simple dashboard has evolved into a multi-feature control hub with weather, uptime, server stats, project management, sticky notes, calendar, content creation tools, and live visitor analytics. Oh β and itβs all running from my AlmaLinux-powered homelab πͺ.


π οΈ Tech Stack Used
Hereβs a full breakdown of the tools, languages, and stacks powering LabPortal:
βοΈ Backend
- Python + Flask β Lightweight REST APIs (system info, calendar, uptime)
- PHP β Used for AWStats log parsing and serving live visitor counts
- Shell scripts β Basic system operations & monitoring tasks
- Systemd β For running persistent background services
π Frontend
- TailwindCSS β Clean, responsive styling
- Vanilla JavaScript β Dynamic features like weather, calendar, system data
- Google Fonts (Emoji support) β To make it fun and friendly
- Pure HTML5 + CSS3 β No bloat, just speed
π‘ APIs + Services
- OpenWeather API β For the weather widget
- AWStats β Parses unique visitors from raw logs
- Flask CORS β To enable cross-origin access for frontend/backend sync
πΎ Storage & Infrastructure
- Mounted network share β All content and media stored under
/mnt/media/content
- Cockpit β Server management
- FirewallD β For securing APIs
- Fail2Ban β Brute-force protection
- Nginx/Apache β Hosting public and internal services
π Hosting
- AlmaLinux 9 (bare metal)
- Hosted on my own servers in my homelab rack

β‘ Features So Far
Hereβs what LabPortal does (so far):
- β Live System Stats: Uptime, load average, and datetime (auto-refreshing)
- β Weather Widget: Live weather, displayed in the top-right
- β Sticky Notes: Leave yourself reminders or in-progress notes
- β Project Dashboard: View active project titles with a clean UI
- β
Dynamic Calendar:
- Highlights the current day in green
- Days you edit are marked in red
- β
Live Visitor Stats:
- Pulls from AWStats logs for both
declinedstudios.com
andutubemp3.net
- Parsed in PHP and displayed live via a custom “Visitors” panel
- Pulls from AWStats logs for both
π§ Current Development: Content Creation System
The current big feature Iβm working on is the Content Creation System. Here’s the vision:
- π Rich-text editor (WYSIWYG)
- π Upload media to
/mnt/media/content
- ποΈ Schedule posts (future support for multi-platform APIs)
- π·οΈ Tag and organize posts
- π API-ready backend for future Facebook, X/Twitter, YouTube Shorts, and Instagram integrations
Everything is being built in modular panels, so I can move, collapse, or re-order components as needed in future versions. My long-term plan is to have full drag-and-drop module support with persistent layout states.
π§ͺ Whatβs Next?
- π§± Drag-and-drop layout system for UI modules
- π Basic analytics dashboard (engagement, post stats)
- π€ AI-generated hashtags and captions (later, with OpenAI API)
- π§ Global search across notes, projects, and media
- βοΈ Optional cloud backup for important configs
π¬ Final Thoughts
This isnβt just a dashboard anymore β itβs the heart of my homelab. Itβs fun to use, easy to build onto, and 100% mine. I can tweak it, break it, fix it, and learn something new every time.
Thatβs the beauty of building your own tools.
If you’re into homelabs, dev, or web tech β this is one of those projects worth investing time into. And stay tuned… I might open-source the core framework soon.
Cheers,