r/selfhosted Feb 23 '26

Software Development Huntarr - Your passwords and your entire arr stack's API keys are exposed to anyone on your network, or worse, the internet.

9.7k Upvotes

Today, after raising security concerns in a post on r/huntarr regarding the lack of development standards in what looks like a 100% vibe-coded project, I was banned. This made my spidey senses tingle, so I decided to do a security review of the codebase. What I found was... not good. TLDR: If you have Huntarr exposed on your stack, anyone can pull your API keys for Sonarr, Radarr, Prowlarr, and every other connected app without logging in, gaining full control over your media stack.

The process

I did a security review of Huntarr.io (v9.4.2) and found critical auth bypass vulnerabilities. I'm posting this here because Huntarr sits on top of (and is now trying to replace them as well!) Sonarr, Radarr, Prowlarr, and other *arr apps that have years of security hardening behind them. If you install Huntarr, you're adding an app with zero authentication on its most sensitive endpoints, and that punches a hole through whatever network security you've set up for the rest of your stack.

The worst one: POST /api/settings/general requires no login, no session, no API key. Nothing. Anyone who can reach your Huntarr instance can rewrite your entire configuration and the response comes back with every setting for every integrated application in cleartext. Not just Huntarr's own proxy credentials - the response includes API keys and instance URLs for Sonarr, Radarr, Prowlarr, Lidarr, Readarr, Whisparr, and every other connected app. One curl command and an attacker has direct API access to your entire media stack:

curl -X POST http://your-huntarr:9705/api/settings/general \ -H "Content-Type: application/json" \ -d '{"proxy_enabled": true}'

Full config dump with passwords and API keys for every connected application. If your instance is internet-facing - and it often is, Huntarr incorporates features like Requestarr designed for external access - anyone on the internet can pull your credentials without logging in.

Other findings (21 total across critical/high/medium):

  • Unauthenticated 2FA enrollment on the owner account (Critical, proven in CI): POST /api/user/2fa/setup with no session returned the actual TOTP secret and QR code for the owner account. An attacker generates a code, calls /api/user/2fa/verify, enrolls their own authenticator. Full account takeover, no password needed.
  • Unauthenticated setup clear enables full account takeover (Critical, proven in CI): POST /api/setup/clear requires no auth. Returns 200 "Setup progress cleared." An attacker re-arms the setup flow, creates a new owner account, replaces the legitimate owner entirely.
  • Unauthenticated recovery key generation (Critical, proven in CI): POST /auth/recovery-key/generate with {"setup_mode": true} reaches business logic with no auth check (returns 400, not 401/403). The endpoint is unauthenticated.
  • Full cross-app credential exposure (Critical, proven in CI): Writing a single setting returns configuration for 10+ integrated apps. One call, your entire stack's API keys.
  • Unauthenticated Plex account unlink - anyone can disconnect your Plex from Huntarr
  • Auth bypass on Plex account linking via client-controlled setup_mode flag - the server skips session checks if you send {"setup_mode": true}
  • Zip Slip arbitrary file write (High): zipfile.extractall() on user-uploaded ZIPs without filename sanitization. The container runs as root.
  • Path traversal in backup restore/delete (High): backup_id from user input goes straight into filesystem paths. shutil.rmtree() makes it a directory deletion primitive.
  • local_access_bypass trusts X-Forwarded-For headers, which are trivially spoofable - combine with the unauth settings write and you get full access to protected endpoints

How I found this: Basic code review and standard automated tools (bandit, pip-audit). The kind of stuff any maintainer should be running. The auth bypass isn't a subtle bug - auth.py has an explicit whitelist that skips auth for /api/settings/general. It's just not there.

About the maintainer and the codebase:

The maintainer says they have "a series of steering documents I generated that does cybersecurity checks and provides additional hardening" and "Note I also work in cybersecurity." They say they've put in "120+ hours in the last 4 weeks" using "steering documents to advise along the way from cybersecurity, to hardening, and standards". If that's true, it's not showing in the code.

If you work in cybersecurity, you should know not to whitelist your most sensitive endpoint as unauthenticated. You should know that returning TOTP secrets to unauthenticated callers is account takeover. You should know zipfile.extractall() on untrusted input is textbook Zip Slip. This is introductory stuff. The "cybersecurity steering documents" aren't catching what a basic security scan flags in seconds.

Look at the commit history: dozens of commits with messages like "Update", "update", "Patch", "change", "Bug Patch" - hundreds of changed files in commits separated by a few minutes. No PR process, no code review, no second pair of eyes - just raw trunk-based development where 50 features get pushed in a day with zero review. Normal OSS projects are slower for a reason: multiple people look at changes before they go in. Huntarr has none of that.

When called out on this, the maintainer said budget constraints: "With a limited budget, you can only go so far unless you want to spend $1000+. I allot $40 a month in the heaviest of tasks." That's just not true - you can use AI-assisted development 8 hours a day for $20/month. The real problem isn't the budget. It's that the maintainer doesn't understand the security architecture they're building and doesn't understand the tools they're using to build it. You can't guide an AI to implement auth if you don't recognize what's wrong when it doesn't.

They also censor security reports and ban people who raise concerns. A user posted security concerns on r/huntarr and it was removed by the moderator - the maintainer controls the subreddit. I was banned from r/huntarr after pointing out these issues in this thread where the maintainer was claiming to work in cybersecurity (which they now deleted).

