An ALPHA bulletin board system (BBS) implementation for Reticulum networks.
RetiBBS allows users to communicate through message boards in a secure manner.
- User authentication and authorization with Reticulum
- Multiple message boards support
- User display names
- Admin privileges for board management
- Simple text-based command interface
It is strongly suggested to use this alpha software in its own Python virtual environment.
python -m venv .venv
source .venv/bin/activate
- Install Textual and the Reticulum Network Stack:
pip install rns textual
- Clone this repository:
git clone https://github.com/kc1awv/RetiBBS.git
cd RetiBBS
cd server
python retibbs_server.py [OPTIONS]
--reticulum-config
: Path to alternative Reticulum config directory (optional)--identity-file
: Path to store/load server identity (default: server_identity.pem)--config-file
: Path to server config file (default: server_config.json)
cd client
python retibbs_textual.py [OPTIONS]
--reticulum-config
: Path to alternative Reticulum config directory (optional)--identity-file
: Path to store/load client identity (optional, default: {RNS.Reticulum.storagepath}/retibbs_client_identity)--server
: Hexadecimal hash of the RetiBBS server to connect to (optional)
Main Menu:
? | help - Show help text and available commands
h | hello - Check authorization status
n | name <name> - Set your display name
b | boards - Switch to message boards area
lo | logout - Log out from the system
### Admin Commands
lu | listusers - List users in DB
a | admin <user_hash> - Grant admin rights to a user
Each area has its own set of commands. Use ?
or help
to get a list of commands for the area you are in.
{
"server_name": "changeme",
"announce_interval": 300
}
Saved servers are stored in JSON format with server names and hashes.
Example:
{
"019e6ad5a0e47048413c9f7578e83393": {
"display_name": "Beleth Test",
"hash": "019e6ad5a0e47048413c9f7578e83393",
"timestamp": "2025-01-01 13:31:08"
}
}
The codebase is organized into these main components:
- Server (server): Handles client connections, message boards, and user management
- Client (client): Provides the user interface and server connection handling
RetiBBS utilizes Reticulum's built-in encryption and authentication mechanisms to ensure secure communication between clients and servers.
- Python 3.x
- Reticulum Network Stack
- Textual