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,