Ikibooru (demo)

Inspired by boorus like that of Danbooru, Ikibooru aims to be more generic in that you are able to host files of any kind. Photographs, music, drawings, videos, video game maps, and porn I guess.

Ikibooru features a complete installer for Linux systems, but should also support most Unix-like systems.

Planned features in order of decreasing priority:

  1. Tag exclusions
  2. OAuth authentication
  3. Programmable file scanning
  4. Per-user object size quota
  5. Object creation rate limit
  6. Maybe XMPP/Jabber authentication

Installation

Required packages: ImageMagick, MySQL, Lua 5.3 (with the LuaRocks packages lfs, lua-zlib, luaossl, luaposix, luasocket, luasql-mysql, mimetypes). Additionally, Ikibooru must be run behind a reverse proxy, preferably one that supports accelerated static file downloads, e.g. nginx or Apache.

If you use Linux, run install.lua as root/sudo and answer its self-explanatory questions. The installer will create a user called ikibooru, reserve the home directory /home/ikibooru and, if your system uses systemd, the installer may optionally create a service called ikibooru.

If you do not use Linux, your only option at the moment is to replay the steps of the installer, translating it to your system as necessary.

After installation, launch the service (either via systemd or by running main.lua as the service user).

Upon launch, login as the administrator and enter the Admin Settings page. From within, you may design your tag categories, of which Ikibooru officially supports 32. You may also create new tags and assign them to categories.

Logins

Ikibooru uses passwordless e-mail authentication, for which it will use the operating system's native sendmail command. Make sure an implementation is installed and correctly configured, otherwise e-mails will fail to send and logging in will be impossible.

Ikibooru uses client-side logins with an authentication key that is regenerated on each launch. This means every restart of Ikibooru will log everyone out.

Accelerated static file downloads (ASFD)

If the server is to host relatively large files, it would be best to offload the I/O. How this works is that Ikibooru responds to requests with an additional header containing a filename. The response is caught by the reverse proxy, and its data is overwritten with the file's contents. The details are not standardized, so it depends on the software stack of your choice.

For example, nginx expects a filename that is accessible as an HTTP path. Because the real object data should be inaccessible from outside, the nginx configuration should employ an internal block as such:

location /private/ {
	internal;
	alias /home/ikibooru/ikibooru/; # Replace with your path to the Ikibooru server.
}

With this configuration, the HTTP header field may be set to X-Accel-Redirect, and the path prefix to /private.

Other reverse proxies may expect a real filepath, where you might directly have /home/ikibooru/ikibooru.