Skip to content
Oldschool anonymous imageboard with some modern touches. Multiple file uploads, user board creation and read-only API. Supports users without javascript.
JavaScript HTML CSS Shell
Branch: master
Clone or download
Latest commit 6f8805a Oct 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
configs some changes to make it at least _possible_ to run in dev without https Oct 11, 2019
controllers add an index file to page modls for ess verbose import Oct 17, 2019
db dates for last bump Oct 20, 2019
gulp/res max-content for code block width Oct 20, 2019
helpers improve post markdown to use chunks so that code blocks can be proces… Oct 20, 2019
models improve post markdown to use chunks so that code blocks can be proces… Oct 20, 2019
schedules add relative time into mstime and rename it to timeutils and improve … Oct 15, 2019
views remove useless semantics elements Oct 16, 2019
.gitignore bunch of changes to help with development (no nginx) and new installs Oct 12, 2019
LICENSE Create LICENSE Mar 29, 2019
README.md update readme Oct 18, 2019
backup.sh.example fix backup Oct 8, 2019
ecosystem.config.js typo Oct 11, 2019
gulpfile.js simplify sorting and index better Oct 14, 2019
package-lock.json update deps Oct 8, 2019
package.json some changes to make it at least _possible_ to run in dev without https Oct 11, 2019
queue.js rename those Oct 10, 2019
redis.js add other util to redis wrapper using scan to delete keys by a patter… Oct 10, 2019
redlock.js no more lmx. since we have redis, use it for redlock and connect-redi… Aug 31, 2019
server.js captcha fixes and serve jsons with nodejs in dev mode Oct 12, 2019
socketio.js add sfw boards, update homepage and webring to support and show this Sep 23, 2019
worker.js rename those Oct 10, 2019

README.md

jschan

Anonymous imageboard. A type of BBS or forum software. Still in development, so beware if attempting to run a public instance. Demo site running at https://fatpeople.lol

Goals

  • Oldschool imageboard look, with some modern touches
  • Support users that have javascript disabled (TOR users, or the security conscious)
  • Leverage nginx to serve static files, do GeoIP lookups and various other things

Features

  • User created boards ala infinity
  • Captcha and basic antispam
  • Read-only JSON api
  • Public modlogs
  • Multi-select posts for moderation actions/reports
  • Post styling & quote linking
  • Backlinks shown without javascript
  • Multiple files per post
  • Websocket updates threads live
  • Webring support lynxchan infinity

Todo

  • Finish moderation tools (post editing, inter and intra board post moving/thread merging, file hash bans, range bans, ban history)
  • Configuration editor on the site without touching config files
  • Global settings page for filters, etc
  • Overboard/multiboard/meta boards
  • User created board custom pages
  • File URL uploads

Setup

Please note these instructions are:

  • Are not step-by-step or complete
  • Assume you can read, are comfortable with a command line and have basic problem solving skills (aka google)
Requirements
  • Linux (debian used in this example)
  • Node.js (to run the app)
  • MongoDB (database, duh)
  • Redis (sessions, build task queue, locks, caching, websocket data)
  • Nginx (handle https, serve static content, GeoIP lookup)
  • Certbot/letsencrypt (for https cert)
  • Graphicsmagick+Imagemagick (thumbnailing images, generating captchas)
  • Ffmpeg (thumbnailing videos)
  • Bcrypt (account password hashes)

Install some dependencies. You may need to add some sources.

$ sudo apt-get update
$ sudo apt-get install bcrypt nginx ffmpeg imagemagick graphicsmagick

Install and configure auth for mongodb. This is to avoid out of date verisons in debian repos.

Install and configure Redis.

Install nodejs. You can use node version manager (nvm) to help with this. Once you have nvm, install the LTS version of nodejs (currently 10.x).

$ nvm install --lts

Configure nginx. Modify the example config included in configs/nginx.example and put it in /etc/nginx/sites-available, then symlink it to /etc/nginx/sites-enabled. Make sure the sites enabled folder is included by the main nginx.conf Next, get https with a certificate generated from letsencrypt.

Now clone the repo, browse to the folder and set some things up.

# in repo directory
$ nano configs/main.json #edit config with appropriate data
$ npm run-script setup #install dependencies, pm2, gulp and run gulp tasks
$ npm run-script start #start all the backend processes
$ pm2 list #list running pm2 processes
$ pm2 logs #see logs
You can’t perform that action at this time.