Git Product home page Git Product logo

rhizomebbs's Introduction

rhizomebbs

rhizomebbs is the textboard engine made for the Spanish-speaking forum IchoriaBBS. Please note that this textboard engine is project-specific, and not project-agnostic or a general purpose engine. You may need to fork this software in case you want to use it for your own project.

Features

  • Multiboard support
  • Markup support
  • Images support
  • ASCII boards
  • Staff and admin tools
  • Mandatory 2FA for admins (via TOTPs)
  • Styles
  • Javascript cosmetics and utils
  • Oekaki support (powered by PaintBBS NEO)

Dependencies

You need to install the following software packages:

  • Git
  • NodeJS and the node package manager
  • pm2 (installed globally from npm)
  • (optional) nginx

The database is managed by a simple NodeJS SQLite3 library, and the migration will be executed automatically the first time you run the software, so you don't need to install any additional database packages or do any extra actions.

Installation

  1. Clone the repo: git clone https://github.com/nshebang/rhizomebbs
  2. Install the required libraries: npm i
  3. Copy config.template.json to config.json (VERY important)
  4. Edit the configuration file (config.json)
  5. IMPORTANT: change the default admin account (click for details)
  6. Add some boards:
"boards": {
    "anime": {
    "title": "Anime",
    "info": "Anime board",
    "banner": "anime.png",
    "fakeName": "Weeb",
    "aa": false
  },
}
  1. Generate a new secret key (required for jwt used in admin "sessions") by running openssl rand -hex 64 and copying the resulting string to the config file:
"secretKey": "VERY LONG STRING"

rhizomebbs provides a default secret key, but you shouldn't use it as it's only there for testing the software while in development.

  1. Customize or translate the software if needed.
  2. Run npm start to start the BBS server, and then navigate to localhost:port/admin to verify your admin username, password and TOTP. Once you are logged in as administrator, you can delete posts, ban users, use capcodes, etc

Creating administrator accounts

You can add administrator accounts by editing your config.json file (which is initially a clone of config.template.json). Just after copying the configuration template, the initial config.json file looks like this:

"staff": {
  "admin": {
    "password": "password",
    "secret": "<some random TOTP string>"
  }
},

Please note that rhizomebbs requires all administrator accounts to log in using both their standard password and 2FA one-time passwords (yes, two factor authentication is mandatory). You need to tell your staff members to download some sort of TOTP authenticator like like Aegis (free and open source) or Google Authenticator (proprietary). If a member is particularly paranoid about privacy and doesn't own a smartphone, they can use some desktop app like OTPClient (Linux) or just a standard password manager like KeePassXC (Linux, Windows and other OS).

Once your entire staff team (including you) has installed their respective TOTP applications, you need to follow these steps to add an administrator account:

  1. Add the admin username and password to the config.json file:
"staff": {
  "new admin username": {
    "password": "new password",
    "secret": don't add it yet, leave it blank for now
  }
},
  1. Run npm run genAdminSecret. This will produce an output like the following:
Secret: <some secret key>
OTP link: <OTP link for the new admin>
QR Code: <a huge base64 link to a QR code image>
  1. Add the string next to "Secret: " to your new user object in config.json:
"staff": {
  "new admin username": {
    "password": "new password",
    "secret": "<some secret key>"
  }
},
  1. Give your new user the OTP link and QR Code link (usually, the QR code is way more useful). They should scan the QR code using their 2FA app, and then use the one-time password it'll generate for them to log in to their account.

Running behind a reverse proxy

Example configuration file for /etc/nginx/sites-available/bbs:

server {
  listen 80;
  listen [::]:80;
	
  listen 443 ssl;
  listen [::]:443 ssl;
	
  server_name example.tld;
	
  ssl_certificate /etc/letsencrypt/live/example.tld/cert.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;

  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:BBS_PORT;
  }
}

License

This is copyleft software under the terms of the GNU AGPL v3. The images in /public/img/ belong to their respective authors and are not covered by the AGPL license.

rhizomebbs's People

Contributors

nshebang avatar

Stargazers

karris avatar Sardach avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.