https://github.com/zquestz/nexus
A next generation BBS client/server
https://github.com/zquestz/nexus
Last synced: 21 days ago
JSON representation
A next generation BBS client/server
- Host: GitHub
- URL: https://github.com/zquestz/nexus
- Owner: zquestz
- License: mit
- Created: 2025-11-22T02:59:42.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2026-06-04T19:58:49.000Z (26 days ago)
- Last Synced: 2026-06-04T21:29:26.049Z (26 days ago)
- Language: Rust
- Homepage:
- Size: 13.2 MB
- Stars: 9
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Nexus BBS
[](https://github.com/zquestz/nexus/actions)
[](https://github.com/zquestz/nexus)
[](LICENSE)
[](https://www.rust-lang.org/)
A modern BBS inspired by Hotline, KDX, Carracho, and Wired. Built for the [Yggdrasil](https://yggdrasil-network.github.io/) mesh network, but works on any IPv4/IPv6 network.
⚠️ **Under Heavy Development** - Expect breaking changes
## Features
- **Chat** — Real-time messaging with channels, user messages, broadcasts, and persistent message history
- **Voice** — Push-to-talk voice chat with Opus codec, DTLS encryption, and WebRTC audio processing (noise suppression, echo cancellation, automatic gain control)
- **Files** — Multi-tab browser with search, downloads, uploads, pause/resume, and queue management
- **Bandwidth Control** — Server-side outbound speed limits with per-account weighted fairness across BBS and transfers; LAN/private clients bypass the scheduler while WAN/Yggdrasil traffic is managed
- **News** — Bulletin board with Markdown and image support
- **Users** — Granular permissions, account groups, shared accounts, guest access, custom avatars
- **Security** — Mandatory TLS, TOFU verification, TLS interception detection, Argon2id passwords, configurable password strength, chat flood protection, proxy support
- **Notifications** — Desktop, toast, and sound alerts for 16 event types
- **Customization** — 30 themes, 13 languages, configurable UI
- **System Tray** — Status icons, minimize to tray, quick actions (Windows/Linux)
- **Connectivity** — Multi-server bookmarks, auto-connect, UPnP, IPv4/IPv6/Yggdrasil
- **Discovery** — Optional tracker daemon and client browser to find public servers
- **Deep Links** — `nexus://` URI scheme for direct links to servers, channels, and files, with an admin-advertised public address for clean shareable URIs
- **WebSocket** — Optional WebSocket support for web-based clients (`--websocket`)
## Downloads
Pre-built binaries are available on the [Releases](https://github.com/zquestz/nexus/releases) page.
### Client
| Platform | Download |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| macOS (Universal) | `nexus-client-{version}-macos-universal.dmg` |
| Windows (x64) | `nexus-client-{version}-windows-x64.msi` |
| Linux (x64) | `.AppImage` or `.deb` |
| Linux (arm64) | `.AppImage` or `.deb` |
| Arch Linux (AUR) | [nexus-client](https://aur.archlinux.org/packages/nexus-client) or [nexus-client-git](https://aur.archlinux.org/packages/nexus-client-git) |
### Server
| Platform | Download |
| -------- | ------------------------------------------- |
| macOS | `nexusd-{version}-macos-{x64,arm64}.tar.gz` |
| Windows | `nexusd-{version}-windows-x64.zip` |
| Linux | `nexusd-{version}-linux-{x64,arm64}.tar.gz` |
| Docker | `ghcr.io/zquestz/nexusd:{version}` |
### Tracker
The tracker is an optional discovery daemon that maintains a list of registered Nexus servers. It is versioned independently from the BBS server and client (current tracker version: **0.1.1**).
| Platform | Download |
| -------- | --------------------------------------------------- |
| macOS | `nexus-trackerd-{version}-macos-{x64,arm64}.tar.gz` |
| Windows | `nexus-trackerd-{version}-windows-x64.zip` |
| Linux | `nexus-trackerd-{version}-linux-{x64,arm64}.tar.gz` |
| Docker | `ghcr.io/zquestz/nexus-trackerd:{version}` |
See [Client Installation](docs/client/01-getting-started.md), [Server Installation](docs/server/01-getting-started.md), and [Tracker Installation](docs/tracker/01-getting-started.md) for detailed instructions.
## Quick Start (from source)
```bash
# Build
cargo build --release
# Run server (first user becomes admin)
./target/release/nexusd
# Run tracker (optional, for server discovery)
./target/release/nexus-trackerd
# Run client
./target/release/nexus
```
See [Server Documentation](docs/server/01-getting-started.md) for configuration options.
## Docker
The repo's `docker-compose.yml` ships both the server (`nexusd`) and the tracker (`nexus-trackerd`):
```bash
# Start both
docker compose up -d
# Or start just one
docker compose up -d nexusd
docker compose up -d nexus-trackerd
```
See [Server Docker](docs/server/03-docker.md) and [Tracker Docker](docs/tracker/03-docker.md) for details.
## Screenshots
_Coming soon_
## Documentation
- **[Client Guide](docs/README.md#client-user-guide)** — Connections, chat, files, settings
- **[Server Guide](docs/README.md#server-admin-guide)** — Setup, configuration, user management
- **[Tracker Guide](docs/README.md#tracker-admin-guide)** — Discovery service setup and password management
- **[Protocol Specification](docs/protocol/README.md)** — Technical protocol details
## Architecture
| Crate | Description |
| --------------- | --------------------------------- |
| `nexus-common` | Shared protocol and utilities |
| `nexus-server` | Server daemon (`nexusd`) |
| `nexus-client` | GUI client (`nexus`) |
| `nexus-tracker` | Tracker daemon (`nexus-trackerd`) |
## Build Requirements
### All Platforms
- Rust 2024 edition (1.95+)
### Linux
Voice chat requires ALSA and WebRTC audio processing build tools:
**Debian/Ubuntu:**
```bash
sudo apt install build-essential autoconf automake libtool pkg-config clang libasound2-dev
```
**Arch Linux:**
```bash
sudo pacman -S base-devel autoconf automake libtool pkg-config clang alsa-lib
```
**Fedora:**
```bash
sudo dnf install @development-tools autoconf automake libtool pkg-config clang alsa-lib-devel
```
### macOS
```bash
brew install autoconf automake libtool pkg-config
```
### Windows
Visual Studio Build Tools with C++ workload. The WebRTC audio processing library builds automatically via the `bundled` feature.
## Development
```bash
cargo build --release # Build
cargo test --workspace # Test
cargo clippy --workspace --all-targets -- -D warnings # Lint
```
## License
MIT