Functional Administration

Users, roles, config servers, depots and settings in the user interface

Role: Administrator

Overview

This part is for administrators who set up and maintain oPBWeb in the user interface. Everything described here is done in the browser, without access to the server or the Docker environment. How to install, configure and back up the stack is covered in Technical Administration .

As an administrator, you have all the permissions of the other roles. In addition, you see the Users and roles and Settings areas at the bottom of the activity bar, and you get extra functions in System status and Depots, such as managing the config servers.

Tasks at a glance

TaskWhere in the UIChapter
Create accounts, assign roles, disable or delete accountsUsers and roles › UsersUsers and roles
Trace who changed what and whenUsers and roles › Audit logAudit log
Add opsi config servers, set their stage, maintain the CA certificate, remove config serversDepots › + or the config server rowConfig servers
Define defaults for new packages and meta packagesSettingsSettings for new packages
Assign depots to the stages Test, Staging and Production, disable or remove themDepots › SettingsDepot management
Monitor services, check storage usage, clean up object storageSystem statusSystem status

During the initial setup, you go through these items in a fixed order. The steps are described in Initial setup .

Users and Roles

Roles and permissions, creating and maintaining local accounts, directory accounts from LDAP

Role: Administrator

Overview

Under Users and roles, you manage all accounts that can sign in to oPBWeb. Each account has exactly one role, which defines what it may do in the UI. Besides local accounts that you create yourself, there are directory accounts from LDAP whose role is derived from their groups in the directory.

Open the area with the Users and roles icon at the bottom of the activity bar. It has two tabs: Users (with the number of accounts) and Audit log. The audit log is described in the Audit log chapter.

Roles and permissions

There are four roles. They build on each other: each role has all permissions of the roles above it and adds its own.

RoleShort description in the UI
Viewerread only
Packageredit and build packages, install on test depots
Releaseralso deploy to production depots
Administratoralso users, servers and settings

The UI hides or disables buttons when the role is not sufficient. Every permission is still checked on the server. If a permission is missing, the message “No permission for this action.” appears.

Viewer

Packager

Releaser

Administrator

The stage rule for depots

What a Packager may do with a package on a depot depends on the depot’s Stage, not only on their role. The table shows who may perform which action on which stage:

ActionTestStagingProduction
Install … (also with setup)Packager and abovePackager and aboveReleaser and above
Uninstall …Packager and abovePackager and aboveReleaser and above
Promote … / Promote to another stage … (target depots)Packager and abovePackager and aboveReleaser and above
Unlock productsPackager and abovePackager and aboveReleaser and above
Delete repository filesPackager and abovePackager and aboveReleaser and above
Delete a version, Back to draft, Delete package …, if installed therePackager and abovePackager and aboveReleaser and above
Sync depots, read the repositoryPackager and abovePackager and abovePackager and above
View the depot, download filesViewer and aboveViewer and aboveViewer and above
Change the depot’s Stage, Service URL, EnabledAdministratorAdministratorAdministrator

For deleting and for Back to draft, it matters where the package is currently installed: if the version (or, when deleting the package, any of its versions) is on a production depot, the Releaser role is required. A Packager then gets a message listing the depots on which the package is installed. This is based on the state of the last depot sync.

Depots inherit the stage of their config server unless you give them their own. New config servers start in the Production stage. So a Packager can install on their depots only after you set the config server or the individual depot to Test or Staging. In the Install … dialog, a locked depot is shown with the hint “requires releaser role”. How to change the stage is described in Depot management .

The user list

The Users tab shows all accounts in a table. The User details pane for the selected account opens to its right.

User list with the user details pane open

ColumnMeaning
User nameSign-in name of the account
NameDisplay name
RoleRole as a colored badge
Sourcelocal (created in oPBWeb) or Directory (LDAP)
Statusactive, disabled or locked (after too many failed attempts)
Last sign-inTime of the last successful sign-in

