Syrinx: A censorship-resistant communications platform

Lobsters Hottest Tools

Summary

Syrinx 是一个抗 censorship 的联邦式社交平台概念项目,服务器只中继加密内容而不存储帖子,数据由用户设备分布式持有并用 OpenPGP 签名验证。它支持家庭自建部署(如树莓派 5)、基于密钥而非域名的服务器身份,以及双管理员审批与可审计账本。

<p>You can see a demo here: <a href="https://syx.var0.xyz/" rel="ugc">https://syx.var0.xyz/</a></p> <p>You'll need the server's public key to access it:</p> <pre><code>-----BEGIN PGP PUBLIC KEY BLOCK----- xjMEauMlLxYJKwYBBAHaRw8BAQdAtfhhdbSSUVmzgZgSak2OlJwLDOsdhqlPvQW2 riMb+XrNCFhVNk5Gdktmwr0EExYIAG8FgmrjJS8CCwcJEMOqN5gwW3VjNRQAAAAA ABwAEHNhbHRAbm90YXRpb25zLm9wZW5wZ3Bqcy5vcmc9BlGpsOfW/mrcw2NeuF2S AhUIAhYAAhkBApsDAh4BFiEEZByTKLjN5CQxL/yQw6o3mDBbdWMAAM5hAPwNuf3/ whkTFcBtZo+jZVmRE6xNfU+i4ZPX/KE4aY1QTAD+Mt2w/UG0d3yU5AzoytbQfu13 SKYR2TZ0SG/k8WraJgnOOARq4yUvEgorBgEEAZdVAQUBAQdASloHQrKU+YwSzoEB w/JOfxcY97pn2oDBe/N6ng8L3SIDAQoJwq4EGBYIAGAFgmrjJS8JEMOqN5gwW3Vj NRQAAAAAABwAEHNhbHRAbm90YXRpb25zLm9wZW5wZ3Bqcy5vcmc5DlseP1BwxD6/ GK/AHtyiApsMFiEEZByTKLjN5CQxL/yQw6o3mDBbdWMAAN86AP0eEbXH7QGtG8l8 7uw88zqr1Ua1sh+yHT2m4nAmligT0wEA7WBp5AshaIeIG7fE94smRDzT9h7JXEzW gXcGm1RcQwY= =v+fX -----END PGP PUBLIC KEY BLOCK----- </code></pre> <p><a href="https://lobste.rs/s/25dapz/syrinx_censorship_resistant">Comments</a></p>
Original Article
View Cached Full Text

Cached at: 10/29/26, 01:41 PM

