selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Nodyx logo

Self-host Nodyx

v2.12.0

Community platform: forum, chat, voice, whiteboard, homepage

ReleaseOpen SourceAGPL-3.0
Updatedlast week
LanguageSvelte
Setup difficultyModerate
MobileResponsive
ThemeDark mode
Stars
137
CPU
64-bit (x86 or ARM64)
RAM
1 to 2 GB (small community), 2 to 4 GB (most communities), 4 GB+ (busy voice rooms)
Storage
Not explicitly stated
Ports
3000 (API server (Fastify)), 3001 (Frontend (SvelteKit)), 80 (HTTP (Caddy reverse proxy)), 443 (HTTPS (Caddy reverse proxy)), 3478 (TURN relay (STUN/TURN) for voice), 5349 (TURN relay (TLS) for voice), 40000 (SFU media range start (large voice rooms, screen sharing)), 40999 (SFU media range end (large voice rooms, screen sharing)), 49152 (Voice relay media range start), 65535 (Voice relay media range end)
Requires
Caddy, Node.js, PM2, PostgreSQL, Redis
Install with Docker Compose
Home page of a Nodyx community with featured articles and latest discussionsForum view with categories, sub-forums, latest messages and statisticsVoice channel with live screen share on the Nodyx StageCollaborative whiteboard with frames, sticky notes, hexagons and connectorsKanban task board with To do, In progress and Done columnsCommunity calendar with upcoming eventsPoll with live resultsHomepage builder with page structure on left and live preview on rightAppearance settings with 14 ready-made ambiances and live previewHome page in light interface mode

What is Nodyx?

Nodyx delivers an all-in-one community platform you run on your own hardware. It packages a search-indexable discussion board, live chat with encrypted direct messages, voice rooms supporting screen sharing, a multi-user whiteboard, Kanban-style task boards, event calendars with RSVPs, voting polls, and a drag-and-drop homepage composer with 14 preset themes. The automated installer provisions PostgreSQL, Redis, Caddy, PM2 and custom Rust voice services on Ubuntu, Debian or Raspberry Pi. A bundled relay service provides a public *.nodyx.org address using only outbound connections, so no router ports need opening. An extension SDK allows custom widgets, and a Streamer Hub adds Twitch alerts, chat and OBS overlays. The interface ships in eight languages. Licensed AGPL-3.0, built by a solo developer in France with community contributions.

Should you self-host Nodyx?

Nodyx scores 48/100 on selfhost.directory (how scoring works) and ranks #5 of 6 in Community. It has 137 GitHub stars.

It shipped 8 stable releases in the past year. The latest, v2.12.0, came out on 10 August 2026. New versions land roughly every 2 weeks.

Setup is moderate: expect some configuration beyond a single command. It is AGPL-3.0-licensed and written mostly in Svelte.

Its closest alternative on selfhost.directory is Decidim (63/100, 1 841 stars). It scores higher overall, so compare the two before you pick. See Nodyx vs Decidim side by side.

Features

  • Collaborative Whiteboard
  • End-to-end encrypted DMs
  • Events calendar
  • Extension SDK
  • Federated directory
  • Forum
  • Homepage builder
  • OctoGuard auto-moderation
  • Polls
  • Real-time Chat
  • Screen sharing
  • Streamer Hub
  • Task boards (Kanban)
  • Voice channels

Nodyx README

How to install Nodyx

Install Nodyx with Docker Compose

Docker and Docker Compose
Environment variables
DB_PASSWORD, nodyx-core/.env, nodyx-frontend/.env
  1. cp .env.example .env
  2. cp nodyx-core/.env.example nodyx-core/.env
  3. cp nodyx-frontend/.env.example nodyx-frontend/.env
  4. docker compose up -d

Reverse proxy (nginx / Caddy) must forward: /api/ and /uploads/ and /socket.io/ → http://localhost:3000 / → http://localhost:3001

Full stack with PostgreSQL 16, Redis 7, API (port 3000), Frontend (port 3001). Requires manual reverse proxy configuration.

