Real-time imageboard in node.js and redis
JavaScript CSS HTML C++ C Lua Other
Latest commit af83874 Feb 7, 2017 @lalcmellkmal Fix typo
Permalink
Failed to load latest commit information.
admin GitHub OAuth login Jan 19, 2017
archive Fix dumper crashing on dice rolls Jan 30, 2017
client Fix typo Feb 7, 2017
curfew Use Date.now() (on node side) Apr 14, 2014
docs Added sample init script Jul 28, 2014
imager Auto-rotate JPEGs based on EXIF Feb 3, 2017
lib Remove es5-shim.map Nov 18, 2014
lua Use active posts from Lua Feb 2, 2017
report Fetch posts in chunks (max 20 per chunk) Feb 2, 2017
server Ping on window focus Feb 6, 2017
time Render post dates with client-requested timezone Jan 26, 2014
tmpl Remove /a/ thread lookup trampoline Jan 26, 2017
tripcode Update dependencies; node 7.3 Jan 2, 2017
upkeep Poll new r/a/dio API May 3, 2014
voice Menu handlers use models Feb 10, 2014
www Tweet embedding Jan 29, 2017
.gitignore Remove gitignore that never was Sep 1, 2013
LICENSE Update copyright year May 19, 2013
Makefile New script-building pipeline Sep 1, 2013
README.md Auto-rotate JPEGs based on EXIF Feb 3, 2017
TODO Warn before navigating away from unfinished posts May 8, 2013
builder.js New script-building pipeline Sep 1, 2013
common.js Ping on window focus Feb 6, 2017
config.js.example GitHub OAuth login Jan 19, 2017
db.js Add missing redirect lookup Feb 3, 2017
deps.js Work-in-progress Lua-based thread reading Jan 31, 2017
etc.js Copy image into place instead of moving May 2, 2014
hooks.js Add synchronous hooks May 11, 2013
hot.js.example Tweet embedding Jan 29, 2017
make_client.js Report feature has its own config Nov 26, 2013
package.json Use nodemailer-smtp-transport for reports Jan 21, 2017
pipeline.js File mode 0644 on pipeline products Sep 1, 2013
tail.js Use setImmediate in tail Aug 17, 2013

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
  • 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.)
  • Run node server/server.js for just the server
  • config.DAEMON support is broken for now
  • 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

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