Octibiz
Demo

Durchsucht Website und Dokumentation gemeinsam. Enter zeigt alle Treffer, Esc schließt.

System requirements

What the server has to bring along before you start the installation.

Check this list beforehand. The wizard checks most of it itself, but a server without the required extensions will not get past step 1 — and then you are sitting on an uploaded package waiting for your hosting provider to answer.

The quick test

These three commands answer the important questions:

php -v | head -1
php -m | grep -xE 'ctype|iconv|json|sodium|pdo_mysql|openssl|mbstring|redis|intl' | sort | tr '\n' ' '
php -r 'echo function_exists("proc_open") ? "proc_open ok" : "proc_open BLOCKED";'

The second line has to print nine names. Anything fewer is what you are missing.

PHP

8.4 at minimum. No upper bound is defined; testing runs against 8.4.

Extensions — mandatory

All nine are checked by the wizard and block the installation if missing.

ExtensionWhat for
ctypeCharacter type functions
iconvCharacter set conversion
jsonJSON
sodiumEncryption of credentials for connected systems
pdo_mysqlDatabase driver
opensslJWT keys and encryption
mbstringMultibyte strings
redisCache and queues in production
intlDate, time and number formats per language

Two of them are not checked by setup.sh: redis and intl. The script passes green, then the wizard blocks red. Check both yourself beforehand.

intl is not a convenience: every money, date and time output outside German goes through it with no fallback. Without the extension the server installs cleanly and fails on the first non-German output.

These do not block, but they limit what works:

ExtensionWithout it
curlNo connection to external services and no AI
gdNo preview images or avatars. For the page builder additionally with WebP support
zipNo export or import through ZIP archives

Further PHP requirements

  • proc_open() must not be disabled. The wizard runs every setup step as a separate process.

If the function is in disable_functions, nothing works.

  • A discoverable PHP command line, 8.4 or newer. The wizard searches by itself; if it finds

nothing, it asks for the path.

  • post_max_size and upload_max_filesize at least 36 MB, matching the web server limit.

Database

MariaDB or MySQL. PostgreSQL is not supported.

SystemMinimumReleased lines
MariaDB10.11 (LTS)10.11 · 11.4 · 11.8
MySQL8.08.0 · 8.4

Older versions install with a warning; the version is deliberately not a blocker. For production the rule still holds: a release without security updates does not belong on a server holding business data.

You also need:

  • An empty database in utf8mb4.
  • A user with full privileges on it, including CREATE, ALTER and INDEX. Without those

three the migrations abort.

  • If the wizard is to create the database itself, the user needs that privilege as well.

Web server

nginx or Apache. The document root points at public/, not at the project directory. Ready-made templates ship in the package under deploy/.

What the configuration has to do:

  • A dedicated rule for /install/ taking precedence over the general PHP block. Without it the

server delivers the installer's source code instead of executing it.

  • Upload limit of at least 36 MB. Files are transferred as Base64 inside JSON, which adds a

third on top of the 25 MB payload.

  • On Apache: FollowSymLinks plus mod_rewrite, mod_headers and mod_deflate.
  • HTTPS with a valid certificate. Login works with secure cookies; over plain HTTP it does not

work at all.

Services

Mandatory

ServiceWhat forWithout it
Background workersMail, notifications, webhooksNone of it is delivered
Scheduler consumerAll time-driven processesNothing scheduled runs. Exactly one instance per environment, otherwise everything fires twice
Cron or systemdStarts both of the aboveSee above
ChromiumDocument PDFsNo document is produced. This is the core engine, not a side path
Mail deliveryDeliveryNo notification reaches its recipient

Chromium is easily overlooked. It appears neither in the setup.sh check nor in the wizard's requirements list. Working through that list alone gets you a system that cannot produce a single invoice as a PDF.

What is needed is chromium, chromium-browser, google-chrome or google-chrome-stable on the search path. If it lives elsewhere, put the path into the configuration. Check with: php bin/console app:pdf:check

Optional

ServiceIf it is missing
Redis serverThe database takes over cache and queues. The PHP extension redis is still mandatory
MercureNo token-by-token streaming of AI answers. Answers arrive in one piece; the default is off anyway
Collab serviceNo simultaneous editing. Regular saving keeps working. Needs Node 22 or newer
OCR toolsFull-text search in documents only finds file names. The module is off by default

Additionally for the one-file route

If you install through install.php instead of uploading the package yourself, three more things are needed. The file checks them on opening and names each missing one individually.

WhatWhat forWithout it
phar and zlibExtracting the downloaded archiveThe file cannot extract and says so
Outbound HTTPSFetching the package from the update serverOnly the route with a self-uploaded package remains
About 1.1 GB free disk spaceArchive, extracted archive and files exist side by side for a momentExtraction aborts

phar and zlib are on with practically every provider. The outbound connection is the point that fails in locked-down environments.

The one-file route itself runs on any PHP version. That is deliberate: only then can it report that the version is too old for Octibiz, instead of ending in a blank error page.

Access and tools

  • SSH access for setup.sh. On plain web hosting, file upload plus a one-off script call

through the panel is enough.

  • flock for the overlap guard on the worker cron calls.
  • Composer and Node are not needed on the target server — as long as you use the pre-built

package and do not install plugins afterwards. As soon as a plugin triggers an interface rebuild, the instance needs Node and the frontend dependencies.

Memory and disk space

There is no defensible figure for this, and we will not state one we cannot back up. Two reference points:

  • Each background worker runs with a 256 MB limit and restarts when it exceeds that. Two workers

are the default.

  • While the interface is being updated it exists on disk twice for a short while. Keep space

available accordingly.

What the wizard checks itself

So that you know what you cannot rely on:

CheckedNot checked
PHP version, all nine extensionsmemory_limit, max_execution_time, upload limits
proc_open(), PHP command lineFree disk space
Write access to four directoriesHTTPS, web server type, rewrite rules
Database connection and versionDatabase privileges (CREATE, ALTER, INDEX)
Presence of the built interfaceChromium

The four directories needing write access are: the project directory itself, var, config/jwt and public/uploads.

Next

admin.requirements · Available from version 0.5.7