Editions and licenses
Wirebench Server runs as one of three editions. The code is the same for all three, under the same Apache-2.0 license. A license file tells a server which edition it is.
| Edition | Seats | Enterprise features |
|---|---|---|
| Community | 5 | No |
| Team | The number on the license | No |
| Enterprise | The number on the license | Yes |
A license may also allow unlimited seats. A license can list enterprise features explicitly, and that grants exactly those features whatever its edition.
A server with no license is Community. Everything the server did before licenses existed stays in Community: sign-in, teams, shared workspaces, live updates, webhooks and CI tokens.
A seat is an enabled account, server admins included. A disabled account frees its seat at once. Team invitations count against seats too.
The server checks seats only when an account would become enabled:
- when a server admin or a team admin creates an invitation;
- when someone accepts an invitation, with a password or through the identity provider;
- when a server admin enables a disabled account.
A password reset never counts. When no seat is free, the server refuses with a message that says how many seats are in use and how many the edition allows. An invitation refused at acceptance stays open, so it goes through once a seat frees.
The server never disables anyone to get under a limit. A server with more enabled accounts than its edition allows keeps every one of them working, and refuses only the next new account.
Installing a license
Section titled “Installing a license”A license is one line of text that starts with wbl1..
- Sign in as a server admin and choose Account: Manage teams. A server admin with no team sees only the License tab.
- Open the License tab. It shows the edition, the seats in use and, with a license, its customer and expiry date.
- Paste the license line, or click Choose file…, then click Install license.
The new edition applies from the next request, with no restart. Installing a license replaces the one before it. A license that fails its check is not stored, so a bad paste never replaces a working license. To go back to Community, click Remove license… and confirm.
From the server’s console, the same three actions are commands:
wirebench-server admin license install team.licwirebench-server admin license showwirebench-server admin license removeinstall exits with code 2 when the file fails its check, and prints the reason.
Finding the server id
Section titled “Finding the server id”Every server has an id, a lowercase UUID. The server makes it when its database is first migrated, and nothing changes it afterwards. To bind a license to this server, give the id on the order form. Find it in either place:
wirebench-server admin license showprintsServer idas its first line, with or without a license installed;- the License tab shows Server id first, with a Copy button.
Only server admins can see the id.
Expiry
Section titled “Expiry”When a license passes its expiry date, it has 30 days of grace. The edition holds during grace, and server admins see a banner with the date it ends. After grace the server is Community again. Nobody is signed out, no workspace is locked, and sync keeps working.
The tab’s status reads No license installed, Active, Expired, in its grace period, Expired or Installed, but not valid.
How the check works
Section titled “How the check works”The license is signed. The server checks the signature against a public key built into the server, so the check works offline. The server never contacts anyone about its license and sends no usage report.
A license may carry a serverId; in the license payload the field is serverId, a lowercase UUID. If it does and it differs from this server’s id, the license is not
valid, with the reason wrong-server. The message names both ids: This license was issued for server
<the id in the license>. This server is <server id>. Ask for a license issued for this server. Install refuses
such a file, so it never replaces a working license. A license without a serverId works on any server,
so every license issued before this field existed stays valid.
A bound license needs Wirebench 3.2 or later. An older server does not know the field and reports the license as malformed.
The id lives in the database, so a copy of the database carries it. A staging server built from a copy of production has the production id and runs the production license. Binding does not prevent that. If someone deletes the id row by hand, the server refuses to start rather than make a new id, because a new id would void every bound license.
A stored license can stop passing the check. One cause is a server clock set before the license’s issue date. Another is a server version that no longer carries the key the license was signed with. The License tab then shows Installed, but not valid with the reason, and the server runs as Community.
Related
Section titled “Related”- Wirebench Server — running the server, accounts and sign-in.
- Shared workspaces — what a team shares on the server.
- Audit log — who did what on the server, read and exported by server admins.