nixos-dotfiles

nixos-dotfiles

https://git.tonybtw.com/nixos-dotfiles.git git://git.tonybtw.com/nixos-dotfiles.git
10,300 bytes raw

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)

  1. Open Google Play Store
  2. Search for "Conversations" (€3.99) or "Monocles Chat" (free)
  3. Install it
  4. Open the app and tap "Create Account" or "Add Account"
  5. Enter your credentials:
    • Jabber ID: yourname@yourdomain.com
    • Password: (the one provided)
  6. Tap "Connect"
  7. 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)

  1. Open App Store
  2. Search for "Monal" (free)
  3. Install it
  4. Open the app and tap "Add Account"
  5. Choose "XMPP"
  6. Enter your credentials:
    • Jabber ID: yourname@yourdomain.com
    • Password: (the one provided)
  7. Tap "Save"
  8. 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
  1. Open Dino
  2. Click "Add Account"
  3. Enter:
    • Jabber ID: yourname@yourdomain.com
    • Password: (the one provided)
  4. 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
  1. Open Gajim
  2. Go to Accounts → Add Account
  3. Choose "I already have an account"
  4. Enter:
    • Jabber ID: yourname@yourdomain.com
    • Password: (the one provided)
  5. Click "Connect"

Windows (Recommended: Gajim)

  1. Download Gajim: https://gajim.org/download/
  2. Run the installer
  3. Open Gajim
  4. Go to Accounts → Add Account
  5. Choose "I already have an account"
  6. Enter your credentials:
    • Jabber ID: yourname@yourdomain.com
    • Password: (the one provided)
  7. Click "Connect"

macOS (Recommended: Monal)

  1. Open Mac App Store
  2. Search for "Monal" (free)
  3. Install it
  4. Open Monal and click "Add Account"
  5. Choose "XMPP"
  6. Enter your credentials:
    • Jabber ID: yourname@yourdomain.com
    • Password: (the one provided)
  7. Click "Save"

Step 3: Join Group Chats

Once connected, join our community rooms:

In Conversations (Android):

  1. Tap the "+" button (bottom right)
  2. Select "Join group chat"
  3. Enter: #general@conference.yourdomain.com
  4. Tap "Join"

In Monal (iOS/macOS):

  1. Tap "Chats" tab
  2. Tap the "+" button (top right)
  3. Select "Join Channel"
  4. Enter: #general@conference.yourdomain.com
  5. Tap "Join"

In Dino/Gajim (Desktop):

  1. Click "Join Group Chat" or press Ctrl+J
  2. Enter: #general@conference.yourdomain.com
  3. 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:

  1. Open the room
  2. Enable OMEMO in settings
  3. 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 just yourname)
  • 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


Tips for Discord Refugees

Mental Model Shift:

  • Discord ServerXMPP Room (group chat)
  • Discord ChannelXMPP Room (each room is independent)
  • Discord DMXMPP 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):

  1. Tap "+""Create group chat"
  2. Choose "Create new channel"
  3. Enter room name (e.g., "secret-plans")
  4. Tap "Create"

In Gajim/Dino:

  1. "Join Group Chat""Create New Room"
  2. Room address: yourroom@conference.yourdomain.com
  3. 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:

  1. Use DiscordChatExporter (third-party tool)
  2. Save channels as HTML/JSON
  3. 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. :)