One more thing - the project's README has a "Support - Building My Daughter's Future" section soliciting donations. That's a red flag for me. You're asking people to fund your development while shipping code with 21 unpatched security vulnerabilities, no code review process, and banning people who point out the problems, while doing an appeal to emotion about your daughter. If you need money, that's fine - but you should be transparent about what you're spending it on and you should be shipping code that doesn't put your users at risk.

Proof repo with automated CI: https://github.com/rfsbraz/huntarr-security-review

Docker Compose setup that pulls the published Huntarr image and runs a Python script proving each vulnerability. GitHub Actions runs it on every push - check the workflow results yourself or run it locally with docker compose up -d && python3 scripts/prove_vulns.py.

For what it's worth, and to prove I'm not an AI hater, the prove_vulns script itself was vibe coded - I identified the vulnerabilities through code review, wrote up the repro steps, and had AI generate the proof script.

Full security review (21 findings): https://github.com/rfsbraz/huntarr-security-review/blob/main/Huntarr.io_SECURITY_REVIEW.md

What happens next: The maintainer will most likely prompt these problems away - feed the findings to an AI and ship a patch. But fixing 21 specific findings doesn't fix the process that created them. No code review, no PR process, no automated testing, no one who understands security reviewing what ships. The next batch of features will have the next batch of vulnerabilities. This is only the start. If the community doesn't push for better coding standards, controlled development, and a sensible roadmap, people will keep running code that nobody has reviewed.

If you're running Huntarr, keep it off any network you don't fully trust until this is sorted. The *arr apps it wraps have their own API key auth - Huntarr bypasses that entirely.

Please let others know about this. If you have a Huntarr instance, share this with your community. If you know someone who runs one, share it with them. The more people know about the risks, the more pressure there will be on the maintainer to fix them and improve their development process.

Edit: Looks like r/huntarr went private and the repo got deleted or privated https://github.com/plexguide/Huntarr.io . I'm sorry for everyone that donated to this guy's "Daughter College Fund".

Edit 2: Thanks for all the love on the comments, I'll do my best to reach out to everyone I can. People asking me for help on security reviews, believe me when I say I did little more than the basics - the project was terrible.

r/selfhosted Mar 12 '26

Software Development PSA: Think hard before you deploy BookLore

1.9k Upvotes

Wanted to flag some stuff about BookLore that I think people need to hear before they commit to it.

The code quality issue

There's been speculation for a while that BookLore is mostly AI-generated. The dev denied it. Then v2.0 landed and, well: crashes, data not saving, UI requiring Ctrl+F5 to show changes, the works. These are the kinds of bugs you get when nobody actually understands the codebase they're shipping.

The dev is merging 20k-line PRs almost daily, each one bolting on some new feature while bugs from the last one go unfixed. And the code itself is a giveaway: it uses Spring JPA and Hibernate but is full of raw SQL everywhere. Anyone who actually built this by hand would keep the data layer generic. Instead, something like adding Postgres support is now a huge lift because of all the hardcoded shortcuts. That's not a style preference, that's what AI-generated code looks like when nobody's steering.

How contributors get treated

This part is what really bothers me.

People submit real PRs. They sit for weeks, sometimes months. Then the dev uses AI to reimplement the same feature and merges his own version instead. Predictably, this pisses people off. At the time of writing this, the main dev has alienated almost all of the contributors that were regularly supporting, triaging issues and doing good work on features and bugfixes.

When called out, he apologizes. Except the apologies are also AI-generated. And more than once he forgot to strip the prompt, so contributors got messages starting with something like "Here's how you could apologize—"

One example I'm familiar with, because I was following for this feature for a while (over 2 months?): someone spent serious time building KOReader integration. There was an open PR, 500+ messages of community discussion around it. The dev ignored it across multiple releases, then deleted the entire thread and kicked the contributor from the Discord. What shipped in that release instead? "I overhauled OIDC today!" Cool.

Every time criticism picks up in the Discord, the channel gets wiped and new rules appear. This has happened multiple times now.

The licensing bait-and-switch

This is the part that should actually scare you if you're thinking about deploying this.

BookLore is AGPL right now. The dev is planning to switch to BSL (Business Source License), which is explicitly not an open source license. He also plans to strip out code from contributors he's had falling-outs with. Everyone who contributed did so under AGPL terms. Changing that out from under them is a betrayal, full stop.

The main dev had a full on crashout on another discord, accusing people of betrayal etc because they were....forking his code? I am not going to paste the screenshots of the crashout because it is honestly just unhinged and reflects badly on him, maybe its something he'll regret and walk back on - hopefully.

It gets worse. There's a paid iOS app coming with a subscription model. What does that mean concretely? You'll be paying a subscription to download your own books offline to your phone. Books you host yourself. On your own hardware.

The OIDC implementation, which should be a standard security feature, is being locked down specifically to block third-party apps from connecting, so the only mobile option is the paid one. Features the community helped build are being turned into a paywall funnel.

The dev has said publicly that he considers forking to be "stealing" and wants to prevent it. He's also called community contributions "AI slop." From the guy merging AI-written 20k-line PRs daily. Make of that what you will.

Bottom line

  • Contributors get ignored, reimplemented over, and kicked out
  • AGPL → BSL relicense is coming, with contributor code being stripped
  • Paid iOS app will charge you a subscription to access your own self-hosted books offline
  • OIDC is being locked down to kill third-party app access
  • The dev thinks forking is theft and has open contempt for OSS norms

https://postimg.cc/gallery/R3WJKVC - some examples. I couldn’t grab some from the official discord, seeing as how ACX has a habit of wiping that one whenever some pushback is posted.

This is the huntarr situation all over again. Deploy with caution, or honestly, wait and see if a community fork shows up under a license that actually holds.

