Tell me your most exotic selfhosted solution, the crazier, the better, no 0815 solutions!
I don’t want to hear about your Plex, your NPM, your notes application or science forbid, your budgeting application. I want to hear the most exotic thing you setup to selfhost, that probably only you and a hand full of people around the world actually use or even need. A problem that you solved in a way, that makes people go WTF. Go!
I’ll start: I live in the mountains, and there is snow, lots of snow. I often tell people “We had 3m of snow last year”, but is that really true? So, I thought to myself: Can you measure snowfall? It seems you can, so I setup a USH-9 ultra sound measuring device, connected it via IC2 to my Home Assistant and now I can tell people with confidence, that we had a total of 3.45m of snowfall last season, with max snow height of 60cm on January 5th.
Future project: I have chickens. They lay eggs. I have cameras. I want to know which hen lays how many eggs. Solution? AI image recognition of the hens (who is who) and if they have laid an egg. Any inputs welcome.
The industry I work in has many many companies. For whatever reason they all seem to use a very similar website template. Job openings are almost always listed on their webpage. Almost always its a plugin from workday or whatever their HR software is. Years ago I noticed that job listings were almost always published to their websites before they appeared on major job sites like linkedin.
I used a business to business website that lists every single company in this industry by location and has a link for each to generate a list of companys and URLS. I monitor this for changes with changedetection.io
So I now have about 800 companies that I am able to monitor for job leads and get notified via NTFY with company, job title and job description.
Its turned off currently cause I am actively employed, but when I was looking about a year ago I had it running hourly and if I look again I will indeed use it
I too have a chicken cam, but no image recognition at this point. However, I have used it to discover that an opossum was breaking in and eating the eggs.
Other than that, the most unique things I have cobbled together are probably these:
- I work from home, so I created an automation using Home Assistant to tie into the Webex API to determine if I'm on a call or busy and, if so, turn on my Do Not Disturb light so that people don't just barge into my office.
- A script my son can run from my OliveTin dashboard to update our Minecraft server (docker container).
- Another script I can run from my OliveTin dashboard to log into my firewall and disable/enable my son's internet.
-- Both of these scripts notify me when they've been run via ntfy.
Future project: I have chickens. They lay eggs. I have cameras. I want to know which hen lays how many eggs. Solution? AI image recognition of the hens (who is who) and if they have laid an egg. Any inputs welcome.
I self hosted searxng, but the problem is after I was done I realised that defeats most of the privacy benefits of searxng: If I'm the only one using it, then I might as well just be using the search engines themselves directly.
So now I also have firefox running in a docker container, searching random junk on searxng every couple of minutes.
I suppose my most well known one is a recreation of the BBC's Ceefax service (https://www.nathanmediaservices.co.uk/ceefax/) - I wrote a program which scrapes the BBC and various other sources for data and turns it into old-style teletext pages. All hosted from my rack in the attic. Not very exotic but still.
I have two! The first is exotic purpose, the second is just tightly integrated so much that it might be only useful to me.
Smashcam
I live on a busy corner, in an otherwise slow and sleepy town right outside the city line. I live between a lot of town services on one side (fire house, library, athletic fields, town hall) and the elementary school on the other side. Pedestrian traffic is very high, the amount of children crossing is very high, bicycles abounds, and the cross street between them is decently high traffic.
So I see a decent amount of car accidents on my corner. 30mph limits on both streets so usually not catastrophic, you might be driving away instead of towed. But the repairs will be substantial on most of these. To provide an objective reality-as-a-service, I set up a camera high up in the eaves of my roof pointed right at the intersection. I've sent the police enough clips that they know where to archive my emails for evidence by routine. I've started training a model to detect car crash noises (and honks) to cut and save the clips automatically. It's not reliable enough yet, but this could become a reasonable pipeline:
Car crash audio detected ->
Notification "Possible crash, do you want to review the footage and send to the po-po?" ->
manual human review to make sure we're not sending false positives ->
hit send ->
email with clip constructed and sent
Photos
This is not exotic in terms of its purpose. Lots or people have self-hosted photo sites (heres a whole chart of them all!)
But none of them integrated with my foss RAW editor darktable.
So I built my own photo site alternative that parses the darktable edit files and DB.
So now on the web, I can see the ☆ ratings I gave the photos in my editor. The tags and labels, etc. I parse the RAW files to show the focus boxes that the cameras write in the metadata when they took the picture, the facial recognition bounding boxes, etc.
And it shows the edit history stack and all the edits from my RAW editor. And of course, it has the left-right swiper to show before/after the photo edits. I can export any size, and it calls out to darktable with command-line control to export with the given edit stack to make the JPG of whatever size I'm requesting.
So yes, alternatives exist. Mine is simply very specialized to a particular editor program. I don't believe I made the repo public, so as far as I know, I (and my family) are the only ones using it. It's probably more featureful than things I have released.
When I lived off grid, I wrote an energy production measurement application. With both hydroelectric and solar going through a 1990s inverter, it was something. Nowadays these are off the shelf for suburban yuppies, but for my DYI-everything homestead, only DIY would do. Measurement was via shunts. I put it online over satellite internet and could watch my production and static consumption from work.
Our car has wifi so you can connect to it and start the heat/ac. It doesn't have 5g/4g just no data wifi so you have to be within ~20 feet to warm it up. The app sucks also, along with connecting to its wifi.
Alexa "Warm Up The Car" -> Home Assistant -> trigger an android phone to run a touch script on the phone to run the stupid app and warm up the car -> then report back it did it correctly.
It still fucking works after 5 years and I refuse to even touch the damn thing, as it's way way too handy when it's cold out.
I have kubernetes cluster running a vanilla warcraft server full of computer controlled bots that play in the world while I'm offline, just chuggs away all day then sometimes I log in and see how the bots are doing and play a little.
I don’t know how exotic hosting a SIEM and EDR (Elastic Security) solution for self hosting ist but I do that. Complete with custom alerts and all. Additionally I use Wazuh for vulnerability management and integrity monitoring on my assets. Also I run a SOAR-like script that enriches my alerts with other SIEM and external Threat Intel data.
In 2016 purchased and jailbroke 20 iPhone 4, and later upgraded to 30 iPhone 5s on iOS 9.3
I wrote a custom theos tweak which injected an HTTP server into Snapchat.
A raspberry pi was running an nginx server as a load balancer across the 30 iPhones.
I developed an Android app called "Casper", which was a 3rd party Snapchat client. It sent http requests to my load balancer server to fetch signed security tokens from a random iPhone, which spoofed that it was the official Snapchat app.
The Snapchat APIs believed my app was the real app, so it could download and view snaps without the sender knowing it was even opened.
Self hosted an iPhone farm :)
Here's a link to my tweet with photos and videos of the setup for anyone interested! https://twitter.com/LiamCottle/status/1406616490783117322
I wanted to know what the airquality was outside my house, but this was hard as multiple houses here use woodstoves, so i needed to compare the quality of air over multiple points to have a proper baseline.
In short, i now run a virtual m2m lora-wan provider for 5 sensors around my town that feed into homeassistant using mqtt, all sensors are battery powered with solarpanels and powered by esp32's.
10 years ago I had a problem:
I burn wood to heat the house. The problem was that many times I had something else to do and couldn’t wait for the fire to go out and close the hatch that lets air in the boiler. If the hatch is left open the air goes thru the boiler and cools it down quicker.
The solution:
I installed a raspberry pi with a usb cd drive. From the cd drive I tied a fishing line via the adjusting arm to the hatch. When the cd drive opens the hatch closes. I then host a website on the raspberry where I can push for example on ”Close the hatch after one hour” and it would do it.
It was a temporary solution and I have had parts for a better arduino solution for years, but here we are 10 years later.
I've recently did something that made my friend go "why the fuck would you even need that?"
I've recently discovered that I can't neither VPN into my VPS nor my home network from my college. Both OpenVPN and wireguard were not working. So, to fix that, I'm running a shadowsocks proxy, which is behind an nginx reverse proxy, through which I connect to my services.
Now, I haven't tested it with my college network yet, but based on other similar reddit posts I've read, it should theoretically work.
I've recently did something that made my friend go "why the fuck would you even need that?"
I've recently discovered that I can't neither VPN into my VPS nor my home network from my college. Both OpenVPN and wireguard were not working. So, to fix that, I'm running a shadowsocks proxy, which is behind an nginx reverse proxy, through which I connect to my services.
Now, I haven't tested it with my college network yet, but based on other similar reddit posts I've read, it should theoretically work.
I’m up for the chicken challenge, dad wants to have chickens, we live too far apart. It’s reusable, plus now you can know which chickens will go to nuggets and which give you omelette
2 years ago , when our 1st child been born, my wife was super stressed about how to raise her. Especially about sleep and feeding times.
I installed Baby monitor on docker and it provided huge help with her stress and with the baby ofc.
Simple but people were like WTF for sure
I have an automation that is triggered by a door open/close sensor that I have attached to the flushing arm in my toilet with a custom made 3d printed mount for the sensor, which triggers a script on the server which connects to the chromecast speaker in the bathroom and plays the final fantasy 7 battle victory theme whenever someone flushes the toilet. It is perhaps my favorite part of my home.
I bought a Samsung Galaxy S4 from my GF like 6 years ago for $50. She of course upgraded her phone. I replaced the OS with LineageOS and slammed the ability to boot from ISOs over USB onto it. I now use it as a backup way to boot from ISOs over microUSB->USB-A in many different forms. It's not as fast as I can get with better USB thumb drives, but in a pinch, it's there for me! I know this isn't exactly me writing code here, but I had to unlock the boot loader, replace the OS, root it, make sure Google Play worked on it (that was a touch of hacking, but again not my code), and stuff like that. So it's a legit device as far as Google Play can tell and all that! Also the S4 has a removable battery so yay!
Yes this is self hosted related because I use these ISOs for server stuff, be it Proxmox VE OS install, OPNSense, or even firmware bootable ISOs (although those I probably should have on a dedicated thumb drive that doesn't require a battery to live lol).
As few years ago, when my son was a teenager, he had selective hearing, would never come to dinner on time, never do his choirs etc.. all he did was play xbox and scream at his friends down xbox live until 2 or 3am.. typically moody teenager!
My wife got close to breaking point... I ended up creating a web app, that would enable and disable his Internet access, or limit his to school websites etc, or set a schedule for his access, which could be selectively ended when he's good.
I then brought a load of those Amazon wifi order buttons, and tied each button to a different feature.. so she literally pressed one button to suddenly get him to his attention.
To be fair, he wasn't terrible, and always did well at school...
The last place I lived was heated with an enormous pellet stove which would run itself out of pellets entirely before letting out an ear-splitting series of beeps and forcibly shutting off for about an hour. To avoid this, I taped an ultrasonic distance sensor to the lid of the hopper and had an ESP32 send me alerts and display the current pellet level on a little OLED.
Not a terribly dumb idea, except for the fact that ultrasonic distance sensors seem to be incredibly bad at measuring a constantly shifting mass of porous pellets. I don't even know how many hours I spent working on an algorithm to get accurate readings, and by the time I moved out it still wasn't quite right. I'll also note that this pellet stove was in the living room, about 5 feet away from where I spent most of my time, and I could've just, ya know, got up and checked the hopper occasionally.
For me, not so WTF but still a little overkill. My Parents have a sauna in the Garden which we occasionally use. But in the winter it’s cold and you don’t want to check outside for the temperature of the sauna until you go in. So my cousin and be build a little WebUI and Python script which allows us to monitor the temperature and control the state of the sauna remotely. 10m from living room garden sauna saved 😅
I used to pull AIS data and filter by sightlines to buzz my Blackberry to let me know when I could see boats out my window.
Long-term plans are to put up a tower and get flight data, ionospheric conditions, weather, lightning, particulate, light quality, as well as a pair of cameras to get sunrise and sunset.
Just about all my projects are (or rather were) on github. The hidden ones are due to redditors trolling or being outright shitheads, so I had to hide some projects temporarily.
Timezone aware clocks
I have a wall of eight timezone aware clocks, with the arms controlled via stepper motors to a single raspberry pi. The Raspberry Pi also controls eight separate OLED displays that are made to emulate VFDs. And then I set each clock to the timezone it corresponds to, pull the weather and temps from the internet and send them to each display, and also show some headlines for the region. When you need to talk to a client, you know what time it is there, what the weather is like, and recent news headlines.
Chore list
I have a chore list that displays on 12"x4" touch screen, with physical electromechanical toggle switches that are controlled by a raspberry pi. This chore list reminds me to clean the litter box, water the plants, pay the car insurance, etc. When I complete a chore, I flip the physical toggle switch and the chore gets marked as done until the next time. After a while, the chore disappears from the display, and the raspberry pi releases the electromagnet and resets the physical toggle switch back to the "undone" position.
Jukebox
I have a physical jukebox I built, that mounts on the wall, that streams music from my Synology. It has a bunch of super satisfying to press clicky tactile LED illuminated arcade buttons for track select, and the track lists are shown on two 4K 12"x4" touch screens. There's two more 1920 curved touchscreens for the marquee to show album art and for navigation. That's a single raspberry pi controlling four separate touch screens and about 50 buttons. When you press a button to play a track, the button locks down, like on the old car radios, but the raspberry pi when switching tracks can physically retract or release the buttons too. There's a software defined jog wheel that has an OLED display to control the volume, but the raspberry pi can turn the physical dial too. That's wired into chatgpt, speech to text and text to speech, with cortana as the voice, and I can say things like "whatever happened to the lead singer of this band?" or "Play a random shuffle of more tracks from this year."
Memories
18x 9" OLED screens that display a photo montage and photo gallery of family pictures all controlled by a raspberry pi.
The Wall
It's a half-dozen salvaged OLED displays built into a false wall behind some sliding shoji screens. The displays are driven by some old piece-of-shit computer and GPU. They display nature scenes. It's an enormous digital window.
Home Health
I have a smart dashboard that tracks my cats, phones, wallets, weather, and a bunch of other info that is displayed on an ipad by the coffee machine.
Daily Guk
It's an old 21" android tablet that displays only good headlines, daily funny comics, weather, upcoming calendar, etc.
Cat Toy
It's a 55" touch screen that entertains my cats. Android stick plugged into the back running some custom Unity3D games.
Walking Timer
I built a timer that tracks how long we walk, and how many laps we do around the block, and then I grab the images from the doorbell camera and use computer vision and gait analysis to automatically detects when we leave, when we return, and how many times we walked past the front door on our laps, and calculates our speed.
CNC Controller
I have a CNC controlled by a Raspberry Pi, which in turn is controlled by an Android tablet. So if the UI crashes, the CNC will continue running the gcode. This could now be replaced by other open source projects that have become available since I created this setup.
RV Sync
I have an all flash NAS at the RV which is set to automatically sync the video & music directories, and a few other directories, between my NAS at my home and the NAS in the RV so that all the contents are available when on the road, even if internet is a bit wonky.
Retired Projects
Cat Litter Robot
This was a litter box, with a Kinect, a web cam, a Fujitsu robot arm, and Amazon's Mechanical Turk. The robot arm was controllable via a web UI and it live streamed the litter box. When a cat did their business, the kinect detected that, weighed the litter box, and then sent a request to mechanical turk to have someone clean the litter box for 25 cents. And then when they were done, two more requests were sent to mechanical turk to have other people independently verify that the video showed the litter box being cleaned adequately.
Giant Waterfall Ring Toss
An art gallery in Los Angeles wanted something as an attraction due to the pandemic, so I salvaged a 55" display, built an enclosure, and installed it in the upper glass portion of the door frame of the art gallery, and people could play the classic "Waterfall Ring Toss" game by mashing a great big button.
Remote Control Cat Toy
I built a web browser controlled remote cat toy with one of those feathers on a wand controlled by a number of servos. And also added a laser point option too. Then had a bunch of web cams live stream the adoptable cats in the shelter. And people could donate a $1 to "play the arcade game" with cats that would get unlocked as people contributed more money.
Planetarium
I built a 12 foot wide classic planetarium driven by a raspberry pi and a lot of really strong high torque servos for a science museum exhibit. Kids could use a jog shuttle dial to rotate the planetary orbits.
The Matrix Camera Capture Rig
I built a cheap camera capture rig for a science museum that works like the Bullet Time rigs, but this was done with cheap point & shoot SONY cameras. Patrons sit on a couch, or pose in a movie set, and the capture rig takes a snapshot, puts a video on the monitor for them that orbits the subjects.
Digital Sandbox RTS
A box of physical "wet sand" that you could play in, that projected an image from three overhead projectors, and you controlled a small army you could send into combat against other people playing in the sandbox. Kind of like a simple Populous game. That was on display at one of the Los Angeles kids science museums for a few years.
My town used to post our garbage pickup schedule as a photo pdf to our town's website.
They tend to change when garbage will be picked up randomly espcially near holidays, so it can be annoying and we'd end up running out in the morning when we heard the truck driving by on 'off' days
The changes always made it into the calendar at least the night before.
I wrote a horrible python abortion to grab the PDF, OCR the data, and then put it into HA so I can have HA turn a light on in my hallway the night before.
These days they make the calendar available as an iCal file so data ingest is way easier.
I wrote my own SMS gateway API with authentication tokens, quotas, rate-limits. This is because I wanted to send SMS without relying on an external API, so I got a 2€/month SIM card and plugged a USB modem (Huawei E169) into my RPi to use with Gammu. I'm using Gotify to log sent and received SMS, and send an SMS whenever my home internet is down or the IP address changes for example. It's plugged into my systems monitoring for critical alerts, and while I offered API keys to my friends, none of them wanted any so I'm the sole user.
Using the matrix protocol to let users on Signal talk to ppl on WhatsApp and combined discord telegram etc, I think i made chat apps more like email, interoperability between chat apps are the best.
Custom rss to iptv solution that monitors Peertube channels, scrapes the videos to grab a m3u8 if available and consolidates it to a iptv vod m3u with xmltv to serve it to my stream station
Mine is a bit exotic I guess. I use Terraform to manage my home lab. I tried all of the docker update solutions out there and they'd always make my Terraform out of sync. So I built my own solution that interacts with an orchestrator, a backend and a front-end.
I use Terraform to create flows for each service. Then the flows interact with the backend to manage the actual updates. The frontend is there to let me see the latest change log of each project before I update.
For my next project I want to set up an oil tank monitor for our heating. Then I can use Prometheus and Grafana to monitor usage. From there I can start making predictions and so on
I do work for multiple organizations and got tired of having to disconnect/reconnect VPN tunnels each time.
Solution: Raspberry Pi. It's got a single Ethernet port on it which makes it perfect. I used Openconnect since it was compatible with Cisco and PulseSecure (at the time). When you establish a tunnel, the routes come in as "kernel routes" assuming you have a split tunnel. I configured IPTables to NAT masquerade out each interface and I set up Quagga, a routing daemon to talk to my main gateway and redistributed my kernel routes into OSPF. That way, any of my devices can now access any networks they need. I did also have to configure my own DNS server since I needed to resolve the different private networks.
The stupid printer didn't have decent Linux support, so after we moved I couldn't change its wifi settings to give it the credentials to the new network. Solution: I created a secondary, isolated SSID on the wifi AP to replicate the old wifi network that the printer knew, and now we could connect to the printer over wifi again. (And security bonus, it was now on an isolated subnet.)
I selfhost text-generation-webui (LLM's), mimic3 (TTS), and whisper (STT) on a pair of GPU's and tie them all together to make self-contained AI voice interactive chatbots and other nasty stuff.
For years, I hosted a PHP script on a personal website that would connect to a weather API, retrieve the weather at my home location, and, depending on it, generate a cute display with HTML/CSS and SVGs. The display looked like a 1500x500 image (though it was a website), where the sun (or moon), clouds (or rain or snow, etc.), were positioned differently based on the weather and time of the day. Additionally, the temperature and other details were displayed.
Then, the script would call an HTML to PDF tool to generate an image from it. This image was, at that time, uploaded to Twitter as my profile banner image. A server cron job would run the script every hour, so my banner would be updated every hour to reflect the weather at my home position.
Why did I do this? I have no idea. Not even sure if anyone noticed, but I could, so I did! Eventually, I ended up turning the script off at some point because it felt childish.
I live with a couple roommates in an apartment. For convenience we create a simple webpage where we could quickly see who's home. It works by querying the router (running OpenWrt) every few minutes for known phones connected to the Wi-Fi. We pretty soon realized that we could actually see which room someone was in pretty consistently based on the signal strength alone.
After that it didn't take long before we exploited it as much as we could, everything from automatically turning on the coffeemaker the first time someone left their room between 7-10am to blasting an alarm if someone left/didn't leave their room at certain times.
Got a server and wanted to know what the temperature was in my room where it runs
Installed VMware on it and a SIEM as a virtual appliance on top, poll the VMware API every minute to get the reading from the temperature sensor so that I can look at it from my phone's web browser.
Overkill: Quite certainly
Useful: Definitely
In 2018 after deciding that I hated ProxMox, that Ganeti was dead (and it was at the time), that Harvester didn't exist yet, that OpenStack was way too complex, and that I was interested in going the Kubernetes/container route (sorry I'm still a VM guy), I decided to write my own self-hosted hyperconverged infrastructure manager. I based it on what little I knew of how Nutanix worked, with a lot of ideas from Ganeti too.
And I named it after drain pipe on a whim at Home Depot.
5 years later I have 16 production clusters, including my own homeproduction (but not including my testing cluster), mostly through finding a niche for it with my employer, and I spend a solid 25% of my free time working on it. It's not quite at a "1.0" release I'd be comfortable with random people using yet, but it's getting close enough for me to start talking about it on social media!
I have 4 kids. I had a kid-management app running at home for a while.
It assigned chores in a rotation, including periodic chores like cleaning out the fridge which didn't need to happen every day. The kid interface had a simple green button they could click to say they'd done their chore.
When THAT happened, their fake bank allowance balance would increase.
The server side piece would track how long they were logged in and lock their screen after 30 minutes of screen time a day
The parent side included a form to track spending (decreasing their balance) and to enable and disable their user accounts on the computer. It could also grant additional screen time if needed.
The kids are older now and like hoarding cash instead of a balance, and they aren't as motivated by screen time as they used to be. So the app is no longer in use.
The only thing slightly different that I self host is WebODM. It's open drone mapping software. You can upload 10s or 100s of photos of an area and it can generate an orthomosaic, kind of like Google maps. It has a lot of other features too.
I don't really use it, I just play with it from time to time.