Below the fields, the user details also show Source, Created and Last sign-in.

Local accounts

Local accounts sign in with a password that oPBWeb stores itself. The first administrator account (admin) is created when the system starts for the first time; you create all further local accounts here.

Creating an account

  1. Click New user in the toolbar.

    “New user” dialog

  2. Enter the User name. Allowed are 2 to 128 characters consisting of letters, digits and . _ @ -.

  3. Select the Role. The dialog suggests Viewer, the role with the fewest permissions.

  4. Optionally enter Name and Email. The email address appears in changelog entries of this user.

  5. Select the Default language (Deutsch or English). The UI starts in this language after every sign-in.

  6. In the New password field, set an initial password with at least 10 characters.

  7. Click Create.

The new account appears in the list and is selected right away. Pass the initial password to the user through a secure channel; they can then replace it themselves under Change password in the avatar menu.

Editing an account

  1. Select the account in the list.
  2. In the User details, change Name, Email, Role or Default language.
  3. Click Save. “Saved” appears in the toolbar.

Every user can also change their default language themselves in the avatar menu (see Account and language ).

Disabling an account

A disabled account is kept with all its data but can no longer sign in. The sign-in fails with “Account is disabled.”

  1. Select the account.
  2. Clear the Account is active checkbox.
  3. Click Save.

To re-enable it, select the checkbox again and save.

Setting a password

If a user has forgotten their password, set a new one:

  1. Select the account and click Set password.
  2. Enter the new password twice (at least 10 characters).
  3. Confirm the dialog. “Password set” appears in the toolbar.

You do not need the old password for this. Setting a password also lifts an existing lock.

Unlocking an account

After 5 wrong passwords in a row, oPBWeb locks a local account for 15 minutes. During the lock, the sign-in message is “Account locked until HH:MM.”, even if the password is correct. In the list, the account shows as locked.

You do not have to wait for the lock to expire:

  1. Select the locked account.
  2. Click Unlock. The button only appears for locked accounts.

The user can sign in again immediately. If they have actually forgotten their password, use Set password instead.

Deleting an account

  1. Select the account.
  2. Click Delete user.
  3. Confirm the prompt “Delete user?” with Delete user.

The account is removed permanently. Entries in the Audit log are kept with the user name. You cannot delete your own account; the button is disabled for it.

Protection of the last administrator

oPBWeb prevents a situation where nobody can reach the administration any more. For the last active administrator account:

So create a second administrator account first before you downgrade or remove the existing one.

Directory accounts (LDAP)

If technical administration has enabled LDAP sign-in, users from the directory (for example Active Directory) can sign in as well. You recognize these accounts by the source Directory (LDAP). The setup is described in LDAP Sign-in .

Directory accounts follow different rules than local accounts:

Local accounts always sign in locally, even when LDAP is enabled. This keeps the local administrator admin reachable even if the directory fails.

Audit Log

Use the audit log to trace who triggered which action and when

Role: Administrator

Overview

The audit log records who triggered which important action in oPBWeb and when: sign-ins and changes to accounts, packages, depots and settings. You find it under Users and roles on the Audit log tab. Only administrators can read it.

Entries can be neither changed nor deleted in the UI. Even if you delete a user account, its entries are kept with the user name.

Reading the audit log

“Audit log” tab with filter fields and entries

The newest entries are at the top. Each row has these columns:

ColumnContent
TimeDate and time of the action
User nameWho triggered the action. For failed sign-ins, the name that was entered.
ActionTechnical key of the action, for example user.created (see list of actions )
ObjectType and identifier of the affected object, for example depot depot01.example.local
DetailsAdditional information in JSON format, for example the changed fields or the reason for a rejected sign-in
IPIP address the request came from

Above the table, you see how many entries are displayed, for example “100 of 2,345 entries”. Entries are loaded 100 at a time. Use Load more below the table to fetch the next 100.