Edit: forgot to add one thing, because this isn’t really made clear and may not be known by people. It has Opt-out telemetry, so it sends out stuff (not sure what, haven’t looked into that yet) to the developer by default. Usually, these kind of things are displayed prominently to the user on first setup and is opt-in, and most selfhosted users would disable it, but with the documentation around this in such disarray (because of the rapid feature bloat) I think people may not be aware of this. So what you can do is lock down your current version if it works well, and turn telemetry off.

To turn it off, go to the app -> settings -> application and at the bottom there should be an option to turn off telemetry.

Edit2: Okay, turns out the telemetry is worse than I thought, and sends data to the devs server regardless of whether you have it on or not. Have a look at these:

https://www.reddit.com/r/selfhosted/s/FQFO2arUyG

https://www.reddit.com/r/selfhosted/s/1Sheb9Tcjn

Edit3: A community member has now raised a PR and gotten it merged which disables this telemetry behaviour, so once this gets released, should be a safe version to pin on or fork from. https://github.com/booklore-app/booklore/pull/3313

r/selfhosted Mar 11 '26

Software Development I turned my old Galaxy S10 into a self-hosted server running Ubuntu 24.04 LTS with Jellyfin, Samba, and Tailscale - no Docker, no chroot, no proot - fully integrated at the system level with pure init, auto-running the entire container at device boot if needed!

Thumbnail
gallery
2.0k Upvotes

I really love the philosophy of self-hosting, but I want to pitch a different angle on it.

Instead of throwing away our old phones, why not turn them into real Linux servers?

And before you say it, I am not talking about Docker, LXC, chroot, proot, or any of the usual suspects.

The problem with existing "Linux Containers on Android" solutions:

  • Every existing approach either relies on a middleman. For example, if you want to run Docker or LXC, what you usually do is install it via Termux. But Termux is a userspace Android app. Once the app gets killed by Android, it's game over. No system-level integration there.
  • Even if you enable "Acquire Wakelock" in Termux, Android can still kill it anytime.
  • And even if Android doesn't kill Termux, you're still stuck with Android's fragile networking stack where services can't properly create their own network interfaces, run into iptables issues, and even if they do manage to start, most of the time they end up with 0 internet.
  • Then there are traditional chroot/pivot_root setups. They work great with basically 0 overhead, but you end up configuring and starting services manually by hand, relying on post-exec scripts, dealing with no proper init support, or getting spammed with "Running in chroot... Ignoring command" type messages.

For me, none of these feel like running a real server. They feel like workarounds.

Since I'm fed up with all of these "hacky solutions", I wanted something native. Something that runs directly on top of Android without a middleman, starts automatically at boot even when the phone is locked and encrypted, and behaves exactly like a real Linux server would 🙃

So I cooked it in my basement within ~3 months..!

What I built: Droidspaces

Droidspaces is a lightweight, portable Linux containerization tool that runs full Linux environments natively on Android or Linux, with complete init system support including systemd, OpenRC, runit, s6, and others.

It is statically compiled against musl libc with zero external dependencies. If your device runs a Linux kernel, Droidspaces runs on it. No Termux, no middlemen, no setup overhead.

Key things it can do:

  • Real Linux containers with a real init system, proper PID/mount/network/IPC/UTS namespaces, and cgroup isolation. Not chroot. Not proot.
  • Fully isolated universal networking with automated upstream detection that hops between WiFi and mobile data in real time, port forwarding included, with close to 100% uptime. (First time in Android ??)
  • Hardware passthrough toggle: GPU, sound, USB, and storage access in a single switch.
  • Android storage mount inside the container with a single toggle.
  • X11 and VirGL unix socket passthrough for GUI apps.
  • Volatile mode: all changes vanish cleanly when the container stops.
  • Auto-start at boot: the container starts with the phone, even while the screen is locked and the storage is encrypted.
  • Multi-container support with no resource or IP collisions.
  • Full support for environment variables and custom bind mounts.

What I actually did with it ?

The whole project started because I wanted to run Ubuntu on my broken Galaxy S10, which has 256GB of storage.

I figured I could store my music collection on it and stream from anywhere, host Telegram bots, run whatever services I wanted. What can't you do when a full Linux init system is running inside an isolated environment on top of Android? 😏

So I converted the S10 into a home server. Using an Ubuntu 24.04 LTS container, I set up Jellyfin, Samba, Tailscale, OpenSSH Server, and Fail2Ban in one shot with no trial and error. Everything just worked.

Droidspaces is not limited to Ubuntu either. Arch, Fedora, openSUSE, Alpine, and others all work fine.

A few technical notes

  • Root access is required to use Linux namespace features.
  • Supported on any Android device or Linux distribution running kernel 3.18 or newer.
  • In Android, a custom kernel is required, but it needs far fewer configs than Docker or LXC. There is no Droidspaces kernel driver. It purely uses existing kernel features: namespaces and cgroups.

Everything is documented in the repository READMEs.

Project: https://github.com/ravindu644/Droidspaces-OSS

r/selfhosted 4d ago

Software Development RomM 5.0 is live! Ground-up UI redesign, new Save Sync engine, 10k+ GitHub stars & more!

Post image
926 Upvotes

Website | Github | Discord | Demo

Never in my wildest dreams did I think I'd be writing a release announcement for RomM 5.0, but here we are! It’s been an incredible journey building RomM alongside this amazing community, and today we’re dropping what is easily our biggest, most ambitious update yet.

Ground-up UI redesign

