User Guide

Create, edit, build and distribute packages

Roles: Viewer, Packager, Releaser, Administrator

Overview

The user guide describes your daily work with oPBWeb: creating or importing packages, editing control data and scripts, building packages and distributing them to the depots of your opsi config servers, from the test stage through to production. It also covers the Snippets, Depots and Jobs areas and the settings for your own account.

What you can use depends on your role. oPBWeb hides or disables buttons your role does not allow. The server checks every action as well.

Roles

The roles build on each other: each role has all permissions of the role before it. You can see your role in the avatar menu at the top right, below your name.

RoleWhat you can do
ViewerView everything except Users and roles and Settings: package list, package editor (read only), source, snippets, jobs, depots, system status. Download built .opsi and .md5 files.
PackagerAdditionally create, import and edit packages, build, create new versions, delete versions, maintain your own snippets, sync depots, compare with the workbench. Install, uninstall and promote packages on depots of the Test and Staging stages.
ReleaserAdditionally install, uninstall and promote packages on depots of the Production stage.
AdministratorAdditionally users, config servers, settings, stages of config servers and depots, global snippets and storage cleanup. See Functional Administration .

Depot stages

oPBWeb can manage several opsi config servers. Each config server has a stage: Production, Staging or Test. Its depots inherit this stage unless an administrator sets a stage of their own for a depot; new config servers start in Production. The stage decides who may install, uninstall, promote packages, unlock locked products and delete repository files on the depot:

StageRequired role
TestPackager or higher
StagingPackager or higher
ProductionReleaser or higher

In the install dialog, depots your role is not sufficient for are marked “requires releaser role” and cannot be selected. With Promote … you take a tested version unchanged from one stage to the next, see Promoting to another stage .

Package lifecycle

Every package version is either Draft or Released:

  1. Draft: A new, imported or copied version is a draft. You can edit it as you like.
  2. Build: Build creates the .opsi file. The version stays a draft, and you can rebuild it as often as you like. If you change something afterwards, oPBWeb shows “changed since build”.
  3. Installing releases: With Install … you distribute the current build to depots. This releases the version and makes it read-only.
  4. Promote: With Promote … you take the tested, released version (the same build) to the depots of the next stage, for example from Test to Staging and then to Production.
  5. Continue working: To make changes, create a New version (editable copy with a new version number) or set the version Back to draft (same version number).

For details, see Build and deploy .

Chapters

  • Getting Started – sign-in, interface layout, search
  • Packages – package list, new packages, import, meta packages
  • Package Editor – control data, dependencies, properties, changelog
  • Package Files – file tree, upload, MSI information, structure
  • Script Editor – edit opsi-script with completion, help and checks
  • Build and Deploy – build, install, uninstall, release, promote to other stages
  • Snippets – create, insert and import text snippets
  • Depots – config servers and depots, installed products, files, repository, comparison
  • Jobs – follow running and finished jobs
  • Account and Language – default language, password, sign-out

Getting Started

Sign in, the interface layout and fast navigation with the search

Roles: Viewer, Packager, Releaser, Administrator

Overview

This chapter shows you how to sign in, how the oPBWeb interface is laid out and how to use the search to jump quickly to packages, files and commands. At the end you find a short overview of the roles and the package lifecycle.

Signing in

  1. Open oPBWeb in your browser. Without a valid session, you land on the sign-in page.
  2. Enter your User name and Password.
  3. Click Sign in.

After signing in, the package list opens, or the page you originally wanted to open. On the sign-in page you can already switch the language (DE/EN) and light/dark mode in the top corner.

Your session lasts up to seven days unless you sign out. You sign out via the avatar menu, see Account and Language .

Interface layout

The interface is laid out like a development environment: the top bar at the top, the navigation bar on the left, the work area in the middle and the status bar at the bottom.

oPBWeb interface with top bar, navigation bar, package list and status bar

Top bar

From left to right you find:

ElementFunction
☰Shows or hides the labels of the navigation bar (tooltip “Expand/collapse menu labels”).
oPBWeb logoTakes you back to the package list.
TitleShows where you are, in the package editor for example “Packages › firefox”.
Search field “Package, file or command …”Opens the search (shortcut Ctrl K, on a Mac ⌘ K).
Book iconOpens this manual in a new tab (Manual (new tab)), in the current interface language.
DE / ENSwitches the language for this session. The next time you sign in, your default language applies again.
Moon iconSwitches between light and dark theme (Toggle light or dark). As long as you choose nothing, oPBWeb follows your operating system setting.
AvatarShows your initials. The menu contains your name and role, Default language, My account (account data and syntax colors of the editor ), Change password and Sign out.

Use the navigation bar on the left to switch between areas:

AreaContent
PackagesList of all packages with details, start page after signing in
Package editorOpens the package you edited last
SnippetsText snippets for opsi-script
JobsAll jobs with live log; a counter shows your running jobs
DepotsConfig servers and their depots, installed products, files, repository
System status (bottom)Availability of the services
Users and roles, Settings (bottom)Visible to administrators only

Without labels, the bar shows only icons; hover over an icon to see its name as a tooltip.

Status bar

On the left, the status bar shows the frontend and backend versions. If the server cannot be reached, it shows “Backend not connected”.

Next to it, an orange notice appears when something needs to be done on a config server, for example “No config server configured”, “Config server 1: new CA certificate” or “Config server 1: CA expires in 30 days”. For administrators, the notice leads to the Depots view. On the right you see the progress of the jobs you started in this browser tab. Clicking one opens the job in the Jobs area.

Resizing panes

Many views are split into panes, for example the package list and the package details. You can move the dividers:

oPBWeb remembers the widths in your browser.

Search

The search lets you jump to packages, files and commands with the keyboard, without clicking.

  1. Press Ctrl K (on a Mac ⌘ K) or click the search field “Package, file or command …”.
  2. Type a few letters.
  3. Select a result with the arrow keys ↑ and ↓ and press Enter. Press Esc to close the search.

Open search with results in the Packages and Commands groups

Results are sorted into groups, at most 14 at a time:

GroupContent
Files in packageFiles of the package currently open (only when a package is open). Selecting a result opens the file in the editor.
PackagesPackages by product ID, with version and name as a hint
CommandsThe areas (Packages, Package editor, Snippets …), My jobs and Toggle light or dark

Exact matches come before matches at the start of a word, followed by matches anywhere in the name. If none of these match, the search falls back to fuzzy matching (the letters in this order, gaps allowed).

Roles at a glance

Your role determines what you may do in oPBWeb:

RoleIn short
Viewerread only
Packageredit and build packages, install on test and staging depots
Releaseralso deploy to production depots
Administratoralso users, servers and settings

The full table is in the user guide overview .

The lifecycle in one picture

Draft ──Build (any number of times)──► “built”
   ▲                                     │ Install …
   │                                     ▼
   └────── Back to draft ────────── Released (read-only)
                                         │ New version
                                         ▼
                                   new draft (copy)

You can edit and build a draft. Only installing on a depot releases the version. The details are described in Build and Deploy .

Packages

Package list, creating new packages, importing .opsi files and workbench folders, creating meta packages

Roles: Viewer, Packager, Releaser, Administrator

Overview

The Packages area is the start page of oPBWeb. Here you see all packages with their latest version, check in the package details on which depots they are installed, and create new packages. As a viewer you can see the list and the details; creating, importing and all changing actions require at least the Packager role.

The package list

Package list with status filters, table and package details on the right

The table shows the latest version of each package:

ColumnContent
Product IDUnique identifier of the product
NameDisplay name
VersionProduct version and package version, for example 1.0-3
Typelocalboot or netboot
FormatFormat of the control file: INI or TOML
StatusDraft or Released
Changed by, ChangedWho last changed the version and when

A click selects a package and shows its details on the right. A double-click opens it in the Package Editor .

Filtering

If no package matches, “No package matches the filter.” appears.

Package details

The right-hand pane shows for the selected package:

Distribution

Detail pane of a package with the grouped distribution and the Workbench section

The Distribution table groups the depots by config server. The header row of a server tells you on how many of its depots the package is installed (“1 of 3 installed”). Below it, each depot shows its Stage and the version Installed:

Workbench

