My custom multi-user self hosted environment/dashboard
[All images have had their names/dates/times/locations/contents etc. randomized so any identifiable data has been effectively redacted]
I've been a relatively long time lurker around here so I figured I should contribute at least something at some point. I started out with a basic Unraid server years ago to replace my relatively small (at the time) 2 bay NAS setup that I had which went from 4TB to 8TB to 28TB, and then bumped way, way up when I got into Unraid. However, that was really just the beginning. Since that time I setup a secondary instance at another location with additional storage. The two Unraid systems now host some services, but there's also a proxmox cluster for redundancy, as well as a few game server hosting computers that run pelican wings. They're all sub-netted together through headscale/tailscale nodes for remote access for users. I had initially experimented with several different dashboards, I tried a few but ended up going with Dashy, which was okay. Then I saw someone running Glance(s?) and another fork called Dynacat -- which I then setup. Dynacat was also slightly better but just wasn't doing what I wanted. I saw someone here post their custom setup and it really knocked my socks off.
So, I built my own mock-up copy of it from scratch before allowing any remote users to join. It too (like so many things in self hosting/homelabbing) quickly kind of got out of hand. It's an entire ecosystem now rather than just a dashboard.
I ended up building out a whole custom server economy where users can earn tokens for earning achievements (yes, I built an achievement system back end complete with animated achievement popups and sound effects... way overkill) and participating in the server by answering surveys, doing weekly tasks, etc. One of the cooler things I built for that is a bot in element that allows users to fix/tag/update album art items in our music library for tokens so that (ideally) our library gets better and better over time. This also has a kind of cool bounty system setup so particularly hard to tag albums/tracks that get passed over more and more get increased bonuses the more they get passed over.
Those tokens can then be used to purchase custom themes, or play in our custom casino that I've been working on (it has a slot machine, blackjack and roulette so far but I plan for much more). I also needed additional ways for them to earn tokens so I built some custom games as well. Drug Lord is my own version of the classic drug dealer sim from way back, and then there's a custom port/rewrite of the classic Battle Chess game from the late 80's early 90's (an old favorite of mine). Battle chess was interesting because I designed a program to perfectly capture every frame of the original animations from the Amiga game in an emulator along with the frame times / speeds for the animations. The result is perfect looking animations that I can control the speed of so I could make them feel more smooth/natural/modern (the original was relatively slow). It has 6 AI difficulty levels for single player, and a multiplayer setup for asynchronous back/forth play as well as real-time play, a replay system, ranking system, and pallete swaps for the game board/characters. The casino and games all have OIDC (they have to for achievements/score tracking/ranks) and I also added internet radio players so users can listen to some tunes while playing.
I also built out a custom local AI image generation tool which also supports face swaps for gifs/images. A custom in-browser arcade library complete with authentic arcade cabinet bezel overlays for each game and CRT shaders as well as high score saving (emulatorjs and romm are the back end for this), and I also customized Seerr and Gamevault. Seerr I built in a whole credit system thing for users to give them specific amounts of requests per month along with OIDC since it didn't have that yet (still doesn't atm iirc).
Gamevault I pretty much completely gutted and reworked, it now has the ability to pull steam assets directly like banners/clear logos as well as the tags and entire game description pages w/ images/webp/gifs and recommended specs. Since I was able to get specs I added the ability for users to add various hardware/computer profiles to their user profiles, and the library can be sorted by how well they can expect each game to perform. It also gives them a ranking for their various hardware. I also added a few other things like custom pages for modded versions of games, custom front end icon/overlays for game size, controller support (also pulled from steam tags), and performance score. Also re-worked the image grid so it's very efficient and loads extremely quickly.
The main dashboard itself can be customized with preset color schemes or custom color schemes, but we also have the fully re-worked themes. I currently have a Matrix theme, an Alien theme, and a retro web theme. Each of these also has their own custom login theme that's purchasable as well, and they all have custom animations and layouts. The Matrix theme scrambles the text and images as the user mouses over them. The alien one loads images in slowly/progressively from very blurry to sharp and has a scanline overlay with bloom, borders around cards also load dotted lines around them slowly. The retro web one has custom 'banner ads' that are created from assets already on the server (clear logos, fanart, banners) on the fly, as well as some custom media pages and purposefully limited color palletes for images/text. Users can also customize their own news pages fully. All entries they add for youtube channels or RSS feeds are added to a database that all users can then choose from later if they want. The elements on the now playing card on the main page can be clicked on and provide extra detail about whatever media users are utilizing -- I also wired in steam IDs to that too, so if a user has their steam ID mapped their current in game status will show there too (yes, clicking that works as well!). I also even hid some easter eggs and stuff around the pages as well, right now it's just some basic stuff like a tetris game and snake, and I also tried setting up a game boy color emulator as an easter egg which worked well too.
The whole dashboard also has a custom animation layer overlay that I plan to do custom overlays for holidays (bats flying during halloween, snowflakes during december, confetti on new years, etc.). This also allowed me to add them to individual pages as well, so the weather page also has purchasable special effects that animate the page based on the current weather (rain, thunderstorm, sleet, hail, fog, etc.).
In addition to these I also setup a whole onboarding process for new users, and built scripts to be able to allow users to setup tailscale, connect, and go through onboarding by just running a single file which has been really nice.
There's a couple of things that are currently broken, the game page used to have feeds from trendingnow.games which was really nice -- but their site has been down for a week or two now so I'll probably end up removing those or reworking them.
One other thing that this allows us to do that's really neat is being able to host older LAN only multiplayer games or games that are too old to run well on modern operating systems. I have some friends that are retro hardware enthusiasts, so being able to run a tailscale node on our network(s) and expose our XP computers solely to the internal network without internet access is pretty awesome. I haven't experimented with retro consoles yet but that might be interesting to try as well. I may end up wiring server stats to the game page, and maybe isthereanydeal and gog as well.
I'm not planning on distributing/publishing any of this stuff. It's just my personal passion project that I wanted to share with the community just to show what all is possible, how far you can take things, and just throw some of my crazy ideas out there. I know some of you other madmen (and ladies?) will take some of this and run with it, so please do.
Also, yes, I did a lot of this with AI coding tools. I know my way around some code, but only enough to be dangerous. That's also why I'm not really comfortable publishing any of it, as I know it's not up to snuff with what any real developer would put out -- nor am I pretending to be anything I'm not. I'm definitely not a developer/programmer. I may have been able to accomplish a lot of this stuff myself by hand but it would have taken multiple years, rather than weeks.
submitted by /u/Logical_Estate_3641
[link]