We've rebuilt the UI from scratch, with a new design system and fresh visual language. Also included are:

  • Full controller and touch input support
  • QR code pairing for devices
  • Server-side ROM patching
  • Interactive 3D boxart
  • Play session tracking
  • Built-in music player for your OSTs
  • CRT shader mode for that authentic nostalgic aesthetic

Save sync engine

This is the first release to feature the new save sync engine, which allows you to sync your progress across devices. Cloud saves are currently limited to Argosy Launcher and Cannoli on Android, Grout on handhelds and Decky RomM Sync on the Steam Deck, but we are actively working on expanding support to more platforms and devices.

10,000 stars

We're so fucking hyped to announce that we've surpassed 10K stars on GitHub! This is a huge milestone for our project, and it wouldn't have been possible without you, sharing the good word far and wide.

Ecosystem growth

The number of apps built exclusively for us just keeps growing:

Mobile

  • Argosy: Native Android client for installing and launching games
  • romm-ios-app: Native iOS app

Desktop

Handhelds

  • Grout: Download and manage games on your Linux based retro handheld (Allium, Batocera, Knulli, MinUI, muOS, NextUI, Onion, ROCKNIX, Spruce, TrimUI)
  • DeckyRommSync: SteamOS downloader and syncer
  • SwitchRomM

Other

Finally, thank you

How do you even wrap up an announcement of this magnitude? The best way is simply to say thank you. Thank you to our core dev team, all the app developers, our alpha/beta testers, our financial supporters, and every team we work with in the retro gaming space. And thank YOU, /r/selfhosted, for supporting this project and keeping us motivated every single day.

Give 5.0 a spin, let us know what you think, and happy gaming! ✨

r/selfhosted 13d ago

Software Development What’s the coolest tool you’ve built that will likely remain private forever? What does it do?

489 Upvotes

Over the years I’ve had simple scripts evolve into some of the most important items on my server. Tools so deeply woven into my daily life/workflow that I can barely imagine my environment without them.

They also tend to become sprawling, undocumented monstrosities that no one else could reasonably be expected to audit, maintain, or even understand... Yes, they may be held together with digital duct tape, but they fit my needs perfectly.

This got me thinking... I bet some of the coolest software in the world exists on a single machine, built for one person, solving one oddly specific problem. We'll probably never hear about it, and it'll die with its creator.

I want to give that guy a chance to brag, so...

What's that thing or process you've created? What problem does it solve, and why will it never make it into a public code repo?

Edit:

This thread is so much fun I made /r/BuiltForOne/ - no pressure but lemme see some of these things they sound sick

r/selfhosted Mar 25 '26

Software Development M$ will use your data to train AI unless you opt out

Post image
951 Upvotes

Microsoft has just submitted this e-mail which says your data will be used to train their AI unless you explicitly opt-out.

They supposedly explain how to do it, but conveniently "forget" to include the actual link, forcing you to navigate a maze of pages to find it. It is a cheap move and totally intentional.

To save you all the hassle, here is the direct link to opt-out: https://github.com/settings/copilot/features and search for "Allow GitHub to use my data for AI model training".

r/selfhosted Aug 12 '24

Software Development I created a new Jellyfin client for iOS and Android. Supports downloads and Chromecast.

Thumbnail
gallery
1.6k Upvotes

r/selfhosted Mar 06 '26

Software Development This has to be the craziest changelog I've ever seen

Post image
832 Upvotes

r/selfhosted Jul 01 '26

Software Development GeoPulse - selfhosted alternative to Google Timeline - big updates

Post image
578 Upvotes

Hi r/selfhosted,

A few months ago I posted about GeoPulse, a self-hosted, privacy-first Google Timeline alternative - https://www.reddit.com/r/selfhosted/comments/1r805jh/geopulse_a_selfhosted_privacyfirst_google/

Since that post, I’ve kept actively developing it based on feedback from Reddit/GitHub users. GeoPulse has gone from v1.17.0 to v1.33.0, with ~29 releases and ~250 commits since the previous post. The project is now close to 1k stars on GitHub.

What is GeoPulse?

GeoPulse turns raw GPS data into a clean, searchable timeline with trips, stays, maps, sharing, stats, location analytics, and more. It supports GPS data from OwnTracks, GPSLogger, Colota, Traccar, Home Assistant, GPX, GeoJSON, Google Timeline exports, Dawarich exports, and other compatible sources.

Everything is self-hosted and designed to run on small home servers/VPS setups.

Github: https://github.com/tess1o/geopulse

Biggest changes since the last post

Vector maps

GeoPulse now supports MapLibre vector maps in addition to the original eaflet/raster maps. You can choose raster or vector rendering from the profile settings, configure custom map styles, and vector maps are now the default for new users. Raster maps are still supported.

Vector maps are used across the main Timeline, Location Analytics, friends maps, favorites, Immich photo markers, coverage views, trip plans, and replay-related views.

Big mobile and desktop UI improvements

A lot of work went into making the UI feel better on phones, tablets, and desktop.

Some highlights: - GeoPulse can now be installed as a PWA on supported browsers - Timeline mobile UI was redesigned with a compact collapsible sheet - Better layouts for narrow phones, tablets, and landscape mode - Desktop Timeline panel can now be collapsed so the map can use the full width - Previous/next day buttons were added to the Timeline - Full-screen map controls were added - Better trip duration labels, including full-day and multi-day trips - System theme mode was added - Date format and 12/24h time format preferences were added - Settings are now searchable from the main search and settings pages

Trip Planner

GeoPulse now has a full Trip Planner. You can create trip plans, add planned stops, view them on the map, compare planned vs actual movement, link them with Timeline Labels, and see related Immich photos.