Filtering entries

  1. In the Action field, enter the beginning of an action key. user. finds all actions on user accounts, auth.login_failed only the failed sign-ins.
  2. In the User name field, enter a user name. The name must be complete and match exactly.
  3. Click Filter.

You can combine both fields. To see all entries again, clear the fields and click Filter again.

Recorded actions

ActionWhen it is recorded
auth.loginsuccessful sign-in
auth.login_failedrejected sign-in (reason in Details)
auth.logoutsign-out
auth.password_changeduser changes their own password
user.createdaccount created
user.updatedaccount edited (name, email, role, language, active)
user.password_setadministrator sets a password
user.unlockedadministrator lifts a lock
user.deletedaccount deleted
package.creatednew package or meta package created
package.deletedentire package deleted (Delete package …)
package.archivedpackage archived; Details gives the number of deleted build results
package.restoredarchived package restored
package.import_startedimport of an .opsi file started
package.install_startedinstallation on depots started
package.uninstall_starteduninstallation on depots started
version.updatedproduct data of a version saved
version.propertiesproperties saved
version.dependenciesdependencies saved
version.files_uploadedfiles uploaded into the package
version.build_startedbuild started
version.releasedversion released (when the installation starts)
version.reopenedBack to draft
version.copiedNew version created
version.deletedversion deleted
depot.updateddepot settings changed (stage, service URL, enabled)
depot.deleteddepot removed from oPBWeb
depot.unlockproducts unlocked on a depot
depot.repository_deletefiles deleted from a depot’s repository
files.writtenfile saved on the server (Depots › Files)
files.mkdirfolder created on the server
files.movedfile or folder renamed on the server
files.deletedfile or folder deleted on the server
files.upload_startedupload to the server started
workbench.import_startedimport from the workbench started
workbench.export_startedexport to the workbench started
snippets.importedsnippets imported
settings.updatedsettings for new packages, meta packages or changelog changed (changed keys in Details)
opsi_server.createdconfig server added
opsi_server.updatedconnection data or stage of a config server changed
opsi_server.deletedconfig server removed with Remove …
opsi_server.ca_acceptedAccept new certificate after a CA rotation
storage.cleanupobject storage cleanup confirmed (only the deletion run, not the dry run)

For actions that start a job (…_started), the audit log only shows who started the job. Whether it succeeded is shown under Jobs .

What is not recorded

Some actions are deliberately not recorded in the audit log:

Many of these actions still leave a trace: everything that runs as a job appears in the job list with the user who started it and its log.

Config Servers

Add opsi config servers in the Depots view, set their stage, maintain the CA certificate and check the connection

Role: Administrator

Overview

oPBWeb works with any number of opsi config servers, for example a test, a staging and a production system. Through each config server, oPBWeb reads its depots, installs packages and accesses /repository, /workbench and /depot. Each depot belongs to exactly one config server.

You manage the config servers in the Depots view in the activity bar. As long as no config server is configured, depots, installing and the workbench do not work, and the status bar shows “No config server configured”.

Depots view with the form of a config server

Config servers in the depot list

The list on the left of the Depots view is grouped by config server. Each config server is shown as a bold row, with its depots indented below it. The arrow in front of the name collapses or expands the depots of a server, and the “Search depots” field above searches the list (see Depots ).

ElementMeaning
Dot in front of the namegreen: last check OK, red: last check failed, gray: not checked yet
BadgeStage of the config server (Production, Staging or Test)
Second line“Config server · 3 depots”

There are two buttons at the top of the list:

Clicking a config server row opens the server’s form on the right. Next to the heading, you see the stage badge and the result of the last check: reachable or not reachable. The header contains the buttons Remove …, Test connection, Sync and Save.

Users without the Administrator role see a card instead of the form, with name, stage, Config server URL, State (reachable or not reachable including the error message) and the validity of the CA certificate. From the Packager role, the card has a Sync button.

The fields

