jschan - Anonymous imageboard software. Classic look, modern features and feel. Works without JavaScript and supports Tor, I2P, Lokinet, etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
fatchan 45e86ec260 auto thread updating. starts at 5 seconds, doubling up to 2 minutes, resets to 5 seconds on new post. also added new post event so other scripts can add appropriate handlers when new posts adde de.g. quotes, image expansion, etc 5 years ago
configs banner and file size maxes to configs, and allow whitespace in filenames 5 years ago
controllers banner and file size maxes to configs, and allow whitespace in filenames 5 years ago
db add column in ban table to show if a ban has been viewed 5 years ago
gulp/res auto thread updating. starts at 5 seconds, doubling up to 2 minutes, resets to 5 seconds on new post. also added new post event so other scripts can add appropriate handlers when new posts adde de.g. quotes, image expansion, etc 5 years ago
helpers change bans to not be a building action if there was no ban message 5 years ago
models add column in ban table to show if a ban has been viewed 5 years ago
schedules sort webring boards, skip empty or errored ones and change column width 5 years ago
views auto thread updating. starts at 5 seconds, doubling up to 2 minutes, resets to 5 seconds on new post. also added new post event so other scripts can add appropriate handlers when new posts adde de.g. quotes, image expansion, etc 5 years ago
.gitignore update gulpfile to support scripts eventually 5 years ago
LICENSE Create LICENSE 5 years ago
README.md implementing global limits for board settings and configurable defaults for board creation 5 years ago
ecosystem.config.js change globalmanage pages and add a recent posts view for all boards 5 years ago
gulpfile.js auto thread updating. starts at 5 seconds, doubling up to 2 minutes, resets to 5 seconds on new post. also added new post event so other scripts can add appropriate handlers when new posts adde de.g. quotes, image expansion, etc 5 years ago
package-lock.json fix exploit; no longer use extended body parser mode and remove unneeded array prefix from array body fields, since we use different lib to parse body now. also upgrade express and dont allow body for modlog actions to be entered into modlog, replace with non user controlled text 5 years ago
package.json fix exploit; no longer use extended body parser mode and remove unneeded array prefix from array body fields, since we use different lib to parse body now. also upgrade express and dont allow body for modlog actions to be entered into modlog, replace with non user controlled text 5 years ago
queue.js more ugly changes to how stats and homepage updates work 5 years ago
redis.js small typographical and minor changes 5 years ago
redlock.js no more lmx. since we have redis, use it for redlock and connect-redis for sessions instead of mongo 5 years ago
schedules.js rename build 5 years ago
server.js fix exploit; no longer use extended body parser mode and remove unneeded array prefix from array body fields, since we use different lib to parse body now. also upgrade express and dont allow body for modlog actions to be entered into modlog, replace with non user controlled text 5 years ago
worker.js rename build 5 years ago

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
  • Works on TOR with javascript disabled (maybe the name is a bit ironic)
  • Leverage nginx to serve static files and handle GeoIP lookups

Features

  • Post styling (markdown-esque)
  • Quote linking and replies
  • Multiple files per post
  • User created boards ala infinity
  • Captcha and basic antispam
  • Read-only JSON api
  • Public modlogs
  • Multi-select posts for moderation actions/reports
  • Fully functional for users with javascript disabled

Todo

  • Staff post editing/moving/thread merging
  • IP range bans + IP ban history
  • Configuration editor
  • Overboard/multiboard/meta boards
  • Boards list and search page
  • User created board custom pages
  • File URL uploads

Setup

Please note:

  • These are not step-by-step or complete instructions.
  • For debian.
Requirements
  • Linux
  • Node.js (to run the app)
  • MongoDB (database, duh)
  • Redis (sessions, queue, locks and caching)
  • Nginx (handle https, serve static content, GeoIP lookup)
  • Certbot/letsencrypt (for https cert)
  • Imagemagick (thumbnailing images)
  • 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

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. Delete the default nginx config, then modify the example config and put it in the correct folder. 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 i
$ npm i -g gulp pm2
$ gulp
$ npm run-script setup
$ npm run-script start #this will start the backend
$ pm2 list #list running apps
$ pm2 logs #see logs