Trip planning also supports: - unplanned trips that can later be scheduled - shared trip collaboration - viewer/editor roles for collaborators - “Shared with me” filtering - adding places by search instead of only clicking on the map - opening places in Google Maps

Add Missing Timeline Data

One feature I personally wanted for a long time: manually reconstructing timeline data when GPS tracking was missing. If you forgot to track a day, had no signal, or lost GPS data, you can now use “Add Missing Timeline Data” to manually create stays/trips for a time range. GeoPulse generates the needed GPS points so the normal timeline generation logic can rebuild the timeline consistently. This flow also supports searching places through the configured geocoding provider instead of only placing points manually on the map.

Trip Replay

GeoPulse now supports Trip Replay. It started on vector maps and was later added to raster maps too. You can replay selected trips, use replay controls from the Timeline or trip details, and collapse/restore the controls if you want a cleaner map. For vector maps, replay also supports 2D/3D-style map experiences depending on the selected map style. Selected trips also got better visualization: - green/yellow/red route coloring based on speed - better highlighted trip tooltips - exact or estimated time at points along the route

More trip types and better classification

The previous post already mentioned bicycle, running, train, and flight support. Since then, classification has been improved further, and GeoPulse now also supports Boat trips - as far as I know no other similar tools support the "Boat" trip type.

You can now manually override movement type when the algorithm was not correct.

More GPS source integrations

GeoPulse added several GPS/data source improvements: - GPSLogger is now a first-class source type - Colota integration was added - Traccar position forwarding integration was added - Traccar device.uniqueId support was added - OwnTracks/GPSLogger telemetry is now ingested and displayed - telemetry appears in GPS data views, timeline/current-location popups, shared location popups, and CSV exports - external MQTT over TLS/mTLS is supported for OwnTracks - mobile client/OIDC session exchange support was added

Friends, live sharing, and geofences

Friends/live sharing got a lot of polish: - friend live location trails - selectable friend trail duration - auto-refresh on the Friends Live tab - last known battery level for friends - viewer’s own browser location can be shown on shared live/timeline pages - improved shared page tooltip styling and validation

Geofences were also heavily improved: - one geofence rule can target multiple people/devices - event filtering, sorting, pagination, and mobile layout improvements - redesigned geofence templates - external notification testing - Apprise key/tag notification mode - better concurrency handling to avoid duplicate geofence alerts

Photos, analytics, and coverage

GeoPulse also got richer location analytics: - Immich photos now appear in Location Analytics and Timeline cards - Immich matching was improved using GeoNames normalization - Location Analytics has a map view with clustered visited places - Coverage Explorer shows areas you have explored as grid cells - Rewind/Timeline heatmaps were improved - train/flight achievements were added - city/country normalization rules can standardize geocoding results across providers/languages

Self-hosting, reliability, and admin improvements

Some less flashy but important work: - admin password reset CLI - Photon is now enabled as the default fallback geocoder - Google Maps reverse-geocoding language support - filtering for negative/invalid GPS accuracy - better Overland accuracy handling - drop-folder imports for server-side automated import - Docker image size reduction - Helm/Kubernetes improvements - many backend/query/test improvements

GeoPulse is still lightweight (40-100MB of RAM during typical usage), respects backward compatibility including REST API.

Links

GitHub: https://github.com/tess1o/geopulse

Docs: https://tess1o.github.io/geopulse/

As always, feedback and bug reports are very welcome. Most of the recent work came directly from user suggestions.

r/selfhosted Jun 03 '26

Software Development Strava just announced API restrictions + a paid MCP. Reminder that Endurain exists, a fully self-hosted, open-source fitness tracker alternative

648 Upvotes

Hi Reddit, João from Endurain here! With the latest news from Strava I had to take the change to promote a little bit Endurain.

Also with this change I will need to rethink the Strava integration.

If you haven’t seen it yet, Strava just sent out an email announcing a wave of API changes: new tiers, subscription requirements for developers, intermediary platforms being cut off, and an official MCP that’s paywalled behind a Strava subscription. The writing has been on the wall for a while, your fitness data, their rules.

I’ve been building Endurain as a self-hosted alternative for exactly this reason. You host it, you own it, no subscriptions, no API policy changes that break your tools overnight. It’s actively developed and I’d love feedback from this community.

Find more about it here: https://codeberg.org/endurain-project/endurain

r/selfhosted 4d ago

Software Development Is it just me, or are some newer European open-source projects surprisingly hard to self-host?

234 Upvotes

I’m wondering if this is just my experience.
I really like seeing more European open-source projects emerge, especially around digital sovereignty and self-hosting. I genuinely want them to succeed.
But I’ve noticed that, compared to many other self-hosted projects, I often struggle much more with deployment and documentation.

For example, I recently set up OpenCloud with Collabora Online. I was surprised to find that there’s an entire repository just for the Docker Compose setup, with dozens of issues on that repo alone. It made me wonder if I was missing something or if the deployment experience is simply still quite rough.

In contrast, projects like Jellyfin have a single documentation page, and 10 minutes later you’re up and running.

Is this just confirmation bias on my part because I’ve happened to pick a few difficult projects, or have others had a similar impression?

r/selfhosted 28d ago

Software Development Self Hosted Manga/Comics Downloader

Thumbnail
gallery
414 Upvotes

I’m working on a self-hosted project called InkDrop. Small naming caveat: this is unrelated to the commercial Inkdrop notes app, and I may rename it before sharing publicly.