The Workbench section shows in which project folders of the workbenches the package lies: Config server, Project folder and Version. If the version differs from the latest one in oPBWeb, it is marked orange. If the package is not on any workbench, the section says “Not on any workbench.”

oPBWeb does not read the workbench every time you open a package; it remembers what it saw last. The information is refreshed

The “As of:” line below names, per config server, when its workbench was last read completely, or “never read”. If you changed the workbench directly on the server, sync first.

Building, installing and uninstalling are described in Build and Deploy . To take several packages at once from one stage to the next, use Promote … in the toolbar of the package list, see Promoting to another stage .

Creating a new package

Roles: Packager, Releaser, Administrator

  1. In the package list, click New package.

    New package dialog with product ID, name, product version and package version

  2. Fill in the fields:

    • Product ID (required): only lowercase letters, digits, period, hyphen and underscore. The first character must be a lowercase letter or a digit, at most 128 characters in total. Example: firefox-esr.
    • Name: display name. If you leave it empty, oPBWeb uses the product ID.
    • Product version (required): version of the software, prefilled from the settings (default 1.0).
    • Package version (required): version of the package, prefilled from the settings (default 1).
  3. Click Create. As long as the product ID is invalid, the button stays disabled.

oPBWeb creates the package as a draft and opens it in the package editor. The new package already contains a setup and an uninstall script as templates (CLIENT_DATA/setup.opsiscript, CLIENT_DATA/uninstall.opsiscript) and an empty SERVER_DATA/ folder. Priority, control format and changelog location come from the settings for new packages .

Importing .opsi files

Roles: Packager, Releaser, Administrator

You take over existing packages by importing their .opsi files. Every imported version becomes a draft.

  1. Click Import. The “Import packages” dialog opens.

    Import packages dialog with two selected .opsi files

  2. Drag one or more .opsi files into the “Drop .opsi files here or choose them” area or click Choose files. Other file types and files selected twice are ignored.

  3. Optional: Enable Overwrite an existing draft with the same version if an existing version should be replaced.

  4. Click Start import.

oPBWeb uploads and imports the files one after the other. Each row shows its state: “ready”, “uploading”, “importing”, “imported” or “failed”. Below the list, the log of all imports runs in one shared field. While the import is running, Close is disabled.

During the import, oPBWeb stores the control data and the changelog in its database. The format of the control file (INI or TOML) and the changelog location are preserved. Old control-*.bak backups of the opsiPackageBuilder are not imported; the job log states how many were skipped.

Importing from the workbench

Roles: Packager, Releaser, Administrator

If package sources are stored as project folders in the workbench of a config server, you can take them over directly – individually, several or all at once.

“Import from the workbench” dialog with the config server choice and the state of each project

  1. Click Workbench …. The “Import from the workbench” dialog opens.

  2. At the top, under Config server, choose the server whose workbench you want to read. The list shows each server with name and stage. oPBWeb remembers your choice in this browser; without an earlier choice, the first server of the Test stage is preset, otherwise the first server. The dialog reads the workbench automatically (“Reading workbench …”), also after each change of server.

  3. Check the table. It shows Project folder, product ID, Version, Format and State:

    StateMeaning
    “new package”The product ID does not exist in oPBWeb yet.
    “new version”The package exists, but this version does not yet.
    “draft exists”The version already exists as a draft.
    “released exists”The version already exists and is released.
    “archived”The package is archived and cannot be imported.

    Folders without an OPSI folder or with an unreadable control file show the reason in the Format column and have no checkbox. Use the filter field to narrow down the list.

  4. Select the checkboxes of the project folders you want to import. The checkbox in the table header selects all, Select all new selects all folders whose version does not exist in oPBWeb yet.

  5. Under Existing versions, choose what happens with folders whose version already exists:

    • “skip” (default): The folder is not imported.
    • “overwrite drafts”: An existing draft is replaced. Released versions are skipped.
    • “import as next package version”: oPBWeb creates the version with the next free package version (highest numeric package version of this product version + 1).
  6. Click Import selected (n).

The import runs as a single job “Import from workbench (server), projects: n” and processes the folders one after the other. You see the progress as “Importing … 40 %”. If you close the dialog, the job keeps running. If a folder fails, oPBWeb continues with the others.

Afterwards, each row shows its result: “imported as 1.0-2”, “skipped” or “failed” (the tooltip shows the reason). At the bottom there is a summary such as “3 imported, 1 skipped, 0 failed”. The job log under Jobs contains one line per project.

Only the OPSI, CLIENT_DATA and SERVER_DATA folders are imported; other content of the project folders is left alone. Rescan refreshes the list. The import never overwrites released versions.

You can also import individual folders under Depots on the Files tab with Import into oPBWeb, see Depots . If an imported version was later changed directly on the workbench, bring the changes over with Compare with workbench … in the package editor, see Package Editor .

Hand-off from opsi-setup-detector

Roles: Packager, Releaser, Administrator

opsi-setup-detector can start the old opsiPackageBuilder after creating the product files. With the oPBWeb launcher, oPBWeb opens in the browser instead and asks whether you want to import the new workbench folder.

Setting up the launcher

  1. Download the launcher for your system: in the “Import from the workbench” dialog via Download launcher for opsi-setup-detector, or directly under /downloads/ of your oPBWeb address. There is one zip file each for Windows, macOS and Linux (amd64 and arm64).

  2. Unpack the file. It is called opsipackagebuilder.exe (Windows) or opsipackagebuilder. Do not rename it: opsi-setup-detector only accepts this name.

  3. Put it where opsi-setup-detector finds it, or enter its path in the opsi-setup-detector configuration under PathToOpsiPackageBuilder:

    SystemDefault path
    WindowsC:\Program Files (x86)\opsi PackageBuilderNG\opsipackagebuilder.exe
    macOS/Applications/opsiPackageBuilder.app/Contents/MacOS/opsipackagebuilder
    Linux/usr/bin/opsipackagebuilder
  4. Store the oPBWeb address once:

    opsipackagebuilder --set-url https://opbweb.example.org
    

    Alternatively, create a file opb-launcher.conf next to the launcher with the line url = https://opbweb.example.org (applies to all users of the computer) or set the environment variable OPBWEB_URL.

  5. If opsi-setup-detector works with a mapped drive (for example W:\) instead of a UNC path, also store the config server of this workbench:

    opsipackagebuilder --set-server opsi-test.example.org
    

    Alternatively, add the line server = opsi-test.example.org to opb-launcher.conf or set the environment variable OPBWEB_SERVER.

opsi-setup-detector and oPBWeb must use the same workbench: opsi-setup-detector writes to the workbench share of a config server, and this server must be set up in oPBWeb. The launcher tells oPBWeb which config server is meant: for a UNC path like \\opsi-test.example.org\opsi_workbench\firefox it is the host name from the path, otherwise the server stored with --set-server.

Using the hand-off

  1. In opsi-setup-detector, choose the mode create opsi product files and start the interactive PackageBuilder and create the product.

  2. oPBWeb opens in the browser. If you are not signed in, sign in first.

  3. The “Hand-off from opsi-setup-detector” dialog reads the workbench folder. If several config servers are set up, Config server is preset to the server the launcher passed on (host name or short name). If oPBWeb does not know this server, a note appears and the last selected server is preset; then choose the matching server. The dialog then asks depending on the situation:

    SituationChoice
    The package does not exist in oPBWeb yetImport or Cancel
    The package exists, the version does notCreate new version or Cancel
    The version already existsCreate as … (next free package version, for example 1.0-3 instead of 1.0-2), Overwrite draft (only if the existing version is a draft) or Cancel
    The package is archivedCancel only; restore the package first
  4. After the import, the new version opens in the editor.

The opsi-setup-detector modes build and build + install do not need the launcher: from opsi 4.2.0.311, opsi-setup-detector builds directly via the opsi service. If it still calls the launcher to build, the launcher reports an error, because oPBWeb does not build from the command line.

Creating a meta package

Roles: Packager, Releaser, Administrator

A meta package installs a set of other products. It contains no program itself, only dependencies: each selected product becomes a dependency “setup, installed, before”. The script of the meta package does nothing.

  1. Click Meta package …. The “New meta package” dialog opens.

    New meta package dialog with product selection on the right and order on the left

  2. Fill in the fields on the left:

    • Product ID: prefilled with the prefix from the settings (default meta-). The same rules apply as for a new package.
    • Name, Description: optional.
    • Product version, Package version: prefilled from the settings.
  3. Select the products on the right. Use “Filter products …” to narrow down the list. You can choose from all packages in oPBWeb and all products found on the depots; products that exist only on a depot are marked “depot only”.

  4. Under Order, use ↑ and ↓ to put the products in the desired installation order. × removes a product from the selection.

  5. Click Create. The button is enabled as soon as the product ID is valid and at least one product is selected.

oPBWeb opens the new meta package in the editor. It gets the priority and the setup script name from the settings (default: priority −100, script dummy.opsiscript) and no uninstall script. A meta package cannot contain itself; at most 200 products are possible.

Deleting a version

Roles: Packager, Releaser, Administrator

You delete a single version in the package editor:

  1. Open the version in the Package Editor and select the Product section.
  2. At the bottom, click Delete this version.
  3. Confirm the prompt “Delete version … permanently?”.

Deleting is also possible for released versions and cannot be undone. If the version is installed on a production depot, only a Releaser may delete it (see stage rule ). The built .opsi file of the version is deleted as well. If it is the last version, the whole package disappears from the list. oPBWeb then opens another version of the package or the package list.

Archiving a package

Roles: Packager, Releaser, Administrator

You archive a package that you no longer need but want to keep:

  1. Select the package in the package list.
  2. In the details, under Package, click Archive.
  3. Confirm the prompt “Archive …? The package disappears from the list and becomes read-only, the built .opsi files are deleted.”

An archived package

If jobs are running or waiting for the package, oPBWeb refuses to archive it. Products installed on the depots are kept; you can still remove them in the details with Uninstall ….

To bring it back, select the package under Archive and click Restore. The versions keep their status. Build the package again before installing it next time.

Deleting a package

Roles: Packager, Releaser, Administrator

You delete a whole package with all its versions in the package list, even if it is archived:

  1. Select the package.
  2. In the details, under Package, click Delete package ….
  3. Type the product ID to confirm and click Delete permanently. The button is only enabled when your input matches exactly.

All versions, their files and build results are deleted. This cannot be undone. If any version of the product is installed on a production depot, only a Releaser may delete the package.

Package Editor

Edit the control data of a package: product, dependencies, properties, changelog and source

Roles: Viewer, Packager, Releaser, Administrator

Overview

In the package editor you edit a package version: the control data (product information, scripts, dependencies, properties), the changelog and the files of the package. This chapter describes the control tab. Working with files and scripts is described in Package Files and Script Editor .

You can only edit drafts, and only with at least the Packager role. As a viewer and for released versions, all fields are locked; you can still view everything.

Opening the editor

You open the editor in one of these ways:

Layout

The editor is split into three areas:

Toolbar of the control tab

ElementFunction
Edit | SourceSwitches between the form and the generated source.
Product | Dependencies | Properties | ChangelogSections of the form. Dependencies and Properties show their count, a ● marks unsaved changes.
Version selectorAll versions of the package with status (for example “1.0-2 · Draft”). Selecting one switches to that version.
“built” / “changed since build”State of the last build (only for drafts with a build).
BuildCreates the .opsi file. Disabled while there are unsaved changes.
SaveSaves all changed sections and changed open files. Only enabled if there are changes.
Download .opsiDownloads the last build (only if one exists).
Install …Distributes the build to depots.
⋯ (More actions)New version, Export to workbench …, Compare with workbench …, Download .opsi, Download .md5, Uninstall …

Build, Save and Install … are only visible with at least the Packager role. Building, installing and exporting are described in Build and Deploy . Export to workbench … asks under Config server which workbench to write to. The comparison with the workbench is described in Comparing with the workbench .

Saving and unsaved changes

Changes in the form only reach the server when you click Save. After saving, oPBWeb briefly shows “Saved”.

If you try to leave the editor or the version with unsaved changes, oPBWeb asks: “There are unsaved changes. Leave anyway?”. The browser also warns you when you close the tab.

Product section

Product section with product information, scripts per action and package format

Product

FieldDescription
Product IDRead only. The product ID cannot be changed after the package is created.
NameDisplay name of the product
Typelocalboot or netboot
PriorityInteger from −100 to 100. Products with a higher priority run earlier on the client.
Product version, Package versionRead only. You get a different version number via New version.
License required“no”, “yes” or “not set”
Product classesOptional, several separated by commas
DescriptionDescription of the product
AdviceAdvice text for administrators in opsi

Scripts per action

For each action (setup, uninstall, update, always, once, custom, userLogin) you select the script. You can choose “—” (no script) and all script files under CLIENT_DATA/ with the extensions .opsiscript, .ins and .opsiinc.

If the control file refers to a script that does not exist, “(file missing)” is shown after it. Such a package cannot be built until you create the file or change the selection.

Package

FieldDescription
control format“INI (legacy)” generates OPSI/control, “TOML” generates OPSI/control.toml.
ChangelogWhere the changelog is stored: “changelog embedded” (as a [Changelog] section in the INI control file), “changelog.txt” or “changelog.md” in the OPSI/ folder. With TOML, “changelog embedded” is not possible.
Package dependenciesPackages that must be present on the depot, as a comma-separated list, optionally with a condition: for example opsi-script (>=4.12), mshotfix. Without a condition, >= applies.

If you change the format, the notice “Saving switches the package format. The source view shows the result beforehand.” appears. If the changelog is still set to “embedded” when switching to TOML, oPBWeb stores it as changelog.txt when saving.

Delete this version

Below the Product section, as a packager you find the Delete this version button. It also works for released versions. Details are in Packages .

Dependencies section

Here you define which other products must be installed before or after this product.

Dependencies section of a meta package with three entries

  1. Click + Dependency. A new row with “setup / setup / before” appears.
  2. Fill in the columns:
    • For action: the action of this product for which the dependency applies (setup, uninstall, update, always, once, custom, userLogin).
    • Required product: product ID of the other product. Known product IDs are suggested as you type.
    • Required action: action that is set for the other product, or “—”.
    • Required status: installed, not_installed, unknown or “—”.
    • Order: before, after or “—”.
    • Version: optional, the required version.
  3. Click Save.

Each dependency needs either a required action or a required status. × at the end of a row removes a dependency.

Properties section

Properties are settings that opsi administrators can set per client or depot and that your scripts read.

Properties section with an expanded property and check result

Creating or editing a property

  1. Click + Property. oPBWeb creates a property property_<n> of type unicode and expands its editor. Clicking ▸ expands an existing property.
  2. Fill in the fields:
    • Name: letters, digits, _, . and -; each name may occur only once in the version.
    • Type: unicode (text) or bool (true/false).
    • For unicode: multi-value (several values can be selected at once) and editable (custom values allowed).
    • Description.
    • For unicode: values under “Values · click toggles default”. Type a value into “Add value …” and press Enter. Clicking a value marks it as default or removes the mark, × removes it.
    • For bool: Default true or false.
  3. Click Save.

Check scripts

Check scripts searches all scripts of the package for GetProductProperty, GetConfidentialProductProperty and GetProductPropertyList and compares the properties read with the ones defined:

Only the scripts of this package are checked, not the uib libraries on the client. You can run the check as a viewer too; Create requires a draft and the Packager role.

Changelog section

A label next to the heading shows where the changelog is stored (OPSI/changelog.md, OPSI/changelog.txt or OPSI/control [Changelog]). Next to it you switch between Entries and Free text.

Changelog section in the Entries view with an expanded entry

Entries

If the changelog is in standard form, oPBWeb opens it as a list of entries. Standard form means:

Clicking a row expands the entry. There you change version, status and urgency (Debian style only), text, author, email and date; Now sets the current date. Use ↑ and ↓ to move an entry, × deletes it after a confirmation. Save with Save in the toolbar. oPBWeb writes unchanged entries back character by character, so a change only affects the lines of the changed entry.

Free text

In free text you edit the changelog directly in the text editor; save with Save or Ctrl S. If the text deviates from the standard form, the note “The changelog is not in standard form. It can only be edited as free text.” appears above it and Entries is disabled. As soon as the text is in standard form again, you can switch back.