FieldContent
NameDisplay name of your choice, for example config server. If the field is empty, oPBWeb uses the host name from the URL.
Config server URLAddress of opsiconfd including the port, for example https://opsi.example.local:4447. Use the fully qualified host name (FQDN), not an IP address: the opsiconfd certificate is issued for the name. Each URL can be configured only once.
Technical useropsi user that oPBWeb works with. The default is opsiadm. The user needs opsi admin rights.
PasswordPassword of the technical user. It is stored encrypted and never shown again. If a password is already stored, the field shows “stored – leave empty to keep”.
StageProduction, Staging or Test. The stage applies to all depots of the server unless a depot has its own. Installing on production requires the Releaser role. New config servers start with Production.
Verify the server TLS certificate (recommended)Checks the server certificate against the stored CA certificate. Leave this option enabled.

With TLS verification enabled, oPBWeb trusts only the CA certificate you store under TRUSTED CA CERTIFICATE, not the certificate authorities of the operating system. Without a stored CA certificate, an https connection with TLS verification cannot be saved (“A CA certificate is required for the TLS check.”).

What the stage means for permissions and how depots inherit it is described in Depot management .

Adding a config server

  1. Open Depots in the activity bar.

  2. Click + at the top of the list on the left. The “New config server” form appears on the right.

  3. Enter Config server URL, Technical user and Password, and optionally a Name.

  4. Select the Stage, for example Test for a test server.

  5. Under TRUSTED CA CERTIFICATE, click Fetch from server. oPBWeb loads the server’s CA certificate in a short job; meanwhile the button shows “Loading …”.

  6. The CA certificate of the server dialog shows the certificate with its SHA-256 fingerprint. Compare it with the fingerprint on the config server:

    openssl x509 -in /etc/opsi/ssl/opsi-ca-cert.pem -noout -fingerprint -sha256
    
  7. If both match, click Trust. Below the certificate table, “Changed CA certificate – save to apply.” appears.

  8. Click Add. The message “Config server saved” confirms this.

Right after adding, oPBWeb runs Test connection for the new server. The test also reads the server’s depots; they then appear in the list below the config server. Cancel discards a new config server before it is saved.

If the URL is already configured, oPBWeb refuses to save: “A config server with this URL is already configured: …”.

Changing a config server

Select the config server in the list, change the fields and click Save. As long as there are unsaved changes, Test connection and Sync are disabled. If you switch to another entry in the list with unsaved changes, oPBWeb asks for confirmation first.

Loading the CA certificate from a file

Instead of fetching the certificate from the server, you can upload it as a file, for example if you copied opsi-ca-cert.pem from the server beforehand:

  1. Click Load PEM file … and select a file with the extension .pem, .crt or .cer.
  2. “New PEM file loaded, it is checked on save.” appears.
  3. Click Save (for a new server, Add). Only now does the server check the file. If it does not contain a valid certificate, the message is “Not a valid PEM certificate: …”.

Remove below the certificate table deletes the stored CA certificate; this, too, only takes effect when you click Save.

Removing a config server

  1. Select the config server in the list.
  2. Click Remove … in the header.
  3. Confirm the prompt “Remove config server name? Its 3 depots disappear from oPBWeb (nothing changes on the opsi server).”

The message “Config server name removed” confirms this. oPBWeb deletes the config server, its depots with their settings and the product lists of these depots. Packages and jobs are kept. Nothing changes on the opsi server itself.

Validity of the CA certificate

The table under TRUSTED CA CERTIFICATE lists every certificate in the stored file with Certificate (subject), Validity and SHA-256 fingerprint. If the file contains no CA certificate, “not a CA certificate” is shown after the subject.

The badge in the Validity column shows the remaining lifetime:

BadgeMeaning
green, “729 days left”valid for more than 60 days
orange, “45 days left”valid for less than 60 days
red, “10 days left”valid for less than 14 days
red, “expired”the certificate has expired

From 60 days before expiry, the status bar additionally shows “name: CA expires in {n} days”, and the opsi server row in System status is set to error.

