Reading view

What's your most 'set it and forget it' self-hosted service?

I keep reading about people spending weekends debugging their self-hosted stacks, but I'm curious about the opposite — what services have you deployed that just work with zero maintenance?

For me it's Vaultwarden. Set it up over a year ago in Docker, mapped a volume, set up a daily backup cron, and haven't touched it since. It just runs. Auto-syncs across all my devices, never crashed, never needed an update that broke anything.

Close second is Uptime Kuma — dead simple monitoring dashboard that sends me alerts when something else breaks. Ironic that the monitoring tool is the most reliable thing in my stack.

What's yours?

submitted by /u/ruibranco to r/selfhosted
[link] [comments]

Unpopular opinion: most web apps don't need a frontend framework

I've been building web apps for over a decade, and I've reached a conclusion that would have gotten me laughed out of any standup meeting five years ago: most of the apps I've built didn't actually need React, Vue, or Angular.

Hear me out.

The majority of web applications are glorified CRUD forms with some data display. They don't need client-side routing. They don't need a virtual DOM. They don't need a 200KB JavaScript bundle just to render a list of items that could have been server-rendered HTML.

What they actually need: - Server-rendered HTML (any backend language can do this) - A sprinkle of JavaScript for interactivity (a modal here, a form validation there) - HTMX or Alpine.js for the dynamic bits that feel like they need a framework - Good CSS (which frameworks don't help with anyway)

I recently rebuilt an internal tool that was a React SPA with Redux, React Router, and 47 npm dependencies. The rebuild? Django templates + HTMX + 200 lines of vanilla JS. Same functionality, half the code, zero build step, and the junior devs on the team can actually understand and modify it without a week of onboarding.

The performance difference is wild too. First meaningful paint went from 2.3s to 0.4s because we're sending HTML instead of an empty div that waits for JavaScript to hydrate.

I'm not saying frameworks are bad. If you're building Figma, VS Code for the web, or a real-time collaborative tool — yes, you need a framework. But if you're building an admin panel, a content site, a dashboard, or an e-commerce store, you're probably overengineering it.

The industry defaulting to SPAs for everything is one of the most expensive collective decisions we've made as a community. We've traded simplicity for complexity and somehow convinced ourselves it was progress.

Anyone else gone back to server-rendered HTML and never looked back?

submitted by /u/ruibranco to r/webdev
[link] [comments]

Things I stopped doing in React that made my code better

After maintaining several production React apps over the past few years, here are patterns I actively stopped using and what I do instead:

1. Stopped using useEffect for derived state

Old habit:

const [items, setItems] = useState([]) const [filteredItems, setFilteredItems] = useState([]) useEffect(() => { setFilteredItems(items.filter(i => i.active)) }, [items]) 

Now I just compute it during render:

const filteredItems = useMemo(() => items.filter(i => i.active), [items]) 

Or honestly, skip the useMemo entirely if the list is small. An extra filter on 50 items is free.

2. Stopped putting everything in global state

Not every piece of data needs to be in Redux/Zustand. Modal open/closed? Local state. Form values? Local state. The selected tab? Local state. Global state should be for data that multiple unrelated components need simultaneously.

3. Stopped creating wrapper components for everything

I used to create <Card>, <Container>, <Wrapper> components that just added a className. Now I just use the className directly. Fewer files, fewer indirection layers, easier to find what applies what styles.

4. Stopped using index as key in lists

This one bit me in production. A list of editable inputs keyed by index — reorder the list and suddenly inputs have the wrong values. Always key by a stable identifier.

5. Stopped splitting components too early

A 200-line component that's only used once and handles one cohesive piece of UI is fine. Splitting it into 6 tiny components that each need props drilled through them just to satisfy some arbitrary line count rule makes it harder to follow.

What patterns have you actively removed from your React code?

submitted by /u/ruibranco to r/reactjs
[link] [comments]

Pi-hole vs AdGuard Home in 2026 — what are you running?

Been running Pi-hole for about 3 years and it's been solid. But I keep seeing people recommend AdGuard Home, especially for the built-in DoH/DoT support and per-client filtering.

For those who tried both: is the switch worth it? My main questions:

  • Blocklist compatibility (I have a pretty tuned set of lists)
  • Performance on a Raspberry Pi 4
  • Integration with Unbound as upstream resolver

Also curious if anyone went with Blocky or Technitium DNS instead. What are you running and why?

submitted by /u/ruibranco to r/selfhosted
[link] [comments]

Stop overcomplicating your CI/CD pipelines

Rant incoming.

I just inherited a project with a 2000-line Jenkins pipeline that deploys to Kubernetes. It has custom Groovy functions, shared libraries, 14 stages, parallel matrix builds for 3 environments, and a homegrown notification system that posts to Slack, Teams, AND email.

You know what it actually does? Build a Docker image, push it to ECR, and helm upgrade.

That's it. That's the whole deploy.

I replaced it with a 40-line GitHub Actions workflow in an afternoon. Same result, 10x easier to debug, and any new team member can understand it in 5 minutes instead of 5 days.

The lesson: complexity is not sophistication. If your CI/CD pipeline needs its own documentation site, you've gone too far. Start simple, add complexity only when you have a real problem that demands it.

Anyone else dealt with these over-engineered monstrosities?

submitted by /u/ruibranco to r/devops
[link] [comments]
❌