# lainchan: a vichan fork for running a public imageboard

> lainchan is a PHP imageboard package forked from vichan, installed through a browser installer on MySQL or MariaDB and extended with extra features, a 4chan compatible JSON API and a separate oekaki dependency. It suits operators who already know the vichan and Tinyboard lineage and want a board with more of vichan's later work in it.

**lainchan/lainchan** — The version of vichan running on lainchan.org

- Repository: https://github.com/lainchan/lainchan
- Stars: 605 · Forks: 101
- Language: JavaScript
- License: NOASSERTION
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/lainchan-lainchan

## A fork of vichan, which is itself a fork of Tinyboard

lainchan is the software behind lainchan.org, and it is a fork of vichan. The README describes vichan as an imageboard package, and lainchan as actively building on it with a set of added features and improvements. The lineage continues further back: the README states that vichan, and by extension lainchan, is based on a Tinyboard, and points readers to the Tinyboard documentation because the two engines have much in common.

That lineage explains most of what a reader needs to know about the project. An imageboard is a threaded, anonymous posting board with boards, threads, replies and file uploads, and the Tinyboard and vichan code bases are a well known starting point for running one. lainchan is not a new design; it is a maintained variation of an existing package.

The practical consequence is that the questions worth asking are about the differences and about the operational state, not about the architecture. If you have run vichan or Tinyboard, the configuration model, the installer, the moderator panel and the API shape will all be familiar. What lainchan changes is a layer of features on top of that base.

The project is written in PHP, its default branch is main, and it has no GitHub releases, so there is no tagged artifact to download and no published version history to read. The last push to the repository was on 2026-08-09, which is the only dated signal about how much work is landing on the code.

## The stack the software expects: PHP, a database and an image pipeline

The requirements section lists what a host must provide.

PHP is the language, and the README is explicit about versions: PHP 5.4 is required, with PHP 7.0 explicitly supported, and the authors still try to keep compatibility with PHP 5.3 as much as possible. On top of that you need a MySQL or MariaDB server, the mbstring extension, the GD image extension, and PDO. The recommended list adds a database server of version 5.5.3 or newer, ImageMagick on the command line with GraphicsMagick preferred, and a PHP opcode cache such as APC, XCache or Memcached.

Two details in that list matter in practice. ImageMagick is what does the image work beyond what GD can do, so thumbnails and similar operations depend on a command line binary being present. And the opcode cache is listed as recommended rather than required, which tells you the software works without it but that a busy board is faster with one.

The README also states that the project tries to be compatible with all major web servers and operating systems, and notes that lainchan does not include an Apache .htaccess file and does not need one. That is a deliberate choice to avoid tying the deployment to one server configuration.

The version numbers deserve a note. A floor of PHP 5.4 and a ceiling of PHP 7.0 in the requirements means the supported range predates the current major PHP releases, so the code is likely to need attention on a modern host, and the README does not mention PHP 8 anywhere.

## Installing through a browser installer, and the admin password you must change

The installation is short enough to read twice, and the order matters.

The first step is to get the files onto the web server, either by downloading and extracting the archive or by cloning the development version.

```bash
        git clone git://github.com/lainchan/lainchan.git
```

The second step is to open install.php in a browser and follow the prompts. The third step is to log in to mod.php, the moderator interface, with the default credentials.

The README spells out that default combination as admin and password, and immediately follows it with the instruction to change the administrator account password. That instruction is the one part of the install you should treat as mandatory rather than advisory, because install.php is a public URL on a public board and the default pair is in the public documentation.

The repository layout explains the rest of the structure. There is an inc/ directory holding the configuration and library code, install.sql for the schema, a templates/ directory for the board templates, stylesheets/ for themes, static/ for assets, js/ for client side code, walls/ for the imageboards, and a tools/ directory for the command line utilities. There is also a composer.json and composer.lock at the top level, so PHP dependencies are managed with Composer.

The README points to a Configuration Basics page for the settings, and for a deeper reference it suggests the comments in inc/config.php, which is where a person configuring a board is expected to look.

## Upgrading in place from Tinyboard or vichan without losing your boards

The upgrade section is the part of the README most useful to an existing operator, because it addresses the fear that a fork will break an established board.

The procedure has two branches. If the board was installed with git, you update the files with git pull. If it was installed another way, you back up inc/instance-config.php, replace all the files in place without removing the boards, put the instance configuration file back, and run install.php again.

The instruction not to remove boards is the important one. The instance configuration file holds the site-specific settings, and the boards themselves live in the database, so the sequence is designed to keep the data while the code underneath is swapped. Rerunning install.php after the replacement applies the schema changes the new version expects, which is the same mechanism the first install uses.

The README also points at a separate migration path for people coming from a Kusaba X board, using the Tinyboard-Migration tool in the vichan organisation. That is a one way move rather than an in place upgrade, and it points at another project entirely.

The compatibility claim in the upgrade section is broad, covering upgrades from any version of Tinyboard or vichan. The README does not describe version specific migration notes or a rollback procedure, so an operator upgrading a live board has no documented way back once install.php has run.

## The parts that live outside the core: oekaki, webm and the CLI tools

Three subsystems are deliberately kept at arm's length, and each has its own setup step.

Oekaki, the browser drawing feature, uses wPaint, which is not bundled. After pulling the repository you have to fetch it with git's submodule feature.

```bash
git submodule init
git submodule update
```

The .gitmodules file at the top level of the repository is the wiring for that. To enable oekaki at all, you add the scripts listed in js/wpaint.js to your instance-config.php, so the feature costs both a submodule checkout and a configuration edit.

