After five years of self-hosting a Matrix server, one developer reached an uncomfortable conclusion: the monthly VPS bill wasn’t the expensive part. The real cost? Two to four hours of monthly maintenance fighting database bloat, updating bridges, and troubleshooting performance issues. When trending on Hacker News today sparked fresh debate about infrastructure economics, the numbers tell a story most self-hosting advocates don’t want to hear.
The author’s verdict after five years? Switched to Snikket. Not because Matrix doesn’t work—but because it’s “increasingly oriented toward corporate customers rather than small self-hosters.” That shift reveals something important about the self-hosting narrative in 2025: sometimes the cloud wins, not because it’s better, but because your time costs more than $30 a month.
The Maintenance Nobody Warns You About
Infrastructure cost comparisons love to focus on the VPS bill. Matrix on a basic 2 CPU, 4GB RAM server runs $30-50 monthly. That’s cheaper than managed hosting at $100-150. The spreadsheet says you win. Except spreadsheets don’t track the 2-4 hours you’ll spend each month keeping it running.
Do the math over five years. VPS costs: $1,860. Time costs at $100/hour: $18,000. Total: $19,860. Compare that to managed cloud at $100/month with minimal admin overhead: $9,000 total. Self-hosting costs 2.2x more when you value your time. The break-even point? Your time needs to be worth less than $20/hour for self-hosting to make financial sense.
What eats that time? Database cleanup every 3-6 months. Bridge maintenance when APIs change. Performance troubleshooting when rooms suddenly lag. Per-room retention configuration that doesn’t even solve the main problem. The setup improved dramatically in 2025—under an hour instead of days—but the maintenance burden never goes away.
The Database Bloat That Won’t Die
Here’s the technical core of Matrix’s self-hosting problem: the state_groups_state table. It grows forever. It can consume 98% of your database disk space. And deleting rooms doesn’t delete the state data.
The author ran fewer than 10 active users. Database size still reached “several gigabytes.” One documented case saw a database balloon from 60-70 GB before manual compression brought it to 30 GB. The table can generate 10,000 new records per second during high activity. PostgreSQL VACUUM FULL and REINDEX become regular maintenance rituals, not one-time operations.
This isn’t a configuration problem or user error. It’s architectural. The Matrix GitHub issue tracking this has been open for years. Tools exist (synapse-compress-state) but require manual room-by-room compression. Message retention policies don’t help—state groups persist regardless of your settings.
Compare Element Server Suite’s minimum requirements (2 CPUs, 2GB RAM) to Snikket running XMPP (1 CPU, 128MB RAM) for the same user count. On a 1GB VPS, Matrix consumes 27.7% of memory while XMPP uses 1.4%. That’s a 19.8x difference in resource efficiency. The bloat isn’t theoretical—it’s measurable, recurring, and expensive.
Corporate Focus, Self-Hoster Neglect
Five years of running Matrix exposed what’s missing: no admin panel (the author built their own), users can’t be deleted (potential GDPR violation), federation can’t be disabled (you’re locked in), and registration tokens “did not work correctly in mobile apps.” These aren’t edge cases—they’re basic infrastructure needs.
Element X, the flagship client, performs poorly for small deployments and lacks background sync. The new Element Server Suite demands resources that seem designed for enterprise scale. The author’s assessment: “overkill for a dozen users.” Resources concentrate on large managed deployments, not efficiency improvements for self-hosters.
That’s why the switch to Snikket makes sense. More efficient. Timely notifications. Smooth onboarding. Matrix promised decentralized self-hosting but optimized for corporate customers. The irony stings: the alternative that works better for small teams is the older protocol (XMPP) everyone thought Matrix was replacing.
When Self-Hosting Actually Makes Sense
Self-hosting Matrix works—but only under specific conditions. Your time is worth less than $20/hour (student, hobbyist, retired). You have technical expertise (CLI comfortable, PostgreSQL familiar). You’re committed for 3+ years to recoup the setup learning curve. Privacy and data control justify the cost premium. And critically: you have 2-4 hours monthly for maintenance and you don’t mind spending them.
Cloud or managed hosting makes sense when your time is valuable ($50-100+/hour), growth is rapid or unpredictable, uptime requirements are critical (99.9%+ SLA), technical staff is limited, or compliance needs enterprise support. The fundamental question isn’t about monthly bills—it’s about opportunity cost in infrastructure decisions.
For small teams prioritizing efficiency, XMPP/Snikket offers a middle path. 19.8x more memory efficient than Matrix with less maintenance burden. The trade-off: platform support is currently limited to Android/iOS. But for teams that fit the profile, it solves the same problems without the database bloat crisis.
The Real Question
Is your time worth more than $30 a month? If you’re a professional developer earning $50-100/hour, the honest answer is yes. Managed services cost more monthly but less total. If you’re learning infrastructure, building for fun, or prioritizing control over convenience, self-hosting can make sense—but only if you’re honest about the maintenance commitment.
The 2025 reality: Matrix works best as managed infrastructure for companies. XMPP/Snikket works best for efficient small teams. Discord and Slack work best for teams that just want chat to work. Self-hosting is a choice, not a moral imperative. Calculate the real costs, including time. Then choose based on your actual priorities, not ideology.
After five years, one developer chose efficiency over features. That’s not a failure of Matrix—it’s clarity about what self-hosting actually costs.