Adding an entry

  1. Click + Entry for … (the button name contains the current version).
  2. In the “New changelog entry” dialog, enter your changes under Changes (one per line).
  3. For txt and embedded changelogs: select Status (testing, stable, unstable; default testing) and Urgency (low, medium, high, critical; default low).
  4. Click Add.

The entry is inserted at the top, with your name, your email address and the current date. If you have no email address on file, oPBWeb uses username@<mail domain> from the settings. In the Entries view the new entry is then expanded and is stored with Save; in Free text oPBWeb saves it immediately.

Comparing with the workbench

Roles: Packager, Releaser, Administrator

Sometimes someone changes a package directly in the workbench of a config server, for example a script, and rebuilds it there. With ⋯ › Compare with workbench … you bring such changes into the version in oPBWeb so that they are not lost.

Comparison with the workbench with the difference of a script file expanded

The comparison works in one direction only, from the workbench to oPBWeb, and offers only what is newer on the workbench. It does not overwrite files changed later in oPBWeb and does not delete files missing on the workbench.

  1. Open the version in the editor and choose ⋯ › Compare with workbench …. The dialog “Compare with the workbench: firefox 128.0-1” opens and compares right away.

  2. Check the settings at the top and click Compare after a change:

    • Config server: the server whose workbench is compared.
    • Project folder: preset with the folder the version was imported from, otherwise with the product ID.
    • The Differences only chip (active by default) hides identical files.
  3. Check the table with the columns File, State, Workbench changed and oPBWeb changed (time of the last change):

    StateMeaningCan be taken over
    “new on the workbench”The file only exists on the workbench.yes, preselected
    “newer on the workbench”The file was changed on the workbench later than in oPBWeb.yes, preselected
    “newer in oPBWeb”The file was changed later in oPBWeb.no, never overwritten
    “only in oPBWeb”The file is missing on the workbench.no, never deleted
    “same”no difference–

    Clicking a row with ▸ shows the differences: red is the state in oPBWeb, green the state on the workbench. At the bottom there is a summary such as “Can be taken over: 2 · same: 14”.

  4. Clear the checkboxes of everything you do not want to take over and click Take over (n).

After taking over, oPBWeb reports “Changes taken over from the workbench”, compares again and reloads the version in the editor. Only the OPSI/, CLIENT_DATA/ and SERVER_DATA/ folders are compared; old control-*.bak backups are ignored. Comparing and taking over run as jobs (“Compare with workbench (server): …”, “Take over from workbench (server): …”).

Control data

The control file and the changelog file appear together as one row “Control data (control, changelog.txt)”. Here oPBWeb compares the data, not the text: different formatting, such as different spacing, does not count as a difference. If you take over this row, oPBWeb replaces the product data, dependencies, properties and changelog of the version with the state on the workbench.

Released versions

You can only take changes over into a draft. For a released version, the dialog shows the differences but reports “This version is released. To take changes over, create a new version first and compare that one.” Then create a new version with New version and compare that one.

Source view

Source shows the control file and the changelog exactly as they are generated when building. The view is read-only and available to all roles.

Source view with outline on the left and INI/TOML switch

The source view shows the saved state. Unsaved changes in the form appear there only after saving.

Released versions

As soon as a version has been installed on a depot, it is released and read-only. The editor then shows at the top:

Version … is released (installed) and read-only. Create a new version or set it back to draft to change it.

In this state:

ActionEffect
New versionCreates an editable copy with all data and files. The same product version and package version +1 are prefilled (for a non-numeric package version, .1 is appended). The released version stays unchanged.
Back to draftTurns exactly this version back into a draft without changing the version number. If it is installed on a production depot, only a Releaser may do this.

Package Files

File tree, upload, context menu, MSI information and the include structure of the scripts.

Role: Packager

Overview

Every package version consists of the three areas OPSI/, CLIENT_DATA/ and SERVER_DATA/. In the package editor you see them on the left under the Files tab. There you create files and folders, upload installers, rename, move and delete. The Structure tab next to it shows which scripts include which other scripts.

You can only change files in a version with the status Draft and with at least the Packager role. In released versions and with the Viewer role, the file tree is read-only: opening and downloading still work, all changing entries in the context menu are grayed out.

The file tree

The three areas are always at the top of the tree. OPSI/ and CLIENT_DATA/ are expanded when you open the package. An area without content is labeled “empty”. For binary files, the file size is shown after the name.

You can neither rename nor delete the areas themselves.

The context menu

Right-click a file or folder to open the context menu.

File tree with open context menu

EntryEffect
OpenOpens the file as a tab (files only).
DownloadDownloads the file to your computer (files only).
MSI informationShows the properties of a Windows installer (.msi files only).
New fileCreates a file in the selected folder. neu.opsiscript is suggested.
New folderCreates a subfolder.
Upload files …Opens your browser’s file picker; the files go into the selected folder.
Rename / moveAsks for the New path. If you specify a different folder, the file is moved there. This also works for whole folders.
DeleteAfter a confirmation, deletes the file or the folder with its content.

When you right-click a file, New file, New folder and Upload files … refer to the folder that contains the file.

Creating a new file

  1. Right-click the target folder, e.g. CLIENT_DATA/.
  2. Select New file.
  3. In the “Name in CLIENT_DATA/” field, enter the file name, e.g. install.opsiinc.
  4. Confirm the dialog. The file is created and appears in the tree.

Uploading files

There are two ways to add files to the package:

During the upload, a progress bar shows the status. Afterwards oPBWeb reports “3 file(s) uploaded”. An existing file with the same path is replaced without confirmation.

Executable files

The file tree does not show whether a file is executable (e.g. a shell script on Linux). oPBWeb takes over the flag when importing an .opsi package and sets it again when building. When importing from the workbench, .sh and .py files in CLIENT_DATA/ are automatically marked as executable.

MSI information

For .msi files, oPBWeb reads the most important properties directly from the installer. This is handy for copying the ProductCode and version into your script.

  1. Right-click the .msi file.
  2. Select MSI information. The “MSI: setup.msi” dialog briefly shows “Reading MSI file …” and then a table with, among others, ProductName, ProductVersion, ProductCode, UpgradeCode, Manufacturer and ProductLanguage.
  3. Click Copy next to a value to put it on the clipboard. The button briefly shows “copied”.
  4. Show all properties (24) shows the installer’s complete property table, Show less hides it again.

MSI information dialog with ProductCode and Copy buttons

The Structure tab

The Structure tab shows how the scripts of the package are connected. The starting points are the scripts entered in the control for the individual actions (setup, uninstall, update …).

Structure tab with action scripts and included files

If no action scripts are set in the control, “No action scripts defined in the control.” appears.

Script Editor

Edit opsi scripts and other text files of the package: highlighting, completion, diagnostics, help and snippets.

Role: Packager

Overview

To open a text file of the package, click it in the file tree (see Package files ). It opens as a separate tab next to the control tab in the script editor. For opsi scripts, the editor offers completion, error checking, command help and snippets. All other text formats get syntax highlighting. You set the highlighting colors per file type under My account .

You can only edit files in a version with the status Draft and with at least the Packager role. Otherwise the editor is read-only; reading, searching, help and copying text still work.

Script editor with an open opsi script and the Snippets side pane

Layout

Line endings are preserved when you save: a file with Windows line endings (CRLF) stays a CRLF file.

Supported languages

The editor detects the language from the file name.

LanguageFiles
opsi-script.opsiscript, .opsiinc, .ins, .opsifunc
Shell / Batchpreinst, postinst, .sh, .cmd, .bat
Inno Setup.iss, .isl
AutoIt.au3
PowerShell.ps1, .psm1, .psd1
INI and similar.ini, .inf, .reg, .cfg, .conf, .properties, .toml, .desktop
XML.xml, .xsd, .xsl, .manifest, .config, .plist, .svg
YAML.yml, .yaml
JSON.json
Python.py

For opsi-script, the editor knows the language scope from the opsi-script manual 4.3: statements, built-in functions, section types, secondary section commands and constants. It also knows the functions of the uib libraries that ship with opsi-script (for example uib_exitcode.opsiscript, uib_strlistutils.opsiscript, uib_backend.opsiscript, osd-lib.opsiscript).

All other features – completion, diagnostics, help, context menu, snippets and side pane – are available for opsi scripts only.

Completion

As you type, the editor suggests matching entries. Press Ctrl+Space to open the list manually at any time. Use the arrow keys to choose an entry and Enter to accept it.