CA rotation

opsi servers renew their CA themselves. Afterwards, the certificate stored in oPBWeb no longer matches the server’s, and connections with TLS verification fail. oPBWeb detects this during the regular check and reports it in three places:

To accept the new certificate:

  1. Open Depots and select the affected config server. The box shows the new certificate with its expiry date and SHA-256 fingerprint.
  2. Compare the fingerprint with /etc/opsi/ssl/opsi-ca-cert.pem on the server (command as above).
  3. Click Accept new certificate. The message “New CA certificate accepted” confirms this; no further save is needed.

Remaining warnings in the status bar and system status disappear with the next check, after five minutes at the latest. If you do not want to wait, click Test connection.

Testing the connection

Test connection checks the saved settings of the selected config server immediately. The button is disabled as long as there are unsaved changes (“Please save first”).

The test runs as a job and checks, in order:

If the test succeeds, oPBWeb then syncs the depots of this server. The result appears as “Connection OK” or as an error message. Below the form, you then see, for example, “Last checked 10/15/26, 09:30 · opsi 4.3.x · 3 depots” or the error message of the last check in red.

Syncing

Sync in the config server form reads only the depots of this server, their installed products and the project folders of its workbench again; the job is called “Synchronize depots (name)”. ⟳ at the top of the list syncs all config servers (“Synchronize depots of all config servers”). A sync never touches the depots of another config server. What happens to the depots during a sync is described in Depot management .

Automatic background check

You do not have to run the test by hand regularly. The worker checks all config servers every five minutes (default, configurable under Settings → Worker) in the same way and syncs the depots of every reachable server. You see the result:

Common errors

Error messages come from the server and follow the interface language. Details that opsiconfd itself returns (for example HTTP errors) are shown unchanged.

MessageCause and solution
“user has no opsi admin rights”The technical user is not an opsi administrator. Add the user to the opsi admin group on the config server, or enter a different user.
“… HTTP 403”opsiconfd rejects admin calls from the oPBWeb network. If the opsiconfd configuration contains admin-networks, the Docker network of the oPBWeb worker must be included. Technical administration adjusts this (see Troubleshooting ).
“The server delivers a different CA certificate than the stored one (rotation?)”CA rotation on the server, see CA rotation .
“No CA certificate is stored for the opsi server (Depots → config server).”TLS verification is on, but no CA certificate is saved. Fetch it with Fetch from server and save.
“CA not retrievable: …”The server cannot be reached at the URL entered. Check the host name, the port (usually 4447) and reachability from the oPBWeb server.
“A config server with this URL is already configured: …”The server has already been added. Select it in the list instead of adding it a second time.
“Depot … already belongs to config server … and is skipped” (in the job log)Another configured config server reports the same depot, for example because the same server was added under two URLs. Remove the duplicate entry.
Certificate error despite the correct CAMost likely the URL contains an IP address instead of the host name. Enter the FQDN.
“The server does not deliver a different certificate.”With Accept new certificate: the rotation has already been accepted in the meantime. Nothing else to do.

Settings for New Packages

Defaults for new packages and meta packages, and the mail domain for changelog entries

Role: Administrator

Overview

Under Settings, you define the values new packages and meta packages start with, and which mail address changelog entries get when the user has no email. The values apply to all users. Only administrators may change them.

The defaults only take effect when a package is created. Existing packages and imported packages (.opsi or workbench) keep their own values, and every Packager can override the defaults in the package editor.

You do not set up the connection to the opsi config servers here but in the Depots view, see Config servers .

Settings with the “New packages”, “Meta packages” and “Changelog” blocks

Changing settings

  1. Open Settings at the bottom of the activity bar.
  2. Change the values you want in the New packages, Meta packages or Changelog blocks.
  3. Click Save in the toolbar. The message “Settings saved” confirms this.

