Frequently Asked Questions¶
This FAQ collects recurring questions from the LibreBooking GitHub issues and discussions and points to the longer documentation when you need the full setup or configuration details.
Why do I get a white page, HTTP 500, or Unknown Error after install or upgrade?¶
Start with the basics:
Confirm that
config/config.phpexists and the database credentials are correct.Confirm that
tpl,tpl_c, anduploadsare writable by the web server.Confirm that the configured log directory is writable by the web server so LibreBooking can write error logs there. For example, some deployments use permissions such as
0755, but the exact mode depends on your server user and group setup.Enable logging and set the log level to
debugso the real exception is written to disk.Re-check PHP requirements and loaded extensions.
In practice, many “unknown error” reports come down to one of three causes: incorrect database credentials, missing Composer dependencies, or directory permission problems.
See LibreBooking Installation and/or Basic Configuration.
Related threads:
Why does LibreBooking fail with Class "Smarty" not found?¶
LibreBooking depends on Composer-managed PHP packages, including Smarty. If
you deploy the source tree without running composer install, the
application will load PHP files from the repository but fail when it reaches a
class provided by vendor/.
Install dependencies in the application root:
composer install --no-dev
For development, use composer install instead.
If you are deploying to shared hosting, run Composer before upload or on the target host if the host supports it.
See LibreBooking Installation.
Related thread:
Which URL should I use for the installer?¶
Use the Web directory with the correct case:
https://example.com/Web/install
On case-sensitive hosts, /web/install and /Web/Install are different
paths and may return 404 or 500 errors even when the application is deployed
correctly.
You must also set install.password in config/config.php before the
installer can run.
See LibreBooking Installation and Basic Configuration.
Related threads:
Why do my URLs redirect to /Web/Web/?¶
This usually means script.url is configured incorrectly.
Set script.url to the base URL of LibreBooking’s Web directory exactly
once, for example:
'script.url' => 'https://example.com/librebooking/Web',
Do not append /Web twice, and do not point it at a specific page such as
/Web/index.php or /Web/schedule.php. LibreBooking builds application
links by appending page paths to script.url, so a value that already
contains an extra /Web will produce broken URLs such as /Web/Web/....
See Basic Configuration.
Related threads:
What account do I use to sign in right after installation?¶
There is no universal built-in administrator password for normal production installs.
After installation, register an account using the email address configured as
admin.email in config/config.php. That user will receive administrator
permissions.
If self-registration is disabled, temporarily enable it so the administrator
account can be registered with the configured admin.email address.
See LibreBooking Installation and Basic Configuration.
Related thread:
How do I hide reservation details from other users?¶
Use the privacy settings in config/config.php, especially
privacy.view.reservations. That setting controls whether users can see
reservation details for resources they are not allowed to manage.
If you need per-resource behavior instead of a global privacy policy, that is not a simple configuration toggle today and may require custom code or a workflow change.
See Basic Configuration.
Related thread:
Why does LDAP authentication fail after migrating from older versions?¶
Check the LDAP host value in config/Ldap.config.php. In LibreBooking, the
host must include the LDAP scheme prefix, for example ldap://ldap.example.com
or ldaps://ldap.example.com.
If you migrate settings from older Booked Scheduler or Librebooking versions and keep only the bare hostname, LDAP bind and login can fail even though the hostname itself is correct.
See LDAP Authentication.
Related thread:
How do I configure Microsoft Entra ID / Azure AD login?¶
LibreBooking uses a server-side OAuth flow. In Microsoft Entra ID, register LibreBooking as a Web application, not a single-page application (SPA).
Use:
Redirect URI:
https://your-host/Web/microsoft-auth.phpA client secret value, not the secret ID
Standard OAuth endpoints for your tenant
If Entra reports that PKCE is required, the app was likely registered as an SPA. If token exchange fails with an invalid secret error, verify that you copied the secret value and not the identifier shown beside it in the portal.
Your IdP must also return the attributes LibreBooking needs. In practice, missing email claims can prevent auto-provisioning from succeeding.
If you want new external-auth users to be created automatically on first
login, enable registration.allow.self. Otherwise new users
can be redirected back with a self-registration-disabled error instead of
being signed in.
See Oauth2 Configuration and Advanced Configuration.
Related thread:
Can LibreBooking automatically create external-auth users and route them to the right schedule?¶
LibreBooking can create users during external authentication, but custom tenant-specific behavior such as choosing a schedule by email domain or assigning groups automatically is not a simple configuration setting.
For organization-specific routing, you will likely need to customize the
external authentication flow so it updates fields such as
default_schedule_id after the identity provider returns user data.
See Oauth2 Configuration and Advanced Configuration.
Related thread:
What is the correct order for a manual database installation or upgrade?¶
For a fresh manual install, use this order:
create-db.sqlif you need LibreBooking to create the databasecreate-user.sqlif you want to create a dedicated database usercreate-schema.sqlAll scripts in
database_schema/upgrades/in version ordercreate-data.sqlsample-data-utf8.sqlif you want demo datasample-data-large-utf8.sqlif you want a larger demo dataset (must be loaded aftersample-data-utf8.sql)
Alternatively, the helper script database_schema/setup-database.sh automates
these steps and optionally loads sample data.
If your hosting control panel or DBA already created the database and database
user, you can skip create-db.sql and create-user.sql and start with
create-schema.sql.
For upgrades, run only the pending scripts from database_schema/upgrades/
or use the supported upgrade tooling described in the installation guide.
See LibreBooking Installation.
Related threads: