What is the best 'No-Nonsense' Domain Registrar in 2026?
Hi everyone,
I am looking to register a few new domains and I wanted to check the current consensus on the best registrars.
My Background: I’ve been managing multiple domains for a long time and have experience with a few major players:
GoDaddy (6 years): Used them for a long time in the past.
Hostinger (2 years): Have some experience here as well.
Namecheap (4 years): honestly, this has been my favorite so far in terms of UI and support.
Cloudflare (7 years): I have used them heavily for DNS/CDN, but never actually for buying domains.
Even though I like Namecheap, I’m in the mood to try something different for these new projects to see if there are better options out there (specifically regarding renewal pricing).
I’m hearing a lot about Porkbun, Dynadot, and Spaceship. Are they actually better than Namecheap?
My priorities are:
1. Transparent pricing (low renewal fees).
2. Free WHOIS privacy.
3. Good security and support.
Since I’m already deep into the Cloudflare ecosystem, should I just move everything there, or is a dedicated registrar like Porkbun better?
Thanks for the advice!
https://redd.it/1puf73c
@r_SelfHosted
Krawl: a honeypot and deception server
Hi guys!
I wanted to share a new open-source project I’ve been working on and I’d love to get your feedback
# What is Krawl?
Krawl is a cloud-native deception server designed to detect, delay, and analyze malicious web crawlers and automated scanners.
It creates realistic fake web applications filled with low-hanging fruit, admin panels, configuration files, and exposed (fake) credentials, to attract and clearly identify suspicious activity.
By wasting attacker resources, Krawl helps distinguish malicious behavior from legitimate crawlers.
https://preview.redd.it/ct3q68txo19g1.png?width=1607&format=png&auto=webp&s=da4f6cab21fa848b2e26c1893014ff21cfbbfd33
https://preview.redd.it/kr6dnwrxo19g1.png?width=993&format=png&auto=webp&s=75464264a071d3e7cfc1d713dcb15604c34abb7c
https://preview.redd.it/9dcp30sxo19g1.png?width=1816&format=png&auto=webp&s=50391e085bfc569535da3da5401652726d7dc42e
# Features
* **Spider Trap Pages** – Infinite random links to waste crawler resources
* **Fake Login Pages** – WordPress, phpMyAdmin, generic admin panels
* **Honeypot Paths** – Advertised via `robots.txt` to catch automated scanners
* **Fake Credentials** – Realistic-looking usernames, passwords, API keys
* **Canary Token Integration** – External alert triggering on access
* **Real-time Dashboard** – Monitor suspicious activity as it happens
* **Customizable Wordlists** – Simple JSON-based configuration
* **Random Error Injection** – Mimics real server quirks and misconfigurations
# Real-world results
I’ve been running a self-hosted instance of Krawl in my homelab for about two weeks, and the results are interesting:
* I have a pretty clear distinction between legitimate crawlers (e.g. Meta, Amazon) and malicious ones
* **250k+** total requests logged
* Around **30 attempts** to access sensitive paths (presumably used against my server)
The goal is to make deception realistic enough to fool automated tools, and useful for security teams and researchers to detect and blacklist malicious actors, including their attacks, IPs, and user agents.
If you’re interested in web security, honeypots, or deception, I’d really love to hear your thoughts or see you contribute.
**Repo Link:** [https://github.com/BlessedRebuS/Krawl](https://github.com/BlessedRebuS/Krawl)
https://redd.it/1pu937c
@r_SelfHosted
After ~2 months of learning, my self-hosted setup is “done (for now)” – what should I host next?
https://redd.it/1pu1wwz
@r_SelfHosted
How often are you looking at your dashboards and monitoring after setting them up 6 months ago?
I constantly see new dashboards and monitoring solutions posted here. I've setup all this stuff previously. After the initial novelty wears off (pretty quickly) I never find myself actually using any of them. I know my services aren't working when I try to actually use them and then fix at that point. Most of the notifications end up being noise even after tuning them. The things that I need statistics for already have them locally.
Other than just looking at a dashboard and thinking "huh, neat", what do you use them for? What do you continue using them for 6 months later?
https://redd.it/1ptxou0
@r_SelfHosted
kitshn v2 - App for Tandoor Recipes (v2)
https://redd.it/1ptu4ux
@r_SelfHosted
YAMLResume v0.9: Resumes as Code, now with web-native HTML output as I promised
Hey selfhosters:
I’m back with a significant update.
About 3 weeks ago, I shared [YAMLResume v0.8 updates](https://www.reddit.com/r/selfhosted/comments/1pct9dm/yamlresume_v08_resume_as_code_now_with_markdown/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button). That release introduced Markdown support, which was a huge win for using your resume data with LLMs.
At the time, I promised one more thing: *"We are working on a native HTML layout engine."*
Today, [YAMLResume v0.9 is live](https://yamlresume.dev/blog/html-output), and it delivers exactly that.
TL;DR, a quick demo:
[YAMLResume v0.9 HTML output](https://i.redd.it/ouqrynb6yx8g1.gif)
# The Missing Piece: Native HTML
Refresher: **YAMLResume** lets you maintain your resume in a single local `resume.yml` file. In v0.8, we had PDF (via LaTeX) for corporate apps and **Markdown** for AI workflows
**v0.9 adds the HTML rendering engine.** This completes the "Resume Trinity", making it the perfect resume tool that suites almost all needs:
1. **PDF**: formatting-heavy, print-ready.
2. **Markdown**: raw text, AI-ready.
3. **HTML**: responsive, web-ready.
Now, a single build command keeps all three versions in perfect sync.
# Pros of HTML Output
PDF is a print native format, Markdown is just plain text, HTML is web-native, perfect to host and deliver:
* **Zero Dependencies**: The output is a **single, self-contained .html file**. All CSS is inlined. No JS bundles, no CDN links, no Google Fonts tracking.
* **Host Anywhere**: Drop it in an Nginx folder, upload to S3, or push to GitHub Pages. It just works.
* **Responsive**: Unlike PDF, the HTML output uses a proper CSS grid. It looks professional on a desktop and reflows perfectly on mobile.
* **The "Calm" Template**: We ported the clean, corporate aesthetic of the `moderncv` LaTeX template to the web. Preview:
[YAMLResume HTML Calm Template](https://preview.redd.it/an3itpkhzx8g1.jpg?width=2560&format=pjpg&auto=webp&s=a0aed190187970909c5c20d0b256a1fa7c69bf87)
# How to use it
If you have Node.js installed, just update:
npm install -g yamlresume
If you are a macOS user, you can:
brew install yamlresume
Add the HTML engine to your `resume.yml` config:
layouts:
- engine: latex
template: moderncv-banking
- engine: markdown
# New in v0.9:
- engine: html
template: calm
typography:
fontSize: 16px
Run `yamlresume build`, and you get `resume.html` instantly.
# What's Next?
* **More Templates**: Additional styles are in the works. Who is favoring more fancy templates for personal portfolios?
https://preview.redd.it/jtekf9ytzx8g1.png?width=1080&format=png&auto=webp&s=aa25482d1f0f29be86229b5a5dad17124a52a82b
https://preview.redd.it/g498o11vzx8g1.png?width=1080&format=png&auto=webp&s=87da810df29c63ddc5c326f773735a61139a2258
Appreciated to hear your feedback!
**Links:**
* **Website:** [https://yamlresume.dev](https://yamlresume.dev/)
* HTML layout docs: [https://yamlresume.dev/docs/layouts/html](https://yamlresume.dev/docs/layouts/html)
* Changelog: [https://yamlresume.dev/blog/html-output](https://yamlresume.dev/blog/html-output)
* CLI demo: [https://asciinema.org/a/763505](https://asciinema.org/a/763505)
Happy hosting!
https://redd.it/1pts4rd
@r_SelfHosted
The magic of One single HTML file
https://redd.it/1ptjscm
@r_SelfHosted
screen
https://preview.redd.it/tsrzshpf3u8g1.png?width=640&format=png&auto=webp&s=87ccb3145a1622f78d4a0ab5fb6063469e1ea7dc
[](https://preview.redd.it/2025-immichs-year-in-review-v0-0rb0eoerkt8g1.png?width=828&format=png&auto=webp&s=9fa800288be8d5efadb577b69e0c552c5a6c3606)
* Granular API key permissions for power users
* Large file management utility
* Custom URLs for shared links
* Private/locked photos feature
https://preview.redd.it/7rq8kdbh3u8g1.png?width=1080&format=png&auto=webp&s=ff7eb5196f61c3ff6ec676a8807e71cc458fe9af
[](https://preview.redd.it/2025-immichs-year-in-review-v0-pausaa9tkt8g1.png?width=1526&format=png&auto=webp&s=95e9a355da8748c76414a951098da17458f0dbb5)
* "View similar photos" discovery
* GPS utility for location management
* Google Cast support
https://preview.redd.it/jaczuy5i3u8g1.png?width=1080&format=png&auto=webp&s=ab058e78d0cd9d3a4c5b9c349994345ff9fcaea9
[](https://preview.redd.it/2025-immichs-year-in-review-v0-4f2t548ukt8g1.png?width=2326&format=png&auto=webp&s=1c04683ba4f998d26f52bbf44869db79438baf6d)
* Background backup improvements
* Optical character recognition (OCR)
https://preview.redd.it/mlgtdp7k3u8g1.png?width=1080&format=png&auto=webp&s=addff3521bef00394d4110301314876f27527bf9
[](https://preview.redd.it/2025-immichs-year-in-review-v0-wtg9uh1vkt8g1.png?width=2482&format=png&auto=webp&s=022a667ccd529a2efd9f614c4135df67f1ab0a39)
* Digital Ocean 1-Click deployment
* ...and much more
# Websites
Looking back over the year, it turns out we also did a decent amount of work *outside* of Immich as well.
Here is a list of websites that we launched throughout the year:
* [https://immich.app/](https://immich.app/) — New homepage & blog
* [https://immich.store](https://immich.store/) — Merch with a new mascot, Mich
* [https://data.immich.app/](https://data.immich.app/) — Data website with fancy charts
* [https://api.immich.app/](https://api.immich.app/) — New API documentation
https://preview.redd.it/5ngxdi9n3u8g1.png?width=1080&format=png&auto=webp&s=777231866b70df2870217652113918b76c2131e1
[](https://preview.redd.it/2025-immichs-year-in-review-v0-h8i3sdbwkt8g1.png?width=3092&format=png&auto=webp&s=d551fdc99a80f6bdd9727e312f98e49c8404c2c9)
* [https://ui.immich.app/](https://ui.immich.app/) — Svelte UI component library
https://preview.redd.it/b89mwo2o3u8g1.png?width=1080&format=png&auto=webp&s=4a686154c0342b6840234728e16c182e15f13e2c
[](https://preview.redd.it/2025-immichs-year-in-review-v0-olg6yuuxkt8g1.png?width=2782&format=png&auto=webp&s=e61af696b5ba768324e41097e0e7a536b91691ec)
* [https://awesome.immich.app/](https://awesome.immich.app/) — A list of awesome apps, integrations, tools, distributions, and guides
# Fun Statistics
* Grew from **55,000** stars to **87,000** stars on GitHub
* **1** major release, **25** minor releases (v1.124 -v1.144 & v2.0 — v2.4)
* **35,000+** Discord members and 42,000+ Reddit member
* **8,800+** commits of love, sweat, and occasional tears
* **\~1700** contributors
* **\~2930** commits to main in this year, meaning we have gone through the review process for the same number of PR
# Hello, 2026!
Looking ahead to 2026, we are excited to continue building Immich into the best self-hosted solution for photo and video management, with new features and services that deliver data sovereignty, privacy, and the peace of mind that comes with self-hosting.
Sneak peek at some of the features that *might* get delivered in January
* Workflows
* Restore database from the web UI
* Integrity check
None of this would have been possible without our incredible community. Thank you for being so patient during the bumpy period, for your detailed bug reports, your feature suggestions, and your creative contributions.
On behalf of FUTO, we wish you a peaceful and joyful holiday season. We will wind down on GitHub and Discord activity for the rest of the year to recharge, collect more memories, and come back strong in 2026.
*And as always, if you find the project helpful, you can support us
2025 - Immich's Year in Review
Hello everyone!
As we approach the holidays, we wanted to take a moment to look back at the past year with all of you. There's something about working on Immich that makes time feel... different. A year somehow feels like three. Days blend into weeks, weeks into months, and suddenly we look back and realize just how much we have done.
We crossed the 1.5-year mark since becoming FUTOnians, and we still feel incredibly grateful for where we are. The whole team gets to work on what we love, every single day. That's not something most people get to say, and we don't take it for granted.
This year, we brought on more people full-time, some from within the Immich core team and others from outside the community. The team is growing, and so is the project's scope as we work to make it the best self-hosted photo management system out there.
Immich Team \(LTR: Chris, Zack, Jason, Alex, Paul, Daniel, Ganka, Mert, missing the Boet and the intern, Brandon\)
(https://preview.redd.it/2025-immichs-year-in-review-v0-2wd9n17okt8g1.png?width=2048&format=png&auto=webp&s=7ffa7909e65d1f15e970a942a7fd922fa230cf25)
So let us walk you through what "three years in one" actually looked like.
# All I wanted for last Christmas was "Stable"!
Since the beginning of the year, we have set a stable version of Immich as our team's development priority. We knew it would be a journey, and the team came together in ways that we're all so proud of, tackling challenges and roadblocks to finally deliver it on October 1st.
Three major technical overhauls defined the year's goal
1. Database Modernization
We rebuilt how Immich's server talks to the database, the core system that pieces everything together. We migrated the entire server database-fetching mechanism to a new library that gives us more control over how we interact with data, while still providing a superb developer experience. This results in rewriting ALL the database queries on the server.
2. Streaming Sync Infrastructure
With the new database foundation in place, we could finally build a mechanism to continuously stream data from the server to the mobile app, rather than a single large request. This required creating entirely new data-streaming capabilities on the server, enabling your server and mobile app to handle the data flow efficiently. This is one of the most complex works to date; it requires handling when the data changes, determining what should be sent to the server, and in what order.
3. Mobile App Rewrite
The old mobile app wasn't designed for this new sync approach. So we rewrote it from the ground up. The entire user interface was rebuilt, and critically, all sync operations now happen in the background. No more waiting for the data sync to finish or watching the app freeze; the data is synced seamlessly while you continue browsing your library.
Each of these steps came with its own set of challenges, requiring countless hours of discussion, debugging, and iteration. The team showed incredible dedication, working through problems together via chat, voice calls, and late-night troubleshooting sessions.
Despite this heavy foundation work, we still managed to ship an incredible amount of new features and improvements.
85 new features
200 enhancements to existing features
290 bug fixes
Here are some highlights from those improvements:
HDR video support with our native video player
Search by tags and descriptions
Manual face tagging for better organization
Folder view in the mobile app
QR codes for shared links
Persistent memories that don't disappear
Improved external library scanning
Customizable nightly job scheduling
Enhanced map features with points of interest
Multiple admin account support
Mobile app widgets for your home
hi my name is lee and im addicted to spider solitaire.
https://redd.it/1ptf1rq
@r_SelfHosted
Dispatcharr Release v0.15.1 - IPTV Stream & EPG Management
Hey everyone,
Quick refresher for those who haven't seen our [previous post](https://www.reddit.com/r/selfhosted/comments/1nx5l9h/dispatcharr_your_ultimate_iptv_stream_management/): **Dispatcharr** is an open-source middleware for managing IPTV streams and EPG data. It doesn't provide any content - it simply helps you import your own sources (M3U playlists, EPG/XMLTV, Xtream/XC credentials) and export them in whatever format your client needs (M3U, EPG, Xtream/XC, HDHomeRun). Think of it as a translator between your providers and your apps (Plex, Jellyfin, Emby, Tivimate, etc.).
We've been busy since our last post, so here's what's new from **v0.10.1 through v0.15.1**:
# EPG & Guide Improvements
* **EPG Source Priority** \- Control which EPG source takes precedence when multiple sources match the same channel
* **Massive EPG Parsing Performance** \- EPG files are now parsed once per source instead of once per channel (\~99x fewer file scans for large sources)
* **Custom Dummy EPG** \- Create dynamic program guides using regex pattern matching with timezone support, custom templates, date/time placeholders, and custom posters/logos
* **Smarter EPG Matching** \- Now respects source priority and only uses active/enabled EPG sources
* **Virtualized TV Guide Rendering** \- Smoother scrolling and better performance for large guides
* **TV Guide Scrolling & Sync** \- Mouse-wheel scrolling, synchronized timeline, and improved mobile touch support
* **EPG Status Updates** \- EPG table updates in real-time via WebSocket
* **Gracenote ID Matching** \- Exact matching support for EPG channel mapping
# Backup & Restore
* **Automated Configuration Backup & Restore** \- Scheduled backups (or create them manually) with retention policies, export and upload directly from the WebUI, and async task processing for restores
# Stream & Protocol Support
* **RTSP Stream Support** \- Automatic protocol detection with FFmpeg handling
* **UDP Stream Support** \- Including multicast streams (may require host networking)
* **Improved EXTINF Parsing** \- Better handling of attributes with quotes and commas
* **URL Length Increase** \- Stream URLs now support up to 4096 characters
# VOD & Series
* **Separate VOD Logo System** \- Independent management of movie/series artwork with server-paginated UI
* **Copy-Link Buttons** \- Easily share Series and VOD URLs
* **Automatic "Uncategorized" Grouping** \- Missing VOD categories are auto-created
* **Episode URL Fixes** \- Proper UUID handling for all providers
* **VOD Client Disconnect** \- Stop individual VOD connections directly from the Stats page
* **Duplicate Episode Handling** \- Episodes in multiple languages/qualities now reuse a single record instead of creating duplicates
* **XtreamCodes Series Streaming Fixes** \- Correctly selects the best stream when multiple exist, series info API now returns unique episode entries
# Monitoring & Logging
* **System Event Logging & Viewer** \- Comprehensive logging for M3U refreshes, EPG updates, stream switches, auth events, and errors with a dedicated UI viewer
* **M3U/EPG Endpoint Caching** \- Reduced database load and faster response times
* **Background Profile Refresh** \- Automatic provider/account refresh with rate-limiting to avoid bans
# Channel & Bulk Management
* **Sortable Streams Table** \- Sort by Group and M3U columns
* **Assign TVG-ID from EPG** \- Single and batch operations
* **Enhanced Bulk Editor** \- Confirmation dialogs, Clear EPG button, batch logo editing
* **Improved Bulk Edits** \- Changes validated upfront and applied in single database transactions
# DVR Enhancements
* **Manual Recording Scheduling** \- Schedule recordings for channels without EPG data
* **Comskip Integration** \- Upload comskip.ini and set custom directories
* **User-Selected Date/Time Formats** \- DVR cards respect your chosen format
* **Time Zone Settings** \- Application-wide timezone configuration
# Performance & Reliability
* **Configurable Process Priority** \- Set nice levels for
Run UniFi OS Server in Docker - 5.0.6 released!
Hello!
The latest release of UniFi OS Server dropped a few days ago, and my project aims to integrate OS Server into your existing Docker or Kubernetes stack. It provides additional functionality such as configuration through environment variables and directory/permissions fixes. The full release cycle is automated with GitHub actions so you can be sure that the image is continuously updated when new releases of OS Server become available.
GitHub
Why run in Docker instead of using UniFi’s binary?
UniFi OS Server is shipped as a single binary from UniFi which requires Podman. Managing the installation is done with their own uosserver commands which is not very portable and you will most likely require a dedicated machine or VM. Running in Docker, you can also integrate with your existing reverse proxy for SSL termination and networking.
OS Server vs Network Controller
UniFi OS Server is replacing the legacy UniFi Network Server. While the Network Server provided basic hosting functionality, it lacked support for key UniFi OS features like Organizations, IdP Integration, or Site Magic SD-WAN. UniFi OS Server now delivers the same management experience as UniFi-native–including CloudKeys, Cloud Gateways, and Official UniFi Hosting–and is fully compatible with Site Manager for centralized, multi-site control.
https://redd.it/1ptbpxh
@r_SelfHosted
0;`
`}`
`location ~ \.(?:css|js|mjs|svg|gif|ico|jpg|png|webp|wasm|tflite|map|ogg|flac)$ {`
`try_files $uri /index.php$request_uri;`
`add_header Cache-Control "public, max-age=15778463$asset_immutable";`
`access_log off;`
`location ~ \.wasm$ { default_type application/wasm; }`
`}`
`location ~ \.woff2?$ {`
`try_files $uri /index.php$request_uri;`
`expires 7d;`
`access_log off;`
`}`
`location /remote {`
`return 301 /remote.php$request_uri;`
`}`
`location / {`
`try_files $uri $uri/ /index.php$request_uri;`
`}`
`}`
`}`
\#### Step 4: The PHP Config (\`php-fpm\` folder)
We need to tune the workers. The default config is often too conservative.
\*\*File 1: \`php-fpm/www.conf\`\*\*
This is where the performance magic happens. We switch to \`dynamic\` process management and increase the child limits.
`[www]`
`user = www-data`
`group = www-data`
`listen =` [`127.0.0.1:9000`](http://127.0.0.1:9000)
`pm = dynamic`
`pm.max_children = 500`
`pm.start_servers = 20`
`pm.min_spare_servers = 10`
`pm.max_spare_servers = 30`
\*\*File 2: \`php-fpm/docker.conf\`\*\*
Ensures logs go to the docker output.
`[global]`
`error_log = /proc/self/fd/2`
`log_limit = 8192`
`[www]`
`access.log = /proc/self/fd/2`
`clear_env = no`
`catch_workers_output = yes`
`decorate_workers_output = no`
\*\*File 3: \`php-fpm/zz-docker.conf\`\*\*
Prevents the container from daemonizing.
`[global]`
`daemonize = no`
`[www]`
`listen = 9000`
\#### Step 5: Launch & Connect OnlyOffice
1. Run \`docker compose up -d\`.
2. Open your browser to \`http://YOUR\_SERVER\_IP:8080\`.
3. \*\*Nextcloud Setup Wizard:\*\*
\* \*\*Database:\*\* Select PostgreSQL.
\* \*\*Host:\*\* \`nc\_postgres\` (This matches the container name in compose).
\* \*\*User/Pass:\*\* Use the values you set in \`compose.yaml\`.
4. \*\*Connect OnlyOffice:\*\*
\* Install the "ONLYOFFICE" app from the Nextcloud Apps menu.
\* Go to Settings -> Administration -> ONLYOFFICE.
\* \*\*ONLYOFFICE Docs address:\*\* \`http://nc\_onlyoffice\_documentserver\` (This uses the internal docker network, which is super fast and avoids loopback issues).
\* \*\*Secret Key:\*\* Enter the \`JWT\_SECRET\` you defined in \`compose.yaml\`.
\* Save.
You should now be able to open docx/xlsx files instantly.
Enjoy!
https://redd.it/1pt47pj
@r_SelfHosted
Sick of slow Nextcloud? Tutorial: Blazing Fast Nextcloud (FPM + Nginx + Postgres) linked with OnlyOffice [2025 Docker Compose]
Hi everyone,
I wanted to share a "maximum performance" guide for running Nextcloud. Many default tutorials suggest the standard Apache image with MariaDB, which is fine for small setups but can feel sluggish as you grow.
I have put together a stack that uses \*\*Nextcloud FPM + Nginx + Postgres + Redis\*\*. It also fully integrates \*\*OnlyOffice\*\* so you can edit documents right in the browser, something that is often tricky to configure correctly because of mixed content errors or missing headers.
Its based on this (nor defunct and not working) setup provided by Onlyoffice themselves. No idea why they dont maintain it to work properly.
\### Why is this faster?
1. \*\*PHP-FPM vs Apache:\*\* We are using the \`nextcloud:stable-fpm\` image. This separates the PHP processing from the web server, allowing us to tune the worker processes specifically for high throughput.
2. \*\*Postgres 17:\*\* We are using PostgreSQL instead of MariaDB/MySQL. In my experience, Postgres handles concurrent read/writes better for Nextcloud's heavy file locking operations.
3. \*\*Tuned Nginx:\*\* The Nginx config included below enables HTTP/2, gzip compression, and aggressive caching for static assets.
4. \*\*Redis:\*\* Handles transactional file locking and caching to keep the web interface snappy.
5. \*\*Custom Workers:\*\* The config includes a tuned \`www.conf\` that increases the \`pm.max\_children\` limit, preventing the server from choking during heavy syncs.
\---
\### The Setup Guide
\*\*Prerequisites:\*\* A Linux server (Debian/Ubuntu recommended) with Docker and Docker Compose installed.
\#### Step 1: Directory Structure
Create a folder for your project. Inside it, create the following subfolders for the configuration files:
`nextcloud-stack/`
`├── compose.yaml`
`├── nginx.conf`
`└── php-fpm/`
`├── www.conf`
`├── docker.conf`
`└── zz-docker.conf`
\#### Step 2: The \`compose.yaml\`
Save this file in the root of your folder.
\*Note: I have set the network to be created automatically for simplicity. Replace the \`REDACTED\` passwords with strong secure strings.\*
`services:`
`# Database (Postgres 17)`
`nc_postgres:`
`image: postgres:17-alpine`
`container_name: nc_postgres`
`restart: unless-stopped`
`volumes:`
`- ./z_postgres_data:/var/lib/postgresql/data:Z`
`environment:`
`- POSTGRES_PASSWORD=REDACTED_DB_PASSWORD`
`- POSTGRES_DB=nextcloud`
`- POSTGRES_USER=nextcloud`
`# Redis (Cache & Locking)`
`nc_redis:`
`image: redis:alpine`
`container_name: nc_redis`
`command: redis-server --requirepass REDACTED_REDIS_PASSWORD`
`restart: unless-stopped`
`volumes:`
`- ./z_redis_data:/data`
`# Nginx (Web Server)`
`nc_nginx:`
`container_name: nc_nginx`
`image: nginx:alpine`
`restart: unless-stopped`
`ports:`
`- 8080:80 # Access via` [`http://your-ip:8080`](http://your-ip:8080)
`# - 443:443 # Uncomment if configuring SSL directly here`
`volumes:`
`- ./nginx.conf:/etc/nginx/nginx.conf:ro`
`- ./z_nextcloud_data:/var/www/html:ro`
`depends_on:`
`- nc_app`
`- nc_onlyoffice_documentserver`
`# Nextcloud (PHP-FPM)`
`nc_app:`
`container_name: nc_app`
`image: nextcloud:stable-fpm`
`restart: unless-stopped`
`environment:`
`# - NEXTCLOUD_TRUSTED_DOMAINS=your.domain.com`
`- POSTGRES_HOST=nc_postgres`
`- POSTGRES_DB=nextcloud`
`- POSTGRES_USER=nextcloud`
`- POSTGRES_PASSWORD=REDACTED_DB_PASSWORD`
`- REDIS_HOST=nc_redis`
`- REDIS_HOST_PASSWORD=REDACTED_REDIS_PASSWORD`
`- PHP_MEMORY_LIMIT=2048M`
`- PHP_UPLOAD_LIMIT=4096M`
`volumes:`
`- ./z_nextcloud_data:/var/www/html`
`# Map our custom PHP config tweaks`
`- ./php-fpm:/usr/local/etc/php-fpm.d`
`depends_on:`
`- nc_postgres`
`- nc_redis`
`# OnlyOffice Document Server`
`nc_onlyoffice_documentserver:`
`container_name: nc_onlyoffice_documentserver`
`image: onlyoffice/documentserver:latest`
`restart: unless-stopped`
`environment:`
`- JWT_ENABLED=true`
`-
BackApp UI for automated backup management over ssh
https://redd.it/1pt2cd0
@r_SelfHosted
We made this to quickly get rid of trash pics on your immich in a fun way
https://github.com/dev-nick421/immich-swipe
My gf came up with the idea so I just started making it. A friend which is also a dev and user of immich joined in…. And now we have this. We set it public a few days ago.
Basically works like tinder.
You can also add pictures to albums, fav them, skip videos, add multiple users etc.
You can find a comprehensive description in the repo.
Give it a try, it works really well on both desktop and mobile. It’s quite addicting, all of us spent more time than we would have liked to with it, haha. Its a great way to clean up your photo library.
All you need is CORS enabled on the proxy to your immich instance and an api key
We‘ll continue improving it, but it’s just a side project and it’s already at a point where it’s pretty good
https://redd.it/1pucaey
@r_SelfHosted
lagident - A tool to find poor quality network connections
https://redd.it/1pu5k2w
@r_SelfHosted
Critical n8n Flaw (CVSS 9.9) Enables Arbitrary Code Execution Across Thousands of Instances
https://thehackernews.com/2025/12/critical-n8n-flaw-cvss-99-enables.html
https://redd.it/1pu0278
@r_SelfHosted
Nix-Podman-Stacks: Declarative rootless Podman Quadlets on any Linux distro
https://redd.it/1ptvar4
@r_SelfHosted
Build a TUI Styled App for Infrastructure Monitoring & Management.
https://redd.it/1ptsnb7
@r_SelfHosted
I built a TUI client for WhatsApp
https://redd.it/1ptnfay
@r_SelfHosted
at* [*https://buy.immich.app/.*](https://buy.immich.app/)
Cheers,
The Immich Team
https://redd.it/1ptdemf
@r_SelfHosted
2025 - Immich's Year in Review
Hello everyone!
As we approach the holidays, we wanted to take a moment to look back at the past year with all of you. There's something about working on Immich that makes time feel... different. A year somehow feels like three. Days blend into weeks, weeks into months, and suddenly we look back and realize just how much we have done.
We crossed the 1.5-year mark since becoming FUTOnians, and we still feel incredibly grateful for where we are. The whole team gets to work on what we love, every single day. That's not something most people get to say, and we don't take it for granted.
This year, we brought on more people full-time, some from within the Immich core team and others from outside the community. The team is growing, and so is the project's scope as we work to make it the best self-hosted photo management system out there.
[Immich Team \(LTR: Chris, Zack, Jason, Alex, Paul, Daniel, Ganka, Mert, missing the Boet and the intern, Brandon\)](https://preview.redd.it/4ey1micb3u8g1.png?width=1080&format=png&auto=webp&s=ddceb5be023add854529a853df1aa94a032e3563)
[](https://preview.redd.it/2025-immichs-year-in-review-v0-2wd9n17okt8g1.png?width=2048&format=png&auto=webp&s=7ffa7909e65d1f15e970a942a7fd922fa230cf25)
So let us walk you through what "three years in one" actually looked like.
# All I wanted for last Christmas was "Stable"!
Since the beginning of the year, we have set a stable version of Immich as our team's development priority. We knew it would be a journey, and the team came together in ways that we're all so proud of, tackling challenges and roadblocks to finally deliver it on October 1st.
Three major technical overhauls defined the year's goal
**1. Database Modernization**
We rebuilt how Immich's server talks to the database, the core system that pieces everything together. We migrated the entire server database-fetching mechanism to a new library that gives us more control over how we interact with data, while still providing a superb developer experience. This results in rewriting ALL the database queries on the server.
**2. Streaming Sync Infrastructure**
With the new database foundation in place, we could finally build a mechanism to continuously stream data from the server to the mobile app, rather than a single large request. This required creating entirely new data-streaming capabilities on the server, enabling your server and mobile app to handle the data flow efficiently. This is one of the most complex works to date; it requires handling when the data changes, determining what should be sent to the server, and in what order.
**3. Mobile App Rewrite**
The old mobile app wasn't designed for this new sync approach. So we rewrote it from the ground up. The entire user interface was rebuilt, and critically, all sync operations now happen in the background. No more waiting for the data sync to finish or watching the app freeze; the data is synced seamlessly while you continue browsing your library.
Each of these steps came with its own set of challenges, requiring countless hours of discussion, debugging, and iteration. The team showed incredible dedication, working through problems together via chat, voice calls, and late-night troubleshooting sessions.
Despite this heavy foundation work, we still managed to ship an incredible amount of new features and improvements.
* 85 new features
* 200 enhancements to existing features
* 290 bug fixes
Here are some highlights from those improvements:
* HDR video support with our native video player
* Search by tags and descriptions
* Manual face tagging for better organization
* Folder view in the mobile app
* QR codes for shared links
* Persistent memories that don't disappear
* Improved external library scanning
* Customizable nightly job scheduling
* Enhanced map features with points of interest
* Multiple admin account support
* Mobile app widgets for your home
Homarr on rooted echo show
https://redd.it/1pti8un
@r_SelfHosted
uWSGI and Celery to prioritize streaming
* **Threaded HTTP Streamer** \- Improved robustness with piped output
* **Resource Cleanup** \- Fixes for "Too many open files" errors
* **Ghost Client Handling** \- Better cleanup of orphaned connections
* **Atomic EPG Writes** \- Clients never see partial data during refresh
* **IPv6 CIDR Support** \- Full IPv6 validation in network settings
# UI/UX Polish
* **Revamped Login Screen** \- Cleaner layout with "Remember Me" option
* **Improved First-Time Setup** \- Initial superuser creation page now matches login design with logo, welcome messaging, and version display
* **Logo Manager Modal** \- Add logos by URL directly from channel editor
* **Search Icons in Tables** \- Better visual clarity in Channels and Streams tables
* **Alphabetical EPG Dropdowns** \- Sorted EPG source selection
* **M3U POST Support** \- Restored compatibility for Smarters-style clients
* **Mobile Scrolling Fixes** \- M3U/VOD profile modals now scrollable on mobile
* **Resizable Floating Video Player** \- Drag-based resizing with minimum size enforcement
# Security
* **v0.13.1 Security Patch** \- If your API is exposed publicly, please update immediately
**Important Notes:**
* Dispatcharr does not provide media to stream or download. It is strictly middleware for managing sources you supply.
* Any discussion involving piracy or obtaining illegal sources is strictly prohibited.
* When deploying, the `docker-compose.aio.yml` is highly recommended.
**Links:**
* [GitHub](https://github.com/Dispatcharr/Dispatcharr)
* [Documentation](https://dispatcharr.github.io/Dispatcharr-Docs/)
* [Discord](https://discord.gg/dispatcharr)
**Core Development Team**
* [u/xxSergeantPandaxx](https://www.reddit.com/user/xxSergeantPandaxx/)
* [u/OkinawaBoss](https://www.reddit.com/user/OkinawaBoss/)[ ](https://www.reddit.com/user/Dekzter/)
* [u/Dekzter](https://www.reddit.com/user/Dekzter/)
And a HUGE thank you to everyone that has contributed via PRs, tools, plugins, feature requests, and bug reports!
We'd love your feedback, bug reports, and feature ideas. Thanks for the support!
https://redd.it/1pte9th
@r_SelfHosted
Dispatcharr Release v0.15.1 - IPTV Stream & EPG Management
Hey everyone,
Quick refresher for those who haven't seen our previous post: Dispatcharr is an open-source middleware for managing IPTV streams and EPG data. It doesn't provide any content - it simply helps you import your own sources (M3U playlists, EPG/XMLTV, Xtream/XC credentials) and export them in whatever format your client needs (M3U, EPG, Xtream/XC, HDHomeRun). Think of it as a translator between your providers and your apps (Plex, Jellyfin, Emby, Tivimate, etc.).
We've been busy since our last post, so here's what's new from v0.10.1 through v0.15.1:
# EPG & Guide Improvements
EPG Source Priority \- Control which EPG source takes precedence when multiple sources match the same channel
Massive EPG Parsing Performance \- EPG files are now parsed once per source instead of once per channel (\~99x fewer file scans for large sources)
Custom Dummy EPG \- Create dynamic program guides using regex pattern matching with timezone support, custom templates, date/time placeholders, and custom posters/logos
Smarter EPG Matching \- Now respects source priority and only uses active/enabled EPG sources
Virtualized TV Guide Rendering \- Smoother scrolling and better performance for large guides
TV Guide Scrolling & Sync \- Mouse-wheel scrolling, synchronized timeline, and improved mobile touch support
EPG Status Updates \- EPG table updates in real-time via WebSocket
Gracenote ID Matching \- Exact matching support for EPG channel mapping
# Backup & Restore
Automated Configuration Backup & Restore \- Scheduled backups (or create them manually) with retention policies, export and upload directly from the WebUI, and async task processing for restores
# Stream & Protocol Support
RTSP Stream Support \- Automatic protocol detection with FFmpeg handling
UDP Stream Support \- Including multicast streams (may require host networking)
Improved EXTINF Parsing \- Better handling of attributes with quotes and commas
URL Length Increase \- Stream URLs now support up to 4096 characters
# VOD & Series
Separate VOD Logo System \- Independent management of movie/series artwork with server-paginated UI
Copy-Link Buttons \- Easily share Series and VOD URLs
Automatic "Uncategorized" Grouping \- Missing VOD categories are auto-created
Episode URL Fixes \- Proper UUID handling for all providers
VOD Client Disconnect \- Stop individual VOD connections directly from the Stats page
Duplicate Episode Handling \- Episodes in multiple languages/qualities now reuse a single record instead of creating duplicates
XtreamCodes Series Streaming Fixes \- Correctly selects the best stream when multiple exist, series info API now returns unique episode entries
# Monitoring & Logging
System Event Logging & Viewer \- Comprehensive logging for M3U refreshes, EPG updates, stream switches, auth events, and errors with a dedicated UI viewer
M3U/EPG Endpoint Caching \- Reduced database load and faster response times
Background Profile Refresh \- Automatic provider/account refresh with rate-limiting to avoid bans
# Channel & Bulk Management
Sortable Streams Table \- Sort by Group and M3U columns
Assign TVG-ID from EPG \- Single and batch operations
Enhanced Bulk Editor \- Confirmation dialogs, Clear EPG button, batch logo editing
Improved Bulk Edits \- Changes validated upfront and applied in single database transactions
# DVR Enhancements
Manual Recording Scheduling \- Schedule recordings for channels without EPG data
Comskip Integration \- Upload comskip.ini and set custom directories
User-Selected Date/Time Formats \- DVR cards respect your chosen format
Time Zone Settings \- Application-wide timezone configuration
# Performance & Reliability
Configurable Process Priority \- Set nice levels for
Need help finding something better for project management.
I'm currently using vikunja, and it's been.... okay. There are several things I find annoying about it, and I'm hoping to find something better. My main complaints are related to things that I haven't been able to find in documentation for some of the other project management solutions I've looked at.
I'll list out some of the things I'm looking for, and some of the complaints I have about vikunja, hopefully some of you have experience with options that fit my needs better. It's entirely possible I'm doing things on hard mode, so suggestions for better ways to use the available tools or improve my workflow is also welcome:
I'm a one man band, I'm the only one using this, so I don't really care about things like ingress/triage of incoming tasks, notifications, etc. A solution that has those kind of features is fine, as long as they don't get in the way.
This seems obvious, but the goal here is to lower my workload. If project management takes a ton of work to set up and use, it'll just get in the way. This is how I currently feel about vikunja.
My current workflow for my daily tasks is to create a new project for each month, and create tasks in that project for what I need to get done that month. This is the only time management I use. I don't have deadlines for each task, I don't use the due date functionality in vikunja. At the end of the month, anything that isn't complete is moved to the next month project. This workflow kind of sucks in vikunja. There aren't templates or configurable defaults for new projects, so I have to recreate the columns in my kanban boards every time. There's also no way to bulk move tasks between projects. Moving tasks is very clunky and tedious. (same goes for changing due dates. I don't use that functionality, but the same problem exists if I did) I could see this maybe being improved or solved by having multiple projects share a kanban board, but vikunja doesn't support that.
Most of my tasks aren't one-off. I will do a task, then in a few months, I'll need to do it again. Some of those tasks I do every month or two, some I will only do once a year. Having something like a backlog I can move tasks to/from would be nice, so I can keep notes in each task to remind myself of things I did wrong, ways to improve, etc. The start of a new month could just be creating a new project and bulk moving a bunch of tasks from the backlog to the new project.
https://redd.it/1pt7c7p
@r_SelfHosted
JWT_SECRET=REDACTED_JWT_SECRET`
`- JWT_HEADER=AuthorizationJwt`
`- JWT_IN_BODY=true`
`volumes:`
`- ./z_documentserver/logs:/var/log/onlyoffice`
`- ./z_documentserver/data:/var/www/onlyoffice/Data`
`- ./z_documentserver/lib:/var/lib/onlyoffice`
`- ./z_documentserver/rabbitmq:/var/lib/rabbitmq`
`- ./z_documentserver/redis:/var/lib/redis`
`- ./z_documentserver/db:/var/lib/postgresql`
`depends_on:`
`- nc_app`
`networks:`
`default:`
`driver: bridge`
\#### Step 3: The \`nginx.conf\`
This file connects Nginx to the PHP-FPM container. Save this as \`nginx.conf\` in the root folder.
`worker_processes auto;`
`error_log /var/log/nginx/error.log warn;`
`pid /var/run/nginx.pid;`
`events {`
`worker_connections 1024;`
`}`
`http {`
`include mime.types;`
`default_type application/octet-stream;`
`types {`
`text/javascript mjs;`
`application/wasm wasm;`
`}`
`log_format main '$remote_addr - $remote_user [$time_local] "$request" '`
`'$status $body_bytes_sent "$http_referer" '`
`'"$http_user_agent" "$http_x_forwarded_for"';`
`access_log /var/log/nginx/access.log main;`
`sendfile on;`
`server_tokens off;`
`keepalive_timeout 65;`
`map $arg_v $asset_immutable {`
`"" "";`
`default ", immutable";`
`}`
`upstream php-handler {`
`server nc_app:9000;`
`}`
`server {`
`listen 80;`
`# Upload size limit - adjust as needed`
`client_max_body_size 512M;`
`client_body_timeout 300s;`
`fastcgi_buffers 64 4K;`
`client_body_buffer_size 512k;`
`# Gzip settings`
`gzip on;`
`gzip_vary on;`
`gzip_comp_level 4;`
`gzip_min_length 256;`
`gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;`
`gzip_types application/atom+xml text/javascript application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/wasm application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;`
`# Headers`
`add_header Referrer-Policy "no-referrer" always;`
`add_header X-Content-Type-Options "nosniff" always;`
`add_header X-Frame-Options "SAMEORIGIN" always;`
`add_header X-Permitted-Cross-Domain-Policies "none" always;`
`add_header X-Robots-Tag "noindex, nofollow" always;`
`add_header X-XSS-Protection "1; mode=block" always;`
`fastcgi_hide_header X-Powered-By;`
`root /var/www/html;`
`index index.php index.html /index.php$request_uri;`
`location = / {`
`if ( $http_user_agent ~ ^DavClnt ) {`
`return 302 /remote.php/webdav/$is_args$args;`
`}`
`}`
`location = /robots.txt {`
`allow all;`
`log_not_found off;`
`access_log off;`
`}`
`location ^~ /.well-known {`
`location = /.well-known/carddav { return 301 /remote.php/dav/; }`
`location = /.well-known/caldav { return 301 /remote.php/dav/; }`
`location /.well-known/acme-challenge { try_files $uri $uri/ =404; }`
`location /.well-known/pki-validation { try_files $uri $uri/ =404; }`
`return 301 /index.php$request_uri;`
`}`
`location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; }`
`location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; }`
`location ~ \.php(?:$|/) {`
`rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|ocs-provider\/.+|.+\/richdocumentscode(_arm64)?\/proxy) /index.php$request_uri;`
`fastcgi_split_path_info ^(.+?\.php)(/.*)$;`
`set $path_info $fastcgi_path_info;`
`try_files $fastcgi_script_name =404;`
`include fastcgi_params;`
`fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;`
`fastcgi_param PATH_INFO $path_info;`
`fastcgi_param modHeadersAvailable true;`
`fastcgi_param front_controller_active true;`
`fastcgi_pass php-handler;`
`fastcgi_intercept_errors on;`
`fastcgi_request_buffering off;`
`fastcgi_max_temp_file_size
Stremio-like app for music
With the recent 300TB Spotify download, it seems a Stremio type app for streaming music files without download should be possible. Is there anything like this for music?
https://redd.it/1pt2sk8
@r_SelfHosted
Plane v1.2.0: We moved our entire codebase from Next.js to React Router + Vite
Hey r/selfhosted,
This is Vihar from Plane. I'm excited to share what we've been working on. Your feedback from our v1.0 announcement was incredibly valuable.
>For those new to Plane, it's an open-core project management system designed as a self-hosted alternative to tools like Jira. We focus on speed, reliability, and extensibility, with our Community Edition licensed under AGPL-3.0.
GitHub link: https://github.com/makeplane/plane
Today, we're sharing Plane v1.2.0, and v1.2.1, a release focused on refining the user experience, supercharging workflows, and hardening security.
# What's New in v1.2.0
While our v1.0 release was about building a stable foundation and migrating our front end to React Router + Vite, v1.2.0 is about making Plane faster and more intuitive to use every day.
A Redesigned Navigation Experience
We've completely overhauled navigation to reduce visual noise and make moving across your workspace faster. Project-specific features like Cycles, Modules, and Pages are now neatly organized as horizontal tabs within each project.
https://preview.redd.it/07g3x5cpkr8g1.png?width=3840&format=png&auto=webp&s=9a684541307680d08cca12f87ab4a062ad4d210d
Power K, Supercharged
We believe in keyboard-first workflows. With the new Power K command menu, you can now do almost anything without touching your mouse. Contextual shortcuts are available in every work item and page, allowing you to instantly create issues, navigate projects, toggle sidebars, and much more.
https://preview.redd.it/4rtbf5uqkr8g1.png?width=3840&format=png&auto=webp&s=26bc2d943e69813b4c2e089fd0b9a4cb9892849c
Triage State for Intake
To make managing incoming requests cleaner, we've introduced a dedicated Triage state for our Intake feature. All new requests land here first, allowing you to process them without cluttering your project's active states. This keeps your boards focused on work-in-progress.
https://preview.redd.it/dxw5kx4skr8g1.png?width=3840&format=png&auto=webp&s=d6b91a85be5853d7bab028167dda8c615a3f772b
# Technical Enhancements & Security
• Security Hardening: We've patched several vulnerabilities, including upgrading Next.js and React to address CVE-2025-66478 and CVE-2025-55182 (both related to RCE ). We also upgraded Django to 4.2.27 to mitigate a potential SQL injection vulnerability and updated our Nginx version.
• API Expansion: We've added new endpoints for workspace invitations and project member management, along with external APIs for Stickies.
• Improved Reliability: We implemented a fallback mechanism in our editor to prevent data loss during connection interruptions. We also fixed bugs related to activity timeline ordering, calendar layouts, and API responses.
We're proud of this release and believe it makes Plane a more powerful and enjoyable tool for self-hosted teams. As always, we're eager to hear your feedback.
We also did a quick summary of what we've shipped in 2025, in case if you're curious.
Thank you for being part of our journey.
\~ Team Plane
https://redd.it/1pt0qzx
@r_SelfHosted