I wrote a tool to sync Google Photos Shared Albums to Immich because my family won't switch apps
Hey everyone,
Like many of you, I love Immich, but the rest of my family and friends are glued to Google Photos. I got tired of manually downloading zip files from shared "Vacation" or "Weekend" albums just to preserve them on my own server.
So, I built a little tool called **GPhotosAlbum to Immich** (i know, very creative name)..
It monitors specific Google Photos shared links. When new photos get added by others, it automatically uploads them to your Immich instance.
**The features:**
* **Set and Forget:** It runs in Docker (compose) and just works in the background.
* **Respects Trash:** If you delete a synced photo in Immich because it's blurry, the tool knows not to annoyingly re-upload it the next time it syncs.
* **Fixes Dates:** It tries hard to find the actual *taken* date so your timeline doesn't get messed up.
It's fairly lightweight (written in Go) and supports concurrent downloading if you have massive albums.
Hope it saves someone else the manual labor!
https://redd.it/1qzpvwo
@r_SelfHosted
outofspacenet IRC mini-rack update
https://redd.it/1qzkwc1
@r_SelfHosted
Best way to monitor backups?
I have dozens of 'frequent' backups that I need visibility on whether they ran/succeeded. Directories, containers, workspaces etc.
Is there a decent platform for monitoring all this stuff? At the moment I have the backup scripts broadcast to MQTT which are picked up as a Home Assistant sensors, but it's very messy.
How do you pros do it?
https://redd.it/1qzc2un
@r_SelfHosted
OGG Vorbis, WAV, AAC, OPUS. Metadata is extracted via lofty, decoding via symphonia. Embedded cover art is automatically extracted and served.
**Q: How's the resource usage?**
The Rust backend is very efficient. Idle memory is \~30-50 MB. PostgreSQL is the main resource consumer. A $5 VPS handles it fine for a personal instance. Audio files are stored on filesystem (S3/MinIO planned for v2).
**Q: Multi-user?**
Yes. Admin can create user accounts, manage roles, ban users. Each user has their own upload space, but the library is shared across the instance.
**Q: Mobile app?**
Web-only for now (PWA-friendly). A native mobile app or Subsonic API compatibility would make existing apps work — both are planned.
**Q: Why Rust + SvelteKit?**
Rust for backend performance and memory safety — an audio server that handles streaming, transcoding metadata, and P2P connections benefits from low overhead. SvelteKit because it's fast to develop with, ships minimal JS, and Svelte 5 runes make state management clean.
**Q: Why AGPL-3.0?**
Because if someone takes this code and runs it as a service, users deserve access to the source. AGPL ensures that. Fork it, modify it, run it — just keep it open.
# What's next (roadmap)
* Subsonic API compatibility (for mobile app support)
* Adaptive OPUS streaming (bitrate switching)
* ActivityPub federation alongside P2P
* Smart playlists / auto-mix
* Lyrics support (synced + plain)
* Mobile-native apps
# Looking for feedback
This is v1.0.0 and I'd love to hear:
* What features would make you switch from your current setup?
* Any pain points you've hit with other music servers that we should prioritize?
* Interested in testing P2P sync between instances? Drop your Node ID and let's connect some peers.
Star the repo if you find it interesting — it helps with visibility and motivation.
**GitHub:** [https://github.com/CICCADA-CORP/SoundTime](https://github.com/CICCADA-CORP/SoundTime)
https://redd.it/1qzannu
@r_SelfHosted
I built SoundTime — a self-hosted music server with P2P sync between instances (like Plex meets Mastodon for music)
Hey r/selfhosted ,
I've been working on SoundTime, an open-source, self-hosted music streaming server that lets you stream your own library — and optionally sync it with friends' instances over P2P. Think Navidrome/Funkwhale but with built-in peer-to-peer federation so your music collections can discover each other automatically.
GitHub: https://github.com/CICCADA-CORP/SoundTime
# What is it?
SoundTime is a full-stack music server you deploy on your own hardware. Upload your FLAC/MP3/OGG/WAV files, and get a clean web UI to browse, search, and stream your library from anywhere. The twist: instances can connect to each other via P2P (using iroh / QUIC) and automatically replicate catalogs — metadata, audio blobs, and cover art included.
No central server. No subscription. Your music, your rules.
# Features
Core:
Upload & stream FLAC, MP3, OGG, WAV, AAC, OPUS
Automatic metadata extraction (artist, album, track number, genre, year, cover art)
Waveform generation for visual seeking
Album/artist/track browsing with search
Queue management, playlists, play count tracking
Responsive web player with expanded view
P2P / Federation:
Connect instances by exchanging Node IDs — no port forwarding needed (relay-assisted NAT traversal)
Automatic catalog sync: tracks, metadata, and cover art replicate between peers
Peer Exchange (PEX) for network-wide discovery
Seed peers config for auto-connect on startup
Block individual peers from the admin panel
Admin & Security:
JWT auth (access + refresh tokens), Argon2id password hashing
Rate limiting on auth endpoints
Admin dashboard: user management, peer monitoring, metadata lookup
MusicBrainz integration for metadata enrichment
AGPL-3.0 — your instance, your freedom
# Tech Stack
|Layer|Tech|
|:-|:-|
||
|||
|||
|Backend|Rust (Axum, Sea-ORM, PostgreSQL, tokio)|
|Frontend|Svelte, Tailwind CSS, shadcn-svelte|
|P2P|iroh (QUIC), iroh-blobs (content-addressed storage)|
|Audio|lofty (metadata), symphonia (decode/waveform)|
|Auth|JWT + Argon2id, tower-governor rate limiting|
|Deploy|Docker Compose (Ansible Coming Soon)|
# Deployment
git clone https://github.com/CICCADA-CORP/SoundTime.git
cd SoundTime
cp .env.example .env
\# Edit .env
docker compose up --build -d
That's it. Frontend on :8880, API on :8080, P2P on :11204/udp. Nginx handles routing.
# FAQ
Q: How does it compare to Navidrome / Funkwhale / Jellyfin?
Navidrome and Jellyfin are excellent single-instance music servers. Funkwhale has federation but uses ActivityPub (server-to-server HTTP). SoundTime's P2P approach is different: no domain/DNS needed for federation, NAT traversal is automatic via iroh relays, and catalog sync happens at the binary blob level (content-addressed, BLAKE3 hashes). If you just want a personal music server, any of those work great. If you want your library to seamlessly merge with a friend's instance without setting up domains or dealing with federation protocols, that's where SoundTime shines.
Q: What about copyright / legal?
SoundTime is a tool for managing and streaming your own music collection — same as Plex, Jellyfin, or Navidrome. P2P sync is designed for sharing between your own instances or with trusted friends. You're responsible for the content you host and share, just like any self-hosted solution.
Q: Does it support Subsonic API / DLNA / Chromecast?
Not yet. The current focus is the web player and P2P. Subsonic API compatibility is on the roadmap which would unlock apps like DSub, Symfonium, etc.
Q: Can I run it without P2P?
Absolutely. Set P2P_ENABLED=false in your .env and it works as a standalone music server. No peer connections, no sync — just upload and stream.
Q: What audio formats are supported?
FLAC, MP3,
Open-source mobile companion app for self-hosted Firefly III — seeking testers!
Hi all — I built a simple mobile companion app for self-hosted Firefly III (because there wasn’t an official mobile client and i always want something simple modern app so i build my own) and I’m looking for testers and feedback from this community as theres no firefly official community.
What it is
A lightweight mobile app that connects to your self-hosted Firefly III instance and lets you quickly:
View recent transactions & accounts
Create transaction/accounts
View Financial overview
Why I made it
There’s no polished mobile client for Firefly III, so I created this for personal use and decided to open-source it so others can benefit and help improve it.
Where to find it
You can find android apk in release section in [Github](https://github.com/mHamzaIqbal1998/Budgetly)
Bug reports / feature requests / quick feedback form: [Google Form](https://forms.gle/pyY9X8oiStPMBZxd8)
How you can help (very simple):
1. Clone/download the repo or install the latest release from the Releases page.
2. Connect it to your self-hosted Firefly III instance (follow the README for how to configure base URL + API token).
3. Try basic flows: view transactions, add an expense, check accounts/categories.
4. Report bugs / feedback via the Google Form or open an issue on GitHub. Please include: device, OS version, app version, steps to reproduce, and screenshots/logs if possible.
Privacy & Security
You keep control — the app uses your Firefly III instance and API token; nothing is stored on my side. If you’d prefer, you can run the app from source and inspect the code before installing.
Current limitations / known issues
I'm actively working on the features including budgets, subcriptions etc things always take time to fully test before release so i hope you understand ;)
If you’re interested, please try it out and drop feedback here, via the Google Form, or open an issue on GitHub. I’ll be actively responding and pushing updates based on feedback.
Thanks — and happy self-hosting!
— Hamza
https://redd.it/1qz6yag
@r_SelfHosted
High-performance Uptime Monitor
I have been working on **Uptime Monitor**. An open-source, self-hosted uptime monitoring system built with Bun and ClickHouse.
I love Uptime Kuma and what it's done for the self-hosted monitoring space, but it didn't cover all my needs. Specifically:
No advanced group strategies - I needed groups with health logic like any-up (for redundant services), all-up (for critical chains), and percentage-based thresholds, not just simple folders.
No nested groups \- I wanted groups inside groups for proper hierarchical organization.
No long-term aggregated history without performance issues \- I wanted to keep daily uptime data forever without the database growing out of control or queries slowing down.
No real-time status page updates \- I wanted WebSocket-powered live updates, not polling.
No fast on-the-fly uptime calculations across multiple intervals - I needed accurate uptime percentages calculated for 1h, 24h, 7d, 30d, 90d, and 365d windows all at once.
Limited to just uptime tracking - I wanted to monitor additional metrics per service (player counts, connection pools, error rates...), not just up/down status and latency.
Scaling issues - a lot of people report problems once they go past a few hundred monitors with SQLite,MySQL,MariaDB,PostgreSQL...-based solutions.
So I built something from the ground up to solve all of these.
# What makes it different?
Built for scale. ClickHouse is a columnar database designed for exactly this kind of time-series workload. Whether you have 10 monitors or 1,000+, it stays fast.
Smart data retention. Raw pulses are kept for 24 hours (great for debugging), hourly aggregates for 90 days, and daily aggregates are stored forever. So you get long-term uptime history without your database ballooning in size.
Accurate uptime across multiple windows. Uptime percentages are calculated on the fly for 1h, 24h, 7d, 30d, 90d, and 365d - all served in a single API response, fast.
Pulse-based monitoring. Services send heartbeats, and missing pulses trigger alerts. It also supports automated checking via [PulseMonitor](https://github.com/Rabbit-Company/PulseMonitor) agents that you can deploy in multiple regions - supports HTTP, TCP, WebSocket, ICMP, PostgreSQL, MySQL, Redis, and more.
Custom metrics. Track up to 3 numeric values per monitor alongside latency - player counts, connection pools, error rates, queue depths, whatever you need. These get the same aggregation treatment (min/max/avg) as latency data.
Hierarchical groups with real health logic. Organize monitors into groups with strategies: any-up, all-up, or percentage-based thresholds. Groups can contain other groups, so you can model your actual infrastructure topology.
Multi-channel notifications. Discord, Email, and Ntfy with per-monitor and per-group channel control. Set up different channels for critical vs. non-critical alerts.
Real-time status pages. WebSocket-powered live updates - no polling, no delays. Here's a live example: [status.passky.org](https://status.passky.org)
Hot-reloadable config. Add or change monitors without restarting anything. There's also a [visual config editor](https://uptime-monitor.org/configurator) if you don't want to edit TOML by hand.
# Links
Website: uptime-monitor.org
GitHub: [UptimeMonitor-Server](https://github.com/Rabbit-Company/UptimeMonitor-Server)
Live demo: status.passky.org
Status page (frontend): [UptimeMonitor-StatusPage](https://github.com/Rabbit-Company/UptimeMonitor-StatusPage)
Visual config editor: uptime-monitor.org/configurator
It is fully open source under GPL-3.0. I'd love to hear your feedback, feature requests, or questions. Happy to answer anything in the comments!
https://redd.it/1qz50zj
@r_SelfHosted
What are your best iOS apps for Self Hosted solutions?
Hi everyone,
I’m curious to see what iOS apps you’re all using alongside your homelab services/servers or self-hosted setups.
I am really looking for the apps you enjoy using on a daily basis: clean UI, well-designed, pleasant to use, and actually useful when managing or interacting with self-hosted services.
Bonus points for apps that are genuinely beautiful or thoughtfully designed, not just functional.
I will start with mine :
\- Jellyfin for iPhone
\- Infuse for Apple TV (also connected to my Jellyfin server)
\- Helmarr (it manages Sonarr, Sabnzbd, Prowlarr, Radarr, Unraid, Seerr, Jellystat and qBittorrent, I think they also added support for Transmission but I am not using it).
\- Dawarich native iOS app (for tracking location) the only downside is it creates a notification in your island which I would prefer to be totally transparent
\- Unraid Deck for UNRAID (Edit: Widget coming in the next version)
\- Uptime Kuma Manager (not entirely satisfied, the widget is ugly and the app a bit buggy but there are not much alternatives)
\- ProxMan (great app, the widget is beautiful too)
\- Swift Paperless ( I love it, there is a scan mode, the app is ultra fast and well designed, probably my favourite)
I’d love to discover some hidden gems. Feel free to share what you use and why you like it.
https://redd.it/1qz1lh0
@r_SelfHosted
Made a Discord bot to deal with CGNAT - spins up quick tunnels when I need them
So I've been dealing with CGNAT for a while now and it's annoying as hell. Can't access my Gitea or anything else when I'm not home, port forwarding obviously doesn't work, and I didn't want to mess with a VPN every time I just needed to quickly check something.
Ended up building a Discord bot that makes temporary Cloudflare tunnels when I ask it to.
You whitelist your services in a config file, then you can just be like "!tunnel start gitea 2h" in Discord and it spits back a URL that works for 2 hours. That's it.
I mostly use it when I'm out and remember I need to check my todo on vikunja or stuff like that.
link: https://github.com/Goofygiraffe06/tunbot
https://redd.it/1qyy4wr
@r_SelfHosted
Photos, mount my T7 to NR6S with a USB cable, permanently mounted it in OpenWrt, used Immich-Go to upload it to Immich, and bob's your uncle. So. fucking. cool.
Wait, now I have anxiety about losing years of my photos and videos if I fully migrate to Immich. How can I fix that? Immich recommends 3-2-1 backup strategy, and they link this article from Backblaze. Hmm, I've heard that name before. Wait, these guys will give me terabyte of storage for $6/month? Wtf do I pay Google for? But wait, how can I upload there? God bless rclone. Let's also clone to my Windows PC to fully complete the 3-2-1 strategy. Let's automate cloning processes for both local and remote backups, so that all my data gets backed up every night while I'm sleeping. All that work in less than two hours.
By the way, I thought Immich app was supposed to be inferior to Google Photos? Are you serious? I finally have a reliable search by context, file name, file extension, etc. I can set up auto-moving and archiving with CLI and so much more. Fuck Google Photos. Delete every single byte I have on there, uninstall it from all of my devices, cancel the subscription.
Okay, this post is getting terribly long, so I'll try to fast-forward.
I want to remotely turn on my stupid Samsung monitor without using a remote? Home Assistant.
I want to have a universal note-taking and link-saving solution? Linkwarden.
I want to expose my services to the internet so I can access them remotely? Cloudflared.
I want to stash my fucking porn? Stash.
There are solutions for literally everything. My post serves two purposes. The first is to push all of you lurking in this subreddit, hesitant to pull the trigger, thinking you need to be Gilfoyle reincarnated to have any success at this stuff. My modest home lab is no Anton, but boy does it make this shitty corpo-ridden internet a much more tolerable place. All I needed to have was a bit of Googling skills, and a bit of patience reading through the official docs, forum threads, and reddit comments. I still have a LOT to learn about networking, but I already feel like this has been one of the most fulfilling hobbies I've had, and I'm already thinking about getting a NAS to host some stuff for my friends.
Second is to say a massive thank you to the absolute legends behind all the open-source services that we all use and love. I'm sure I will find a lot more in the coming months, and I will try my absolute best to buy all of them a coffee.
I'm not sure if anyone's even going to read all of this, I just felt so good about and so passionate about my new hobby that I wanted to share it with everyone.
P.S: This subreddit desperately needs a "Discussion" flair.
https://redd.it/1qyssf6
@r_SelfHosted
Safebucket v0.3.0 - Now with generic S3 support
https://redd.it/1qygcz2
@r_SelfHosted
I built a Zero Trust Firewall using eBPF & XDP (Rust + Go). It handles 25M+ packets/sec, but it’s NOT a VPN replacement.
Hey r/selfhosted,
I've been working on a project [Aegis](https://github.com/pushkar-gr/Aegis). A high performance, distributed firewall designed to enforce identity based micro segmentation using eBPF.
I wanted to share it here because of the love towards self hosted networking gear, but to be honest about what it is (and what it isn't), don't waste your time here if you're looking for a WireGuard wrapper.
It’s a distributed firewall that blocks everything by default. You log in via a web portal, and the agent dynamically opens a pinhole to a specific service for your IP. Because it runs at the driver level, it benchmarks at **<100ns latency** and **25M+ packets/sec**.
* **It is NOT a VPN:** It doesn't encrypt traffic like Tailscale/WireGuard. It just allows or drops packets.
* **The "Coffee Shop" Issue:** It authenticates your **Source IP**. If you are behind CGNAT (shared public IP), authenticating effectively opens the door for everyone sharing that IP.
* **Best For:** Internal homelab segmentation.
I wrote the data plane in Rust and the control plane in Go. I'd love for you guys to check it out or roast the code.
Repo: [https://github.com/pushkar-gr/Aegis](https://github.com/pushkar-gr/Aegis)
https://redd.it/1qy4x83
@r_SelfHosted
SparkyFitness v0.16.4.0 — A Self-Hosted MyFitnessPal alternative
https://preview.redd.it/qw4qqpiqayhg1.png?width=1192&format=png&auto=webp&s=eb5789a87e6524863d90807b74a96ebd5790b58a
The wait is over — SparkyFitness now supports Fitbit sync!
We’ve crossed 2100+ users on GitHub and have 20+ developers contributing to the project, and we’re scaling up bigger than ever.
With this update, SparkyFitness now works with multiple providers, letting you truly own your health data on your own server. Current integrations include Google Health Connect, Apple HealthKit, Garmin, Fitbit, Withings, and more.
https://preview.redd.it/e5l9zjh9cyhg1.png?width=1024&format=png&auto=webp&s=5c44ac84b65afde549a1e906f69737a0f135cfef
Our iOS and Android apps are currently pending Apple and Google approval. We’ll be live on the App Store and Play Store very soon.
https://github.com/CodeWithCJ/SparkyFitness
Nutrition Tracking
OpenFoodFacts (Enabled as default external provider)
Nutritioninx
Fatsecret
Mealie
Tandoor
USDA
Exercise/Health metrics Logging
Github Free Exercise DB (Enabled as default external provider)
Garmin Connect
Withings
Wger
Fitbit
Water Intake Monitoring
You can create custom water bottles to track water intake.
Body Measurements
Supports Custom measurements
Goal Setting
Use onboarding to set your Goal based on various algorithms
Daily Check-Ins
Comprehensive Reports
Nutrition Trends
Workout Heat Map, Max Weight Trend, Volume Trend, Reps vs Weight
Garmin - Advanced Activity insights including Heart Rate trend, Map etc.
Seep Analysis (Rem, Deep, Light, Awake)
Stress Analysis
Tabular reports
OIDC Authentication, Magic Link, MFA etc.
Mobile App : Refer Wiki page in Github for install Mobile apps.
Android app is available via Play store closed testing and as well as under each release.
iPhone app available via Testflight
Web version Renders in mobile similar to native App - PWA
AI Chat Bot - WIP
Log food by chat text & uploading images
Log exercise
Log water intake
Log check-in measurements
Coach - Not started yet.
Ollama (slow & could timeout), Gemini, Open router, Mistral, Groq etc.
API
Swagger & Redoc are available.
Web URL in docker has some issues but works in localhost.
Caution: This app is under heavy development. BACKUP BACKUP BACKUP!!!!
You can support the project in many ways — by submitting bug reports, suggesting new features, improving documentation, contributing PRs if you’re a developer, or sponsoring the project on GitHub.
https://redd.it/1qxwbnf
@r_SelfHosted
A mini/micro PC alternative...
Hey self host friends, not sure if anyone has ever done the same thing but I wanted to share my experience.
Recently I had two of my Beelink SER5 computers go down. They died due to an internal power supply failure. A good amount of my critical home services lived on those boxes and luckily I had backups of the VMs. But what I decided to do was look into a more robust solution.
I landed on the Mac Pro 6,1... the 2013-2019 trashcan version. I was fortunate to find two of them with the top of the line processors and 128gigs of DDR3 Ram for under $1000. Both also had 2TB of SSD.
Not trying to brag but just trying to let people know that this does work using Proxmox. So for I have loaded my entire lab onto both of them (43 vms total) on both with 0 issue.
If you have any questions I will do my best to answer.
https://redd.it/1qm6r0n
@r_SelfHosted
who told journalists about self hosting?
https://redd.it/1qlzjs5
@r_SelfHosted
I built a janky Cloudflare Bitwarden server for myself, forgot about it, and woke up to 400+ forks
A while back, I got fed up with password managers gatekeeping 2FA and passkeys behind paywalls.
Also, Bitwarden started forcing email 2FA, which created this annoying chicken-and-egg loop: if I ever lost my logged-in devices, I wouldn't be able to log in to Bitwarden because I'd need the email OTP... but my email password was inside Bitwarden. I just wanted to avoid that mess entirely.
I didn't want to pay for a VPS to host Vaultwarden, but honestly, the main reason was that I don't trust myself. Managing a Linux server means one bad command or missed backup and my passwords are gone forever. I wanted something maintenance-free where I couldn't accidentally nuke my own vault.
So, I hacked together a Bitwarden-compatible server that runs entirely on Cloudflare Workers + D1 for free. Deploy once, forget forever.
I called it warden-worker. It worked "good enough" for me, so I pushed it to GitHub, thought "maybe I'll post this later," and then immediately forgot about it.
Fast forward to this week. I was doing some repo cleanup and realized I had turned off my GitHub notifications. I checked the repo and... what??
400+ forks
Issues threads in Chinese?
People writing guides on how to deploy it??
Someone explaining how to fix my bugs in the issues
The best part is that a user named qaz741wsd856 apparently took my abandoned skeleton and turned it into a full-blown project with KV support and the actual Vaultwarden frontend. Their fork is objectively better than mine in every way.
I'm still using my original "good enough" version because it’s stable and I’m lazy, but it's wild to see an entire community spin up around a project I thought was dead.
If you want the original (don't use this): https://github.com/deep-gaurav/warden-worker
If you want the one that actually works (use this): https://github.com/qaz741wsd856/warden-worker
Just wanted to share because I'm still processing how weird open source can be sometimes.
https://redd.it/1qzlbb6
@r_SelfHosted
Looking for a Discord alternative that can do OAuth login, voice chat, and video if possible
In a nutshell: I have a XenForo message board and I want to give my members a Discord alternative that uses their forum account. Voice is a must, video would be nice but not required.
I looked into Rocket Chat, but voice chat requires an Enterprise Account. This would be overkill, as I'll likely have no more than a dozen or two people using the thing at once.
(Matrix is also on my radar if you guys think that's the way to go)
https://redd.it/1qzlqyx
@r_SelfHosted
Best "zero maintenance" start page?
I followed through and ditched the complex dashboards (Homarr/Homepage) to stop "maintaining my maintenance tools". I'm sticking to Beszel + Uptime Kuma, that the perfect sweet spot for me.
Now I just need a simple browser start page / extension for my bookmarks to complete the setup.
Requirements:
* No Docker / YAML configs
* No subscription bs
* Set and forget (Zero maintenance)
No Homepage / Heimdall / Homarr / Glance Stuff.
I really like [daily.dev](http://daily.dev) but they have a premium sub lol and i need to upgrade to use it as needed. Any recommendations for a clean "New Tab" extension or a simple static page generator?
https://redd.it/1qzcbef
@r_SelfHosted
I built SoundTime — a self-hosted music server with P2P sync between instances (like Plex meets Mastodon for music)
Hey [r/selfhosted](https://www.reddit.com/r/selfhosted/) ,
I've been working on **SoundTime**, an open-source, self-hosted music streaming server that lets you stream your own library — and optionally sync it with friends' instances over P2P. Think Navidrome/Funkwhale but with built-in peer-to-peer federation so your music collections can discover each other automatically.
**GitHub:** [https://github.com/CICCADA-CORP/SoundTime](https://github.com/CICCADA-CORP/SoundTime)
# What is it?
SoundTime is a full-stack music server you deploy on your own hardware. Upload your FLAC/MP3/OGG/WAV files, and get a clean web UI to browse, search, and stream your library from anywhere. The twist: instances can connect to each other via P2P (using [iroh](https://www.iroh.computer/) / QUIC) and automatically replicate catalogs — metadata, audio blobs, and cover art included.
No central server. No subscription. Your music, your rules.
# Features
**Core:**
* Upload & stream FLAC, MP3, OGG, WAV, AAC, OPUS
* Automatic metadata extraction (artist, album, track number, genre, year, cover art)
* Waveform generation for visual seeking
* Album/artist/track browsing with search
* Queue management, playlists, play count tracking
* Responsive web player with expanded view
**P2P / Federation:**
* Connect instances by exchanging Node IDs — no port forwarding needed (relay-assisted NAT traversal)
* Automatic catalog sync: tracks, metadata, and cover art replicate between peers
* Peer Exchange (PEX) for network-wide discovery
* Seed peers config for auto-connect on startup
* Block individual peers from the admin panel
**Admin & Security:**
* JWT auth (access + refresh tokens), Argon2id password hashing
* Rate limiting on auth endpoints
* Admin dashboard: user management, peer monitoring, metadata lookup
* MusicBrainz integration for metadata enrichment
* AGPL-3.0 — your instance, your freedom
# Tech Stack
|Layer|Tech|
|:-|:-|
||
|||
|||
|Backend|Rust (Axum, Sea-ORM, PostgreSQL, tokio)|
|Frontend|Svelte, Tailwind CSS, shadcn-svelte|
|P2P|iroh (QUIC), iroh-blobs (content-addressed storage)|
|Audio|lofty (metadata), symphonia (decode/waveform)|
|Auth|JWT + Argon2id, tower-governor rate limiting|
|Deploy|Docker Compose (Ansible Coming Soon)|
# Deployment
git clone [https://github.com/CICCADA-CORP/SoundTime.git](https://github.com/CICCADA-CORP/SoundTime.git)
cd SoundTime
cp .env.example .env
\# Edit .env
docker compose up --build -d
That's it. Frontend on :8880, API on :8080, P2P on :11204/udp. Nginx handles routing.
# FAQ
**Q: How does it compare to Navidrome / Funkwhale / Jellyfin?**
Navidrome and Jellyfin are excellent single-instance music servers. Funkwhale has federation but uses ActivityPub (server-to-server HTTP). SoundTime's P2P approach is different: no domain/DNS needed for federation, NAT traversal is automatic via iroh relays, and catalog sync happens at the binary blob level (content-addressed, BLAKE3 hashes). If you just want a personal music server, any of those work great. If you want your library to seamlessly merge with a friend's instance without setting up domains or dealing with federation protocols, that's where SoundTime shines.
**Q: What about copyright / legal?**
SoundTime is a tool for managing and streaming your own music collection — same as Plex, Jellyfin, or Navidrome. P2P sync is designed for sharing between your own instances or with trusted friends. You're responsible for the content you host and share, just like any self-hosted solution.
**Q: Does it support Subsonic API / DLNA / Chromecast?**
Not yet. The current focus is the web player and P2P. Subsonic API compatibility is on the roadmap which would unlock apps like DSub, Symfonium, etc.
**Q: Can I run it without P2P?**
Absolutely. Set `P2P_ENABLED=false` in your .env and it works as a standalone music server. No peer connections, no sync — just upload and stream.
**Q: What audio formats are supported?**
FLAC, MP3,
NAS & Disks Recommendation
I’m planning on buying Synology DS225+ and in addition 2 hard drives for my Plex server at home.
I currently run double 5 TB external hard drives from WD (the portable ones) and they’re already full.
I want the absolute best, no budget. Why this cheap NAS and why only 2 disks? Because I run my Plex server for me and my family only and we basically watch it only at home.
I don’t want to worry about space anymore so I need the highest capacity available that would fit in the mentioned Synology.
https://redd.it/1qz98nq
@r_SelfHosted
Raspberry Pi Jellyfin server with Usenet + *arr stack and automatic media deletion, is this a bad idea compared to a NAS?
Hi everyone,
I’m planning to build a small home media server and would like some advice before buying hardware.
My idea is to use a Raspberry Pi (likely Pi 4 or Pi 5) with a 2 TB NVMe SSD as a Jellyfin server. The goal is not to permanently store a huge library, but more like a rolling cache of media.
Planned setup:
Jellyfin + Overseerr + Sonarr + Radarr + Prowlarr + SABnzbd (Usenet)
Workflow would be:
Request movies or series through Overseerr, they download automatically via Usenet, get added to Jellyfin, I watch them, and then everything older than about 7 days gets automatically deleted via a script to free up space.
I have a 1 Gbps internet connection, so download speed and remote streaming shouldn’t be an issue. I would mostly rely on direct play, not heavy transcoding.
Most setups I see here are NAS systems with many terabytes of permanent storage. My approach is more temporary and minimal.
My questions:
• Is a Raspberry Pi realistic for this workload if I avoid transcoding?
• Is automatic deletion after a fixed time a bad idea in practice?
• Are there cleaner ways to handle storage rotation with the arr stack?
Thank you guys!
https://redd.it/1qz46md
@r_SelfHosted
onWatch - self-hosted dashboard to monitor AI API quota usage across multiple providers
https://redd.it/1qz2ltd
@r_SelfHosted
How do you deal with "God Mode" when it comes to your users' privacy?
I host a bunch of services for which I am the only user. They're great, and work really well. But I'm repeatedly the only user of them because my friends either don't share the enthusiasm or the need, other than the media server.
But my partner also doesn't really have an interest. She has no intent or desire to install the HomeAssistant app, despite it providing additional functionality to our home as it also has Device Tracker permissions. Even if they can be disabled, that they exist is a bit of an ick factor. For these things, I poke holes like HomeKit, but that's unfortunately limited.
I've provided her with access to Plex/Jellyfin/Overseerr/Lidarr but because I approve/fulfill the requests and can see a detailed view/listen history of each of my users, I have this weird insight into all of it as if the applications are tattling.
To be clear, I don't really care about my users' activity unless they have an issue with a piece of media that I need to fix. I don't know that I would care about other users in HomeAssistant, but I can't speak on hypotheticals because I am, again, the only user.
It's not a trust issue. We've been together nearly 20 years and married just short of a decade. We have shared bank accounts and children. It's more of a surveillance issue.
This applies to any other service I host. Paperless-ngx, Invidious, Dispatcharr, Immich. All have the issue where the self-hosting user has God Mode over all of it.
How do you deal with having God Mode over your users? Or do they even care?
https://redd.it/1qyvo72
@r_SelfHosted
Feishin audio visualizer is now something else ...
https://redd.it/1qyh63m
@r_SelfHosted
Everything is so... easy?
So a few weeks ago, one of my close friends got into homelabbing and naturally started talking to me about it. I've always wanted to try similar things but never got around to it, so this time I just said what the hell and after some research, I ordered NanoPi R6S. I found it to be a solid upper mid-range device that could satisfy my thirst for knowledge and help me learn the niche.
Now, I'm pretty good with tech, and I'm very enthusiastic about it, but I'm a total noob when it comes to networking. I know what LAN stands for, and I know how to set up a Cloudflare DNS on an ISP modem, but apart from that, I might as well be a boomer. I'm kinda nervous about setting up a new router, messing with its firmware, opening ports, configuring firewall, and so on.
NR6S arrives and I start researching firmware options. OpenWrt just calls my name because I have used it once years ago, and I didn't really find anything wrong with it.
After some trial and error, I managed to flash OpenWrt on the eMMC storage of NR6S, thanks to this absolute chad.
Okay, I now have NR6S powered by OpenWrt standing between my ISP modem and my Wi-Fi AP. I find a lot of people mentioning bridging the router on forums, so I start looking into what bridging is. OF COURSE, it makes sense, for years both my ISP modem and my Wi-Fi AP have been doing routing, but both are terribly underpowered for that task, so I can now have a dedicated ROUTER for that. I bridge the ISP modem, set my Wi-Fi unit as Dumb AP, and I already feel better about myself. But, I need some more ports... I find Netgear GS308 locally for dirt cheap and for the first time in my life, I have a dedicated network switch. Pretty cool... I guess? WAIT, you're telling me that connecting 2 of my PCs to a single switch allows me to transfer Steam games over LAN? I don't have to wait twice as long for game downloads to play something with my brother? I can just send him game files at gigabit speeds instead of my ISPs shitty 100Mbps? W switch, W Valve, W whoever's reddit comment I came upon about Steam's LAN feature.
Okay, now that I have stable internet, let's Google "self-hosted projects reddit." I find tons of threads, and I find some project names coming up in every single one of these threads. AdGuard Home sounds interesting, it can block ads, trackers, AND help me monitor who and what is using my bandwidth? Let's fucking go. How can I deploy it? Docker, huh? Well hello old friend, you've saved me countless hours deploying my clients' websites on VPSes, let's see how I can set you up on an OpenWrt. Well, that took less than 20 minutes, nice.
I now have Docker, but do I want to ssh into my router every time I want to change a config, see the status of my containers, or restart them? There has to be a solution for that. Huh, there is, and it's called Dockge, cool. Wait, Dockge developer also has this pretty cool project called Uptime Kuma, which will give me a fancy interface for monitoring the status for all of my services. Both of them deployed in less than 10 minutes, just following the official instructions.
Okay, back to AdGuard Home, what can I do here? Holy shit I can just delegate AdGuard Home to be my DNS resolver and configure a bunch of options for it? Count me in. 20 minutes of brokering peace between AGH and OpenWrt over port 80, and now I have redundant DNS resolvers, resolving all of my domain needs using parallel requests to get me to websites ASAP. Oh, and I can see AGH blocking all the TikTok and Google trackers from my family's devices, so I already want to buy a coffee for the developers.
I'm fucking hooked. Let's Google some more interesting projects. Immich? I can take my data back from Google? The app looks just as fancy, and I don't care for some of the features it lacks. What could I use for storage? Maybe this spare Samsung T7 Shield I have lying around? Let's go. Export the whole data from Google
Warning: pihole + cloudflared no longer proxying DNS request.
If you are currently proxying your DNS traffic over cloudflared do not update to the latest version. The dns-proxy feature was deprecated in November 2025 and it is no longer supported as of the latest image. It should work for another year as per pihole's docs https://docs.pi-hole.net/guides/dns/cloudflared/
https://redd.it/1qyakvz
@r_SelfHosted
My annual electricity bill got upped by 1000€. Now I need to make my server use less power.
My consumer-parts server has a Ryzen 5600 CPU and 8 x 18TB HDDs together with my modem, firewall and switch is consistently using at least 150W 24/7.
24/7 availability (at least SSH) is non-negotiable for me, but I need to find other ways to get this power usage down.
Should I segment my media library so I can spin down most of the HDDs or something? Does stopping/scheduling Docker containers actually have an impact?
How did you guys get power usage under control? Which compromises did you make? (Performance, availability, ECC memory, media library size, transcoding via dGPU, comfort, etc)
Edit: I ran some numbers and while the +1000€ on my annual bill is real, my homelab would only account for 500-600€ of that (0,40€/kWh) assuming 150W average power draw (which isn't the actual average but I don't have enough measurements for that yet). There's some other additional power usage that's unrelated to my server, but the server is still the biggest single contributor to this adjusted bill by a lot. My guess is that the server accounts for 650€ of this bill, which would mean an average of 180W usage, 24/7, 365.
https://redd.it/1qxxbi8
@r_SelfHosted
I built DockTail - Traefik-style labels to expose Docker containers as Tailscale Services
https://redd.it/1qxn9bp
@r_SelfHosted
How do you prefer to deploy services?
(I’m really not sure that is the right flair for this poll, sorry if I chose the wrong one. )
View Poll
https://redd.it/1qlw8ln
@r_SelfHosted
Booklore turns 1 year 🎂 - v1.18.5 released!
Hard to believe it’s been one full year since I started Booklore.
What began as a small personal project (just a grid of books, a basic reader, and downloads) has grown, largely thanks to feedback from this community, into a solid self-hosted book server used by thousands of people.
Over this past year, Booklore has reached:
9,200+ GitHub stars ([https://github.com/booklore-app/booklore](https://github.com/booklore-app/booklore))
\~500 forks
85+ contributors
Huge thanks to everyone here who’s tested it, opened issues, suggested features, or contributed code. The self-hosted community played a big role in shaping where the project is today.
If you’ve been running Booklore and finding it useful, I’d really appreciate a ⭐ on GitHub, let’s see if we can push it to 10k stars as a 1-year milestone.
v1.18.x highlights
This release marks one of the biggest steps forward so far:
New ebook reader (Foliate.js based**)** Clean, responsive reader with support for EPUB, AZW3, MOBI, and FB2, plus highlights, notes, and bookmarks.
Streaming ebook reading (beta) Large ebooks (cookbooks, textbooks, etc.) can now be streamed page-by-page instead of loading the entire file.
Optimized PDF & CBZ streaming PDFs and CBZ/CBX files stream pages directly without full extraction, much faster for large files.
Progressive Web App (PWA) support Install Booklore as a PWA for a cleaner, app-like reading experience.
More improvements are already in progress, but I wanted to mark the 1-year point, share the latest release, and say thanks again to everyone running Booklore at home.
Links:
Website: https://booklore.org
GitHub: [https://github.com/booklore-app/booklore](https://github.com/booklore-app/booklore)
Demo: https://demo.booklore.org (username: booklore | password: 9HC20PGGfitvWaZ1)
Discord: [https://discord.com/invite/Ee5hd458Uz](https://discord.com/invite/Ee5hd458Uz)
Support via Open Collective: https://opencollective.com/booklore
Feedback (and stars 😉) always welcome.
https://redd.it/1qluqek
@r_SelfHosted