Revert restores the last saved values. Both buttons are only active if you have changed something. If you leave the page with unsaved changes, oPBWeb asks for confirmation.

New packages

oPBWeb enters these values into every package created via New package.

FieldDefaultAllowed valuesEffect
Product version1.01–32 characters consisting of letters, digits and . + ~Product version of the first version
Package version11–16 characters consisting of letters, digits and . + ~Package version of the first version
Priority0−100 to 100Priority in the control file
control formatINI (legacy)INI (legacy), TOML (control.toml)Format in which the control file is written into the package
Changelogchangelog embeddedchangelog embedded, changelog.txt, changelog.mdWhether the changelog is part of the control file or a separate file in the package

Meta packages

Meta packages bundle several products. They install their products through dependencies (action setup, order before); the setup script itself does nothing. The values apply to the Meta package … dialog in the package list.

FieldDefaultAllowed valuesEffect
Product id prefixmeta-up to 32 characters consisting of lower-case letters, digits and . _ -, may be emptySuggested value the Product ID field in the dialog is pre-filled with
Priority-100−100 to 100Priority of the meta package.
Setup script namedummy.opsiscript1–128 characters, without / and \File name of the empty setup script in CLIENT_DATA

The product version field in the Meta package … dialog is pre-filled with the Product version from the New packages block.

Changelog

FieldDefaultAllowed valuesEffect
Mail domain for users without e-maillocalhost1–128 charactersChangelog entries of users without an email address get username@<domain>.

If a user has entered an Email in their account, oPBWeb uses that address. So enter a domain here that fits your accounts, or maintain the email addresses in Users and roles . For directory accounts, the address comes from LDAP.

Worker

FieldDefaultAllowed valuesEffect
opsi check every (minutes)51–1440How often the worker checks all config servers (sign-in, admin rights, CA certificate) and syncs their depots.
Read workbench every (minutes)601–1440How often the worker reads the workbench of all config servers and records which project folders lie there; the package list shows this under Workbench . The interval is independent of the opsi check because reading needs two requests to the server per project folder. A server that cannot be reached is skipped.
Clean up temporary files at03:17time of dayOnce a day at this time the worker deletes prepared downloads and abandoned uploads older than 24 hours. If the time has already passed when the worker starts, it cleans up right away.

Changes apply from the next minute; the worker does not need a restart. The interval of the heartbeat (every 30 seconds) cannot be changed: the system status uses it to detect a failed worker.

Every saved change appears in the Audit log as settings.updated with the changed fields.

Depot Management

Assign depots to the stages Test, Staging and Production, set service URL and enabled state, remove depots that have disappeared

Role: Administrator

Overview

oPBWeb reads the list of depots from the configured opsi config servers. Each depot belongs to exactly one config server. As an administrator, you define for each depot which Stage it runs in, which Service URL oPBWeb uses to reach it and whether it is used at all (Enabled). The stage determines which role may install on the depot.

You find these settings under Depots. The list on the left is grouped by config server: each config server is shown as a bold row, with its depots indented below it, each with a stage badge and the number of products; for the config server’s own depot, for example, “config server · 120 products”. Additions such as “disabled” or “no longer present” also appear in the second line. How to add and maintain config servers is described in Config servers .

Select a depot on the left, and the Settings block is at the top on the right. All other roles only see the values; the fields are locked for them. The remaining functions of the depot view (installed products, files, repository, comparison) are described in Depots in the User Guide.

Depot list grouped by config servers, on the right the settings of a depot with inherited stage

Stages: Test, Staging and Production

Every depot has one of three stages. It is shown as a badge in the depot list and in the depot’s header.

StageInstall, uninstall, unlock, delete from repository
TestPackager and above
StagingPackager and above
ProductionReleaser and above

This lets Packagers try out new packages on test and staging depots, while only Releasers and Administrators deploy to production depots. In the Install … dialog, a Packager sees production depots with the hint “requires releaser role” and cannot select them. The complete role overview is in Users and roles .