The editor suggests:

When you accept a function, the editor adds the parentheses and places the cursor inside them. Within the parentheses, a small tooltip shows the signature; the parameter you are currently typing is bold.

Command help

When you hover over a command, function, variable or constant, a tooltip appears:

The descriptions of commands, functions and constants are summaries from the German opsi-script manual and stay German in the English UI as well.

The detailed help is in the Help tab of the side pane: name, signature, description, category and origin (for example the library, or the file with line number). The tab always shows the help for the most recently requested command, even if you only hovered over it. Press F1 on the command or choose Command help in the context menu to switch the side pane straight to the Help tab.

Help side pane with the description of an opsi-script command

If the editor finds no entry, the tab shows “No help found for “Messagebox”.” The descriptions are summaries from the opsi-script manual 4.3 by uib GmbH (CC BY-SA 4.0).

Diagnostics

While you type, the editor checks the current file and marks issues in the text and in the left margin. Hover over a mark to see the message. The counters “2 errors” and “5 warnings” in the toolbar summarize the result.

Diagnostics in the editor with a highlighted warning

KindMessageMeaning
Error“Section [x] is not defined”The file calls a section that does not exist.
Hint“Section [x] is not defined in this file (possibly in an included file)”As above, but the section may come from an included file (for sub_ sections and files with includes).
Warning“Variable $x$ is declared but not used in this file”The variable is unnecessary.
Warning“Variable $x$ is set but not read in this file”The value of the variable is never used.

The context menu

Right-click in the text or press Shift+F10 to open the context menu. You can also use it with the keyboard: arrow keys, Enter or Space to run an entry, → to open the submenu, Esc to close.

