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 89e8f4b977 fixes, make modal a mixin so compilefileclient works properly, and other small fixes 5 years ago
configs more secure headers and settings in nginx example config and remove some unnecessary inline css 5 years ago
controllers fixes, make modal a mixin so compilefileclient works properly, and other small fixes 5 years ago
db fix for locals on faster thread checking 5 years ago
gulp/res fixes, make modal a mixin so compilefileclient works properly, and other small fixes 5 years ago
helpers fixes, make modal a mixin so compilefileclient works properly, and other small fixes 5 years ago
models improve how errors shown when making a post, use modals and fix ban seen marking 5 years ago
schedules move schedules to their own folder with an index file 5 years ago
views fixes, make modal a mixin so compilefileclient works properly, and other small fixes 5 years ago
.gitignore update gulpfile to support scripts eventually 5 years ago
LICENSE Create LICENSE 5 years ago
README.md readme changes and small improvement to image expand script 5 years ago
ecosystem.config.js move schedules to their own folder with an index file 5 years ago
gulpfile.js fixes, make modal a mixin so compilefileclient works properly, and other small fixes 5 years ago
package-lock.json socket.io to make posting _actually_ live instead of polling the api. way mroe efficient 5 years ago
package.json socket.io to make posting _actually_ live instead of polling the api. way mroe efficient 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
server.js improve how errors shown when making a post, use modals and fix ban seen marking 5 years ago
socketio.js add sfw boards, update homepage and webring to support and show this 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, 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
  • Thread view posts added live through websocket

Todo

  • Finish moderation tools (post editing, 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
  • 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(-like)
Requirements
  • Linux
  • 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)
  • 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 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