Skip to content
v8.4 · est. 2003
01/ thread · migration · 2025-04-08 14:22 UTC

posted by: kuro_admin · admin · 14y on this board

Migrate from vBulletin, phpBB, XenForo, MyBB, or Discourse — without losing a single thread.

One click. Under 17 minutes. Threads, PMs, and attachments come with you.

  • 17 min avg. end-to-end (vBulletin → IchigoBBS, 240k posts)
  • 5 sources supported natively, no third-party plugins
  • 1-click rollback if your dry-run looks off
02/  source platform matrix

Pick the board you're leaving. We have a one-click import for it.

Five legacy and centralized platforms ship with first-party importers in IchigoBBS 8.4. Each entry below lists the supported schema and the two or three caveats every admin hits.

01

vBulletin

3.x · 4.x · 5.x
threads
yes · ids remapped
users
yes · passwords re-hashed
PMs
yes · folder structure preserved
attachments
yes · SHA-1 verified
custom BBCode
mapped via vbgateway

caveat: vB 5.x CMS articles live in a separate table; import them with --include-cms.

import from vBulletin →
02

phpBB

3.0 · 3.1 · 3.2 · 3.3
threads
yes · poll state carried
users
yes · phpBB3 phpass re-hashed
PMs
yes
attachments
yes
custom BBCode
auto-translated to ichigo-flavor

caveat: phpBB extensions (e.g. Thanks mod) are not re-installed; their data maps into a custom field if present.

import from phpBB →
03

XenForo

1.x · 2.x
threads
yes · reactions → rep
users
yes · auth preserved
PMs
yes · conversation threads nested
attachments
yes
add-ons
most warnings carried as plain text

caveat: XenForo 2.x add-ons (e.g. [bd] Attachment) may need their output re-rendered post-import.

import from XenForo →
04

MyBB & Discourse

MyBB 1.8 · Discourse 2.x
threads
yes · Discourse topics flatten to single OP+replies
users
yes · Discourse SSO maps to local auth
PMs
yes (MyBB) · Discourse DMs require export script
attachments
yes
federation
ActivityPub identities re-broadcast on first login

caveat: Discourse trust levels aren't a clean 1:1; we map them to a forum role called "trust-tier".

import from MyBB or Discourse →

on a platform not listed? the importer is open — write a 30-line adapter and we'll merge it. read the adapter spec →

03/  the 17-minute timeline

What actually happens between 00:00 and 16:42.

A vBulletin-to-IchigoBBS run on a 240k-post board, captured from a real admin's terminal log on a $6/mo Hetzner VPS.

  1. 00:00 → 02:18

    Snapshot the source DB

    SSH into the legacy host, run ichigo-migrate snapshot --source=vbulletin. The tool writes a portable .ichigo-bundle (schema + media + custom BBCode) to your workstation. Your source board stays live — no read-locks taken.

  2. 02:18 → 05:40

    Install IchigoBBS 8.4 fresh

    apt install ichigo-bbs-core on the target VPS. Brings PHP 8.3, MariaDB, and the migration CLI. The installer does not touch port 80 yet — your old forum is still answering traffic during this window.

  3. 05:40 → 06:05

    Point the importer at the bundle

    ichigo-migrate import ./board.ichigo-bundle --dry-run. Prints a report: 240,118 threads, 11,402 PMs, 38.1 GB attachments, 47 custom BBCodes mapped. Nothing is written yet.

  4. 06:05 → 16:42

    Run the live import + cut DNS

    ichigo-migrate import ./board.ichigo-bundle --commit. Threads, users, PMs, attachments, ranks, mod logs all land in one transactional pass. ActivityPub identities re-broadcast at 15:30. At 16:42 you flip DNS to the new VPS. Old board is preserved read-only on a :8081 port for 30 days as your rollback.

04/  under the hood

The knobs a sysadmin actually reaches for.

Most migrations need zero configuration. The defaults — schema mapping, attachment hash verification, BBCode translation, user re-hash — are right for ~92% of boards we've seen since 2003. But when an admin does need to reach in, the importer exposes a small set of flags in /etc/ichigo/migrate.conf rather than a 200-field wizard.

The three that come up most: --dry-run prints a diff without writing (safe to re-run any number of times); --attach-hash=sha1|md5|none lets you skip verification on huge boards where you've already proven your source storage is intact; and --ap-rebroadcast=on|first-login|off controls when the ActivityPub bridge re-announces each user's identity to the fediverse — by default, immediately at cutover, but admins who federate slowly often prefer first-login so the bridge warms up gradually as members return.

Custom BBCode is the one thing that occasionally requires a human. vBulletin's [QUOTE=...] and XenForo's nested [USER] tags map cleanly; forum-specific markup (think: a bespoke [spoiler] from 2007) lands as plain text with a single-line log entry telling you which tag set to add to migrate.bbcode.d/. The translation file is plain JSON — no compiled plugin chain, no restart required.

If the importer hits an error it cannot resolve — a corrupt attachment row, a malformed UTF-8 username, a truncated PM folder — it logs the row, skips it, and continues. The run still completes; you get a migrate-report.json listing every skipped row with its row ID and the specific reason. Most admins fix the handful of edge cases in a follow-up 90-second pass.

05/  questions admins actually ask

Before you pull the trigger.

Q. Will my forum be down during the migration?

No. The old board stays live on its original host for the entire 17-minute window. DNS only flips at 16:42, after the import has committed. The shortest observed downtime in our 2024 benchmarks was 9 seconds — the time it took DNS to propagate to the new VPS.

Q. What happens to my SEO and inbound links?

IchigoBBS auto-generates 301 redirects from your old thread URLs to the new permalinks the moment the import commits. We've tested this on boards with 1.2M indexed threads — Search Console shows link equity transferring within 48 hours with no measurable ranking drop.

Q. Will attachments actually come over, or do they break?

They come over. The importer re-hashes every file against the target's storage layer and writes a SHA-1 manifest. If even one byte mismatches, that file is flagged in the report and re-fetched from the source before the run completes.

Q. Can I roll back if something goes sideways?

Yes. After import, your old board is preserved read-only on a separate port for 30 days. One command — ichigo-migrate rollback — restores DNS to the source host. No data is destroyed on either side until you explicitly purge the rollback buffer.

06/  closing post

17 minutes. One click. Your forum, on a platform that's been up since 2003.

38,400+ communities have already moved. The importer is open-source, the dry-run is free, and rollback is built in.

— kuro_admin & the 14 maintainers of IchigoBBS 8.4