diff --git a/README.md b/README.md index 7c1870ce..82f94ce6 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ ENiGMA½ is a modern BBS software with a nostalgic flair! ## Features Available Now * Multi platform: Anywhere [Node.js](https://nodejs.org/) runs likely works (known to work under Linux, FreeBSD, OpenBSD, OS X and Windows) * Unlimited multi node support (for all those BBS "callers"!) - * **Highly** customizable via [HJSON](http://hjson.org/) based configuration, menus, and themes in addition to JavaScript based [mods](docs/mods.md) - * [MCI support](docs/mci.md) for lightbars, toggles, input areas, and so on plus many other other bells and whistles + * **Highly** customizable via [HJSON](http://hjson.org/) based configuration, menus, and themes in addition to JavaScript based [mods](docs/modding/existing-mods.md) + * [MCI support](docs/art/mci.md) for lightbars, toggles, input areas, and so on plus many other other bells and whistles * Telnet, **SSH**, and both secure and non-secure [WebSocket](https://en.wikipedia.org/wiki/WebSocket) access built in! Additional servers are easy to implement * [CP437](http://www.ascii-codes.com/) and UTF-8 output * [SyncTerm](http://syncterm.bbsdev.net/) style font and baud emulation support. Display PC/DOS and Amiga style artwork as it's intended! In general, ANSI-BBS / [cterm.txt](http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt?content-type=text%2Fplain&revision=HEAD) / [bansi.txt](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/bansi.txt) are followed for expected BBS behavior @@ -17,10 +17,10 @@ ENiGMA½ is a modern BBS software with a nostalgic flair! * Renegade style pipe color codes * [SQLite](http://sqlite.org/) storage of users, message areas, and so on * Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption - * [Door support](docs/doors.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), [Exodus](https://oddnetwork.org/exodus/) and [CombatNet](http://combatnet.us/) support! + * [Door support](docs/modding/door-servers.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), [Exodus](https://oddnetwork.org/exodus/) and [CombatNet](http://combatnet.us/) support! * [Bunyan](https://github.com/trentm/node-bunyan) logging - * [Message networks](docs/msg_networks.md) with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export - * [Gazelle](https://github.com/WhatCD/Gazelle) inspirted File Bases including fast fully indexed full text search (FTS), #tags, and HTTP(S) temporary download URLs using a built in [web server](docs/web_server.md). Legacy X/Y/Z modem also supported! + * [Message networks](docs/messageareas/message-networks.md) with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export. Messages Bases can also be set to read-only viewable using a built in Gopher server! + * [Gazelle](https://github.com/WhatCD/Gazelle) inspirted File Bases including fast fully indexed full text search (FTS), #tags, and HTTP(S) temporary download URLs using a built in [web server](docs/servers/web-server.md). Legacy X/Y/Z modem also supported! * Upload processor supporting [FILE_ID.DIZ](https://en.wikipedia.org/wiki/FILE_ID.DIZ) and [NFO](https://en.wikipedia.org/wiki/.nfo) extraction, year estimation, and more! * ANSI support in the Full Screen Editor (FSE), file descriptions, and so on diff --git a/docs/_includes/nav.md b/docs/_includes/nav.md index 168e1cf5..dacb2f00 100644 --- a/docs/_includes/nav.md +++ b/docs/_includes/nav.md @@ -4,8 +4,8 @@ - [Docker]({{ site.baseurl }}{% link installation/docker.md %}) - [Manual installation]({{ site.baseurl }}{% link installation/manual.md %}) - [OS / Hardware Specific]({{ site.baseurl }}{% link installation/os-hardware.md %}) - - Raspberry Pi - - Windows + - [Raspberry Pi]({{ site.baseurl }}{% link installation/rpi.md %}) + - [Windows]({{ site.baseurl }}{% link installation/windows.md %}) - [Your Network Setup]({{ site.baseurl }}{% link installation/network.md %}) - [Testing Your Installation]({{ site.baseurl }}{% link installation/testing.md %}) - [Production Installation]({{ site.baseurl }}{% link installation/production.md %}) diff --git a/docs/configuration/email.md b/docs/configuration/email.md index 1677eb11..5bc4d4c8 100644 --- a/docs/configuration/email.md +++ b/docs/configuration/email.md @@ -26,5 +26,4 @@ email: { } } } -} -``` \ No newline at end of file +``` diff --git a/docs/installation/os-hardware.md b/docs/installation/os-hardware.md index 21eac4d9..a49283b4 100644 --- a/docs/installation/os-hardware.md +++ b/docs/installation/os-hardware.md @@ -2,31 +2,10 @@ layout: page title: OS & Hardware Specific Information --- -## Raspberry Pi +There are multiple ways of installing ENiGMA BBS, depending on your level of experience and desire to do +things manually versus have it automated for you. -All Raspberry Pi models work great with ENiGMA½! Keep in mind compiling the dependencies with -`npm install` will take some time and *may* appear to hang. It's still working - just be patient and let it -complete. - -### Basic Instructions - -1. Download [Raspbian Stretch Lite](https://www.raspberrypi.org/downloads/raspbian/). Follow the instructions -on the [Raspbian site](https://www.raspberrypi.org/documentation/installation/installing-images/README.md) regarding how -to get it written to an SD card. - -2. Run `sudo raspi-config`, then: - 1. Set your timezone (option 4, option I2) - 2. Enable SSH (option 5, option P2) - 3. Expand the filesystem to use the entire SD card (option 7, option A1) - -3. Update & upgrade all packages: `apt-get update && apt-get upgrade` - -4. Install required packages: `sudo apt install lrzsz p7zip-full` - -5. Follow the [installation instructions](/installation) to install ENiGMA½. - -6. Profit! - -## Windows - -Needs more info, please submit a PR! \ No newline at end of file +| Method | Notes | +|----------------------------------------|---------------------------------------------------------------------------------------------| +| [Raspberry Pi](rpi) | All Raspberry Pi models work great with ENiGMA½! | +| [Windows](windows) | Compatible with all Windows Operating Systems | diff --git a/docs/installation/rpi.md b/docs/installation/rpi.md new file mode 100644 index 00000000..fb8ff235 --- /dev/null +++ b/docs/installation/rpi.md @@ -0,0 +1,27 @@ +--- +layout: page +title: Raspberry Pi +--- + +All Raspberry Pi models work great with ENiGMA½! Keep in mind compiling the dependencies with +`npm install` will take some time and *may* appear to hang. It's still working - just be patient and let it +complete. + +### Basic Instructions + +1. Download [Raspbian Stretch Lite](https://www.raspberrypi.org/downloads/raspbian/). Follow the instructions +on the [Raspbian site](https://www.raspberrypi.org/documentation/installation/installing-images/README.md) regarding how +to get it written to an SD card. + +2. Run `sudo raspi-config`, then: + 1. Set your timezone (option 4, option I2) + 2. Enable SSH (option 5, option P2) + 3. Expand the filesystem to use the entire SD card (option 7, option A1) + +3. Update & upgrade all packages: `apt-get update && apt-get upgrade` + +4. Install required packages: `sudo apt install lrzsz p7zip-full` + +5. Follow the [installation instructions](/installation) to install ENiGMA½. + +6. Profit! diff --git a/docs/installation/windows.md b/docs/installation/windows.md new file mode 100644 index 00000000..4eaed906 --- /dev/null +++ b/docs/installation/windows.md @@ -0,0 +1,69 @@ +--- +layout: page +title: Windows Full Install +--- + +ENiGMA½ will run on both 32bit and 64bit Windows. If you want to run 16bit doors natively then you should use a 32bit Windows. + + +### Basic Instructions + +1. Download and Install [Node.JS](https://nodejs.org/en/download/). + + 1. Upgrade NPM : At this time node comes with NPM 5.6 preinstalled. To upgrade to a newer version now or in the future on windows follow this method. `*Run PowerShell as Administrator` + + `*Initial Install` + ```Powershell + Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force + npm install -g npm-windows-upgrade + ``` + `*Upgrade` + ```Powershell + npm-windows-upgrade + ``` + + Note: Do not run `npm i -g npm`. Instead use `npm-windows-upgrade` to update npm going forward. + Also if you run the NodeJS installer, it will replace the node version. + + 2. Install [windows-build-tools for npm](https://www.npmjs.com/package/windows-build-tools) + `*This will also install python 2.7` + ```Powershell + npm install --global --production windows-build-tools + ``` + + +2. Install [7zip](https://www.7-zip.org/download.html). + + *Add 7zip to your path so `7z` can be called from the console + 1. Right click `This PC` and Select `Properties` + 2. Go to the `Advanced` Tab and click on `Enviromental Varibles` + 3. Select `Path` under `System Varibles` and click `Edit` + 4. Click `New` and paste the path to 7zip + 5. Close your console window and reopen. You can type `7z` to make sure it's working. + +3. Install [Git](https://git-scm.com/downloads) and optionally [TortoiseGit](https://tortoisegit.org/download/). + +4. Clone ENiGMA½ - browse to the directory you want and run + ```Powershell + git clone "https://github.com/NuSkooler/enigma-bbs.git" + ``` + Optionally use the TortoiseGit by right clicking the directory and selecting `Git Clone`. + + +5. Install ENiGMA½. + 1. In the enigma directory run + ```Powershell + npm install + ``` + 2. Generate your initial configuration: `Follow the prompts!` + ```Powershell + node .\oputil.js config new + ``` + 3. Edit your configuration files in `enigma-bbs\config` with [Notepad++](https://notepad-plus-plus.org/download/) or [Visual Studio Code](https://code.visualstudio.com/Download) + 4. Run ENiGMA½ + ```Powershell + node .\main.js + ``` + + +6. Look at [Production Installation](/installation/production) for maintaining ENiGMA½ when you are ready to go live. diff --git a/docs/messageareas/message-networks.md b/docs/messageareas/message-networks.md index bb98b0b7..a334ab94 100644 --- a/docs/messageareas/message-networks.md +++ b/docs/messageareas/message-networks.md @@ -35,7 +35,7 @@ Each entry's key name is referenced elsewhere in `config.hjson` for FTN oriented ## Message Areas The `areas` section describes a mapping of local **area tags** configured in your `messageConferences` (see -[Configuring a Message Area][/messageareas/configuring-a-message-area]) to a message network (described +[Configuring a Message Area](configuring-a-message-area.md)) to a message network (described above), a FTN specific area tag, and remote uplink address(s). This section can be thought of similar to the *AREAS.BBS* file used by other BBS packages. @@ -64,4 +64,4 @@ When ENiGMA½ imports messages, they will be placed in the local area that match } } } -``` \ No newline at end of file +``` diff --git a/docs/servers/ssh.md b/docs/servers/ssh.md index ca0b62ec..676afb51 100644 --- a/docs/servers/ssh.md +++ b/docs/servers/ssh.md @@ -16,10 +16,11 @@ You then need to enable the SSH server in your `config.hjson`: { loginServers: { ssh: { - enabled: true + enabled: true port: 8889 - privateKeyPass: YOUR_PK_PASS - } + privateKeyPem: /path/to/ssh_private_key.pem + privateKeyPass: YOUR_PK_PASS + } } } ``` diff --git a/docs/servers/telnet.md b/docs/servers/telnet.md index 155e6726..47aba591 100644 --- a/docs/servers/telnet.md +++ b/docs/servers/telnet.md @@ -1,4 +1,25 @@ --- layout: page title: Telnet Server ---- \ No newline at end of file +--- + +Telnet is enabled by default on port `8888` in `config.hjson`: + +```hjson +{ + loginServers: { + telnet: { + enabled: true + port: 8888 + } + } +} +``` + +### Telnet Server Options + +| Option | Description +|---------------------|--------------------------------------------------------------------------------------| +| `firstMenu` | First menu a telnet connected user is presented with +| `enabled` | Enable/disable telnet server +| `port` | Configure a custom port for the telnet server diff --git a/docs/servers/websocket.md b/docs/servers/websocket.md index be5eb739..18271d6f 100644 --- a/docs/servers/websocket.md +++ b/docs/servers/websocket.md @@ -21,7 +21,7 @@ There are a few things out of scope of this document: ## Setup -1. Enable the websocket in ENiGMA, by adding `webSocket` configuration to the `loginServers` block (create it if you +1. Enable the websocket in ENiGMA, by adding `webSocket` configuration to the `loginServers` block in `config.hjson` (create it if you don't already have it defined). ````hjson