EntryShortcut
Go to definitionF12
Select all occurrencesCtrl+Shift+L
Command helpF1
Show suggestionsCtrl+Space
Insert snippet ▸submenu by category
Create snippet from selection …–
CutCtrl+X
CopyCtrl+C
PasteCtrl+V
Toggle commentCtrl+Shift+C
Fold sectionCtrl+Shift+[
Fold allCtrl+Alt+[
Unfold allCtrl+Alt+]
Find/ReplaceCtrl+F

Entries that change the text are grayed out in read-only files. If your browser does not allow clipboard access, oPBWeb shows “No clipboard access – please use Ctrl+C/V.”

Keyboard shortcuts

On a Mac, use ⌘ instead of Ctrl and ⌥ instead of Alt.

ShortcutEffectFiles
Ctrl+SSave fileall
Ctrl+Z / Ctrl+YUndo / Redoall
Ctrl+FFind/Replace (bar at the top of the editor)all
F3 / Shift+F3next / previous matchall
Ctrl+/ or Ctrl+Shift+CToggle commentall
Tabindentall
Alt+drag with the mouserectangular selectionall
Ctrl+SpaceShow suggestionsopsi-script
F1Help for the command under the cursoropsi-script
F12 or Ctrl+clickGo to definitionopsi-script
Ctrl+Shift+Lselect all occurrencesopsi-script
Shift+F10open context menuopsi-script
Tab / Shift+Tabafter inserting a snippet, go to the next / previous placeholderopsi-script

The side pane

For opsi scripts, the side pane with four tabs sits to the right of the text. Click Hide tool pane in the tab toolbar to hide it and Show tool pane to show it again.

Snippets

Here you find all snippets you may use: the global ones and your own (badge “mine”). They are grouped by category; the “Filter snippets …” field narrows down the list. When you hover over a snippet, a preview of its first ten lines with highlighted placeholders appears at the bottom. Click a category to collapse or expand it.

To insert a snippet:

  1. Place the cursor where the snippet should go in the script.
  2. Double-click the snippet in the side pane, or move to it with the Tab key and press Enter. Alternatively, drag the snippet to the desired position in the text, choose it in the context menu under Insert snippet or accept it from the completion list.
  3. If the snippet contains placeholders of the form ${Name}, the first one is selected. Type over it and press Tab to jump to the next placeholder.

The Manage snippets link takes you to snippet management, see Snippets .

Variables

Click a variable or section to jump to its line.

Warnings

Warnings tab with the warnings and hints of the file, below them Go to definition

Lists all errors, warnings and hints of the file one below the other, errors first, with line number. The number on the tab gives their count. Clicking an entry jumps to the line. For sections that may be in another file, Go to definition below the message leads directly to the definition in another script of the package.

Help

Shows the detailed help for the most recently requested command, see Command help . If nothing has been requested yet, it shows “Press F1 on a command to show its help here.”

Creating a snippet from a selection

Turn code you need often into your own snippet directly in the editor.

  1. Select the text in the script.
  2. Right-click to open the context menu and choose Create snippet from selection ….
  3. In the “Snippet from selection” dialog, check the Name. It defaults to the first non-empty line of the selection (at most 60 characters).
  4. Choose a Category, or create one with New category and enter the Category name.
  5. Choose the Visibility: Only me or – as an administrator only – Global.
  6. Click Save. oPBWeb reports “Snippet saved”; the snippet is available in the side pane right away.

Package functions

Functions that you define with DefFunc in a script of the package are known to the editor in all scripts of the same package. They appear in completion and in the help, each with the file and line of the definition as their origin.

oPBWeb uses the comment lines directly above the DefFunc as the description. Comments in the style of the uib libraries with @Description and @Returns are evaluated:

; @Description Returns the installation path of the product
; @Returns path as string
DefFunc GetInstallDir(val $Arch$ : string) : string
  ...
EndFunc

The list of functions is updated as soon as you have saved a file.

Saving

Press Ctrl+S or click Save in the tab toolbar to save the file. oPBWeb confirms with “Saved”.

Unsaved changes are not lost without warning:

Build and Deploy

Build packages, install and uninstall them on depots, promote them to other stages, release versions, set them back to draft and create new versions.

Roles: Packager, Releaser

Overview

This chapter describes the path of a package version from draft to the depots: Build creates the .opsi file, Install … transfers it to one or more depots and releases the version in the process, Promote … takes a tested version unchanged to the depots of the next stage. You find all actions in the toolbar of the control tab in the package editor and in the ⋯ menu (More actions).

Building, installing on test and staging depots and the other actions in this chapter require at least the Packager role. Production depots require the Releaser role. With the Viewer role you can only download built packages.

The lifecycle of a version

Draft ──Build (any number of times)──► "built"
   ▲          change → "changed since build" → build again
   │
   │      Install … (only with a current build)
   │                     ▼
   └── Back to draft ── Released (read-only)
                              └── New version → new draft
StatusMeaning
DraftThe version can be edited and built any number of times.
ReleasedThe version has been installed and is read-only.

Building alone does not release a version. It is released only when you install it on a depot.

Building

  1. Open the version in the package editor and switch to the control tab.
  2. Save all changes – in the control and in all open files. As long as anything is unsaved, Build stays grayed out (“Please save all changes first.”).
  3. Click Build. The button shows “Building …”, and the log of the build job runs in the JOBS panel at the bottom.
  4. When the job is done, oPBWeb reports “Package built” or “Build failed”. The built badge appears next to the version selector.

Toolbar with the “built” badge and the Build and Install buttons

You can build a version with the status Draft as often as you like. Each build replaces the previous one; the version stays editable.

The “built” badge

The badge shows whether the last build still matches the current state of the version:

If there is no badge, the version has never been built.

When the build fails

The log in the JOBS panel (and under Jobs ) states the reason. Common causes:

MessageCause and remedy
“Script file (action) is missing in CLIENT_DATA.”The control lists a script for an action that does not exist. Create the file or correct the entry under Product › Scripts per action.
“The version was changed during the build. Please build again.”Someone saved while the build was running. Build again.
“A build is already running for this version.”Wait until the running build has finished.

Warnings in the log (no script for any action, no files in CLIENT_DATA/) do not abort the build, but they usually indicate an incomplete package.

Downloading the built package

As soon as a build exists, download it with Download .opsi in the toolbar. To get the checksum file, use ⋯ › Download .md5. Both are available to every role, including for released versions.

Installing

Install … transfers the build to the selected depots and installs it there. The button is only active if

  1. Click Install …. The dialog “Install: firefox 128.0-1” opens.

    Install dialog with depots, config server, stages and options

  2. Select the depots in the table. The table contains the depots of all config servers. For each depot you see:

    • Depot – the depot ID, for the depot on the config server itself with the addition “config server”,
    • Config server – the name of the config server the depot belongs to,
    • Stage – the effective stage Production, Staging or Test; italic if the depot inherits it from its config server,
    • Installed – the version installed there and the time of the last sync.

    The depots you installed on last time are preselected.

  3. Set the options if needed (see below).

  4. Check the counter “2 of 3 depots selected” and click Install.

  5. The dialog closes and the JOBS panel shows the log. At the end, oPBWeb reports “Job finished successfully” or “Job failed”.

The depots are processed one after the other. If a depot is busy with another job, the installation waits until it is free.

Unavailable depots in the dialog

Not every depot can be selected. The reason is shown in the last column:

HintMeaning
“requires releaser role”The depot has the Production stage, but you only have the Packager role. As a Packager you may deploy to test and staging depots.
“disabled”An administrator has disabled the depot.
“no longer present”The config server no longer reports the depot.

Depots inherit the stage of their config server; new config servers start with the Production stage. An administrator decides which servers and depots have the test or staging stage, see opsi server and Depot management . If you have selected at least one production depot, the dialog points this out with “At least one production depot is selected.”

If no depots are known at all, the dialog shows “No depots known. Please sync under “Depots”.” – see Depots .

Installation options

Released versions

After the installation, the version is released. The editor shows the notice “Version 128.0-1 is released (installed) and read-only. Create a new version or set it back to draft to change it.” with the file name and size of the build and the buttons New version and Back to draft. All forms, the file tree and the script editor are read-only.

Released version with the notice and the New version and Back to draft buttons

You can install a released version again at any time, for example on further depots. Install … is then the highlighted button.

Promoting to another stage

Roles: Packager, Releaser

Once a package works on the test depots, this action takes it unchanged to the depots of the next stage. Exactly the package installed on the depots of the source stage is promoted – the same build, not a new one. That is why only released versions can be promoted.

“Promote packages to another stage” dialog from Test to Staging

oPBWeb has one shared package inventory for all config servers. What is installed on which depot differs per server and comes from the last depot sync .

Typical workflow

  1. Develop on the test config server: import from the workbench, edit, build and install on the test depots. This releases the version.
  2. Test, then take the version from Test to Staging with Promote ….
  3. After testing on Staging, promote the version from Staging to Production. This requires the Releaser role.

Opening the dialog

Promoting packages

  1. At the top, choose From (source stage, default Test) to (target stage, default Staging). Source and target stage must differ.

  2. Under Target depots, check the depots you promote to. All enabled depots of the target stage on all config servers are offered. All depots you are allowed to change are preselected; production depots are locked without the Releaser role (“requires releaser role”).

  3. Check the package table:

    ColumnContent
    Product IDIdentifier of the product
    Version on … (e.g. Version on Test)the newest version installed on a depot of the source stage
    On the target depots“up to date everywhere” or “missing on 2 of 3”, plus the versions found on the target depots instead

    The Pending only chip (active by default, only in the dialog for all packages) hides packages that are already up to date on all target depots. All pending packages that can be promoted are preselected. Packages that can be promoted are listed first.

  4. Set the options if needed:

    • Request setup on all clients that have the product installed and Force installation, even if the product is locked – as for installing .
    • Also write to the workbench of the target config servers (existing project folders are overwritten) – additionally writes the version as a project folder into the workbench of each config server a target depot belongs to.
  5. Check the counter “Packages: 2 · target depots: 3” and click Promote (n).

oPBWeb starts one installation job per version and, if selected, one export job per version and target config server. It reports “Jobs started: 3”. Jobs for the same depot run one after the other. Follow the progress under Jobs .

Why can a package not be promoted?

Packages without a checkmark show the reason in the On the target depots column:

HintMeaning
“not in oPBWeb”The product only exists on the depots, not in oPBWeb.
“draft again in oPBWeb (no tested build)”The version was made editable again with Back to draft after testing. The tested build no longer exists. Build it and install it again on the source stage.
“archived”The package is archived.

If you have selected a production depot, the dialog points this out with “At least one production depot is selected.”

Uninstalling

Use ⋯ › Uninstall … to remove the product from depots.

  1. Open ⋯ and choose Uninstall …. The dialog “Uninstall: firefox” opens.
  2. All depots on which the product is installed are preselected. Depots without the product are unavailable with “not installed”; the stage rule applies as for installing.
  3. Check the options:
    • Delete files on the depot (default) – also removes the package files from the depot.
    • Force uninstall – uninstalls even if the product is locked.
  4. Click Uninstall. The log appears in the JOBS panel.

Uninstalling applies to the product, not to the version currently open. The status of the version in oPBWeb does not change.

Back to draft

Back to draft makes a released version editable again without changing the version number. This is useful if you spot an error but want to keep the version number.

  1. In the notice of the released version, click Back to draft.
  2. The dialog “Edit version 128.0-1 again” explains the consequences. If the version is already installed on depots, it lists them.
  3. Confirm with Back to draft. oPBWeb reports “The version can be edited again”.

As long as a job is queued or running for the version, Back to draft is not possible.

New version

New version creates an editable copy of the current version with all data and files. You find the action in the notice of a released version and in the ⋯ menu; it works for drafts and released versions.

  1. Click New version.
  2. Check Product version and Package version. The suggestion is the same product version with the package version increased by one; if the package version is not a plain number, .1 is appended.
  3. Click Create. The editor opens the new version with the status Draft.

Remember to add a changelog entry in the new version, see Package editor .

Exporting to the workbench

Use ⋯ › Export to workbench … to write the version as a project folder into the workbench of a config server, for example to continue working there with opsi-makepackage or other tools. This works for drafts and released versions.

  1. Open ⋯ and choose Export to workbench ….
  2. Under Config server, choose the server whose workbench you want to write to (name and stage; the last selected server is preset, otherwise the first server of the Test stage).
  3. Enter the Project folder. The suggestion is the product ID; / and \ are not allowed.
  4. If the folder already exists, select Overwrite existing folder (extra files in the package folders are deleted). Without this option, the export fails for an existing folder.
  5. Click Export. After the job, oPBWeb reports “Exported to the workbench”.

Only OPSI/, CLIENT_DATA/ and SERVER_DATA/ are written. Other content of the project folder is kept. After the export, the package list shows the project folder under Workbench . The opposite direction is described in Packages (Workbench …). Changes made directly on the workbench later can be brought back with Compare with workbench …, see Package editor .

Following the job output

Building, installing, uninstalling, promoting to other stages and exporting run as background jobs. You can keep working in the meantime.

Snippets

Create, organize, import and export reusable code blocks with placeholders.

Roles: Viewer, Packager, Releaser, Administrator

Overview

Snippets are text blocks for opsi-script that you insert in the script editor by double-click, autocompletion or the context menu. The Snippets view in the activity bar is where you manage them: create categories, write and test snippets, import and export files.

Viewers see all snippets but cannot change anything. From the Packager role on, you create your own snippets and maintain the shared categories.

Global and personal snippets

Every snippet has a Visibility:

VisibilityWho sees it?Who may change it?
Global (everyone)all usersadministrators only
Only meonly youonly you

In the list, the badge global or mine shows the visibility. Categories, by contrast, are shared by everyone: every Packager can create, rename and delete categories, and everyone sees the same category structure.

Layout of the view

Snippets view with category tree, editor and test area

The view has three columns. Drag the edge of the left and right columns to change their width.

Managing categories

Every snippet belongs to exactly one category. Before you can create the first snippet, at least one category must exist.

Creating and editing a snippet

Snippet in edit mode with placeholders and test area

  1. Click New snippet. A draft named “New snippet” with the text ; ${Kommentar} is created.
  2. Enter a meaningful Name and choose the Category.
  3. Choose the Visibility. As a Packager, only Only me is available; Global (everyone) is reserved for administrators.
  4. Optionally enter a Description. It appears later in the autocompletion of the script editor.
  5. Write the snippet text in the editor. It supports opsi-script highlighting; placeholders are highlighted in color.
  6. Click Save.

As long as there are unsaved changes, a dot next to the title indicates them. Revert restores the saved state. If you switch to another snippet with unsaved changes, oPBWeb asks “Discard unsaved changes?”.

Delete removes the snippet permanently after a confirmation.

Placeholders

Placeholders mark the spots you have to adjust after inserting. They have the form ${name}, for example:

; ${Kommentar}
Winbatch_${Sektionsname}

After inserting, press the Tab key to jump from placeholder to placeholder and type over each one.

Testing a snippet

In the TEST area, you try out the snippet before you use it in a real script:

  1. Place the cursor at the desired position in the test editor.
  2. Click Insert. The snippet is inserted exactly as in the script editor.
  3. Press Tab to step through the placeholders.
  4. Click Reset to restore the sample text in the test editor.

Creating a snippet from the script editor

You can also create a snippet directly from a script:

  1. Select the text in the script editor.
  2. Right-click to open the context menu and choose Create snippet from selection ….
  3. In the “Snippet from selection” dialog, check Name (prefilled with the first non-empty line), Category and Visibility. Use “New category” to create a new category right away if needed.
  4. Click Save.

How to insert snippets in the script editor is described in Script editor .

Importing snippets

oPBWeb reads two file formats:

To import:

  1. Click Import snippets.
  2. Choose the Visibility of the imported snippets. Packagers always import as Only me; only administrators can import globally.
  3. Click Choose file … and select the file.

oPBWeb then reports “42 snippets imported, 3 skipped”. Snippets that already exist with the same name in the same category and visibility are skipped. Missing categories are created automatically; snippets without a category end up in „Allgemein“ (General).

Exporting snippets

Click Export snippets (the button is available from the Packager role on). Your browser downloads the file opbweb-snippets.json. It contains all snippets you are allowed to see, that is all global ones and your own, each with name, category, description and text. You can import the file again in another oPBWeb installation.

Depots

View and sync config servers and depots, check installed products and the repository, manage files on the server and compare depots.

Roles: Viewer, Packager, Releaser, Administrator

Overview

The Depots view shows all opsi config servers set up in oPBWeb and their depots as oPBWeb last read them. You see which products are installed in which version, clean up the repository, edit files directly on the server and compare the depots with each other.

Viewers see everything but cannot change anything. What Packagers and Releasers may change on a depot depends on its stage (see Stages and roles ). Only administrators can add, edit and remove config servers, see opsi server .

Config servers and depots

On the left is a tree with all config servers and their depots. Each depot belongs to exactly one config server.

Config servers are shown in bold. Each row shows:

Depots are indented below their config server, each with depot ID, stage badge and a short info line such as “config server · 42 products” (for the depot on the config server itself) or “17 products”. An italic, lighter stage badge means: the depot has no stage of its own and inherits that of its config server (tooltip “inherited from the config server”). The following hints can also appear there:

If no config server is set up yet, the tree shows “No config server configured yet.” An administrator adds the servers.

Collapsing and searching the list

With many depots, two things help:

Viewing a config server

Click the row of a config server. As a Packager, Releaser or Viewer you see a read-only overview on the right:

From Packager upwards, Sync at the top syncs exactly this server. Administrators see the server form here instead, see opsi server .

Viewing a depot

Click a depot to see its details on the right. At the top you see the depot ID, the stage, the name of the config server and the time of the last sync (“synced …”).

Syncing

A sync reads the depots of a config server and their installed products again. It runs as a job; while it runs, the button shows “Syncing …”. You can sync from the Packager role upwards:

ButtonEffectJob title
Sync in the detail view of a depot or config serversyncs only this config server and its depots“Synchronize depots (server)”
⟳ at the top of the list (tooltip “Synchronize all config servers”)syncs all config servers one after the other“Synchronize depots of all config servers”

Syncing one server never changes the depots of another server.

A sync via Sync or ⟳ also reads the workbench of each config server. oPBWeb remembers which project folder holds which package in which version; you see this in the package list under Workbench . If the workbench cannot be read, the job logs a warning and syncs the depots anyway.

In addition, oPBWeb automatically checks all config servers every five minutes (default, configurable under Settings → Worker) and syncs the depots of every reachable server; this automatic sync does not appear in the job list and does not read the workbench. The worker reads the workbench separately, hourly by default (also under Settings → Worker). You mainly need a manual sync when you want to see a change on the server immediately.

Depot settings

Below the depot details are the Settings with Stage, Service URL and Enabled, as well as info fields such as URL in use and Reported by opsi. Under Stage, “as config server (Production)” means that the depot inherits the stage of its config server. Only administrators can change these values; for everyone else they are read-only. Details are in Depot management .

Stages and roles

Each config server has a stage: Production, Staging or Test. Its depots inherit this stage unless an administrator sets a stage of their own for a depot. The effective stage of a depot determines who may perform write actions on it:

ActionTest and staging depotProduction depot
Install, uninstallPackagerReleaser
Promote packages to this stagePackagerReleaser
Unlock productsPackagerReleaser
Delete files from the repositoryPackagerReleaser

Administrators may do everything Releasers may do. New config servers start in the Production stage; an administrator switches test and staging servers or individual depots over. If you lack the required role, oPBWeb hides the corresponding buttons or locks the depot in the dialog.

How to take a tested package from one stage to the next is described in Build and deploy .

“Installed products” tab

Installed products tab with version comparison and a locked product

The table shows all products installed on the depot:

ColumnMeaning
Product-IDIdentifier of the product. If the package exists in oPBWeb, the ID is a link to the package editor.
On depotinstalled version (product and package version)
oPBWeb (built)built version in oPBWeb; orange if it differs from the installed one
Typeproduct type

The Differs from oPBWeb chip limits the list to products whose versions differ between the depot and oPBWeb. The “Filter …” field searches by product ID.

Unlocking locked products

If an installation is aborted, the product sometimes stays locked on the depot. It then carries the locked badge. To remove the lock:

  1. Select the checkboxes of the locked products.
  2. Click Unlock (n).

Unlocking runs as a job; afterwards oPBWeb reports “2 products unlocked”. You only see the checkboxes and the button if you may write on this depot.

“Files” tab

The Files tab is a file manager for the shares of the depot. Depending on the depot, there are up to three shares as sub-tabs:

ShareContentAccess
/workbenchworking directory for package sourcesread for everyone, write from Packager on
/repositoryuploaded .opsi filesread only
/depotunpacked, installed productsread only

/workbench only exists on the configserver and on depots that report a workbench. In read-only shares, oPBWeb shows the notice “/repository is read only.” or “Changes require the packager role.”

File manager in the Files tab with the context menu in the workbench

Viewing and editing files

Click a text file (scripts, control, .ini, .xml, .json, .ps1, .cmd, .log and many more) to open it in the text editor. opsi scripts get the same highlighting as in the script editor. In /workbench you can change the file and write it back with Save; in the other shares it is “read only”.

The editor keeps the character encoding (UTF-8 or CP1252) and the line endings of the file; the encoding is shown at the bottom of the dialog. You can edit text files up to 2 MB. Download larger files and binary files.

Downloading

Click a file that is not text, or choose Download in the context menu (right-click). The download takes two steps: first a job copies the file from the server, then your browser starts the download. Only the user who started the download can fetch the file.

Working in the workbench (Packager and above)

In /workbench you additionally have:

Alternatively, drag files or whole folders into the list. They end up in the currently open folder. The progress appears as “Uploading … 45 %”; then a job copies the files to the server and oPBWeb reports “3 files uploaded”.

Importing a package from the workbench

You can import a package directory in /workbench directly into oPBWeb:

  1. Open the root of /workbench.
  2. Right-click the package folder.
  3. Choose Import into oPBWeb.

The import runs as a job and reads from the workbench of the config server the depot belongs to; afterwards oPBWeb reports “{name} imported”. An existing version is not overwritten. To replace versions and to import several folders, use the Workbench … dialog in the package list, see Packages .

“Repository” tab

The repository of a depot contains the uploaded .opsi files together with their .md5 and .zsync check files. Over time, old versions accumulate there.

Repository tab after “Read repository” with the .opsi files of the depot

When you first open the tab, oPBWeb reads the repository automatically; click Read repository to repeat this. Reading runs as a job. Above the table there is a summary such as “12 packages, 1.4 GB”.

The table shows File, Product-ID, Version and Size, as well as these badges:

oPBWeb lists check files without a matching .opsi file under “Orphaned checksums”.

Deleting files from the repository

  1. Select the checkboxes of the packages you want to remove.
  2. Click Delete (n).
  3. Confirm the prompt “Delete 2 packages including .md5 and .zsync from the repository of depot01.example.local?”.

oPBWeb deletes the .opsi files together with their check files. Installed products are kept. You only see the checkboxes if you may write on this depot (see Stages and roles ).

“Comparison” tab

For the selected depot, the Comparison tab shows three versions of each product side by side: oPBWeb (built), the config server the depot belongs to (column header with the addition “config server”), and the depot itself. If you select the depot on the config server, there are only the two columns oPBWeb and config server. Differing versions are marked orange.

Comparison tab with oPBWeb, the config server and the selected depot

Jobs

Track long-running actions as jobs, read logs and cancel queued jobs.

Roles: Viewer, Packager, Releaser, Administrator

Overview

Everything that takes longer or talks to an opsi server runs in oPBWeb as a background job. You start the action, keep working and follow the progress in the status bar, in the package editor or in the Jobs view.

All users see all jobs, including those of their colleagues, together with their logs. This lets you trace who built or deployed what and when.

Which actions run as jobs?

ActionShown in the Action column
Import an .opsi packageImport
BuildBuild
Install …, Promote … to another stageInstall
Uninstall …Uninstall
Sync the depots (one config server or all)Depot sync
Clean up … the object storage (administrators only)Cleanup
Scan, import, export the workbenchtechnical name, e.g. scan_workbench, import_workbench, import_workbench_many (import of several project folders), export_workbench
Compare with workbench …: compare, take overcompare_workbench, apply_workbench
Read the repository, delete repository fileslist_repository, delete_repository_files
Unlock productsunlock_products
Upload and download files in the Files tab of the depotsfiles_upload, files_download
Fetch the CA certificate, test the connection (administrators only)fetch_opsi_ca, check_opsi_server

Only the first six actions have a translated name; all others appear with their technical name. Job titles and log lines come from the server and follow the interface language. Jobs created before version 0.15.0 keep their German titles and log lines.

The job list

Open Jobs in the activity bar.

Job list with filter chips and detail area with live log

The filters are at the top:

The table has the columns Action, Title, Target (package or depot), Status, Started by, Start and Duration. For running jobs, the status also shows the progress in percent. The list refreshes itself every few seconds and shows the last 200 jobs (“Showing 200 of 1,348 jobs”).

A job has one of these states: queued, running, succeeded, failed or cancelled.

Job details and live log

Click a job in the list. On the right you see the title, status, target, who started it and the start time, a progress bar, the error message in case of errors and the log below.

For running jobs, new log lines are added live and the view scrolls along automatically. The lines are colored by meaning: green for success, orange for warnings, red for errors.

Depending on the job, the detail area offers these buttons:

Cancelling jobs

You can only cancel jobs in the queued state, that is jobs that have not started yet. A running job cannot be cancelled; it runs until it finishes or fails.

Select the job and click Cancel. The job gets the state cancelled.

If you cancel a queued installation job that released a draft, the version is a Draft again afterwards.

Progress in the status bar

Jobs you started in this browser tab appear on the right of the status bar with title, progress bar and percentage. Click one to open the job in the job list. When no job is active any more, the status bar shows the most recently finished job with its result.

In addition, the Jobs icon in the activity bar shows the number of running jobs you started in this browser.

If the connection to the server drops during a job, oPBWeb reports “Connection to the job lost”. The job itself keeps running on the server; you see its final state in the job list.

Jobs in the package editor

At the bottom of the package editor is the JOBS panel. It lists the most recent jobs of the open package with status and time and shows the log of the selected job on the right, live for running jobs.

If you start a job in the editor, for example with Build or Install …, the panel opens automatically. Close it with ×; the Jobs ▴ button at the bottom edge shows it again.

More on building and deploying is in Build and deploy .

Account and Language

Set the interface language, change your password, sign out, adjust the appearance and the syntax colors of the editor.

Roles: Viewer, Packager, Releaser, Administrator

Overview

You reach the settings of your own account via the avatar icon with your initials at the far right of the top bar. Next to it in the top bar you find the switches for language and light/dark appearance, as well as access to this manual.

These functions are available to all users, regardless of their role.

The user menu

Click the avatar icon to open the user menu.

Open user menu with Default language, My account, Change password and Sign out

At the top of the menu you see your display name as well as your user name and role, for example mmuster · Packager. Below that follow Default language, My account, Change password and Sign out.

My account

My account in the user menu opens a page of its own. At the top it shows your account data: user name, name, email, role and source (local or directory). There you also set the Default language and change your password with Change password, just as in the user menu. Below follow the syntax colors of the editor .

Language

oPBWeb has two interface languages: German and English. There are two ways to switch the language, and they differ in their effect.

Where?EffectValid until
Default language in the user menuis stored in your user accountpermanently, at every sign-in and on every device
DE/EN switch in the top barapplies only to this browser tabthe next sign-in

Setting the default language

  1. Open the user menu.
  2. In the Default language row, click DE or EN.

The interface switches immediately, and oPBWeb stores the language in your account. After every sign-in, oPBWeb starts in this language, even on another computer or browser.

Switching the language temporarily

The switch in the top bar shows the current language (DE or EN). Click it to switch to the other language. This is handy if you want to quickly look up a term in the other language or show a colleague something in their language.

The change only applies to the current browser tab and is kept when you reload the page. As soon as you sign out and back in, your default language applies again.

Language on the sign-in page

The sign-in page also has a language switch. Before you sign in, oPBWeb does not know you yet; it uses the language last used in this browser or, on your first visit, the language of your browser. After you sign in, oPBWeb applies your default language.

Changing your password

This function is only available for local accounts, that is accounts created in oPBWeb itself.

  1. Open the user menu.
  2. Click Change password.
  3. Enter your Current password.
  4. Enter the New password and repeat it under Repeat new password. The new password must be at least 10 characters long.
  5. Click Save.

If the password is too short or the two entries do not match, the dialog shows “At least 10 characters.” or “The passwords do not match.” and Save stays disabled.

If you have forgotten your password, contact an administrator. They can set a new password for you, see Users and roles .

Signing out

In the user menu, click Sign out. oPBWeb ends your session and shows the sign-in page again. A temporarily switched language is discarded.

Light or dark

The moon icon in the top bar (Toggle light or dark) switches between light and dark appearance. As long as you have not chosen anything, oPBWeb follows the setting of your operating system. Your browser stores your choice; it therefore applies to this browser, not to your account.

The switch is also available on the sign-in page and as a command in the command search (Ctrl K).

Syntax colors in the editor

On the My account page, the section Syntax colors in the editor sets the colors the editor uses to highlight files. This applies to every editor in oPBWeb: script editor, snippets, the source view of the control file and the files on the depot. The setting belongs to your account and applies on every device you sign in on.

The section is built like this:

Syntax colors in the editor: default with the preset opsi ScriptEditor, comment additionally italic, the preview beside it

Setting colors

  1. Choose Light or Dark.
  2. Select the file type on the left. For all file types at once, take Default (all file types).
  3. For a single file type: tick Own scheme for this file type. The own scheme starts with the colors of the default.
  4. Choose a Preset.
  5. Change single colors if needed: click the color field or type the color as a hex value, e.g. #a31515. Toggle bold and italic with B and I. A changed element gets the button ↺, which puts back the preset’s color and font style.
  6. Click Save.

Choosing another preset discards the single colors and font styles changed for this file type. Reset adjustments sets all colors and font styles of the file type back to the preset. Unticking Own scheme for this file type makes the file type follow the default again. Reset all syntax colors restores, after a confirmation, the oPBWeb defaults for both modes and all file types. That too takes effect only with Save; Revert restores the last saved state.

Opening the manual

The book icon in the top bar (Manual (new tab)) opens this manual in a new browser tab, in the currently selected interface language: the German manual for German, the English manual for English.

Expanding and collapsing the navigation

The activity bar on the left edge normally shows only icons; the name of an area appears as a tooltip. Click the ☰ icon at the far left of the top bar (Expand/collapse menu labels) to show the labels, so that each icon has its name next to it. Click again to collapse the bar.

For an overview of the whole interface, see Getting started .