nixos-dotfiles
nixos-dotfiles
https://git.tonybtw.com/nixos-dotfiles.git
git://git.tonybtw.com/nixos-dotfiles.git
How to Join the XMPP Server
Welcome! We're moving from Discord to XMPP for better privacy and control. This guide will help you get set up in 5 minutes.
What is XMPP?
XMPP is like Discord, but:
- Privacy-focused - No tracking, no ads, no data mining
- Self-hosted - We control the server, not a corporation
- Open source - Free software you can trust
- End-to-end encrypted - Your messages are secure (OMEMO encryption)
You get all the important features: group chats, DMs, file sharing, voice/video calls, message history, and mobile apps.
Quick Setup Guide
Step 1: Get Your Account Credentials
You'll receive:
- Username:
yourname@yourdomain.com - Password: (a temporary password - change it after first login)
- Server:
yourdomain.com
Step 2: Install a Client
Choose based on your device:
Android (Recommended: Conversations)
- Open Google Play Store
- Search for "Conversations" (€3.99) or "Monocles Chat" (free)
- Install it
- Open the app and tap "Create Account" or "Add Account"
- Enter your credentials:
- Jabber ID:
yourname@yourdomain.com - Password: (the one provided)
- Jabber ID:
- Tap "Connect"
- Done! You'll see your contact list and can join rooms
Why Conversations? Best XMPP client, supports all modern features, active development, one-time payment.
iPhone (Recommended: Monal)
- Open App Store
- Search for "Monal" (free)
- Install it
- Open the app and tap "Add Account"
- Choose "XMPP"
- Enter your credentials:
- Jabber ID:
yourname@yourdomain.com - Password: (the one provided)
- Jabber ID:
- Tap "Save"
- Done! You'll see your contact list and can join rooms
Linux (Recommended: Dino or Gajim)
Option A: Dino (Modern, GNOME-style)
# NixOS
nix-shell -p dino
# Ubuntu/Debian
sudo apt install dino-im
# Arch
sudo pacman -S dino
# Fedora
sudo dnf install dino
- Open Dino
- Click "Add Account"
- Enter:
- Jabber ID:
yourname@yourdomain.com - Password: (the one provided)
- Jabber ID:
- Click "Connect"
Option B: Gajim (Feature-rich)
# NixOS
nix-shell -p gajim
# Ubuntu/Debian
sudo apt install gajim
# Arch
sudo pacman -S gajim
# Fedora
sudo dnf install gajim
- Open Gajim
- Go to Accounts → Add Account
- Choose "I already have an account"
- Enter:
- Jabber ID:
yourname@yourdomain.com - Password: (the one provided)
- Jabber ID:
- Click "Connect"
Windows (Recommended: Gajim)
- Download Gajim: https://gajim.org/download/
- Run the installer
- Open Gajim
- Go to Accounts → Add Account
- Choose "I already have an account"
- Enter your credentials:
- Jabber ID:
yourname@yourdomain.com - Password: (the one provided)
- Jabber ID:
- Click "Connect"
macOS (Recommended: Monal)
- Open Mac App Store
- Search for "Monal" (free)
- Install it
- Open Monal and click "Add Account"
- Choose "XMPP"
- Enter your credentials:
- Jabber ID:
yourname@yourdomain.com - Password: (the one provided)
- Jabber ID:
- Click "Save"
Step 3: Join Group Chats
Once connected, join our community rooms:
In Conversations (Android):
- Tap the "+" button (bottom right)
- Select "Join group chat"
- Enter:
#general@conference.yourdomain.com - Tap "Join"
In Monal (iOS/macOS):
- Tap "Chats" tab
- Tap the "+" button (top right)
- Select "Join Channel"
- Enter:
#general@conference.yourdomain.com - Tap "Join"
In Dino/Gajim (Desktop):
- Click "Join Group Chat" or press
Ctrl+J - Enter:
#general@conference.yourdomain.com - Click "Join"
Available Rooms:
#general@conference.yourdomain.com- Main discussion#random@conference.yourdomain.com- Off-topic chat#tech@conference.yourdomain.com- Tech discussion#gaming@conference.yourdomain.com- Gaming chat
Features Guide
Sending Messages
Just type and hit Enter. Markdown-like formatting works in most clients:
*bold*→ bold_italic_→ italic`code`→code
Sending Files
- Mobile: Tap the attachment icon
- Desktop: Drag and drop files, or click the attachment button
- Size limit: 100MB per file
Voice/Video Calls
- Gajim/Dino: Click the phone/video icon in a 1-on-1 chat
- Conversations: Tap the phone icon in a contact's chat
- Monal: Limited support (text chat is primary)
End-to-End Encryption (OMEMO)
All DMs are encrypted by default. For group chats:
- Open the room
- Enable OMEMO in settings
- Everyone in the room needs OMEMO-capable clients
Push Notifications
- Mobile: Works automatically (Conversations, Monal)
- Desktop: Enable system notifications in client settings
Message History
The server saves your messages for 1 year. When you log in on a new device, you'll see recent history automatically.
Changing Your Password
Most clients have a "Change Password" option in account settings. Or ask an admin to reset it.
Comparison: Discord vs XMPP
| Feature | Discord | XMPP |
|---|---|---|
| Group chats | ✓ Servers/Channels | ✓ Rooms |
| Direct messages | ✓ | ✓ |
| File sharing | ✓ (25MB free) | ✓ (100MB) |
| Voice/video | ✓ | ✓ (varies by client) |
| Screen sharing | ✓ | ✗ (not yet) |
| Message history | ✓ | ✓ |
| Mobile apps | ✓ | ✓ |
| End-to-end encryption | ✗ | ✓ (OMEMO) |
| Self-hosted | ✗ | ✓ |
| Open source | ✗ | ✓ |
| Privacy | Poor (data mining) | Excellent (self-hosted) |
| Ads/tracking | Yes | No |
Bottom line: XMPP has 90% of Discord's features, but with 100% more privacy and control.
Troubleshooting
Can't connect?
- Check your username is
yourname@yourdomain.com(not justyourname) - Verify your password (no typos)
- Make sure you have internet connection
- Try a different client (sometimes mobile works when desktop doesn't)
No push notifications on mobile?
- Enable notifications in phone settings
- Conversations: Needs Google Play Services OR UnifiedPush
- Monal: Should work automatically
Can't join a room?
- Make sure the room address is correct:
#roomname@conference.yourdomain.com - Check if you're connected (green indicator)
- Try typing the full address instead of using autocomplete
Messages not syncing across devices?
- Make sure "Message Carbons" is enabled (usually automatic)
- Gajim: Preferences → Advanced → Message Carbons
Voice calls not working?
- Check microphone permissions
- Desktop only: Gajim and Dino support calls (Conversations on Android too)
- Make sure both parties are using compatible clients
Someone's messages show a warning icon?
- OMEMO encryption issue
- Their device hasn't verified yours yet
- Usually safe to trust on first contact (like Signal)
Getting Help
- Join the support room:
#support@conference.yourdomain.com - Contact an admin: Message
admin@yourdomain.com - XMPP documentation: https://xmpp.org/getting-started/
Tips for Discord Refugees
Mental Model Shift:
- Discord Server → XMPP Room (group chat)
- Discord Channel → XMPP Room (each room is independent)
- Discord DM → XMPP Chat (works the same)
- @mention →
@username(type @ then start typing their name)
Things That Work Differently:
- No bots (yet): XMPP has bots but not Discord-style
- No custom emoji reactions: Standard emoji only
- No roles/permissions: Room moderators exist but simpler
- No status games: You can set a text status but no "Playing Valorant" integration
Things That Are Better:
- E2E encryption: Your messages are actually private
- No spying: Server admin (me) can't read encrypted DMs
- No data mining: Your info isn't sold to advertisers
- Lightweight: Apps use less battery/RAM
- Decentralized: If this server dies, you can move to another XMPP server
Learning Curve:
- Day 1: Feels weird, where are my Discord features?
- Day 3: Okay, this works pretty well
- Week 1: I like how lightweight this is
- Month 1: Wait, Discord had ads? And no encryption?
Creating Your Own Rooms
Want to create a private chat room?
In Conversations (Android):
- Tap "+" → "Create group chat"
- Choose "Create new channel"
- Enter room name (e.g., "secret-plans")
- Tap "Create"
In Gajim/Dino:
- "Join Group Chat" → "Create New Room"
- Room address:
yourroom@conference.yourdomain.com - Click "Create"
Room Privacy:
- Public: Anyone can join
- Private: Invite-only (set in room config)
- OMEMO-enabled: End-to-end encrypted (enable after creation)
Migrating from Discord
Export your Discord data (optional):
Discord doesn't have a good export tool. If you have important messages:
- Use DiscordChatExporter (third-party tool)
- Save channels as HTML/JSON
- Upload to file sharing if needed
Telling people you switched:
Hey! I'm moving to XMPP for privacy reasons.
Add me: yourname@yourdomain.com
What's XMPP? It's like Discord but self-hosted and encrypted.
Get the Conversations app (Android) or Monal (iOS).
I'll still check Discord occasionally, but I'm mainly on XMPP now.
Why We Switched
- Privacy: Discord mines your data, XMPP doesn't
- Control: We own the server, not a corporation
- No ads: Self-hosted means no monetization pressure
- Open source: Auditable code, community-driven
- Decentralized: Not dependent on one company staying solvent
- Better security: E2E encryption actually works
- Lightweight: Less resource-heavy than Discord
Discord is convenient, but we're trading convenience for privacy and autonomy.
Welcome to XMPP!
Once you're connected, say hi in #general! We're a small community, but we value privacy and open-source software.
If you have questions, ask in #support or DM an admin.
Enjoy your freedom from surveillance capitalism. :)