nodyx Svelte Themes

Nodyx

Self-hosted, open-source community platform — Forum + Chat + Voice + P2P. One server, one community, forever.

Nodyx

"The network is the people."

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.


EN English · FR Français


Nodyx — community home

→ Live demo: nexusnode.app — official instance, production VPS


Why Nodyx

  • Discord locks communities inside a private platform — your 10 years of history vanish if they close or ban you
  • Forums are slow and fragmented — no voice, no real-time, invisible to your members' daily workflow
  • Self-hosted tools rarely combine chat + voice + searchable knowledge in a single install

Nodyx brings them together. One command. Your server. Forever.


The internet broke something.

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.


Nodyx gives it back.

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.


What makes Nodyx different

It's the only platform with all of this in a single install

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.


The P2P Stack — 100% handwritten Rust

This is where Nodyx goes further than anyone else.

nodyx-turn — Rust STUN/TURN server (replaces coturn)

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

nodyx-relay — Rust P2P TCP tunnel (no domain, no open ports)

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
  • Automatic reconnection with exponential backoff (1s → 30s max)
  • JWT authentication per instance
  • Routing by slug: yourclub.nexusnode.app → proxied to the Pi behind your router
  • Validated on a real Raspberry Pi 4 with zero open ports ✅

WebRTC DataChannels — P2P without the server

Messages between peers that never touch the server.

  • Instant typing indicators — < 5ms local latency (vs 80-200ms via server)
  • Optimistic emoji reactions — appear instantly, server confirms in background
  • P2P file transfer — assets shared directly between peers
  • Graceful fallback — if DataChannel unavailable (strict NAT), Socket.IO takes over transparently

NodyxCanvas — Collaborative P2P whiteboard

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

Screenshots

Community Home Forum
Community home page Forum category
Real-time Chat Voice Channels — WebRTC P2P
Text chat Voice channel with P2P mesh visualization
Admin Panel Instance Directory
Admin dashboard Instance directory

Quick Start

Prerequisites

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

git and curl are 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)

Docker

git clone https://github.com/Pokled/Nodyx.git
cd Nodyx
cp nodyx-core/.env.example nodyx-core/.env
docker-compose up -d

Updating an existing instance

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.


Architecture

┌─────────────────────────────────────────────────────────────┐
│                        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

What's built. What's coming.

Done

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

v1.4 → v1.7

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

v1.8

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

Coming

Feature Notes
Nodes — durable structured knowledge, community-validated via Garden SPEC 013
Mobile (Capacitor) / Desktop (Tauri)

The Vision

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


Documentation

Language Docs
EN English docs/en/
FR Français docs/fr/
ES Español coming soon
IT Italiano coming soon
DE Deutsch coming soon
  • Manifesto — Why Nodyx exists
  • Architecture — How it's built
  • Roadmap — Where we're going
  • Audio Engine — Broadcast EQ, RNNoise, full audio chain
  • Neural Engine — Local AI with Ollama
  • Specs — All functional specifications
  • Ideas — Design thinking in progress
  • NODYX-ETHER — The physical layer vision (LoRa / HF radio / ionosphere)
  • NODYX-ETHER Guide — How to participate: CB, HAM radio, LoRa, regional radio revival
  • NODYX-RADIO — Nodyx as a radio tuner: new stations born because they finally have a community

Contributing

Nodyx belongs to its community.

  1. Browse open Issues or open a Discussion
  2. Read CONTRIBUTING.md before opening a PR
  3. Commits follow Conventional Commits, written in English

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.


License

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."

Top categories

Loading Svelte Themes