nodyx Svelte Themes

Nodyx

Self-hosted community platform — Forum · Chat · Voice · P2P · Homepage Builder · Widget SDK. One server, one community, forever.

Nodyx

Nodyx

"The network is the people."

The self-hosted community platform you actually own.
Forum + Chat + Voice + P2P + Homepage Builder + Widget SDK — one server, one community, forever.

⭐ If Nodyx resonates with you, a star helps others find it — and keeps us going.


📖 Documentation → nodyx.dev  ·  🚀 Live demo → nodyx.org  ·  EN English · FR Français


Nodyx — community home

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 — and none let you build your own homepage

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.

curl -fsSL https://nodyx.org/install.sh | bash

Works on a Raspberry Pi behind a home router. No domain. No open ports. No cloud account.


What makes Nodyx different

The only platform with all of this in a single install

Nodyx Discord Matrix Discourse Lemmy
Self-hosted
Open source ✅ AGPL
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)
Homepage Builder — 11 layout zones, drag & drop
Widget Store — install external widgets via .zip
Widget SDK — build custom widgets, no framework needed

Nodyx is the only self-hosted platform combining an indexed forum, real-time chat, P2P voice, collaborative canvas, a federated directory, and a fully extensible homepage in a single install.


Homepage Builder + Widget SDK

Nodyx ships with a drag-and-drop Homepage Builder and a complete Widget SDK — two features that no other self-hosted community platform offers.

11 layout zones

Place widgets anywhere on your homepage. Positions include:

banner          → full-width top announcement strip
hero            → main hero section
stats-bar       → community counters (members, online, posts)
main            → above main content
sidebar         → right column (join card, etc.)
half-1 / half-2 → 2-column grid
trio-1/2/3      → 3-column grid
footer-1/2/3    → footer columns
footer-bar      → full-width footer strip

4 native widgets (Phase 1)

Widget Description
Hero Banner Animated hero with live/event/night variants resolved server-side
Stats Bar Live member count, online count, thread count with animated counters
Join Card CTA card for guests, hidden for logged-in members
Announcement Banner Closeable info/warning/error strip with icon

Widget Store — install in one click

Any developer can package a widget as a .zip and install it on any Nodyx instance:

my-widget-1.0.0.zip
├── manifest.json     ← id, label, version, schema (config fields)
└── widget.iife.js    ← Web Component — Shadow DOM isolated

The admin panel handles upload, validation, extraction and activation. No rebuild, no deploy.

Widget SDK — build your own, zero build tools

Widgets are standard Custom Elements (Web Components). Plain JavaScript, no React, no Vue, no npm.

class MyWidget extends HTMLElement {
  connectedCallback() { this._render() }

  _render() {
    var cfg = JSON.parse(this.dataset.config || '{}')
    if (!this.shadowRoot) this.attachShadow({ mode: 'open' })
    this.shadowRoot.innerHTML = `<div>Hello ${cfg.title}</div>`
  }
}
customElements.define('nodyx-widget-my-widget', MyWidget)

Full step-by-step guide for non-developers → nodyx.dev/create-widget


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.nodyx.org → 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. Your system only needs curl and git to get started.

# Ubuntu / Debian
apt-get install -y git curl

One-click install

curl -fsSL https://nodyx.org/install.sh | bash

Or clone first:

git clone https://github.com/Pokled/Nodyx.git && cd Nodyx && sudo bash install.sh

The installer offers three network modes:

Mode Requirements Result
Nodyx Relay Nothing — outbound TCP only yourclub.nodyx.org in minutes
Open ports Ports 80 + 443, domain or IP Let's Encrypt HTTPS, full control
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.

Complete installation guide (EN)
Guide d'installation complet (FR)

Updating an existing instance

cd /var/www/nexus && git pull && \
  cd nodyx-core && npm run build && sudo -u nodyx pm2 restart nodyx-core && \
  cd ../nodyx-frontend && npm run build && sudo -u nodyx 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 · 71 migrations
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
Homepage Homepage Builder — 11 zones, drag & drop, visibility rules
Widgets Widget Store — .zip install + Widget SDK (Web Components)

What's built. What's coming.