Inherited stage

Every config server has a stage of its own. Its depots take it over as long as you do not set a stage of their own for a depot. You recognize an inherited stage by the italic, lighter badge with the tooltip “inherited from the config server”. If you change the stage of the config server, the stage of all depots that inherit it changes too.

So it is usually enough to set the stage once on the config server: a test server gets Test, and all its depots are test depots. You only need a stage of their own for individual depots that should differ from their config server.

Changing depot settings

  1. Open Depots in the activity bar and select the depot on the left.
  2. Set the fields in the Settings block:
    • Stage — “as config server (stage)” (the stage is inherited), Production, Staging or Test.
    • Service URL — address of opsiconfd on this depot, used by oPBWeb to upload packages and to access the depot’s files. Leave the field empty to use the default URL: the depot’s host name with the config server’s port, for example https://depot01.example.local:4447. For the config server itself, the default URL is the Config server URL from its form . The default URL is shown as a gray placeholder in the field.
    • Enabled — yes or no. A disabled depot stays in the list but is locked for install, uninstall, unlock and repository deletion. In the Install … dialog, it appears as “disabled”.
  3. Click Save. The message “Settings saved” confirms this.

Below the fields, oPBWeb shows what actually applies: URL in use is the address oPBWeb uses to reach the depot; clicking it opens the depot in a new tab. You also see what opsi itself reports, such as the Repository and Depot paths and the URL under Reported by opsi.

How depots get into oPBWeb

oPBWeb syncs the depots with their config server:

A sync never touches the depots of another config server. A sync via Sync or ⟳ also reads the workbench of the config server (for the “Workbench” information in the package list); the automatic sync does not; instead, the worker reads the workbench at its own interval (see Settings ). During a sync, the following applies:

SituationWhat oPBWeb does
The config server reports a new depot.The depot is created with the inherited stage (“as config server”) and Enabled yes.
The config server reports a known depot.The data from opsi and the installed products are updated. Stage, service URL and enabled state stay as you set them.
The config server no longer reports a depot.The depot is kept with its settings and marked as “no longer present”. It is locked for all depot actions.
A depot marked as “no longer present” is reported again.The marking disappears, and the previous settings still apply.
The reported depot already belongs to a different config server in oPBWeb (for example because the same server is set up under two URLs).The depot is skipped; the job log reports “Depot … already belongs to config server … and is skipped”.

Removing depots that have disappeared

A depot that the config server no longer reports stays in oPBWeb until you remove it. The detail view then shows “The config server no longer reports this depot. It is kept with its settings until an admin removes it.”

  1. Select the depot in the list.
  2. Click Remove in the header. The button only exists for depots that are no longer reported.
  3. Confirm the prompt “Remove depot depot01.example.local and its settings from oPBWeb? Nothing changes on the opsi server.”

The message “Depot removed” confirms this. You cannot remove depots that the config server still reports; set them to Enabled no instead. If you remove an entire config server, all its depots disappear with it (see Removing a config server ).

Additional administrator permissions

Besides the depot settings, you have some permissions in daily work that other roles lack:

System Status

Monitor services, analyze database and object storage, browse the bucket and clean up objects that are no longer used

Role: Administrator

Overview

The System status area shows whether all oPBWeb services are running and gives administrators insight into how the database and object storage are used. Open it with the System status icon at the bottom of the activity bar.

All roles see the services table. Only administrators see the Database, Object storage (with Clean up …) and Bucket contents sections.

Checking services

System status with the services table

In the toolbar, a badge summarizes the state: “All services reachable”, “At least one service is not reachable” or “API not reachable”. Next to it, you see “As of HH:MM:SS”. The table refreshes itself every ten seconds; Refresh reloads it immediately.

The texts in the Details column come from the server and follow the interface language.

