Update README.md

merge-requests/208/head
Tom 4 years ago committed by GitHub
parent 803ad442d9
commit c0f152420a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 64
      README.md

@ -1,7 +1,5 @@
# jschan
Anonymous imageboard. A type of BBS or forum software.
Still in development, so beware if attempting to run a public instance.
Anonymous imageboard. A type of BBS or forum software.
Demo site running at https://fatpeople.lol
## Goals
@ -27,6 +25,7 @@ Demo site running at https://fatpeople.lol
## Setup
Please note:
##### 🚨 The software is still in development. If running in production, you may have to deal with breaking updates e.g. database schema changes. Automated systems to handle this will be made in future when things are more set in stone. 🚨
- 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)
@ -40,44 +39,63 @@ Please note:
- Graphicsmagick+Imagemagick (thumbnailing images, generating captchas)
- Ffmpeg (thumbnailing videos)
Install some dependencies. You may need to add some sources.
1. Setup server with some basics
- new user to run the nodejs backend
- ssh root login disabled, key login only, etc
- iptables only open http, https and ssh ports on INPUT
2. Install dependencies. You may need to add sources depending on your distro.
```bash
$ sudo apt-get update
$ sudo apt-get install nginx ffmpeg imagemagick graphicsmagick
```
[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.
3. [Install MongoDB](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/#install-mongodb-community-edition-on-debian) and [configure authentication](https://medium.com/mongoaudit/how-to-enable-authentication-on-mongodb-b9e8a924efac)
[Install and configure](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-debian-9) Redis.
4. [Install and configure](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-debian-9) Redis
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
4. Install nodejs
Recommended to use [node version manager](https://github.com/nvm-sh/nvm) (nvm).
Install nvm then run the following commands to get the LTS version of nodejs.
```bash
$ nvm install --lts
$ nvm use --lts
```
You can also repeat this process in future to update node versions as they are generally backwards compatible.
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:
4. Configure nginx
- Use the example config included in `configs/nginx.example` and put it in `/etc/nginx/sites-available/YOURDOMAIN.COM`, then symlink it to `/etc/nginx/sites-enabled/YOURDOMAIN.com`.
- Make sure the sites enabled folder is included by `/etc/nginx/nginx.conf`
- Get https certificate from [letsencrypt](https://wiki.debian.org/LetsEncrypt).
- For geo flags, [follow this guide](http://archive.is/2SMOb) to setup the [legacy GeoIP db](https://www.miyuru.lk/geoiplegacy) and add these directives to the http block in `/etc/nginx/nginx.conf`:
```
#geoip settings
geoip_country /usr/share/GeoIP/GeoIP.dat;
geoip_city /usr/share/GeoIP/GeoIPCity.dat;
```
Now clone the repo, browse to the folder and set some things up.
5. Clone ths 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, some comments included
$ npm install #install dependencies
$ npm run-script setup #install global modules pm2 and gulp, then runs gulp tasks
$ gulp reset #clear the database, creates account username:admin, password:changeme (dont run this again unless you want to completely irreversibly wipe everything)
$ npm run-script start #start all the backend processes
# copy example config and edit, some comments included
$ cp configs/main.js.example configs/main.js && editor configs/main.js
# install dependencies and run build tasks
$ npm install
$ npm run-script setup
# setup the database and folder structure, creates admin account admin:changeme
# dont run this again unless you want to completely irreversibly wipe everything
$ gulp reset
# start all the backend processes
$ npm run-script start
# some commands you may need to use in future/find helpful
# pm2 is a process manager for nodejs, gulp is used for various jobs like minifying and compiling scripts.
$ pm2 list #list running pm2 processes
$ pm2 logs #see logs
$ pm2 reload all #reload everything, or use "chan", "build-worker" or "schedules" to only reload specific parts if you know what you are doing
$ pm2 reload all #reload all backend processes
$ gulp --tasks #list available gulp tasks
$ gulp #run default gulp task, usually used for updates, can run specific tasks if you know what you are doing
$ gulp #run default gulp task
```

Loading…
Cancel
Save