An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# Nexus BBS

[![CI](https://github.com/zquestz/nexus/workflows/CI/badge.svg)](https://github.com/zquestz/nexus/actions)
[![Version](https://img.shields.io/badge/version-0.9.0-blue.svg)](https://github.com/zquestz/nexus)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Rust](https://img.shields.io/badge/rust-2024-orange.svg)](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