remove unused compose file, add new README
This commit is contained in:
84
README.md
84
README.md
@@ -1,69 +1,63 @@
|
|||||||
# Teletype BBS Server
|
# Teletype BBS Server
|
||||||
|
|
||||||
A modern, Go-based Bulletin Board System (BBS) server designed for Telnet access. It features community tools, wiki integration, and a game catalog, all rendered with retro-style ANSI graphics.
|
Telnet-accessible community BBS server built on the [rubbs](https://git.teletype.hu/tools/rubbs) gem. ANSI-rendered retro terminal interface with a message board, wiki integration, and a game catalog.
|
||||||
|
|
||||||
## Quick Start
|
## Running
|
||||||
|
|
||||||
### Prerequisites
|
**Docker Compose (recommended):**
|
||||||
- [Go](https://go.dev/dl/) 1.26 or higher
|
|
||||||
- A [Wiki.js](https://wiki.js.org/) instance (optional, for Wiki features)
|
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
1. Clone the repository:
|
|
||||||
```bash
|
```bash
|
||||||
git clone <repository-url>
|
docker compose up --build
|
||||||
cd bbs-server
|
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Install dependencies:
|
**Directly (requires Ruby 3.x):**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
go mod download
|
bundle install
|
||||||
|
ruby bbs.rb
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Set up environment variables (optional but recommended for Wiki access):
|
Connect with:
|
||||||
```bash
|
|
||||||
export WEBAPP_WIKIJS_TOKEN="your-wiki-js-api-token"
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Run the server:
|
|
||||||
```bash
|
|
||||||
go run main.go
|
|
||||||
```
|
|
||||||
|
|
||||||
The server starts on `0.0.0.0:2323` by default.
|
|
||||||
|
|
||||||
### Connecting
|
|
||||||
You can connect to the BBS using any standard Telnet client:
|
|
||||||
```bash
|
```bash
|
||||||
telnet localhost 2323
|
telnet localhost 2323
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
- **Host/Port:** Currently hardcoded in `main.go` for simplicity.
|
Copy `env-example` to `.env` and fill in the values:
|
||||||
- **Wiki API:** Configured in `lib/repository.wiki.go`.
|
|
||||||
- **Games API:** Configured in `lib/repository.catalog.go`.
|
|
||||||
- **Internationalization:** Text is managed in `lib/sys.i18n.go` using a map-based system.
|
|
||||||
|
|
||||||
## Project Structure
|
| Variable | Default | Description |
|
||||||
|
|---|---|---|
|
||||||
|
| `WEBAPP_WIKIJS_TOKEN` | — | Bearer token for Wiki.js API (optional) |
|
||||||
|
| `MESSAGES_PATH` | `data/messages.dat` | Path to the messages CSV file |
|
||||||
|
|
||||||
- `main.go`: Entry point and network listener.
|
## Menu
|
||||||
- `lib/`: Core logic and modules.
|
|
||||||
- `repository.*.go`: Data fetching from external APIs (Wiki, Games).
|
|
||||||
- `menu.*.go`: Logic for individual BBS sections.
|
|
||||||
- `sys.print.go`: Telnet-specific I/O and ANSI rendering.
|
|
||||||
- `sys.header.go`: Core state and UI layouts.
|
|
||||||
- `sys.i18n.go`: Translation maps.
|
|
||||||
|
|
||||||
## Development
|
| Option | Description |
|
||||||
|
|---|---|
|
||||||
|
| Message Board | View the last 30 messages |
|
||||||
|
| New Message | Post a message (max 200 chars) |
|
||||||
|
| Blog Posts | Browse blog entries from Wiki.js |
|
||||||
|
| HowTo Guides | Browse how-to articles from Wiki.js |
|
||||||
|
| Game Catalog | Browse the Teletype game catalog |
|
||||||
|
| Online Users | List of currently connected users |
|
||||||
|
| System Info | Server stats |
|
||||||
|
|
||||||
To build a production binary:
|
## Project structure
|
||||||
```bash
|
|
||||||
go build -o bbs-server main.go
|
```
|
||||||
|
bbs.rb Entry point — BBS configuration and flow definition
|
||||||
|
lib/
|
||||||
|
online_users.rb Thread-safe connected-users map
|
||||||
|
message_board.rb CSV-backed message store
|
||||||
|
wiki.rb Wiki.js GraphQL client
|
||||||
|
catalog.rb Games API client
|
||||||
|
display.rb ANSI rendering helpers and content handlers
|
||||||
|
data/
|
||||||
|
messages.dat Message board records (auto-created)
|
||||||
```
|
```
|
||||||
|
|
||||||
To run with Docker:
|
## Data
|
||||||
```bash
|
|
||||||
docker-compose up --build
|
Messages are stored in `data/messages.dat` (plain CSV, auto-created on first post). The `data/` directory is mounted as a Docker volume so records survive container restarts.
|
||||||
```
|
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
services:
|
|
||||||
bbs-server:
|
|
||||||
build: .
|
|
||||||
container_name: bbs-server-prod
|
|
||||||
ports:
|
|
||||||
- "2323:2323"
|
|
||||||
environment:
|
|
||||||
- WEBAPP_WIKIJS_TOKEN=${WEBAPP_WIKIJS_TOKEN}
|
|
||||||
- MESSAGES_PATH=/app/data/messages.dat
|
|
||||||
volumes:
|
|
||||||
- bbs-messages:/app/data
|
|
||||||
restart: always
|
|
||||||
tmpfs:
|
|
||||||
- /tmp
|
|
||||||
cap_drop:
|
|
||||||
- ALL
|
|
||||||
security_opt:
|
|
||||||
- no-new-privileges:true
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
bbs-messages:
|
|
||||||
Reference in New Issue
Block a user