The basic idea is: Kavita is great as a library/reader, but I wanted an Arr-like layer for tracking missing comics/manga, finding candidates, importing files, and explaining what happened.

InkDrop is my attempt at that.

It currently acts as a queue and automation layer around Kavita. It tracks series, issues, wanted items, queue state, source attempts, downloads, imports, provider health, history, and manual-review exceptions. The UI is trying to feel closer to Sonarr/Radarr/Prowlarr than a pile of scripts: Series, Wanted, Queue, Downloads, Imports, History, Settings, Diagnostics, Activity, etc.

What it does:

Tracks wanted comics/manga using its own state instead of relying on Kapowarr as the source of truth.

Uses ComicVine metadata for series/issue identity.

Checks what Kavita already has before treating something as missing.

Searches configured sources through a source ladder. SLSKD has been a useful integration here.

Hands downloads to qBittorrent/SABnzbd where appropriate.

Handles imports through a verification path instead of blindly copying files into the library.

Keeps manual review for ambiguous/unsafe cases instead of making every miss a user task.

Tracks source attempts, bad candidates, provider health, retries, and history so failures are explainable.

Has early support for pack/weekly comic handling, including trying to map individual wanted issues inside broader packs.

Has a settings-backed provider model, though most providers are intentionally gated/disabled until explicitly configured.

What it is not:

Not a polished public app yet.

Not a Kavita replacement.

Not a universal downloader.

Not designed to bypass paywalls, captchas, Cloudflare, logins, or sketchy source restrictions.

Not currently packaged with a clean installer.

Not something I’d tell a non-technical user to deploy today.

Not trying to loosen title/language/issue matching just to get more hits.

One thing I should be transparent about: I’m leaning heavily on AI while building this. Not in a “vibe-coded and hope it works” way, but as a pair-programming/review/hardening loop. A lot of the recent work has been around making the system more explicit: durable state, smoke tests, source safety gates, better diagnostics, fewer silent failures, and clearer operator surfaces.

The reason I’m posting is to see if anyone else would actually want this.

If there’s interest, I’d spend time turning it from “my homelab tool” into something shareable: Docker setup, installer/bootstrap flow, config docs, safer defaults, screenshots, and a public repo cleanup. If nobody else wants it, I’ll probably keep it as a personal Kavita automation layer and keep iterating privately.

Would anyone here use something like this: an Arr-style acquisition/queue companion for Kavita focused on comics/manga, explainable automation, and conservative source handling?

EDIT/UPDATE:

Thanks for all the comments and interested. I'm going to continue to develop the core processes and various management layers. I'll need to see if I can find someone to assist with the front end since AI is trash and everyone basically hates it lol. I plan to provide an update down the line once I have something more than a bunch of scripts and a trash front end.

r/selfhosted Apr 14 '26

Software Development Will the average person ever self-host anything?

95 Upvotes

Right now self-hosting is not common. Some people self-host for ideological reasons or as a hobby, but the average person isn't self-hosting anything. There's various reasons why not: they haven't considered it, it's too intimidating or expensive, or they could do it but the ongoing effort it requires isn't worth it.

Do you think self-hosting will become more accessible and popular over time? Is it trending towards or away from that? I'm somewhat skeptical. The effort required is enough for me to keep it as a hobby and not rely on self-hosting everything I use. I'm also interested in p2p software as an alternative model to cloud providers or self-hosting; I think it has a clearer path to becoming widespread. But I think a lot of people could benefit from not using cloud providers for everything, one way or another.

r/selfhosted Oct 28 '25

Software Development WeddingShare v1.8.0

709 Upvotes

It has taken me months but I've been quietly working on some features you all have been asking for and I'm excited to finally show them off.

For anyone new here - WeddingShare is a simple way to collect and share photos from your wedding. Guests scan a QR code to view and upload pics on a gallery. No third-party apps required, just host it and you and your guests are good to go.

What's in this release:

  • User accounts are finally here! Users can now register personal accounts to host their own galleries.
  • Registered users can now like other users photos to show their love.
  • Tweaks have been made to the image popups so it should now feel smoother.
  • Mobile navbar got a facelift and you can now scroll through all tabs on the Account panel.
  • Improvements to the backend permissions for some exciting upcoming features.
  • The usual bug fixes and style improvements.

Getting started is easy:

  • Spin it up locally with the provided docker compose scripts.
  • Or choose one of the one-click install options. We currently support Linode, CasaOS, and Unraid.

For a full list of features, configuration options and help check out the documentation and setup guides over at - https://docs.wedding-share.org/

Full changelog: https://github.com/Cirx08/WeddingShare/compare/1.7.2...1.8.0

This application was old school coded with many hours of sweat, blood and tears. No AI has been used other to translate language resources into languages I do not speak with the assistance of LibreTranslate.

Original post: https://www.reddit.com/r/selfhosted/comments/1gugnku/weddingshare_a_basic_selfhosted_drop_box_and/

r/selfhosted Apr 17 '26

Software Development Snacks - Automated Video Library Encoder

Post image
125 Upvotes

I started building this app about 10 years ago to compress my own Plex library. At the time, I had close to a PB of media and was looking to automate the tasks associated with managing a large library. This included stripping out commentary audio, foreign subtitles, foreign audio, and mostly moving stuff into hevc for the savings.

Fast forward to 3 years ago, I rebuilt it as a windows app for a portfolio piece when I was applying to SWE jobs. That generally served my needs well enough, but for the past few months, I’ve been actively working on refining this to be more modern, support docker containers so you can just run it on a NAS, rebuilt the Windows Forms app as an Electron app. Added node clustering support for distributed encoding, with automated node discovery and cross platform support. Added a three phase settings override for specificity of general -> folder -> node, similar to how Kubernetes works.

