PHP HTML JavaScript CSS C Java Other
Pull request Compare This branch is 116 commits ahead, 2 commits behind ctrlcctrlv:master.
Latest commit 34ca33d Dec 10, 2016 @czaks czaks committed on GitHub Merge pull request #3 from Isseq/vichan-devel
Fix rebuild "Class 'Cache' not found" when the cache is disabled
Failed to load latest commit information.
8chan-captcha allow caps in captcha May 29, 2015
inc Fix rebuild "Class 'Cache' not found" when the cache is disabled Dec 10, 2016
js local-time.js: fixup Oct 9, 2016
static add a tor logo, downloaded from :^) Jan 4, 2016
stylesheets Better solution to prevent ID wrapping. Also no longer text-selectabl… Jun 9, 2016
templates debrand infinity index page Sep 25, 2016
tmp tesseract OCR support for spamfilters Jun 9, 2016
tools move patch_passwords.php to tools/ directory Aug 15, 2016
.gitignore add .well-known to gitignore Apr 19, 2016
.gitmodules Edit static pages commit Mar 29, 2015
404.php 8chan/smart-build: 404.php should global $config? php is weird Apr 6, 2015 move Tinyboard license Apr 18, 2014 I've made enough commits to this project to have a spot in the licens… Mar 28, 2015 update readme Jan 4, 2016
board-search.php #501 Resolved case sensitivity in the board search. May 27, 2015
board_image.php reimplement the banner system Apr 19, 2016
boards.php debrand infinity index page Sep 25, 2016
claim-old.php Replace ''s with ''s Jan 14, 2015
claim.php claim.php: file_write, not unix pipe (fix blank page issue) Apr 25, 2015
create.php ease the migration process for the previous security patch (by introd… May 5, 2016
dnsbls_bypass.php Fast forward Aug 20, 2015
expire.php Expire update: check openBoard, fix ghost board bug Mar 15, 2015
faq.php update faq, so it reflects more our usage Apr 21, 2016
install.sql install.sql nntp fix Oct 9, 2016
log.php Public action logs commit (log.php) Feb 26, 2015
mod.php ... May 5, 2016
player.php Suppress warnings that might leak information Aug 9, 2014
post.php nntpchan: work around php nonsense Aug 19, 2016
random.php SECURITY: Move indexed option to table...fixes unindexed boards appea… Oct 8, 2014
report.php Close ctrlcctrlv/infinity#481 Apr 25, 2015
search.php remove inane code Feb 26, 2015
settings.php Add some forgotten settings to settings.php Apr 4, 2015
smart_build.php (2/2) advanced build. implement a daemon that will build static pages. May 13, 2016
translation.php Translation instructions Mar 19, 2015


This is a continuation of deprecated infinity software, made fit for the service. If you want to start your own imageboard and you don't need user-board creation, use vichan.


infinity is a fork of vichan, with the difference that infinity is geared towards allowing users to create their own boards. A running instance is at (new! a user of the software wrote to me that they created a Polish version:

Most things (other than installation) that apply to upstream vichan also apply to infinity. See their readme for a detailed FAQ:

If you are not interested in letting your users make their own boards, install vichan instead of infinity.

Much like Arch Linux, infinity should be considered ``rolling release''. Unlike upstream vichan, we have no install.php. Database schema and templates are changed often and it is on you to read the Git log before updating!


Basic requirements: A computer running a Unix or Unix-like OS(infinity has been specifically tested with and is known to work under Ubuntu 14.x), Apache, MySQL, and PHP

  • Make sure Apache has read/write access to the directory infinity resides in.
  • install.php is not maintained. Don't use it.
  • As of February 22, 2015, you need the DirectIO module ( This is for compatibility with NFS.

Step 1. Create infinity's database from the included install.sql file. Enter mysql and create an empty database named 'infinity'. Then cd into the infinity base directory and run:

mysql -uroot -p infinity < install.sql
echo '+ <a href="">infinity</a> '`git rev-parse HEAD|head -c 10` > .installed

Step 2. /inc/secrets.php does not exist by default, but infinity needs it in order to function. To fix this, cd into /inc/ and run:

sudo cp secrets.example.php secrets.php

Now open secrets.php and edit the $config['db'] settings to point to the 'infinity' MySQL database you created in Step 1. 'user' and 'password' refer to your MySQL login credentials. It should look something like this when you're finished:

    $config['db']['server'] = 'localhost';
    $config['db']['database'] = 'infinity';
    $config['db']['prefix'] = '';
    $config['db']['user'] = 'root';
    $config['db']['password'] = 'password';
    $config['timezone'] = 'UTC';
    $config['cache']['enabled'] = 'apc';

Step 3.(Optional) By default, infinity will ignore any changes you make to the template files until you log into mod.php, go to Rebuild, and select Flush Cache. You may find this inconvenient. To make infinity automatically accept your changes to the template files, set $config['twig_cache'].

Step 4. Infinity can function in a very barebones fashion after the first two steps, but you should probably install these additional packages if you want to seriously run it and/or contribute to it. ffmpeg may fail to install under certain versions of Ubuntu. If it does, remove it from this script and install it via an alternate method. Make sure to run the below as root:

apt-get install graphicsmagick gifsicle php5-fpm mysql-client php5-mysql php5-cli php-pear php5-apcu php5-dev; add-apt-repository ppa:jon-severinsson/ffmpeg; add-apt-repository ppa:nginx/stable; apt-get update; apt-get install nginx ffmpeg; pear install Net_DNS2; pecl install "channel://"

Page Generation

A lot of the static pages (claim.html, boards.html, index.html) need to be regenerated every so often. You can do this with a crontab.

*/10 * * * * cd /srv/http; /usr/bin/php /srv/http/boards.php
*/5 * * * * cd /srv/http; /usr/bin/php /srv/http/claim.php
*/20 * * * * cd /srv/http; /usr/bin/php -r 'include "inc/functions.php"; rebuildThemes("bans");'

Also, main.js is empty by default. Run tools/rebuild.php to create it every time you update one of the JS files.

Have fun!