v0.1 → v1.3 — Foundation
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 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 v0.9
Profile theme system — 6 presets, per-user app-wide CSS engine v1.0
Mobile-responsive UI v1.0
Chat — Reply/quote, pinned messages, link previews, @mention badge v1.1
Presence — Custom status + offline members list v1.1
Direct Messages (DMs) — private 1:1 conversations v1.2
Polls — in chat and forum, 3 types, real-time results v1.2
Ban system — IP ban, email ban, multi-layer enforcement v1.2
nodyx-turn — TURN-over-TCP (RFC 6062) v1.3
Voice — Relay failover + Opus tuning v1.3
v1.4 → v1.9 — Security & Polish
Feature Version
Thread slug URLs + full SEO (canonical, OG, JSON-LD, sitemap) v1.4
Category slugs + subcategories 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 v1.7
QR enrollment + Optimistic UI + Notification center v1.7
Tasks / Kanban — per-community boards, drag & drop, deadlines v1.8
Update alert + Instance version display v1.8
Full paranoid security audit — 38 vulnerabilities fixed v1.8.2
Honeypot — 25+ scanner paths trapped; tarpit; geolocation; DB logging v1.9.0
fail2ban — 5 jails: SSH, brute force, honeypot (7d), permanent blacklist v1.9.0
Argon2id — OWASP 2026 password hashing v1.9.0
2FA TOTP (RFC 6238) + 2FA via Nodyx Signet v1.9.1
Credential harvesting traps + Canary files + Canvas fingerprint v1.9.2
Slowloris inverse — byte-by-byte streaming burns attacker threads 45–90s v1.9.2
Olympus Hub security dashboard v1.9.2
Process isolation — all processes under nodyx system user v1.9.4
181 Node.js tests + 18 Rust unit tests + CI pipeline v1.9.4
Living Profile — Generative banner (Lissajous/FNV-1a), Reputation rings (SVG animated), Activity heatmap v1.9.5
Parallax hero, rotating avatar arcs, Timeline, /reputation transparent formulas v1.9.5
Forum redesign — flat design, zero radius, full-width content v1.9.5
v2.0 — Private & Sovereign Communications 🔒
Feature Version
DM E2E encryption — ECDH P-256 + AES-256-GCM, private key never leaves the browser (IndexedDB non-extractable) v2.0
ESY Barbare layer — per-instance byte-permutation obfuscation on top of AES-GCM, server sees only opaque ciphertext v2.0
E2E shield — live indicator in DM header (green pulse = active, orange = partial), ESY fingerprint tooltip v2.0
Barbarize animation — sender sees obfuscated text during encryption, receiver sees it decipher in real-time v2.0
DM message edit — inline edit with re-encryption for E2E messages, real-time propagation via socket v2.0
DM message delete — real-time soft-delete propagated to all participants instantly v2.0
DM full-width redesign — split layout, glassmorphism sidebar, iMessage-style bubbles, grouped messages v2.0
AudioContext shared — single context for all peer VAD (Chrome 6-context limit fix) v2.0
v2.1 — Homepage Builder + Widget SDK 🧩
Feature Version
Homepage Builder — drag-and-drop admin, 11 layout zones (banner, hero, stats-bar, main, sidebar, half ×2, trio ×3, footer ×4) v2.1
Plugin registry — each native widget is a self-contained file, zero core changes to add new ones v2.1
4 native widgets Phase 1 — Hero Banner (live/event/night variants), Stats Bar (animated counters), Join Card, Announcement Banner v2.1
Visibility rules — per-widget audience (all / guests / members) + scheduled start/end dates v2.1
Widget Store — install external widgets via .zip upload (XHR progress bar, 4-step validation, extraction whitelist) v2.1
Dynamic Widget Loader — Web Components loaded at runtime, no rebuild, no deploy v2.1
Widget SDK — plain JS Custom Elements (Shadow DOM), manifest.json schema → auto-generated config fields in builder v2.1
Demo widget: Video Player — YouTube / Vimeo / MP4 with live preview, source viewer, one-click install v2.1
nodyx.dev/create-widget — step-by-step guide for non-developers (7 steps, EN) v2.1

Coming

Feature Notes
More native widgets — Countdown, Leaderboard, Latest Threads, Featured Events, Jukebox Player Phase 2
Widget marketplace — community-published widgets, ratings, one-click install from directory
Nodes — durable structured knowledge, community-validated via Garden SPEC 013
Module system — 26 activatable modules from admin panel (Joomla-style CMS) Spec
DM reactions — emoji reactions on private messages
Discord import — bulk import channels, threads, reactions, avatars
Mobile (Capacitor) / Desktop (Tauri)
Rust migration — nodyx-server (Axum) replacing nodyx-core progressively

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.

"Fork us if we betray you." — AGPL-3.0


Documentation

Language Docs
EN English nodyx.dev · docs/en/
FR Français docs/fr/
ES Español coming soon
DE Deutsch coming soon

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