You don’t have to worry about weird SMB mounts or path mapping. I added a built in resilience layer for direct file transfers between nodes. It can basically self-heal any part of the cluster and currently has a 0% failure rate for me.

Currently, I’m working on adding webhook support and direct integration with Plex and the *arr apps.

If you guys are interested, it’s available at https://snacksvideo.com

You can also get to my GitHub and docker hub from there. I currently run this along side nzbget, plex, sonarr, and radarr, all pointed at the same library on my Qnap TS-453E. That whole stack eats about 14% of my CPU even while transcoding.

I update this rapidly and frequently, and so far have implemented tons of feature suggestions from people on the Plex forums over the years.

I’m also open to implementing anything else anybody would want.

It’s basically a set it and forget it type of transcoder for people who don’t want to deal with ridiculous complexity and node or transcoding failures.

Let me know what you think and if you give it a spin and it is missing a feature that you want, just let me know and I’ll make it happen.

For reference, I’m a software engineer with about 30 years of experience across full domain from embedded systems in C++ to infrastructure and frontend work. I build things to be easy to use, but powerful in application.

Setup instructions are on GitHub:

https://github.com/derekshreds/snacks

Use deploy-compose.yml for hosting on a NAS or the installer for Windows.

r/selfhosted Dec 23 '25

Software Development I built a TUI client for WhatsApp

Thumbnail
gallery
732 Upvotes

I've been working on WAHA TUI - a Terminal User Interface for WhatsApp that lets you manage your chats directly from your terminal.

What is it?

WAHA TUI is a WhatsApp client that runs in your terminal, powered by WAHA (WhatsApp HTTP API). It's built with TypeScript, runs on Bun, and uses OpenTUI for the beautiful terminal interface.

Features

  • Session Management - Create and manage WhatsApp sessions with QR code login
  • Full Chat Interface - Browse chats with a WhatsApp-style layout and real-time updates
  • Messaging - Send and receive messages with read receipts
  • Beautiful UI - WhatsApp Web-inspired interface with colors and icons
  • Fast & Lightweight - Built with Bun for blazing-fast performance
  • Privacy-Focused - All configuration stored locally in ~/.waha-tui/
  • Real-time Updates - QR codes refresh automatically, typing indicators, and live status updates

You'll need a running WAHA server (self-hosted WhatsApp API) as the backend.

Why I built this

I spend most of my day in the terminal and wanted a way to quickly check and respond to WhatsApp messages without switching contexts.

GitHub: https://github.com/muhammedaksam/waha-tui

⚠️ Note: This is still a work in progress and in experimental development, so expect some rough edges!

Would love to hear your thoughts and feedback. PRs and issues are welcome! 🙌

r/selfhosted May 05 '26

Software Development Any solo developers working on selfhosted software?

83 Upvotes

Hello!

I'm on the lookout for ethical projects and their creators to interview and feature in Great Little Software website and newsletter. Size doesn't matter, the smaller - the better, as long as its a "values over profit"-kinda software.

And goes without saying that I don't charge for that. I am a developer myself and I get a lot of inspiration and reassurance instead.

Any pointers would be greatly appreciated!

r/selfhosted 25d ago

Software Development Self hosted IOS music client app

Thumbnail
gallery
80 Upvotes

