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.

83 lines
3.5 KiB

5 years ago
# jschan
5 years ago
5 years ago
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
5 years ago
## Features
- [x] User created boards ala infinity
5 years ago
- [x] Captcha and basic antispam
- [x] Read-only JSON api
- [x] Public modlogs
- [x] Multi-select posts for moderation actions/reports
- [x] Post styling & quote linking
- [x] Backlinks shown without javascript
- [x] Multiple files per post
- [x] Websocket updates threads live
- [x] Webring support [lynxchan](https://gitlab.com/alogware/LynxChanAddon-Webring) [infinity](https://gitlab.com/Tenicu/infinityaddon-webring)
5 years ago
## Todo
5 years ago
- Check issues
- Improve moderation tools
- Improve frontend scripts
- Fork some mobile app and make it compatible with the API
5 years ago
## Setup
5 years ago
Please note:
- these instructions are not step-by-step or complete
- you should be able to read, be comfortable with a command line and have problem solving skills (aka search engine)
5 years ago
##### Requirements
5 years ago
- Linux (debian used in this example)
5 years ago
- 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)
5 years ago
- Certbot/letsencrypt (for https cert)
5 years ago
- Graphicsmagick+Imagemagick (thumbnailing images, generating captchas)
5 years ago
- Ffmpeg (thumbnailing videos)
Install some dependencies. You may need to add some sources.
```bash
$ sudo apt-get update
$ sudo apt-get install nginx ffmpeg imagemagick graphicsmagick
5 years ago
```
[Install](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/#install-mongodb-community-edition-on-debian) and [configure auth for mongodb](https://medium.com/mongoaudit/how-to-enable-authentication-on-mongodb-b9e8a924efac). This is to avoid out of date verisons in debian repos.
[Install and configure](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-debian-9) Redis.
5 years ago
Install nodejs. You can use [node version manager](https://github.com/nvm-sh/nvm) (nvm) to help with this.
Once you have nvm, install the LTS version of nodejs
5 years ago
```bash
$ nvm install --lts
```
5 years ago
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](https://wiki.debian.org/LetsEncrypt).
If you need support for Country flags, [follow this guide](http://archive.is/2SMOb) to set them up in nginx.
Then edit your `/etc/nginx/nginx.conf` and put these directives within the http block:
```
#geoip settings
geoip_country /usr/share/GeoIP/GeoIP.dat;
geoip_city /usr/share/GeoIP/GeoIPCity.dat;
```
5 years ago
Now clone the repo, browse to the folder and set some things up.
```bash
# in repo directory
$ cp configs/main.js.example configs/main.js && nano configs/main.js #copy example config and edit
$ npm install #install dependencies
$ npm run-script setup #install global modules pm2 and gulp, then runs gulp tasks
$ gulp reset #clear the database, create test board and account username:admin, password:changeme
$ npm run-script start #start all the backend processes
$ pm2 list #list running pm2 processes
5 years ago
$ pm2 logs #see logs
```