matrix.disobey.net

Matrix homeserver for disobey.net
This page documents how it’s configured and what data we try not to collect.

basic

server name
disobey.net
software
tuwunel (Matrix server)
registration
closed / invite only (allow_registration = false)
federation
enabled (allow_federation = true)
end-to-end encryption
allowed (allow_encryption = true)

Translation: random people on the internet cannot just sign up accounts here, but existing users can talk to remote Matrix servers using federation and can use Matrix E2EE. You do not get a public account here just by asking.

privacy / metadata posture

public room directory
disabled locally and over federation
(allow_public_room_directory_over_federation = false, allow_public_room_directory_without_auth = false)
room search by ID
disabled (allow_public_room_search_by_id = false, allow_unlisted_room_search_by_id = false)
profile lookups
auth required (require_auth_for_profile_requests = true)
no inbound profile scraping from other servers (allow_inbound_profile_lookup_federation_requests = false)
presence / typing / receipts
disabled in both directions:
allow_incoming_presence = false
allow_outgoing_presence = false
allow_incoming_typing = false
allow_outgoing_typing = false
allow_incoming_read_receipts = false
allow_outgoing_read_receipts = false
TURN guests
disabled (turn_allow_guests = false)
legacy media API
disabled (allow_legacy_media = false)

Presence, typing notifications, and read receipts are classic metadata leaks (who's awake, who's talking to who, at what time). This server refuses to gossip that info to the world and also doesn’t accept it from others. You get messages, not surveillance glitter.

nginx front-end

Incoming traffic terminates at nginx before it hits the Matrix backend. Relevant hardening:

access_log off;
server_tokens off;
ssl_early_data off;

proxy_set_header X-Forwarded-For "";
access_log off
nginx does not write per-request access logs for these locations. This reduces long-term IP-to-action correlation.
server_tokens off
nginx does not advertise its exact version in headers or error pages. Less free recon for scanners.
ssl_early_data off
TLS 0-RTT (early data) is disabled. 0-RTT can be replayed; replay is gross.
X-Forwarded-For ""
nginx intentionally strips client IP before proxying to the Matrix service. The backend does not see real user IP addresses.

Short version: even if the Matrix process is compromised, it does not automatically have a clean map of "this account == this IP at this time". That’s intentional.

threat model notes

This is not an anonymous service. The disobey.net homeserver admins can still see unencrypted room content in rooms that are not end-to-end encrypted. Federation also means that messages delivered to other servers are subject to their policies.

What this server does try to reduce:

Matrix is a federated protocol. Privacy is cooperative. You still need to use end-to-end encryption for rooms that matter.