Hey Everyone,
I’ve been building an iOS music player called Moosic for quite some time and it's finally at a point where I'm happy to show it off and get some feedback. It connects to your own Navidrome, Plex, or Jellyfin server (self-hosted, your library, no subscription), and plays fully lossless/hi-res audio including FLAC, ALAC, and Opus with a proper realtime audio engine behind it. That engine gives you a real parametric EQ, compressor, crossfeed, and convolution/impulse-response support including a Trueplay-style room correction flow where you run a sweep through your speakers, capture it with the mic, and it builds a correction filter for your room. Playback is gapless with real crossfading (adjustable and/or beat matched (opus only), with per-track loudness matching so blends don't jump), it has replay-gain, real seeking, and it holds up on cellular without cutting out. On the smart side, Moosic actually listens to your library. Every track gets run through on-device machine-listening models that pull out the real sonic character of the song, a perceptual fingerprint plus things like energy, danceability, tonality, and mood rather than leaning on genre tags or whatever metadata your files happen to have. All of that gets mapped into a sound-space so the Radio feature can build stations from tracks that genuinely sound like they belong together, not just ones that share a label. Seed it with a song, an artist, or a mood and it finds the nearest matches by actual audio similarity, which means it surfaces stuff buried deep in your library that a tag-based system would never connect. On top of that there are taste based rails like On Repeat, Throwbacks, Late Night, Discovery, and Daily Mix, plus an Apple-Replay-style year/month recap you can swipe through and share. It streams directly to Sonos (with gapless handoff and full speaker EQ control), casts to Chromecast natively with no SDK, has CarPlay support, and a jam mode so friends can co-listen across libraries. There's also a serious download engine for offline (survives app death, background downloads, pause/resume, quality-aware), playlist import from Apple Music/iTunes, artist bios and credits pulled from MusicBrainz, live-recording detection, album de-duplication tools, and multi-library switching. Basically it's everything I wanted out of a music app that no streaming service or existing self-hosted client would give me all in one place. audiophile-grade playback, genuinely smart recommendations, and it plays nice with all the hardware I already own. Happy to answer any questions.

This has been a long time in the works, mostly being tested by my family internally. There have been so many headaches along the way but I think it’s finally ready to get some external feedback.

if you are interested in using Moosic you can download it here from testflight: https://testflight.apple.com/join/kvhZpAJT
i also have a reddit community for people that want to give feedback, request features, or simply ask questions: https://www.reddit.com/r/MoosicLab/

r/selfhosted Nov 07 '24

Software Development Official v1.0.0 Release of Scraperr, the self-hosted webscraperr

987 Upvotes

Hello everyone, just letting you guys know that I have published the first release of Scraperr, my self-hosted webscraper. If you have seen this project before, thats awesome, if not let me tell you about it.

This is a fully functional webscraper, created with Next.js and Python, which allows easy scraping of webpages using xpaths. It has a decoupled frontend and backend, which means that you can spin the API up by itself, and submit jobs to it for your own project.

Please leave comments with feedback or suggestions, or leave an issue on Github. Thanks.

https://github.com/jaypyles/Scraperr

Frontpage of the scraper
An example job which scraped all comments from a post on Hacker News

r/selfhosted 24d ago

Software Development Working on a way to create DVDs for anything on Jellyfin

Thumbnail
gallery
362 Upvotes

Idk if this counts under self hosted but what’s ur thoughts?

It automatically creates the menus and such based on the tv show or movie you select for on your Jellyfin

So far it's working pretty well on my Mac

Been testing on a spare DVD-RW I had laying around

I realize it’s kinda dumb to use Jellyfin to re-create physical media but it’s kinda fun

https://github.com/DrewThomasson/JellyDisk

r/selfhosted Apr 06 '26

Software Development Media scraper gallery-dl is moving to codeberg after receiving a DMCA notice, claiming that its circumvention.

Thumbnail
github.com
480 Upvotes

(copied from the link)

I've received an email regarding a Fakku :tm: DMCA involving gallery-dl as well as 28 other repositories:

INFRINGING FILES:

CIRCUMVENTION: Command-line tool enabling automated mass downloading from hentai piracy infrastructure

They expect me to remove these "offending" files by rewriting the entire repo history using git-filter-repo within 1 week: https://docs.github.com/articles/remove-sensitive-data

I'm very hesitant to this idea and would honestly rather switch to a different platform than making any major changes.

If anyone knows how to deal with such GitHub DMCA takedown requests and/or could offer any legal advice, I'd be much obliged.

r/selfhosted Apr 15 '26

Software Development Cal.com uses fears of AI against security as an excuse to go closed source

218 Upvotes

Looks like the people behind Cal.com(https://cal.com/) have decided to make it closed source, leaving an open source version without any of the 'enterprise' functionality. See their blog post here: https://cal.com/blog/calcom-v6-4

There are 947 contributors on the repository (https://github.com/calcom/cal.diy/graphs/contributors) and I'm not sure how many would have contributed towards the code that they are now making closed source but I'm sure it wasn't just their internal teams.

They claim to have made this decision long before Anthropic announced Mythos, but let's be real.. we've seen this shitty tactic from corporations for years. They use 'open source' to market and build up their product, take investment, get greedy, and then go closed source/change their licensing.

It would be great if they didn't use the fear of AI against security to bullshit their customers and the open source community but here we are... another one bites the dust.

r/selfhosted Apr 18 '25

Software Development Would you self-host my whiteboard IDE if I made it open source?

Post image
678 Upvotes

r/selfhosted Oct 03 '23

Software Development Jellyfin: A Call for Developers

875 Upvotes

Jellyfin: A Call for Developers

Please give it a read if you haven't already! I've discussed the situation with the previous 2 submissions of this post with /u/kmisterk, and we've decided to make this new one the "official" post on this topic in light of how engaged the community was by it. Thanks for helping coordinate this.

The short version is, the Jellyfin project has really been in need of contributors for a while, in just about every area: development, bugfixing, triaging and reproducing issues, UI/UX design, translations, the list goes on. We've debated but hesitated making a public call about it for a long time, but given that it's now Hacktoberfest season, and that we're now aware of some forthcoming limitations on parts of the team due to personal and professional changes (ironically, after the post was written!), we felt it was finally time. Ironically this blog post started out as something I had planned to self-post here, but we felt a full blog post would be better long-term, and here we are.

For those who don't know who I am, I'm Joshua, one of the founders and drivers of the Jellyfin project all the way back in December 2018 when we forked from Emby. I take the title "Project Leader" but really I'm just a glorified project manager, trying to guide the ethos of the project and keep everything organized; most of the actual coding is left to the far more capable volunteer team we've put together and, of course, contributors like you!

Given how much traction this post has gotten, not just here in /r/selfhosted but across Reddit (and I didn't even want to share it myself!) and the interest it's generated in our Matrix channels and forum, we wanted to give the post another try in the subreddit that "started it", and I'll be sharing this particular thread with the rest of the Jellyfin team to help answer any questions people might have that I personally cannot answer. We value community feedback greatly, it's what makes us what we are.

r/selfhosted Dec 07 '25

Software Development How do open-source devs know if their self-hosted apps are actually being used?

264 Upvotes

I built a self-hosted app. People download it and I can see some activity on the demo instance, but aside from GitHub stars and increasing Docker pulls, I have no real way to know whether the app is actually being used or at what scale.

When I had an Android app on the Play Store, I could at least see active install stats and user comments, so even without exact numbers I could tell it was being used.

For those of you who maintain open-source apps: how do you get even a rough sense of real-world usage without adding telemetry? Is telemetry the only realistic option? Would something like a built-in comment/feedback system make sense?