ServiceWhat is checkedTypical content of Details
DatabaseConnection to MariaDBVersion and schema revision
RedisConnection to Redis (job queue)Redis version
Object storageWhether the bucket existsBucket name or “Bucket ‘…’ is missing”
WorkerHeartbeat of the worker that runs all jobs“Version …, sign of life n s ago”; error on “no sign of life” or if the last one is older than 90 seconds
opsi serverResult of the last automatic check of all config serversone entry per config server, “Name: opsi version · user@URL · depots · CA valid until …”, separated by “|”; “no config server configured” if there is none

The Status column shows OK or Error, Duration the response time of the check in milliseconds.

The opsi server row is set to Error as soon as one of the config servers is not reachable, serves a new CA certificate or its CA expires in less than 60 days, even if all others are fine. The entry of the affected server names the reason, for example “Server delivers a new CA certificate, please accept it under Depots”. What to do then is described in Config servers . If it shows “not checked yet”, the worker has not completed a check yet; the result arrives after five minutes at the latest.

Storage usage

The Database and Object storage sections are loaded when you open the page and with Refresh, not every ten seconds.

“Database” and “Object storage” sections

Database

Above the table, you see the total size, for example “48 MB in 21 tables”. The table lists every database table, largest first:

ColumnContent
TableName of the table
RowsNumber of records, counted exactly
DataSpace used by the data
IndexSpace used by the indexes
SizeData and index combined
ShareShare of the total size as a bar and a percentage

The sizes come from MariaDB statistics, which are updated with a delay. After larger changes, they are therefore not quite exact for a while.

Object storage

The object storage holds the package files and build results. Above the table, you see “Bucket “packages”: 4.8 GB in 1,523 objects”. The table splits the content into areas:

AreaContent
Package files (blobs/)Contents of all files of all package versions. Each content is stored only once, even if many versions contain the same file.
Build results (artifacts/)Built .opsi files with .md5 and .zsync
Uploads (temporary) (uploads/)Uploaded files that are still being processed
Downloads (temporary) (downloads/)Files prepared for a download from a depot
Bucket root (/)Objects outside these areas

oPBWeb automatically deletes uploads and downloads older than 24 hours every night.

Below the table, up to three figures are shown:

Browsing the bucket contents

Under Bucket contents, you can browse the object storage like a file tree. The browser is read-only: you can view and download objects, but not change or delete anything.

Bucket contents in a folder under blobs/ with the “Used by” column

  1. Click a folder to open it. Use the path bar above the table (starting with /) or the “‹ up one level” row to go back.
  2. Narrow down the list with the Filter field. ⟳ reloads the folder.
  3. To download, click ↓ at the end of the row or double-click the row.

The table shows Name, Size and Modified. In the blobs/ and artifacts/ areas, there is an additional Used by column:

The objects under blobs/ are named after the SHA-256 hash of their content, not after the file name in the package. The Used by column shows which file is behind them.

Cleaning up object storage

When versions or files are deleted, their contents initially remain in the object storage. With Clean up …, you remove package files (blobs/) and build results (artifacts/) that nothing uses any more. Cleanup works in two steps: a dry run determines what would be deleted, and deletion only happens after you confirm.

  1. In the Object storage section, click Clean up …. A dry run starts as a job; the button shows “Running …”.
  2. If the dry run finds nothing, “Nothing to clean up” or “Nothing to clean up, 5 unused objects are younger than 24 hours” appears next to the button. You are done.
  3. Otherwise, the Clean up object storage dialog opens. It shows:
    • the total number and size, for example “The dry run found 37 unused objects (1.2 GB).”
    • number and size per area
    • a list of examples; the full list is in the job log under Jobs
    • how many unused objects are younger than 24 hours and are kept
  4. Check the information and click Delete 37 objects. Cancel closes the dialog without deleting anything.
  5. The deletion run starts as a second job. Afterwards, the button shows, for example, “37 objects deleted, 1.2 GB freed”.

Several safety rules apply to cleanup:

The confirmed deletion run appears in the Audit log as storage.cleanup.