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 7868e1c5d3 use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
configs use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
controllers early account management on global manage page. maybe list isnt necessary, could be changed to a simple input box to avoid getting too big, or having to make separate page/paginated 5 years ago
db early account management on global manage page. maybe list isnt necessary, could be changed to a simple input box to avoid getting too big, or having to make separate page/paginated 5 years ago
gulp/res early account management on global manage page. maybe list isnt necessary, could be changed to a simple input box to avoid getting too big, or having to make separate page/paginated 5 years ago
helpers use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
models use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
views early account management on global manage page. maybe list isnt necessary, could be changed to a simple input box to avoid getting too big, or having to make separate page/paginated 5 years ago
.gitignore update gulpfile to support scripts eventually 5 years ago
LICENSE Create LICENSE 5 years ago
README.md use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
ecosystem.config.js use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
gulpfile.js add board configuration for allowed file types 5 years ago
mutex.js Add warning listener for lmx 5 years ago
package-lock.json use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
package.json use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
queue.js use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
schedules.js use a queue with workers for generating static pages in background that arent immediately needed 5 years ago
server.js locks for writing html files, also might need to add during dedupe to prevent file incs changing while pruning 5 years ago
worker.js use a queue with workers for generating static pages in background that arent immediately needed 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)
  • Take advantage of modern html5/css features for some usability perks

Features

  • Classic post styling e.g. greentext, spoilers, quotes
  • Multiple files per post
  • Optional user created boards ala infinity
  • Captcha and basic antispam
  • Multi-select posts for reports, bans, post deletions, etc
  • Public board modlogs
  • Homepage boards sorted by active users, pph, total posts descending
  • Management page with reports, bans, banners, board settings and news
  • Customise homepage, faq, rules or add custom pages

Todo

  • Post moving/thread merging
  • Flags. Geographic and custom uploaded
  • IP range bans
  • IP notes/records/ban history of some sort
  • JSON api
  • Configuration editor
  • Overboard/multiboard/meta boards
  • Boards 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 (most likely could work elsewhere, but why?)
  • Node.js (to run the app)
  • MongoDB (database, duh)
  • Redis (queues, and eventually for caching and mutex/locking)
  • Nginx (handle https, serve static content and html)
  • 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