The community platform that no one can take from you.
Forum + Chat + Voice + P2P Canvas — on your server, under your control, forever.
⭐ If Nodyx resonates with you, a star helps others find it — and keeps us going.
→ Live demo: nexusnode.app — official instance, production VPS
Nodyx brings them together. One command. Your server. Forever.
Discord, Facebook, Slack — they didn't build communities. They captured them.
Ten years of discussions. Tutorials. Collective knowledge. Memories. Locked in silos. Invisible to search engines. Gone when the platform decides.
You never owned any of it.
One command. Your server. Your rules. Your community — permanently.
git clone https://github.com/Pokled/Nodyx.git && cd Nodyx && sudo bash install.sh
Works on a Raspberry Pi behind a home router. No domain. No open ports. No cloud account.
| Nodyx | Discord | Matrix | Discourse | Lemmy | |
|---|---|---|---|---|---|
| Self-hosted | ✅ | ❌ | ✅ | ✅ | ✅ |
| Forum indexed by Google | ✅ | ❌ | ❌ | ✅ | ✅ |
| Real-time chat | ✅ | ✅ | ✅ | ⚠️ | ❌ |
| Voice channels | ✅ | ✅ | ✅ | ❌ | ❌ |
| Screen sharing | ✅ | ✅ | ✅ | ❌ | ❌ |
| P2P voice — zero Big Tech relay | ✅ | ❌ | ❌ | ❌ | ❌ |
| Collaborative P2P canvas | ✅ | ❌ | ❌ | ❌ | ❌ |
| P2P DataChannels (instant typing, reactions) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Home server (no port forwarding) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Federated community directory | ✅ | ❌ | ⚠️ | ❌ | ✅ |
| Asset library (frames, badges, banners) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Ephemeral whisper rooms | ✅ | ❌ | ❌ | ❌ | ❌ |
| Passwordless login (ECDSA P-256 PWA) | ✅ | ❌ | ❌ | ❌ | ❌ |
| P2P collaborative Jukebox (YouTube queue) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Event calendar (OSM maps, RSVP, SEO) | ✅ | ❌ | ❌ | ⚠️ | ❌ |
| Cross-instance global search | ✅ | ❌ | ❌ | ❌ | ✅ |
| Per-user profile themes (app-wide) | ✅ | ❌ | ❌ | ❌ | ❌ |
| Open source | ✅ AGPL | ❌ | ✅ | ✅ | ✅ |
Nodyx is the only self-hosted platform combining an indexed forum, real-time chat, P2P voice, collaborative canvas, and a federated directory in a single install.
This is where Nodyx goes further than anyone else.
coturn is the industry standard — a mature C server used by Signal, Jitsi, Matrix. We replaced it with a 2.9MB Rust binary that does exactly what Nodyx needs. Nothing more.
RFC 5389 (STUN) + RFC 5766 (TURN) + RFC 6062 (TURN-over-TCP)
HMAC-SHA1 time-based credentials (username={expires}:{userId})
MESSAGE-INTEGRITY on all responses (RFC 5389 §10.3) — Firefox/Chrome compliant
Rate limiting + allocation quotas (MAX_LIFETIME=300s) + ban map
tokio async runtime — UDP:3478 + TCP:3478 (VPN/firewall bypass)
Zero coturn dependency on production
A Raspberry Pi under your desk. No domain. No router port forwarding. No Cloudflare account. Run Nodyx anyway.
nodyx-relay server → listens TCP:7443 + HTTP:7001
nodyx-relay client → persistent TCP tunnel → exposes local port 80
yourclub.nexusnode.app → proxied to the Pi behind your routerMessages between peers that never touch the server.
Draw together in real time. Synchronized via existing DataChannels. No server touches the data. Session-only by default.
CRDT Last-Write-Wins per element (UUID + timestamp)
canvas:op / canvas:clear / canvas:cursor → P2P DataChannels
Voice-aware cursors: peer cursor pulses when they're speaking
PNG export (browser-native) + text recap posted to chat channel
| Community Home | Forum |
![]() |
![]() |
| Real-time Chat | Voice Channels — WebRTC P2P |
![]() |
![]() |
| Admin Panel | Instance Directory |
![]() |
![]() |
The installer handles everything automatically, but your system needs at least curl or wget to download and start it, and git if you clone the repo manually.
On a fresh Ubuntu / Debian server these are often missing:
# Ubuntu / Debian
apt-get install -y git curl
gitandcurlare the only two things you need to install manually. Everything else (Node.js, PostgreSQL, Redis, Caddy, PM2…) is installed by the script.
Option A — clone first, then run:
git clone https://github.com/Pokled/Nodyx.git
cd Nodyx
sudo bash install.sh
Option B — single command with curl (no git needed):
curl -fsSL https://raw.githubusercontent.com/Pokled/Nodyx/main/install.sh | sudo bash
Option C — single command with wget (if curl is not installed):
wget -qO- https://raw.githubusercontent.com/Pokled/Nodyx/main/install.sh | sudo bash
The installer offers three network modes:
| Mode | Requirements | Result |
|---|---|---|
| Open ports | Ports 80 + 443, domain or IP | Let's Encrypt HTTPS, full control |
| Nodyx Relay ⭐ | Nothing — outbound TCP only | yourclub.nexusnode.app in minutes |
| Cloudflare Tunnel | CF account + own domain | Your custom domain, no open ports |
Nodyx Relay is the recommended default — works on a Raspberry Pi behind a home router. No domain. No port forwarding. No cloud account. Just run the script.
Installs automatically: Node.js, PostgreSQL, Redis, nodyx-turn (Rust STUN/TURN), Caddy (HTTPS), PM2. Generates secrets, bootstraps the database, creates your admin account. No manual configuration.
Supported: Ubuntu 22.04 / 24.04, Debian 11 / 12 / 13. Windows → WSL guide
→ Complete installation guide (EN) → Guide d'installation complet (FR)
git clone https://github.com/Pokled/Nodyx.git
cd Nodyx
cp nodyx-core/.env.example nodyx-core/.env
docker-compose up -d
Run this single command from the Nodyx directory on your server:
# If installed in ~/nodyx
cd ~/nodyx && git pull && \
cd nodyx-core && npm run build && sudo pm2 restart nodyx-core && \
cd ../nodyx-frontend && npm run build && sudo pm2 restart nodyx-frontend
# If installed in /opt/nodyx
cd /opt/nodyx && git pull && \
cd nodyx-core && npm run build && sudo pm2 restart nodyx-core && \
cd ../nodyx-frontend && npm run build && sudo pm2 restart nodyx-frontend
Database migrations are applied automatically on startup — no manual SQL needed.
┌─────────────────────────────────────────────────────────────┐
│ Your Browser │
└──────────────┬──────────────────────────────┬───────────────┘
│ HTTP / WebSocket │ WebRTC P2P
▼ ▼
┌──────────────────────────┐ ┌────────────────────────────┐
│ nodyx-core (Fastify) │ │ Direct peer connection │
│ nodyx-frontend (Svelte)│ │ DataChannels + Canvas │
│ PostgreSQL + Redis │ │ Voice + Screen share │
└──────────────────────────┘ └────────────────────────────┘
│ │
┌──────┴──────┐ ┌──────┴──────┐
│ nodyx-relay │ │ nodyx-turn │
│ (Rust TCP) │ │ (Rust TURN) │
│ home server │ │ NAT bypass │
└─────────────┘ └─────────────┘
| Layer | Technology |
|---|---|
| API | TypeScript + Fastify v5 |
| Database | PostgreSQL 16 |
| Cache / Sessions | Redis 7 |
| Full-text search | PostgreSQL FTS (tsvector + GIN) |
| Frontend | SvelteKit 5 + Tailwind v4 |
| Editor | TipTap (WYSIWYG) |
| Real-time | Socket.IO |
| Voice | WebRTC P2P mesh |
| TURN relay | nodyx-turn — Rust, self-hosted, hardened |
| P2P relay | nodyx-relay — Rust, tokio + hyper |
| Collaborative canvas | NodyxCanvas — CRDT LWW, P2P DataChannels |
| Feature | Version |
|---|---|
| Forum (categories, threads, posts, reactions, tags) | v0.1 |
| Full-text search (PostgreSQL FTS) | v0.1 |
| Real-time chat (Socket.IO) | v0.1 |
| Voice channels (WebRTC P2P) | v0.1 |
| Screen sharing + clip recording | v0.2 |
| Admin panel | v0.2 |
| SEO (sitemap, RSS, JSON-LD) | v0.3 |
| One-click installer | v0.4 |
| Instance directory + auto DNS | v0.5 |
| nodyx-relay — Rust P2P TCP tunnel | v0.5 |
| Community asset library (frames, banners, badges) | v0.6 |
| Feature Garden — community voting with organic growth stages | v0.6 |
| Federated asset directory (cross-instance sharing) | v0.7 |
| Whispers — ephemeral encrypted chat rooms (1h TTL) | v0.7 |
| P2P DataChannels — instant typing, optimistic reactions | v0.8 |
| nodyx-turn — Rust STUN/TURN replacing coturn | v0.9 |
| NodyxCanvas — collaborative P2P whiteboard in voice channels | v0.9 |
| Profile theme system — 6 presets, per-user app-wide CSS engine, live editor | v1.0 |
| Mobile-responsive UI — chat drawer, bottom nav, voice accessible on mobile | v1.0 |
| Asset library 12 MB + per-type upload design guidelines | v1.0 |
| Chat — Reply/quote, pinned messages, link previews, @mention badge | v1.1 |
| Presence — Custom status (emoji + text, 8 presets) + offline members list | v1.1 |
| Direct Messages (DMs) — private 1:1 conversations with unread badge | v1.2 |
| Polls — in chat and forum, 3 types (choice/schedule/ranking), real-time results | v1.2 |
| Ban system — IP ban, email ban, multi-layer enforcement | v1.2 |
| nodyx-turn — TURN-over-TCP (RFC 6062) — voice works through VPNs and strict firewalls | v1.3 |
| nodyx-turn — MESSAGE-INTEGRITY fix — relay candidates now accepted by all browsers | v1.3 |
| Voice — Relay failover — auto-switches to TURN relay on sustained packet loss | v1.3 |
| Voice — Opus tuning — 32 kbps default, DTX off, mono for high-loss links | v1.3 |
| Feature | Version |
|---|---|
| Thread slug URLs + full SEO (canonical, OG, JSON-LD, sitemap) | v1.4 |
| Category slugs + subcategories display on parent page | v1.5 |
Global Search — cross-instance FTS index, /discover UI |
v1.5 |
| Event Calendar — CRUD, RSVP, OSM maps, cover image, rich snippets | v1.6 |
| Gossip Protocol — event federation across instances | v1.6 |
Nodyx Signet — passwordless ECDSA P-256 auth PWA at signet.nexusnode.app |
v1.7 |
| QR enrollment — scan from settings to skip manual token entry | v1.7 |
| Optimistic UI — all mutations update local state instantly (no page re-fetches) | v1.7 |
| Notification center — purge automatique 30j + effacer les lues | v1.7 |
| Feature | Version |
|---|---|
| Tasks / Kanban — per-community boards, drag & drop, assignees, priorities, deadlines | v1.8 |
| Update alert — admin banner when a new GitHub release is available (Redis-cached 6h) | v1.8 |
Instance version display — "Nodyx v1.8.x" shown on home page from NODYX_VERSION env |
v1.8 |
| Security audit — PATCH /cards permission fix, health 503, HOST binding, enrollment adminOnly, rate limit on /announcement, moderators can manage tags | v1.8.1 |
| Feature | Notes |
|---|---|
| Nodes — durable structured knowledge, community-validated via Garden | SPEC 013 |
| Mobile (Capacitor) / Desktop (Tauri) | — |
Nodyx is not a Discord alternative.
It is a different answer to a different question.
Discord asked: "How do we grow fast and capture communities?" Nodyx asks: "How do we give communities sovereignty over their own existence?"
Every Nodyx instance is a sovereign node. It runs where you run it — a VPS, a Pi, a spare laptop. It stores what you choose to store. It shares what you choose to share. It shuts down when you decide — not when a company pivots.
The internet was decentralized by design. SMTP, IRC, NNTP — anyone could run a server and talk to anyone else's server. That was the promise. Big Tech centralized it into silos over two decades.
Nodyx is the promise, kept.
And it spreads the same way. Each instance that goes live exposes others to the idea. Each public event indexed by Google brings in someone new. Each community that chooses sovereignty inspires another. The R0 is in the architecture.
We are not building a product. We are rebuilding infrastructure for human communities.
"Fork us if we betray you." — AGPL-3.0
| Language | Docs |
|---|---|
English |
docs/en/ |
Français |
docs/fr/ |
Español |
coming soon |
Italiano |
coming soon |
Deutsch |
coming soon |
Nodyx belongs to its community.
Contribute freely — no prior validation required:
docs/ → improve or translate documentation
docs/ideas/ → design thinking, UX proposals, new ideas
The core (nodyx-core/src/) requires discussion first — open an Issue.
AGPL-3.0 — The strongest open source license for networked software.
If you use Nodyx, even over a network, your modifications must be open source. If Nodyx ever betrays its principles, this license lets anyone fork it and continue in the spirit of the Manifesto.
Born February 18, 2026.
"Fork us if we betray you."