Prerequisites checked by the application
The wizard starts with an environment check. This step quickly tells you whether the server is in a deployable state.
| Check | Why it matters | What the wizard verifies |
|---|---|---|
| PHP version | The project targets a modern runtime and recent server-side APIs. | PHP 8.2 or higher, with the extensions required by the product core. |
| PDO and drivers | The database can be SQLite, MySQL/MariaDB or PostgreSQL. | pdo_sqlite, pdo_mysql and pdo_pgsql depending on the chosen engine. The pdo_sqlite extension is strictly required in all cases, even if you choose MySQL or PostgreSQL as the primary database — Fulgurite uses it for its internal search database and certain runtime operations. |
| Optional functions | Some features depend on optional extensions. | gd and zip are optional. However, zip becomes required if you want to import custom themes in zip format from the administration panel. |
| Write permissions | The application must be able to store its configuration and runtime data. | Write access to config/ (runtime configuration) and data/ (SQLite database, logs, secrets, passwords, SSH keys, cache, themes). |
One-shot bootstrap token unlock
Access to public/setup.php is no longer open by default. The setup wizard is gated by SetupGuard and requires a one-shot bootstrap token generated on the server.
php scripts/setup-bootstrap.php create --ttl=30
- The token is generated from CLI and then entered on the setup unlock screen.
- The bootstrap payload is stored temporarily in
data/setup-bootstrap.json. - Setup opens a short installation session that is refreshed while you progress.
- At finalization, the bootstrap token is consumed and removed automatically.
The 6 wizard steps
The installation wizard follows a concrete order. Understanding it helps you know what to prepare in advance and what will be automated for you.
- Prerequisites. Environment check for the PHP version, useful extensions and directory permissions.
- Database. Driver selection and connection test.
- Web server. Apache, Nginx or LiteSpeed detection and generation of an appropriate configuration block.
- Administrator. Entry of the first admin account, with password and basic contact details.
- Application. Initial settings such as the application name and time zone.
- Installation. Directory creation, writing
config/database.php, schema initialization, creation of the first admin account and marking the instance as installed.
Choosing the right database
The code supports three engines. The right choice depends on volume, operational habits and the expected level of sharing.
SQLite
- The simplest option to deploy.
- Main file:
data/fulgurite.db. - Separate search database:
data/fulgurite-search.db. - Setup already enables WAL mode and a wait timeout on locks.
MySQL / MariaDB / PostgreSQL
- Better suited if your internal standard already relies on a centralized DBMS.
- The wizard tests connectivity and credentials before proceeding.
- The application schema will be initialized via the project's database layer.
- Even in this mode, the
pdo_sqlitePHP extension remains essential.
Web server configuration generated by the wizard
The setup generates useful configuration blocks for Apache, Nginx or LiteSpeed, pointing to /public with examples for log and asset cache settings.
Minimum expected structure after installation
config/database.php
data/fulgurite.db
data/fulgurite-search.db
data/passwords/
data/ssh_keys/
data/cache/
data/themes/
data/.installed
Files and directories created automatically
The final phase of the wizard prepares the foundations of the instance.
- Writing the DB config to
config/database.php. - Creating runtime directories:
data/passwords,data/ssh_keys,data/cacheanddata/themes. - Initializing the application schema via the database layer.
- Creating the first admin user.
- Applying initial settings such as the application name and time zone.
- Marking the instance as installed using
data/.installed.
Set up your first backup with the Quick Backup wizard
The fastest way to set up a first backup is to use the guided Quick Backup flow. This 8-step wizard takes you from target selection to job confirmation without any manual pre-configuration.
Access: the Quick Backup button in the top navigation bar, or from the dashboard.
- Target selection. Choose where to store the backup: remote SSH host, local path, etc.
- SSH key setup. The wizard can generate a new SSH key pair. The public key is displayed for copying into the target's
authorized_keysfile. One SSH key per machine is enforced — if a key already exists for that host, it is reused. - Host verification. Validation of the host key fingerprint. The wizard can refresh the fingerprint if the server was reinstalled.
- Repository creation. Initialization of the Restic repository on the target.
- Job naming. Assign a name to the backup job.
- Schedule. Define the automatic execution schedule.
- Retention policy. Configure snapshot retention rules.
- Confirmation. Summary and effective job creation.
- Preflight checks at each step: the wizard validates SSH connectivity, host key fingerprint, Restic presence on the target and available disk space. Results are shown as success / warning / error / info icons.
- Template system: four built-in templates cover common use cases, all fully internationalized:
builtin:system-server— Generic Linux server:/etc,/home,/root,/var/spool/cronbuiltin:linux-web— Web server:/etc,/var/www,/var/spool/cronbuiltin:mysql-server— MySQL server:/etc/mysql,/var/lib/mysqlbuiltin:postgres-server— PostgreSQL server:/etc/postgresql,/var/lib/postgresql
custom:prefix) to reuse for future quick backups, or duplicate an existing template before adapting it. - Error humanization: SSH and SFTP errors are translated into clear, actionable messages.
- Security: one SSH key per machine is enforced — the wizard does not create a duplicate if a key has already been generated for that host.
The first settings to configure right away
Here is the most efficient order to turn a freshly installed instance into a truly operational backup tool.
- Check Settings. Set the time zone, application name, email and any relevant integrations.
- Launch the Quick Backup wizard. This is the most direct path to creating your first job — see the section above.
- Or add a repository manually. Create your first target in Restic Repositories, then define a backup job with source paths, exclusions, tags and retention.
- Enable the central cron. Go to Scheduler & Worker.
- Run a manual backup. Check the log before relying on the schedule.
- Test a restore. Validate early that data can be recovered.