# Syrinx Source: [https://var0xyz.github.io/syrinx/](https://var0xyz.github.io/syrinx/) **A censorship\-resistant communications platform\.** Syrinx \(Syx, for short\) is a P2P\-*ish*, federated social platform for closed communities, where the server never holds your posts\. The Internet we fell in love with is dying\. First it was the abusive monopoly of one browser dictating the direction the Web had to take\. Then came the centralization of search through one company\. Then the monopoly of communication and content creation by social networks\. Finally, total surveillance through age verification—nothing else than a hard link between the content you create and your identity\. A complete loss of privacy\. Syrinx is a proof of concept, an idea for how we can reclaim it: small, independent, underground communities, away from the reach of the panopticon the Web has become—many communities interconnected in a mesh through federation\. ## Why P2P\-*ish*?[​](https://var0xyz.github.io/syrinx/#why-p2p-ish) NAT makes direct connections between peers very hard to establish, so the server**relays**the traffic between them\. That traffic travels encrypted: a reed is encrypted to its reader before it leaves the holder's device, and the server relays ciphertext it can't read\. See[Content privacy](https://var0xyz.github.io/syrinx/content_privacy)\. The server works like a BitTorrent**tracker**: it knows*who has*a reed, not*what that reed says*\. Reeds live on members' devices\. Every reed and sensitive record is**OpenPGP\-signed**and checked by the client before it trusts or keeps anything, so trust comes from the cryptography, not the operator\. That is the*ish*: distribution and verification like a peer network, with a tracker/relay in the middle because the internet we actually have is full of NATs\. ## Why censorship\-resistant?[​](https://var0xyz.github.io/syrinx/#why-censorship-resistant) - **The database is distributed among the users\.**Content lives on members' devices; the server holds only pointers to it\. - **It's cheap to run at home\.**Syrinx is built to perform well on modest hardware, and ships with scripts to deploy it securely on a home network \(tested on a Raspberry Pi 5\)\. See[Operators](https://var0xyz.github.io/syrinx/operators#running-at-home)\. - **It's federated\.**Communities talk to each other without all living on one central server\. - **Losing the domain doesn't mean losing the community\.**A server's identity is its key pair, not its domain name\. - **Admins answer to their members\.**Admin actions need a second admin's approval and land in a ledger every member can read: who asked, who approved, and the reason they gave\. Members reach every admin at once by mentioning`@admins`in a reed\. See[Admins](https://var0xyz.github.io/syrinx/admins)\. - **Moving your account to another community**is[planned](https://var0xyz.github.io/syrinx/planned#account-migration), not yet implemented\. Together, this means anyone can run their own community, and members will be able to take their content elsewhere if they disagree with how theirs is run\. Members can see what admins do with the power they've been granted\. The one exception is a private message from the admins to a member, which stays out of the ledger but is visible to every admin\. ### When a server is seized[​](https://var0xyz.github.io/syrinx/#when-a-server-is-seized) Say a malicious actors manages to take over a community's domain\. The community spins up a new server under a new domain, imports the server's key from a backup, and starts operating right away\. The app is offline\-first and keeps running from the device's cache with no server at all, so members open the old app, export their data, and import it under the new domain\. Because everything is signed, the server recognizes it and rebuilds its database\. Federation links with other servers have to be re\-established\. See[Identity, invites & recovery](https://var0xyz.github.io/syrinx/identity#server-recovery-hostile-takeover-db-loss)\. Shutting a community down becomes a game of whack\-a\-mole: take down one small piece and it reappears somewhere else\. The network isn't impossible to attack; the security comes from making the cost and scale of shutting it down unrealistic\. ### What a seized server does reveal[​](https://var0xyz.github.io/syrinx/#what-a-seized-server-does-reveal) No reed content, but the pointers are metadata\. The server holds user ids, usernames, emails and bios, and knows who follows whom and who holds which reeds\. Everything but the user id is member\-provided, emails and bios are optional, and none of it is validated\. It also holds who liked which reed, the admin ledger, and[ripples](https://var0xyz.github.io/syrinx/content#ripples)\(comments on reeds\), which are stored in plain text but only live 30 days after the last ripple on a reed\. ### Cloudflare[​](https://var0xyz.github.io/syrinx/#cloudflare) The home\-deploy scripts put the server behind Cloudflare\. With a Cloudflare Tunnel \(the default, no port forwarding\), all traffic passes through Cloudflare, which terminates TLS and sees the same metadata the server does, though not reed bodies\. With mTLS, nginx serves the public edge from home and Cloudflare only keeps the domain's DNS pointed at your home IP\. Either way, Cloudflare is a point where a community can be cut off; the server key and the offline\-first app are what let it come back elsewhere\. ## Start here[​](https://var0xyz.github.io/syrinx/#start-here) TopicWhat you'll learn[Philosophy](https://var0xyz.github.io/syrinx/philosophy)Honesty about permanence, offline\-first ownership, closed communities, what we refuse to fake[Planned features](https://var0xyz.github.io/syrinx/planned)Account migration, private messaging, group chats, discoverability[Architecture](https://var0xyz.github.io/syrinx/architecture)API, realtime, SPA, federation, and the tracker/relay role of the server[Trust model](https://var0xyz.github.io/syrinx/trust)What we defend against, and what we don't pretend to[Cryptography](https://var0xyz.github.io/syrinx/cryptography)Keys, canonical signing, user vs server signatures[Content distribution](https://var0xyz.github.io/syrinx/content)Reeds, feeds, relay path, consent and abuse guardrails[Content privacy](https://var0xyz.github.io/syrinx/content_privacy)Why the server never sees reed content, and how end\-to\-end encrypted relay works[Telemetry](https://var0xyz.github.io/syrinx/telemetry)No client\-side telemetry by default; what the server records, by user ID only, and why[Relay model](https://var0xyz.github.io/syrinx/relay-model)Schema\-level reference for the relay/allocation machinery and how it crosses server borders[Invites](https://var0xyz.github.io/syrinx/invites)Invite links, hash\-only storage, redeem flow, hijack resistance[Identity, invites & recovery](https://var0xyz.github.io/syrinx/identity)Accounts, signup modes, rebuilding after disaster[Deletion](https://var0xyz.github.io/syrinx/deletion)Signed removal certificates instead of silent wipes[Admins](https://var0xyz.github.io/syrinx/admins)Roles, two\-admin approval, the ledger, flags and`@admins`[Operators](https://var0xyz.github.io/syrinx/operators)Run a server, at home or elsewhere, keys, recovery procedures[Contributors](https://var0xyz.github.io/syrinx/contributors)Repository layout and where design intent lives

Similar Articles

simplex-chat/simplex-chat

GitHub Trending (daily)

SimpleX Chat is a messaging platform that prides itself on having no user identifiers, offering end-to-end encryption and full metadata protection. It is available as mobile apps for Android and iOS, as well as a terminal/CLI version, and is 100% open-source.

Xiryn

Product Hunt

Xiryn 是一款开源的个人 AI 代理,可在本地计算机上运行。它为每个代理提供独立的 Docker Linux 桌面环境,支持浏览、研究、编写代码和填写表单,数据保留在本地,且可通过 Telegram 远程控制。

A/SIDE – Private photo sharing and encrypted messages

Hacker News Top

A/SIDE 是一款主打私密的社交应用,提供好友间的照片分享、无算法的按时间排序信息流以及端到端加密的私信,代码开源并采用独立托管,免费版含30天历史,Pro 版每年20美元。

Bitsocial: Open Source P2P Network for Social Apps

Lobsters Hottest

Bitsocial is an open-source peer-to-peer network for building decentralized social apps, allowing communities to run on low-cost hardware like Raspberry Pi without server dependencies and with customizable anti-spam challenges.