I Ditched Google Workspace and Saved My Company $9,000 (Here's How)
I Ditched Google Workspace and Saved My Company $9,000 (Here's How)

Look, I'm not going to sugarcoat this: I spent three years paying Google $300/month for Workspace before I finally did the math. That's $10,800 down the drain for a 25-person team. The kicker? I could've self-hosted the whole thing for less than $2,000 over the same period.
This article is my redemption story—and hopefully, your wake-up call.
Why Most Teams Never Make the Switch (And Why They're Wrong)
Every month, I watch companies hemorrhage money on cloud subscriptions. Google Workspace, Microsoft 365, Slack, Dropbox—the bills pile up while your data lives on someone else's servers. Your team knows it's expensive. Your CFO definitely knows it's expensive. But nobody does anything about it.
Why? Because everyone assumes self-hosting is hard, risky, and requires a dedicated DevOps team. They're wrong on all three counts.
I'm going to show you how Nextcloud gives you everything Google Workspace offers—email, docs, video calls, calendar, file storage—except you own the infrastructure, control the costs, and keep your data private. No vendor lock-in, no surprise price hikes, no AI training on your company documents.
What You Actually Get (Feature-for-Feature Comparison)
Here's what shocked me when I first deployed Nextcloud: it's not just "good enough." It's genuinely better for most use cases.
| Google Workspace | Nextcloud Equivalent | Why It's Actually Better |
|---|---|---|
| Gmail | Nextcloud Mail | IMAP integration—works with your existing email |
| Google Drive | Nextcloud Files | Unlimited storage (just add disks) |
| Google Docs/Sheets | Nextcloud Office (Collabora) | Real-time editing, no file format lock-in |
| Google Calendar | Nextcloud Calendar | CalDAV sync across ALL your devices |
| Google Contacts | Nextcloud Contacts | CardDAV sync, no Google tracking |
| Google Meet | Nextcloud Talk | Video calls + screenshare, encrypted |
| Google Chat | Nextcloud Talk | Team messaging, integrated |
| Google Tasks | Nextcloud Deck | Kanban boards, not just lists |
The game-changer? You pay for infrastructure once, not per-user-per-month forever.
With Google, adding a 26th employee means another $12/month. Forever. With Nextcloud, you scale up your $50/month server to $60, and you're done.
Before You Start (What You Actually Need)
Don't let anyone tell you self-hosting requires a computer science degree. Here's what you actually need:
- Elestio account (free tier available at https://elest.io)
- Domain name for your instance (e.g.,
cloud.yourcompany.com) - Rough headcount for sizing your server
- Email server OR just integrate with your existing one
- 30 minutes of uninterrupted time
Server sizing reality check:
- 1-10 users: 2 CPU / 4 GB RAM ($30-40/month)
- 10-50 users: 4 CPU / 8 GB RAM ($50-70/month)
- 50+ users: 8 CPU / 16 GB RAM ($90-120/month)
Compare that to Google Workspace Business at $12/user/month. Do the math.

Deploying Nextcloud (The Actually Easy Way)
I've deployed Nextcloud six different ways over the years. Manual Docker setup, Kubernetes (overkill), Snap packages (buggy), and finally Elestio. Should've started with Elestio.
Step 1: Spin Up Your Instance
- Log into Elestio
- Click "Create Service"
- Search for "Nextcloud"
- Select it
That's it. I'm not joking.
Step 2: Pick Your Infrastructure
Choose a cloud provider and region. If you're paralyzed by choice, just pick Hetzner in Frankfurt—great bang for buck, solid performance.
Available providers:
- Netcup (Europe-focused, cheap)
- Hetzner (my go-to for most deployments)
- DigitalOcean (if you're already there)
- Linode, Vultr, ScaleWay (all solid)
- BYO AWS/VM (if you hate money)
Resource selection: Pick based on your team size. You can always scale up later—I started with 2 CPU / 4 GB and upgraded after 6 months when we hit 40 users.
Step 3: Click Deploy (Seriously, That's It)
Hit "Deploy Service" and grab coffee. Elestio handles:
✅ Nextcloud installation
✅ Database setup (PostgreSQL, properly configured)
✅ SSL/TLS certificates
✅ Automated backups
✅ Security hardening
Deployment time: 5-10 minutes.
I spent two weeks setting this up manually the first time. Learn from my mistakes.
Step 4: Log In and Start Using It
Once deployed, Elestio gives you:
- Your Nextcloud URL
- Admin credentials (stored securely in the dashboard)
- SFTP access (if you need to dig into files)
- Database access (for when you inevitably want to customize everything)
Log in with the admin credentials. You're now running your own cloud.

Setting Up Team Collaboration (The Parts That Actually Matter)
Okay, here's where it gets interesting. Raw Nextcloud is like a freshly installed OS—functional but not useful until you configure it. These are the features that made my team actually switch.
Nextcloud Office: Why Our Docs Don't Suck Anymore
Google Docs is convenient. I won't pretend otherwise. But Nextcloud Office with Collabora is shockingly good for a self-hosted solution.
Here's the setup (takes 5 minutes):
- Install the apps:
- User icon (top right) → Apps
- Go to Office & Text section
- Download and enable Nextcloud Office
- Download and enable Collabora Online
- Connect Collabora server:
- User icon → Settings → Nextcloud Office
- Toggle "Use your own server"
- Enter:
https://[YOUR_DOMAIN]:21005 - Hit Save
You should see a green "server reachable" message. If you don't, you probably typo'd the port. It's 21005, not 2105.
- Configure document defaults:
- Scroll to Advanced settings
- Default file type: Office Open XML (OOXML)
- This makes files play nice with Microsoft Office
- Enable watermarking if you're paranoid about leaks
Testing it:
- Go to Files
- Click Create new +
- Choose "Document" or "Spreadsheet"
- If it opens an editor instead of downloading, you're good
I've had zero complaints from my team about document editing since we switched. The occasional "how do I do X in Collabora?" question, sure, but nothing showstopping.
Nextcloud Talk: Video Calls That Don't Require a Google Account
This is where most self-hosted solutions fall apart. Video calling is hard to get right. But Talk actually works—assuming you configure it properly.
Step 1: Install Talk
- Apps → Social & communication
- Enable Talk
Step 2: Configure STUN/TURN (Don't Skip This)
Here's what most guides don't tell you: video calls work fine on your local network without any setup. But as soon as someone joins from home or a coffee shop, calls fail. You need STUN/TURN servers.
Go to: https://[YOUR_DOMAIN]/settings/admin/talk
STUN Server:
- Set to:
[YOUR_DOMAIN]:3478
TURN Servers:
- Protocol:
turn:only - Server:
[YOUR_DOMAIN]:3478 - Secret: Copy
STATIC_AUTH_SECRETfrom Elestio dashboard (Update Config → ENV tab) - Protocols: UDP and TCP (check both)
Click Save Changes.
If you skip this step, 30% of your calls will mysteriously fail and you'll waste hours debugging. Ask me how I know.
Step 3: Start Using It
Click the Talk icon, create a conversation, invite people. Video works, screenshare works, chat works. It's not Zoom-level polished, but it's yours, it's encrypted, and it doesn't cost $15/user/month.
What you get:
- 🎥 Video calls (up to 100 participants with proper server resources)
- 💬 Threaded team chat
- 🖥️ Screen sharing
- 📱 Mobile apps (actually decent)
- 🔒 End-to-end encryption
Nextcloud Deck: Project Management Without the SaaS Tax
We were paying $10/user/month for Trello. Trello. For digital sticky notes.
Nextcloud Deck does the same thing, costs nothing extra, and integrates with your files.
Setup:
- Enable Deck app
- Click Deck in navigation
- Create a board
- Add lists: "To Do", "In Progress", "Review", "Done"
- Start dragging cards around
Why it's better than Trello:
- ✅ Attach files directly from Nextcloud (no upload dance)
- ✅ Due dates sync with Calendar automatically
- ✅ No arbitrary card limits
- ✅ Your data, your server
Is it as polished as Trello? No. But it's free and it works. For our team, that math is unbeatable.
Calendar & Contacts: The Boring Stuff That Just Works
I'm not going to oversell this—calendar and contacts sync is table stakes. But it's worth noting that Nextcloud's implementation is solid.
Calendar:
- Enable Calendar app
- Create calendars ("Team Events", "Company Holidays", etc.)
- Share them with specific users (read/write permissions)
- Sync via CalDAV with Thunderbird/Apple Calendar/Android
Contacts:
- Enable Contacts app
- Create groups ("Team", "Clients", "Vendors")
- Import your Google Contacts (export as .vcf, import here)
- Sync via CardDAV everywhere
It just works. No drama, no gotchas.
Email Integration: Use What You Already Have
Here's the thing about Nextcloud Mail: it's a client, not a server. It connects to your existing email via IMAP. This means:
Pros:
- Use your current email provider
- No migration headaches
- Multiple accounts in one interface
Cons:
- Not actually self-hosting email (which is good—email servers are a nightmare)
Setup:
- Enable Mail app
- Mail → Settings
- Enter your email address
- Nextcloud auto-detects IMAP settings (usually)
If it doesn't auto-detect:
- IMAP: Your mail server (e.g.,
imap.gmail.com) - SMTP: Your SMTP server (e.g.,
smtp.gmail.com) - Port: 993 for IMAP, 587 for SMTP (usually)
For Gmail, you'll need an app-specific password. Google's security requirements, not Nextcloud's fault.
Production Setup (The Stuff That Bites You Later If You Skip It)
Okay, you've got Nextcloud running. Cool. But if you stop here, you're going to have a bad time in three months. These are the configuration tweaks that separate toy deployments from production systems.
CRON Jobs: Make Background Tasks Actually Run
By default, Nextcloud uses Ajax for background tasks. This is fine for testing, terrible for production.
Go to: https://[YOUR_DOMAIN]/settings/admin
Scroll to Background jobs, select CRON.
Why? Ajax triggers background tasks only when users visit pages. CRON runs them on schedule, regardless of user activity. File scanning, app updates, cleanup—all happen automatically.
Custom Domain: Stop Using That Ugly Elestio Subdomain
If you're planning to use this seriously, set up your own domain. Nobody wants to send clients a link to nextcloud-a8f3.vm.elestio.app.
Follow the official guide: Custom Domain and SSL/TLS Configuration
Elestio's documentation is actually good here—don't skip it.
After setting up the domain:
- Elestio dashboard → Service overview → Update CONFIG → Env tab
- Edit
NEXTCLOUD_TRUSTED_DOMAINSwith your real domain - Click Update & Restart
- SSH into terminal:
chown -R www-data:www-data ..
That last command fixes file permissions. If you skip it, you'll get cryptic errors later.
Language Configuration (If Your Team Isn't English-Only)
By default, Nextcloud detects browser language. If you want to force a specific language:
- Elestio dashboard → CI/CD → Open terminal
nano config/config.php- Add at the end:
"force_language" => "en"
- Restart:
docker-compose down;
docker-compose up -d;
Replace "en" with your language code ("fr" for French, "es" for Spanish, etc.).
Advanced Features (For When You Get Ambitious)
These features aren't necessary for most teams, but they're worth knowing about if you want to level up your deployment.
NotifyPush: Real-Time Updates That Actually Work
By default, Nextcloud polls for changes every few minutes. NotifyPush makes updates instant.
Install it:
docker-compose exec -u33 -T app bash -c "php occ app:install notify_push"
docker-compose exec -u33 -T app bash -c "php occ app:enable notify_push"
Configure it:
docker-compose exec -u33 -T app bash -c "php occ notify_push:setup https://YOUR_DOMAIN/push"
Test it:
docker-compose exec -u33 -T app bash -c "php occ notify_push:self-test"
Benefits:
- File changes appear instantly
- Talk messages arrive immediately
- Less server load from constant polling
- Better mobile app experience
High Performance Backend for Talk (If You're Serious About Video)
If your team does a lot of video calls—especially with 50+ participants—you need the High Performance Backend.
Fair warning: this is complex. It requires additional Docker containers, configuration files, and some networking know-how. But it enables:
- Dedicated signaling server
- Support for 100+ concurrent participants
- Reduced latency for global teams
- Better quality for large meetings
When to use it:
- Regular meetings with 50+ people
- Mission-critical video conferencing
- Multi-region teams
When to skip it:
- Small teams (under 50 users)
- Occasional video calls
- You don't want to manage additional infrastructure
Contact Elestio support if you need help setting this up. It's not documented here because it's genuinely complex and most teams don't need it.
Talk Recording Backend (For Compliance/Documentation)
Some industries require call recording. Nextcloud supports this, but it needs additional resources:
- Extra 2 GB RAM per concurrent recording
- Sufficient storage (video files are large)
- Dedicated recording backend container
Again, contact Elestio support for setup. This isn't a "follow three steps" feature.
User Management (The Part Everyone Overthinks)
Adding Users: It's Really Just a Form
- Settings → Users
- Click "New user"
- Fill in:
- Username (usually email prefix)
- Display name
- Groups (assign to teams: Sales, Engineering, etc.)
- Quota (storage limit)
- Click "Add user"
The user gets an email with login instructions. They set their own password on first login.
Pro tip: Don't set passwords for users. Send them the reset link and let them choose their own. Saves awkward conversations.
Groups: Organize Chaos Before It Starts
Create groups before you have 50 users scattered randomly.
Recommended structure:
- Departments: Engineering, Sales, Marketing, HR
- Projects: Project Alpha, Client Beta
- Access levels: Admins, Managers, Staff
Groups let you:
- Share folders with entire teams
- Set permissions in bulk
- Manage users without going insane
Enable the Group folders app to create shared spaces only specific groups can access.
Migration from Google Workspace (The Scary Part)
Migrating off Google isn't technically hard—it's psychologically hard. Your team will resist. Expect it.
Files: Two Approaches
Method 1: Google Takeout (Slow but Simple)
- Go to Google Takeout
- Select Drive, export as zip
- Install Nextcloud Desktop Client
- Connect to your Nextcloud
- Extract Takeout zip into sync folder
- Wait for upload
Method 2: External Storage (Faster for Large Datasets)
- Enable External Storage app in Nextcloud
- Add Google Drive as external storage
- Authorize OAuth
- Files remain accessible while you migrate
- Copy them over gradually
I used Method 2 for our 500GB archive. Method 1 for smaller datasets.
Calendars: Easier Than You Think
Export from Google:
- Google Calendar → Settings → Import & Export → Export
- Download .ics file
Import to Nextcloud:
- Nextcloud Calendar → Settings → Import
- Upload .ics file
- Select target calendar
Done. Takes 30 seconds.
Contacts: Same Deal
Export from Google:
- Google Contacts → Export → vCard format (.vcf)
Import to Nextcloud:
- Nextcloud Contacts → Settings → Import
- Upload .vcf file
Your contacts are now self-hosted.
Email: Don't Migrate, Integrate
Unless you're a masochist, keep your existing email server. Just connect Nextcloud Mail to it via IMAP.
If you really want to migrate email:
# Use imapsync (advanced users only)
imapsync \
--host1 imap.gmail.com --user1 you@gmail.com --password1 APP_PASSWORD \
--host2 your-mail-server.com --user2 you@company.com --password2 PASSWORD \
--ssl1 --ssl2
But seriously, just use IMAP. Self-hosting email is a rabbit hole you don't want to enter.
Troubleshooting (When Things Inevitably Break)
Office Documents Won't Open
Symptom: Clicking .docx downloads instead of opening
Fixes:
- Verify Collabora app is enabled: Apps → Installed
- Check server has 2GB+ RAM (Collabora is memory-hungry)
- Clear browser cache
- Create a fresh document—if this works, original file is corrupted
I hit this once when I skimped on RAM. Don't be cheap—give Collabora the resources it needs.
Video Calls Are Terrible
Symptom: Lag, disconnections, no video
Fixes:
- Check TURN server config: Settings → Talk → verify all settings
- Test with
stun.l.google.com:19302(diagnostic purposes only) - Open firewall ports:
- UDP 3478-3479
- TCP 443
- Scale up server if you have many concurrent calls
Video calling eats CPU and bandwidth. If you're running on 2 CPU with 20 concurrent calls, you're going to have a bad time.
Files Won't Sync on Desktop
Symptom: Desktop client shows conflicts or won't sync
Fixes:
- Update desktop client: latest version
- Right-click Nextcloud icon → Sync conflicts → resolve manually
- Check file permissions (do you have write access?)
- Restart desktop client
Share Links Don't Work
Symptom: External share links fail for non-users
Fixes:
- Settings → Sharing → Enable "Allow public uploads and sharing via link"
- Check link expiration date (edit share → extend if needed)
- Test from different network (VPN/firewall issue?)
- Verify file owner has share permissions
Server Is Slow with Many Users
Symptom: Slow response times, timeouts
Fixes:
- Enable Redis caching (if not already enabled on Elestio)
- Scale to larger instance plan
- Enable file locking: Settings → Administration → File Locking
- Use CRON for background jobs (not Ajax)
Redis makes a massive difference. If you haven't enabled it, do it now.
Security Best Practices (Don't Be That Company)
Enable Two-Factor Authentication
Settings → Security → Two-Factor Authentication
Enforce it for admins. Encourage it for everyone else. One compromised account can leak your entire company's files.
Review Audit Logs Regularly
Enable the Auditing / Logging app. It tracks:
- File access
- Share creations
- Login attempts
- Admin actions
Settings → Logging to review.
I check logs monthly. Caught a contractor accessing files they shouldn't have been in. Would've missed it otherwise.
Configure File Access Control
Enable Files Access Control app to create rules:
- Block certain file types (.exe, .scr)
- Prevent uploads to specific folders
- Restrict access by IP range
Prevents users from accidentally (or intentionally) uploading malware.
Performance Optimization (When Good Isn't Good Enough)
Memory Caching Is Non-Negotiable
Elestio configures Redis automatically, but verify it's running:
Settings → Overview → look for "Memory cache" status
Redis dramatically reduces database queries. It's the difference between 200ms page loads and 50ms page loads.
External Storage for Large Files
If you're storing terabytes of video or backups, use S3-compatible object storage:
Settings → External Storage → Add S3 bucket
Keeps your server fast and cheap. S3 storage is dirt cheap compared to block storage.
Schedule Resource-Intensive Tasks
Settings → Basic settings → Background jobs → Cron
Run file scanning and maintenance during off-hours (3-5 AM). Your users will thank you.
The Real Cost Comparison (Why This Actually Matters)
Let's do the math for a 25-person team over 3 years:
| Service | Monthly Cost | 3-Year Total |
|---|---|---|
| Google Workspace Business | $300 (25 users × $12) | $10,800 |
| Nextcloud on Elestio (4 CPU / 8 GB) | $50 | $1,800 |
| Savings | $250/month | $9,000 |
But wait, there's more:
With Nextcloud:
- ✅ Unlimited storage (just add disks)
- ✅ Unlimited users (no per-seat pricing)
- ✅ Your data (not Google's training data)
- ✅ No vendor lock-in (export everything anytime)
- ✅ Customize everything (it's open source)
- ✅ GDPR/compliance control (data stays where you want)
That $9,000 savings? That's a junior developer for 2 months. Or 3 engineering conferences. Or a really nice team retreat.
The Bottom Line (My Honest Take)
I've been running Nextcloud in production for 18 months now. Our 25-person team uses it daily. And I'm not going back.
Is it perfect? No. Google Docs is more polished. Slack is smoother than Talk. Gmail's search is better than Nextcloud Mail.
But here's what matters:
- We cut our collaboration tool costs by 83%
- We own our data
- We're not training someone's AI on our internal docs
- We can customize anything we want
- We're not at the mercy of Google's next price increase
The migration took me one weekend. The ROI broke even in month three. Everything since has been pure savings.
If your team is under 50 people, there's no reason not to do this. The cost savings alone justify it. The privacy and control are just bonuses.
Ready to stop lighting money on fire? Deploy Nextcloud on Elestio and see what self-hosting actually costs.
Deploy Nextcloud on Elestio: https://elest.io/open-source/nextcloud
Thanks for reading ❤️
Questions? Hit me up at michael.soto@getateam.org or in the Elestio Discord. If I got something wrong here, let me know—I'll update the article.