Board: [fsxNet] BBS Software Development/Support Subject: Re: Door Servers / Docker From: TheWebExpert(21:3/254) Date: Mon Sep 07, 2026 20:30 On September 2 2026, TheWebExpert wrote: TH> I have a problem with getting a door server to work. TH> What I wanted to do is to have a docker container running that accepts TH> rlogin TH> and spawns dosbox, and sends the game out. TH> It works pretty good, but does not workwith Tradewars and OO2, the TH> ansi TH> animation fails, the intro graphics to either glitch out TH> Does anyone have a working docker container to run dos doors via TH> rlogin? TH> I am trying to avoid spinning up a VM, anyone figure this out? TH> ... The Adventure BBS (HTTPS://BBS.OURBIRDHOUSE.CA) BBS Door Server (Dockerized DOSBox Multi-Node RLogin Server) https://github.com/thewebexpert/bbs-door-server TLDR; one click door server that actually works and integrates with BinkTerm/SBBS super easy!!! You litterally pull it, run it, use it, that fast. BBS Door Server (Dockerized DOSBox Multi-Node RLogin Server) A modern, turnkey Docker container for running 16-bit DOS BBS door games (TradeWars 2002, Legend of the Red Dragon, Operation: Overkill II, DoorMUD, and more) on contemporary Linux and macOS systems with zero-latency socket inheritance and a web-based Sysop desktop via noVNC. Features Turnkey Docker Setup: Runs out of the box with docker compose up -d. Zero-Latency Socket Inheritance: Direct file-descriptor handoff (-socket ) with 100% byte-transparent binary I/O, completely eliminating TCP loopback overhead and ANSI escape-code corruption. Web Management Desktop (noVNC): Access a full graphical X11 desktop directly in your web browser on port 6080 without installing VNC viewer software. Right-Click Sysop Menu (Openbox): Right-click the desktop to instantly launch a standalone DOSBox prompt (C:\>), game setup utilities, or Linux shell terminals. Pre-configured Classic Doors: Includes working setups and multi-node batch launchers for: TradeWars 2002 v3.13 Legend of the Red Dragon (LORD) v4.07 Operation: Overkill II (OO2) v1.21 DoorMUD v0.99 FOSSIL Driver Integration: Bundled with tuned BNU 1.89h FOSSIL driver featuring a 32KB resident transmit buffer, locked 38400 baud, and CTS/watchdog bypass. Multi-Node Operation: Supports simultaneous callers across independent node directories (C:\nodes\node1 through node6). Popular Dropfile Formats: Generates DOOR.SYS, DORINFO1.DEF (through DORINFO6.DEF), and DOORFILE.SR. Universal BBS Support: Connects seamlessly with Synchronet (sbbs), Binkterm PHP, MajorBBS / WorldGroup, Mystic BBS, and Enigma½ via standard RFC 1282 RLogin. Quick Start 1. Clone & Start git clone https://github.com/thewebexpert/bbs-door-server.git cd bbs-door-server docker compose up -d 2. Access the Ports Service Port Description Web Sysop Desktop (noVNC) 6080 Open http://localhost:6080/ in your browser RLogin Server 513 Port for BBS connections (Synchronet, Binkterm, etc.) Debug Test Console 1234 Connect via telnet (telnet localhost 1234) to test doors Web Management Desktop (noVNC) Open http://localhost:6080/ in any web browser. You will be greeted by an X11 desktop environment featuring an active green xterm Linux terminal. Right-Click Sysop Menu Right-click anywhere on the desktop background to open the Openbox Sysop Menu: DOSBox Prompt (C:\>): Opens an interactive DOSBox session with C:\ pre-mounted to /app/dosbox/drive. Use this to run installers, create characters, or test executables. Dynamic Door Management: Uninstalled open-source doors show an Install option. Once installed, the menu dynamically updates to replace the installer with Configure (launching its setup editor in DOSBox) and Run Locally! List RLogin Entrypoints (BBS Info): Opens a formatted status dashboard showing all doors, installation status, ports, and copy-paste Synchronet / SyncTERM configuration strings. Linux Terminal (xterm): Spawns an additional Linux terminal window for downloading archives, managing files, and checking logs. Installing Open-Source BBS Doors The door server comes pre-configured with launcher batch scripts and dropfile integrations for official open-source BBS doors. To avoid forcing unneeded software onto your system, these doors are not pre-installed, but can be added in seconds. Supported Open-Source Doors Usurper v0.20e (GNU General Public License v2) Legendary fantasy RPG door by Jakob Dangarden, ported and maintained by Rick Parrish. Features dungeon crawling, monster slaying, player combat, gods, and marriages. Judge Dredd Door (MIT License) Modern L.O.R.D.-style Mega-City One RPG door created by GrumpyGrendil with Scott Baker's DDPlus 7.1 DoorKit. Fight perps, level up your Judge, patrol the sectors, and upgrade equipment. Option A: 1-Click Installation from Web Desktop (noVNC) Open the noVNC desktop at http://localhost:6080/. Right-click anywhere on the desktop background. Click Install Usurper (GPL) or Install Judge Dredd (MIT). A terminal window will open, download the official release directly from GitHub, and set up all required directories. Once complete, right-clicking the desktop will now show: Usurper ➔ Configure Usurper (Editor) or Run Usurper Locally Judge Dredd ➔ Edit Config (JUDGE.CFG) or Run Judge Dredd Locally Option B: Command-Line Installation You can also run the installer script directly on the host or inside the container: # Install Usurper only: ../install-doors.sh usurper # Install Judge Dredd only: ../install-doors.sh dredd # Install all available open-source doors: ../install-doors.sh all Viewing RLogin Entrypoints & BBS Configuration To see all configured door games, their RLogin server names, installation status, and copy-paste BBS setup lines: From the Web Desktop Right-click the desktop and click List RLogin Entrypoints (BBS Info). From the Terminal Run the helper script: ../list-doors.sh This displays a live dashboard and allows you to test any door instantly: Internal RLogin: door-server:513 External RLogin: localhost:5130 Synchronet External Program Command: ?rlogin -p 513 door-server %u SyncTERM: Host: localhost | Port: 5130 | User: How to Add Custom DOS Door Games Here is a complete, step-by-step guide to installing a new door game using the web interface: Step 1: Download the Game Archive Open the web desktop at http://localhost:6080/. In the open terminal window, navigate to the doors folder and curl the game: cd /app/dosbox/drive/doors curl -L -O http://www.example.com/downloads/mygame.zip Step 2: Extract the Game Files Extract the archive into its own folder: mkdir MYGAME unzip mygame.zip -d MYGAME # Ensure lowercase permissions if needed: chmod -R 775 MYGAME (Note: You can also use DOS PKUNZIP from inside the DOSBox prompt: pkunzip mygame.zip C:\doors\MYGAME) Step 3: Run the Game Setup in DOSBox Right-click anywhere on the desktop and click DOSBox Prompt (C:\>). In the DOSBox prompt, navigate to your game's directory and run its setup utility: C: CD \doors\MYGAME SETUP.EXE Configure the door settings: Comm Type: Select FOSSIL (or COM1 / Standard IRQ 4). Baud Rate: Set to 38,400 or Locked. Drop File Type: Choose DOOR.SYS or DORINFO1.DEF. Multi-node Paths: If the game supports multi-node, configure the dropfile path for each node: Node 1: C:\nodes\node1 Node 2: C:\nodes\node2 (and so on) Step 4: Create the Batch Launcher Create a batch launcher in /app/dosbox/drive/doors/bin/.bat. You can create this from the Linux terminal using nano: nano /app/dosbox/drive/doors/bin/mygame.bat Add your batch script (parameter %1 represents the node number): @echo off C: CD \doors\MYGAME REM Launch the game with node dropfile path: MYGAME.EXE C:\nodes\node%1\DOOR.SYS Make it executable: chmod +x /app/dosbox/drive/doors/bin/mygame.bat Step 5: Register the Door in config.js Open /app/config.js in your editor (or on your host system): doors: [ // ... existing doors ... { name: 'MYGAME', doorCmd: 'CALL mygame.bat', dropFileFormat: 'DoorSys', // 'DoorSys', 'DorInfo', or 'DoorFile' multiNode: true } ] Step 6: Test Locally via the Debug Port Before wiring it up to your BBS, test it directly via the debug console: telnet localhost 1234 You will be greeted with: Welcome to the doornode debug server! Available modules: 1) LORD 2) TW2002 3) OO2 4) DOORMUD 5) MYGAME Select a module: Type 5 or MYGAME and press Enter. DOSBox will launch immediately and stream the game directly into your terminal! Connecting Your BBS to Door Server Door Server speaks standard RFC 1282 RLogin on port 513. 1. Synchronet BBS (sbbs) In Synchronet's configuration utility (scfg): Navigate to External Programs → Online Programs (Doors). Select or create a section (e.g. External Games). Add a new program: Name: TradeWars 2002 Internal Code: TW2002 Execution Method: ?rlogin -p 513 door-server TW2002 Native Executable: No Use Shell to Execute: No 2. Binkterm PHP In Binkterm's door configuration (public_html/webdoors/rlogindoors/index.php or webdoor.json): Host: door-server (or IP address) Port: 513 RLogin User / Door Tag: TW2002, LORD, OO2, or DOORMUD Architecture & Technical Deep-Dive Why Socket Inheritance? Traditional DOSBox BBS door setups run a local TCP nullmodem server (serial1=nullmodem server:10001) and use a TCP proxy process to route caller traffic. This introduces: Significant latency and packet fragmentation. Character dropping and ANSI screen corruption when users type fast. Needing to open and manage individual TCP ports per node. This container uses DOSBox Socket Inheritance: Client (WebSocket/Telnet) │ ▼ Node.js RLogin Server (port 513) │ - Performs RLogin handshake │ - Writes dropfile (DOOR.SYS / DORINFO) │ - Detaches client socket from Node.js event loop ▼ DOSBox Process (-socket ) │ - Inherits raw file descriptor directly onto serial1 (COM1) ▼ BNU FOSSIL Driver (INT 14h) │ ▼ 16-bit DOS Door Game Caller input flows directly into the emulated 16550 UART with zero intermediary buffering, providing an authentic 100% responsive dial-up experience. Environment Variables & Custom Ports You can customize port bindings by copying .env.example to .env: cp .env.example .env Variable Default Description DOOR_PORT 513 Host port for RLogin BBS traffic VNC_WEB_PORT 6080 Host port for the noVNC Sysop web interface DEBUG_PORT 1234 Host port for the interactive debug test console TZ America/New_York Container timezone Credits & License Original Prototype: Based on doornode (2019) by Tom Dinchak (dinchak/doornode). Containerization & Enhancements: Architected by TheWebExpert with Docker containerization, DOSBox binary nullmodem patches, noVNC management desktop, and socket-inheritance pipeline. License: Released under the GNU General Public License v3.0 (GPL-3.0). See LICENSE for details. .... The Adventure BBS (HTTPS://BBS.OURBIRDHOUSE.CA) --- The Adventure BBS http://bbs.ourbirdhouse.ca * Origin: The Adventure BBS (21:3/254.0) .