How to configure Nodyx

  • ABUSEIPDB_API_KEYAbuseIPDB API key for threat enrichment

    AbuseIPDB API key for threat enrichment

  • BACKUP_DIRCustom backup directory path

    Custom backup directory path

  • BLOCKED_CONTENT_PATTERNSComma-separated blocked content patterns

    Comma-separated blocked content patterns

  • BLOCKED_LINK_DOMAINSComma-separated blocked link domains

    Comma-separated blocked link domains

  • CERT_EMAIL_MAX_PER_DAY3Max abuse emails per day

    Max abuse emails per day

  • CERT_EMAIL_TOEmail for abuse reports

    Email for abuse reports

  • CERT_REPORT_SECRETSecret for signing CERT reports

    Secret for signing CERT reports

  • DB_HOSTlocalhostPostgreSQL host

    PostgreSQL host

  • DB_NAMEnodyxPostgreSQL database name

    PostgreSQL database name

  • DB_PASSWORDPostgreSQL password

    PostgreSQL password

  • DB_PORT5432PostgreSQL port

    PostgreSQL port

  • DB_SSLEnable SSL for remote managed databases (Supabase, Neon)

    Enable SSL for remote managed databases (Supabase, Neon)

    values: true

  • DB_USERnodyx_userPostgreSQL user

    PostgreSQL user

  • ESY_KEY_PATHPath to E2E DM encryption key

    Path to E2E DM encryption key

  • FRONTEND_URLhttp://localhost:5173Public frontend URL for CORS and link generation

    Public frontend URL for CORS and link generation

  • HONEYPOT_DISCORD_WEBHOOKDiscord webhook for honeypot alerts

    Discord webhook for honeypot alerts

  • HOST0.0.0.0API server bind address

    API server bind address

  • JWT_SECRETSecret de signature des sessions (JWT). Obligatoire en production. Doit être long et totalement aléatoire (32+ octets).

    Secret de signature des sessions (JWT). Obligatoire en production. Doit être long et totalement aléatoire (32+ octets).

    values: 32+ byte random hex string

  • MISP_API_KEYMISP API key

    MISP API key

  • MISP_DISTRIBUTION0MISP distribution level

    MISP distribution level

    values: 0, 1, 3

  • MISP_ORG_ID1MISP organization ID

    MISP organization ID

  • MISP_URLMISP instance URL for threat sharing

    MISP instance URL for threat sharing

  • NODE_ENVproductionEnvironment mode

    Environment mode

    values: production, development

  • NODYX_COMMUNITY_COUNTRYFRCountry code (ISO 3166-1 alpha-2)

    Country code (ISO 3166-1 alpha-2)

  • NODYX_COMMUNITY_DESCRIPTIONLa communauté dédiée à [votre sujet].Short community description for SEO

    Short community description for SEO

  • NODYX_COMMUNITY_LANGUAGEfrPrimary content language (ISO 639-1)

    Primary content language (ISO 639-1)

    values: fr, en, de, es, it, pt, nl

  • NODYX_COMMUNITY_NAMEMa CommunautéDisplayed community name

    Displayed community name

  • NODYX_COMMUNITY_SLUGma-communauteUnique slug for URLs (lowercase, numbers, hyphens)

    Unique slug for URLs (lowercase, numbers, hyphens)

  • NODYX_DEMO_MODEEnable read-only demo mode

    Enable read-only demo mode

    values: true

  • NODYX_GLOBAL_INDEXINGtrueEnable cross-instance public thread search

    Enable cross-instance public thread search

    values: true, false

  • NODYX_HATE_FILTER_ENABLEDtrueEnable hate speech filter

    Enable hate speech filter

    values: true, false

  • NODYX_MAX_MEMBERSMember limit (empty = unlimited)

    Member limit (empty = unlimited)

  • NSFW_SCANEnable local NSFW image detection

    Enable local NSFW image detection

    values: true, false

  • NSFW_THRESHOLD0.7NSFW detection threshold (0-1)

    NSFW detection threshold (0-1)

    values: 0-1

  • OCTOGUARD_ENABLEDfalseEnable OctoGuard auto-moderation

    Enable OctoGuard auto-moderation

    values: true, false

  • PORT3000API server port

    API server port

  • REDIS_HOSTlocalhostRedis host

    Redis host

  • REDIS_PASSWORDRedis password (required in production if Redis exposed)

    Redis password (required in production if Redis exposed)

  • REDIS_PORT6379Redis port

    Redis port

  • SECURITY_DISCORD_WEBHOOKDiscord webhook for security alerts

    Discord webhook for security alerts

  • SHODAN_API_KEYShodan API key for threat enrichment

    Shodan API key for threat enrichment

  • SIGNET_URLhttps://signet.nodyx.orgNodyx Signet PWA URL for CORS

    Nodyx Signet PWA URL for CORS

  • SMTP_FROMFrom email address

    From email address

  • SMTP_HOSTSMTP server host

    SMTP server host

  • SMTP_PASSSMTP password

    SMTP password

  • SMTP_PORT587SMTP port

    SMTP port

  • SMTP_SECUREfalseUse implicit TLS (port 465)

    Use implicit TLS (port 465)

    values: true, false

  • SMTP_USERSMTP username

    SMTP username

  • STREAMER_OAUTH_KEYAES-256-GCM encryption key for stored Twitch tokens (32 bytes)

    AES-256-GCM encryption key for stored Twitch tokens (32 bytes)

  • STREAMER_OAUTH_REDIRECT_URIOAuth redirect URI for Streamer Hub

    OAuth redirect URI for Streamer Hub

  • STREAMER_PUBLIC_BASEPublic base URL for Streamer Hub webhooks

    Public base URL for Streamer Hub webhooks

  • STREAMER_TWITCH_CLIENT_IDTwitch Client ID for full Streamer Hub

    Twitch Client ID for full Streamer Hub

  • STREAMER_TWITCH_CLIENT_SECRETTwitch Client Secret for full Streamer Hub

    Twitch Client Secret for full Streamer Hub

  • STUN_FALLBACK_URLSstun:stun.l.google.com:19302Fallback STUN server URLs

    Fallback STUN server URLs

  • TURN_PORT3478TURN server port

    TURN server port

  • TURN_PUBLIC_IPPublic IP of TURN server

    Public IP of TURN server

  • TURN_SECRETTURN shared secret

    TURN shared secret

  • TWITCH_CLIENT_IDTwitch Client ID for homepage stream widget

    Twitch Client ID for homepage stream widget

  • TWITCH_CLIENT_SECRETTwitch Client Secret for homepage stream widget

    Twitch Client Secret for homepage stream widget

  • UPLOADS_DIRCustom uploads directory path

    Custom uploads directory path

  • VAPID_PRIVATE_KEYVAPID private key for push notifications

    VAPID private key for push notifications

  • VAPID_PUBLIC_KEYVAPID public key for push notifications

    VAPID public key for push notifications

  • VAPID_SUBJECTVAPID subject (mailto: or URL)

    VAPID subject (mailto: or URL)

  • VIRUSTOTAL_API_KEYVirusTotal API key for threat enrichment

    VirusTotal API key for threat enrichment

Nodyx releases & version history

FAQ

Who makes Nodyx?

One developer in France started it on February 18, 2026. Contributors and translators from several countries have joined since. No company, no investors.

How is it different from Discord?

Discord is great for many groups. Nodyx is for communities that want to own their place: it runs on your server, under your rules, with a forum that search engines can read and no company that owns your members' accounts.

Can I run it at home?

Yes, on a Raspberry Pi 4 or 5 or an old laptop. With the Nodyx relay you don't need to open any port on your router. Large voice rooms still need a server reachable from the internet for now.

Do I need to be a developer?

No. If you can copy a command into a terminal, the installer does the rest: it asks a few questions and sets everything up.

Is Nodyx free?

Yes, Nodyx is free and open source software under the AGPL-3.0 license. The only cost is the server if you rent one.

More in Community

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…