WebM support is handled by a README of its own inside the code, at inc/lib/webm/README.md, and the top level README simply refers the reader there for the details of enabling it.

The command line tools are the third subsystem. They are based on Tinyboard-Tools, they live in a tools/ directory, and they have to be launched from a Unix shell account such as SSH. The README is clear about their audience, saying they are aimed at power users and that you do not need them for the board to function, and equally clear about the constraint: you will not be able to run them from shared hosting accounts, which it equates with all free web servers.

So a paid or self managed VPS with shell access is effectively a requirement for the full feature set, even though the board itself runs on ordinary shared hosting.

## A 4chan compatible JSON API and where to read about it

lainchan provides, by default, a 4chan compatible JSON API, the same way vichan does. The README defers the documentation to the vichan-API repository, which means the API contract is defined upstream and lainchan inherits it rather than defining its own endpoints.

For a board operator this is the feature that decides whether third party clients work. A 4chan style API is what mobile apps, archiver scripts and moderation bots expect, so a compatible implementation means existing clients have a chance of connecting without being rewritten. The counterpoint is that the documentation is not in this repository, so an operator debugging an API response means reading documentation in two projects, and the compatibility guarantee is only as good as the upstream specification.

The API is enabled by default according to the README, which is a different choice from shipping it switched off. That is convenient for a public board that wants client support, and it is a consideration for an operator who has not thought about the API surface yet, because a default-on interface is one more thing exposed.

The wider support story is old-fashioned and worth noting. The README directs users to an IRC channel for help, and the two channels it names are an irc.lainchan.org server on port 6697 with channel #thecage for development questions, and irc.freenode.net with channel #lainchan for support. Freenode is long gone as a service, and neither channel is a durable support arrangement, so a board owner looking for help should not expect much response there.

## Licence, maintenance state and the cases where lainchan is the wrong choice

Two facts about the repository deserve a decision rather than a shrug.

The first is the licence. GitHub cannot classify it, and the repository carries both a LICENSE.md and a LICENSE.Tinyboard.md, which tells you that the licence terms inherited from the Tinyboard base are part of the picture. This is not legal advice, but it does mean the terms are in the repository files rather than in a standard permissive licence you can recognise in a glance. Anyone planning to run a public board, or to modify and redistribute the code, has to read both files.

The second is the maintenance state. The last push was on 2026-08-09, and there are no GitHub releases, so there is no version to pin a deployment to and no changelog to consult in the repository. The README's own description of vichan as a package that is actively being built on is a description of the upstream project, not a promise about lainchan.

Against that, lainchan is a poor fit in several concrete situations. A host running a current PHP release is outside the stated range, and the README does not mention PHP 8. A team that needs an actively versioned product with a support contract, or an imageboard with a modern stack and long term security fixes, will find the fork relationship a liability rather than an asset. And an operator who wants to write a plugin or a new feature will be working against a code base whose upstream, vichan, is itself a fork, so a change here may not merge upward.

Where lainchan does make sense is narrower and still real: an operator who knows the vichan and Tinyboard configuration model, wants a board with vichan's later work and a few extra features, has shell access for the tools and the wPaint submodule, and is prepared to own the PHP and database versions that the software expects.

## Conclusion

lainchan makes sense for an operator who wants a vichan derived imageboard, understands the Tinyboard configuration model, and has a Unix shell for the CLI tooling in the tools/ directory. It does not make sense for a deployment on a modern PHP stack, since the stated requirements stop at PHP 7.0 with a stated floor of 5.4, and it does not fit a shared host where you cannot run the command line tools or a git submodule checkout. Verify first that the licence in LICENSE.md and LICENSE.Tinyboard.md covers your use, since the project uses a custom licence that GitHub cannot classify, and that your PHP and database versions still match what install.php expects before you point a domain at it.

## FAQ

### What is lainchan and what is it forked from?

lainchan is a PHP imageboard package that is a fork of vichan, and vichan is in turn based on a Tinyboard. The README describes lainchan as actively building on vichan with added features and improvements.

### What are the server requirements for running lainchan?

The README lists PHP 5.4 or newer with PHP 7.0 explicitly supported, a MySQL or MariaDB server, the mbstring, GD and PDO extensions, and recommends a database of version 5.5.3 or newer, ImageMagick with GraphicsMagick preferred, and an opcode cache such as APC, XCache or Memcached.

### How do I install lainchan and what are the default credentials?

Clone the repository with `git clone git://github.com/lainchan/lainchan.git`, open install.php in the browser and follow the prompts, then log in to mod.php with the default username and password combination, admin and password. The README instructs you to change the administrator password immediately afterwards.

### How do I upgrade an existing Tinyboard or vichan install to lainchan?

Run `git pull` if the board was installed with git, or back up inc/instance-config.php, replace the files in place without removing the boards, restore the instance configuration file and run install.php again. A Kusaba X board is migrated with the separate Tinyboard-Migration tool.

### Does lainchan support drawing and WebM video?

Oekaki uses wPaint, which is not bundled, so you need `git submodule init` and `git submodule update` and then add the scripts from js/wpaint.js to your instance-config.php. WebM support is documented in inc/lib/webm/README.md.

### Does lainchan have an API?

Yes, it provides a 4chan compatible JSON API by default, the same as vichan, with the documentation kept in the vichan-API repository.

## Sources

- [Issues](https://github.com/lainchan/lainchan/issues)
- [lainchan/lainchan on GitHub](https://github.com/lainchan/lainchan)
- [README](https://github.com/lainchan/lainchan/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/lainchan-lainchan
