Real-time imageboard in node.js and redis
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
Lal'C Mellk Mal cda3059869 "Only upload images" option 2週間前
admin Use more arrow functions 1ヶ月前
archive pipeline.js: use promises 2ヶ月前
client "Only upload images" option 2週間前
curfew Remove `hook_sync` and `trigger_sync` 2ヶ月前
docs nofollow noopener noreferrer 3年前
imager Async imager jobs 2週間前
lib Remove yepnope 3年前
lua Use active posts from Lua 3年前
report Nodemailer 6.4.10 3ヶ月前
server Fix tweet fetching 3週間前
tmpl Modernize tmpl JS 3週間前
tripcode Port tripcode to NAPI 3ヶ月前
upkeep Async upkeep/clean.js 1ヶ月前
www sockjs client 1.4.0; force ws or xhr-streaming 3ヶ月前
.gitignore Document spoiler images 1ヶ月前
.ignore Don't grep minified JS 3年前
LICENSE Update copyright year to 2020 1ヶ月前
Makefile New script-building pipeline 7年前 Document spoiler images 1ヶ月前
TODO Inline/remove remaining hooks 1ヶ月前
builder.js New script-building pipeline 7年前
common.js Use config prefix in client code 1ヶ月前
config.js.example sockjs client 1.4.0; force ws or xhr-streaming 3ヶ月前
db.js Async commit_image_alloc 1ヶ月前
deps.js Inline/remove remaining hooks 1ヶ月前
etc.js Provide async exec, execFile 2週間前
hot.js.example Hackily fade inserted images in 2年前
make_client.js Provide async exec, execFile 2週間前
package.json Bump node-fetch from 2.6.0 to 2.6.1 (#126) 3週間前
pipeline.js async make_client 1ヶ月前
tail.js Use setImmediate in tail 7年前

Real-time imageboard. MIT licensed.


  • 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
  • Clone assets and copy the kana spoiler image folder as ./www/kana/ (or create your own!).
  • Run npm install to install npm deps and compile a few helpers
  • Run node builder.js to run an auto-reloading development server


  • Have your webserver serve www/ (or wherever you’ve moved src, thumb, etc.)
    • Configure imager.config.MEDIA_URL appropriately
  • 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


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

Optional npm deps for various features:

  • daemon (broken currently)
  • 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