Skip to content
Arbinel

Switch from Forgejo

To switch a running Forgejo instance to Arbinel, replace the Forgejo binary or image with the Arbinel release built on the same Forgejo version. The database, repositories, app.ini and storage stay as they are, and no data needs to be converted. Compatibility describes the compatibility guarantee.

  1. Find the Arbinel release built on your Forgejo version. Its release notes on arbinel/arbinel name that Forgejo release. If no Arbinel release matches your version, upgrade Forgejo to a version that has one first. You can also switch to an Arbinel release built on a later Forgejo version, and treat the switch as a Forgejo upgrade too.
  2. Back up the instance, as Forgejo’s upgrade guide describes. Arbinel adds tables and columns on its first start, so only the backup can restore the exact state from before the switch.
  3. Flush the queues with forgejo manager flush-queues, as before any Forgejo upgrade.

Download and check the Arbinel asset as Install Arbinel describes, which also sets VERSION and ARCH. Then put it where the Forgejo binary was, under the same name:

systemctl stop forgejo
install -m 0755 "arbinel-${VERSION}-linux-${ARCH}" /usr/local/bin/forgejo
systemctl start forgejo

The paths and the service name are examples. Use the ones from your Forgejo installation.

Change only the image. Keep the volumes, ports, environment and user as they are. Use the rootless variant if you ran Forgejo’s rootless image.

 services:
   server:
-    image: codeberg.org/forgejo/forgejo:<forgejo version>-rootless
+    image: codefloe.com/arbinel/arbinel:<arbinel version>-rootless
     environment:
       - USER_UID=1000
       - USER_GID=1000
     volumes:
       - ./data:/var/lib/gitea
       - ./config:/etc/gitea

The versions are examples. Take the Arbinel version whose release notes name your Forgejo version. docker.io/arbinel/arbinel has the same tags if you prefer Docker Hub.

Then pull and recreate the container:

docker compose pull
docker compose up -d

Arbinel runs Forgejo’s migrations exactly as the Forgejo release would, then its own. Arbinel keeps its schema changes in a separate migration chain, which records its version in a table of its own, codefloe_version. On a database that came from Forgejo, that table does not exist yet, so Arbinel creates it and creates its own tables and columns with it.

Arbinel’s schema changes only add tables and columns. They never change Forgejo’s migration chain, so Forgejo’s future migrations still apply to the same database.

Arbinel’s server-side features, such as quotas, billing, Pages, request budgets and high availability, stay off until you configure them. Some interface defaults change as soon as the instance runs Arbinel:

  • The default theme is codefloe-tide-auto, for signed-out visitors and new accounts. Existing accounts keep the theme stored with them, which is Forgejo’s default unless the user chose another.
  • File icons in the repository file list use the devicon icon set. Setting FILE_ICON_SET = basic, shown below, reverts this only partly, as Appearance explains.
  • A repository can pin up to six issues instead of three.
  • /issues, /pulls and /notifications redirect to the /inbox page.
  • Users who can write to a repository can cancel running checks from a pull request’s merge box.

Defaults that differ lists each of them. To keep Forgejo’s defaults, set them in app.ini:

[ui]
DEFAULT_THEME = forgejo-auto
FILE_ICON_SET = basic

[repository.issue]
MAX_PINNED = 3

Replace the Arbinel binary or image with the Forgejo release Arbinel was built on, or a later one, and start the instance.

Forgejo ignores the tables and columns Arbinel added, and the configuration sections it does not know. Everything Forgejo knows about stays intact. Arbinel’s own features stop working, such as quotas on CI time, Pages management, billing and live updates, but their data stays in the database. Switching to Arbinel again later restores them.

Before you switch back, remove any codefloe-* theme from [ui] DEFAULT_THEME and [ui] THEMES, because Forgejo does not ship those themes. Users who chose a codefloe-* theme get the default theme in Forgejo.