Real-time imageboard in node.js and redis http://doushio.com/moe/
Lal'C Mellk Mal 1e0f190341 Improve first-time captcha loader 7 months ago
admin Show country in mod addrs 1 year ago
archive Pass connection token "ctoken" to SockJS 1 year ago
client Trim ?s=19 junk from tweet refs 7 months ago
curfew Use Date.now() (on node side) 5 years ago
docs nofollow noopener noreferrer 1 year ago
imager Check imager message origin 1 year ago
lib Remove yepnope 2 years ago
lua Use active posts from Lua 2 years ago
report Improve first-time captcha loader 7 months ago
server reCAPTCHA 2 1 year ago
tmpl nofollow noopener noreferrer 1 year ago
tripcode Tripcode module building tweaks 2 years ago
upkeep Hack-fix upkeep script 2 years ago
www Hackily fade inserted images in 1 year ago
.gitignore Remove package-lock.json 1 year ago
.ignore Don't grep minified JS 1 year ago
LICENSE 2017 2 years ago
Makefile New script-building pipeline 5 years ago
README.md Explicit CloudFlare support; ban by country 1 year ago
TODO Warn before navigating away from unfinished posts 6 years ago
builder.js New script-building pipeline 5 years ago
common.js Allow punctuation near *italics*. 1 year ago
config.js.example Delete voice 1 year ago
db.js Client hot.readOnly setting set by server 1 year ago
deps.js Remove ETags 1 year ago
etc.js json_paranoid 1 year ago
hooks.js Add synchronous hooks 6 years ago
hot.js.example Hackily fade inserted images in 1 year ago
make_client.js make_client uses Uglify ES 1 year ago
package.json Upgrade some deps 7 months ago
pipeline.js File mode 0644 on pipeline products 5 years ago
tail.js Use setImmediate in tail 6 years ago

README.md

Real-time imageboard. MIT licensed.

Setup:

  • Install dependencies listed below
  • Sign up for reCAPTCHA
  • Create a GitHub Application (callback URL = site URL + /login)
  • Copy config.js.example to config.js and configure
  • Copy hot.js.example to hot.js and configure
  • Copy imager/config.js.example to imager/config.js and configure
  • Copy report/config.js.example to report/config.js and configure
  • You might need to run npm install -g node-gyp
  • Run npm install to install npm deps and compile a few helpers
  • Run node builder.js to run an auto-reloading development server

Production:

  • Have your webserver serve www/ (or wherever you’ve moved src, thumb, etc.)
    • Configure imager.config.MEDIA_URL appropriately
    • Then turn off SERVE_STATIC_FILES and SERVE_IMAGES
  • If you’re behind Cloudflare turn on CLOUDFLARE
    • Or if you’re behind any reverse proxy (nginx etc) turn on TRUST_X_FORWARDED_FOR
  • Run node server/server.js for just the server
  • You can update client code & hot.js on-the-fly with node server/kill.js
  • For nginx hosting/reverse proxying, refer to docs/nginx.conf.example
  • For a sample init script, refer to docs/doushio.initscript.example
  • config.DAEMON support is old and broken, PRs welcome

Dependencies:

  • ImageMagick
  • libpng
  • node.js + npm
  • redis
  • ffmpeg 2.2+ if supporting WebM
  • jhead and jpegtran optionally, for EXIF autorotation

Optional npm deps for various features:

  • daemon (broken currently)
  • icecast now-playing banners: node-expat
  • send (if you want to serve static files directly from the node.js process; useful in debug mode also)

Standalone upkeep scripts:

  • archive/daemon.js - moves old threads to the archive
  • upkeep/backup.js - uploads rdb to S3
  • upkeep/clean.js - deletes archived images
  • upkeep/radio.js - icecast2 server integration