lbreeze
Software

Kontrol7

Hosting, under control. The hosting control panel your customers log into, on servers you own: websites, mail, DNS, databases, backups, virtual machines, object storage and AI endpoints, with unlimited customers and sites. Add a server in one paste, give it a job, and it stays the way you set it.

What changed in each release, newest first.

1.276.1

3 November 2026

A second pass over the panel after the audit release: pages that still squeezed tables or forms are fixed, a website says where it runs, DNSSEC is shown wherever a domain is signed, and a suspended site's holding page no longer counts as a server error.

Changed

  • A website's At a glance says where it runs. The city and country of its server come first; operators also see the data centre and the server. The site's internal address, reachable only inside its server, is no longer listed.
  • Help shows its answers side by side. All twelve answers fit on a screen or two instead of a narrow strip down the page.
  • Compliance lists its measurements in one aligned table. The groups are rows in one table, so the columns line up down the page.
  • Product names are current everywhere. Messages the platform writes itself (security, maintenance, compliance sources, the API reference) say Stasys and Kontrol7.

Fixed

  • A suspended or switched-off website's holding page answers normally. It answered with a server error, so every visit to a suspended site counted as a 5xx in the platform's request figures and pushed the error rate up for the whole platform.
  • DNSSEC shows as on for a domain signed by the provider that serves it. A domain served and signed by Cloudflare read "off" on the DNS list and counted as unsigned in Compliance. The platform now asks the parent zone whether the domain is signed, whoever signs it.
  • The width switch in the header works again. The capped width had been raised to fill a wide screen, so the two modes looked the same. Capped and full width are distinct again.
  • Moves lays out what can move, one kind at a time. Websites, mail domains, databases and backups each have a full-width table, then where they go beside what happens. The servers to move from are a row of choices.
  • Forms that hold a table or several fields read top to bottom. On Moves, a server's Capacity, a website's domains, backups, security and scheduled jobs, and mail settings, tables and fields no longer squeeze into one row.
  • Tables no longer overflow the side column. Jobs' recurring work and certificates, the Platform page's sources and a website's FTP accounts sit at the page's full width. A drop-down never runs past the page edge.

1.276.0

3 November 2026

A full walk of every page of the panel found problems on about half of them. This release fixes all of them together: one page layout that uses the whole screen, wrong values corrected, clearer wording, and a simpler Locations page. Mail, virtual machines and Ask are now generally available.

Changed

  • Mail, virtual machines and Ask are generally available. Ask keeps a note on its page: a model drafts each answer, so check anything it suggests before acting on it. Object storage, AI endpoints, private networks, DNS served by Cloudflare and Zephyr on a VPS stay in Preview until each has run on real servers.
  • Pages use the whole screen. On a wide display the content no longer sits in a narrow centred column. The side column is a narrow, fixed strip for what a page says about itself (status, where it runs), and the page's own work gets the rest of the width. Help text fills its card, cards marked as background information no longer look disabled, and labels line up with their values.
  • Website Health no longer leads with an alert from days ago. A website's Disk and Confinement lines state the fact in plain words; the how-to is on the server's Storage tab, for the operator. The setup list names the servers whose disk allowances are not yet enforced, in one sentence.
  • Moving a website says in one line when no other server can take a part. For example "No other mail server.", instead of listing every machine. The backups line names each website once and counts databases and mail domains.
  • Malware scanning says who scans and why, in plain words. Either Stasys or the server's own scanner.
  • Product names are current: Stasys and Kontrol7. Your customers' own website pages say "the platform" rather than our product name.
  • An application's log reads as messages. Time, request, status and message, rather than raw JSON.
  • Locations shows one table per city, with the data centre as a column. A machine its provider placed shows where it stands, with nothing to press. One form sets where a machine stands, for machines no provider places.
  • The servers list shows each server's place as text and only the roles it holds. "Change" opens the role editor in the row. The sidebar keeps one group open at a time.

Fixed

  • A server's disk, memory and CPU charts are drawn against the whole machine. A disk that is 9% full no longer looks full. The same applies to virtual machines.
  • A server served by OpenLiteSpeed or LiteSpeed Enterprise says it can serve HTTP/3. It used to say it had not reported yet.
  • A website's "What runs inside" shows the PHP build that actually serves it. OpenLiteSpeed is listed only where OpenLiteSpeed serves the site.
  • A mail domain's Import tab opens again. It showed "This page did not load".
  • A virtual machine's console shows the text the machine printed, without terminal control codes.
  • Choosing nothing on Locations no longer un-places a machine.

Why

The panel should read the same way on every page and show what is really true about each server and site. This release closes every finding from the page-by-page review in one go.

1.275.1

3 November 2026

Hetzner Cloud machines are now placed in their city and data centre, and the Locations page says exactly what was asked. A website, or everything on a server, in a data centre or in a city, can be moved to another place in one step.

Added

  • Move a website to a city or a data centre. On a website's Server card, choose a place: each part (files, database, mail, backups) is shown with the server it would go to there, or why it cannot, before anything moves.
  • Move everything off a server, data centre or city. Everything a place holds can be moved to another place, each item to a server that holds its role.

Changed

  • The Locations page says what it asked Hetzner. It shows how many dedicated servers and Cloud servers were read, anything that was not asked and why, and the addresses of any machine that was not found.
  • Request filtering and Stasys share one rule set without clashing. The platform's own ModSecurity rules have a reserved range, so a paired Stasys can add its own without overwriting them.

Fixed

  • Hetzner Cloud machines are placed in their city and data centre. Machines in Hetzner Cloud were left unplaced. They are now placed from their location, and machines in more than one Cloud project are found with each project's token (Settings, Reverse DNS).

1.275.0

2 November 2026

Moving a website now asks what moves (its files, its database, its mail and its backups), each to a server that can hold it. Databases and backups can move between servers on their own. Servers are placed by country, city and data centre, filled in automatically for Hetzner machines. Request filtering protects every site by default, LiteSpeed Enterprise is set up in one step, and the panel carries the Kontrol7 logo with a shorter, folding menu.

Added

  • A database moves to another database server, and every site that uses it follows. The database is restored on the new server from a fresh backup, and WordPress, Joomla, Ghost, Flarum, NodeBB, Zephyr and the other applications are pointed at it. If any step fails, the database and its sites go back to where they were. It is offered only to servers that run the database's engine.
  • Moving a website asks what moves. The website's files, its database, its mail and its backups each have their own tick and their own destination, and are offered only servers that can hold them. A website and its database never move at the same moment, so the site never comes up pointing at the old copy.
  • Backups move between backup servers. Each account's backups now live on one recorded backup server. Moving them copies every snapshot as it is, and backups switch to the new server only once it holds them all. The Moves page lists backup servers and what they hold.
  • Servers are placed by country, city and data centre. A city can hold any number of data centres from different providers. Hetzner machines are placed automatically from Hetzner's own records, a virtual machine stands where its host does, and a machine placed by hand is never moved. The new Locations page shows what every place holds. A site's database and mail are placed in the site's own data centre where possible.
  • LiteSpeed Enterprise is chosen in one step. Choosing LiteSpeed Enterprise asks for its serial number, or a 15-day trial, in the same form. The server then installs, registers and starts it by itself, and the Web server card shows each step.

Changed

  • Request filtering protects every website by default. Every web server filters requests unless you turn it off, and a site that has not chosen otherwise refuses requests the rules flag. If an editor or admin screen is refused, set that site to record instead. The card is now called ModSecurity WAF.
  • The Kontrol7 logo, your own logo, and a shorter menu. The panel shows the Kontrol7 logo. The Branding page now has a Logo upload, so a white-label panel shows your logo in its place. The menu groups fold, so the menu fits the screen.

Fixed

  • A site moved within the hour shows DNS changing, not an error. Some visitors' resolvers keep the old address for a while after a move. The site now reads as DNS changing for that hour, not as a red error.

Security

  • Mail and database moves respect an account's data residency. A move refuses a server outside the countries an account is held to, as website moves already did.

Upgrading

After updating, request filtering switches on for every web server within about 15 minutes, and blocks on every site that has not chosen a mode. Locations fill in from Hetzner within the hour, or straight away with Ask Hetzner now on the Locations page.

Why

A site moved to another server used to leave its database and backups behind, and nothing could move them afterwards. Every part of a site can now move, it moves only to a server that can hold it, and if a step fails it is put back.

1.274.2

2 November 2026

PHP websites on a LiteSpeed Enterprise server now load instead of answering with a server error.

Fixed

  • PHP sites on LiteSpeed Enterprise serve their pages. LiteSpeed Enterprise named each PHP file by a path the site's own PHP could not see, so every page failed while static files worked. Each site's PHP can now reach its files by both names. It applies by itself on the server's next cycle.

Upgrading

Press Update. Sites on a LiteSpeed Enterprise server start answering on that server's next cycle.

Why

On a LiteSpeed Enterprise server, pictures and other files served, but every PHP page - WordPress and the rest - answered 500.

1.274.1

2 November 2026

LiteSpeed Enterprise now installs, licenses itself and starts on a new web server, and choosing it takes one step.

Added

  • Choose LiteSpeed Enterprise as a server's web server with its serial number in the same step. It is no longer refused for not being installed yet. The server installs it, registers the licence and starts it on its own, and only a missing licence is refused.
  • The server reports LiteSpeed Enterprise's setup step by step. The steps are install, configuration, licence, start and serving. A step that fails says why, in LiteSpeed's own words.

Changed

  • While LiteSpeed Enterprise is being set up, your sites keep serving from their own PHP. A site moves to LiteSpeed only once it answers, instead of showing an error until it does.

Fixed

  • LiteSpeed Enterprise starts on a server where it crashed before. Its configuration lacked a section LiteSpeed needs to start, and it stopped without a word right after its licence was accepted.
  • LiteSpeed Enterprise starts on a server that ran OpenLiteSpeed before. Both use the same place for their process number, so starting one restarted the other instead. The old one is now stopped first, and a failed start is tried again by itself.
  • The server's log no longer records failed PHP restarts for PHP versions it does not have.

Security

  • LiteSpeed Enterprise's program files are owned by root. On some servers they were left owned by a login user.

Upgrading

Press Update. A server already set to LiteSpeed Enterprise starts it by itself on its next cycle.

Why

A web server you cannot get running is not a choice. This is the first release where LiteSpeed Enterprise goes from serial number to serving without anyone touching the server.

1.274.0

2 November 2026

Pages now name what they count and say only what is true, and a new web server gets onto a fresh machine where before it could not.

Added

  • The setup checklist and the Plans page name the servers where website disk allowances are measured but not enforced. Plans sell a disk allowance per website. On a server whose web data is not on a volume with project quotas, a site can write past it. You now see which servers those are, why, and how to fix it.
  • The Dashboard names the sites that answered with server errors (5xx). Under the platform's 5xx percentage you now see which sites they came from and how many each had.

Changed

  • Each server's open Standby incidents link straight to that machine in Standby. Standby gives a count and a severity per machine. The count now opens the machine there, where the incidents are listed.
  • With Standby paired, the Compliance page lists what was measured and leaves the verdicts to Standby. It no longer shows a pass or fail of its own beside the link to Standby's verdicts.
  • The security posture score links to Standby for what it is made of. The score is Standby's, scored machine by machine there.

Fixed

  • Backup profiles count every backup that really follows them, and say which backups follow their plan instead. A profile read "following it 0" while backups followed it through their plan or the default. Backups whose plan sets its own schedule are now listed, with how long they are kept.
  • OpenLiteSpeed now starts on a web server that has no website yet. Before, it refused to start and the server stayed on nginx. A name pointed at a server that hosts no site for it now gets a plain "nothing published here" page, never the web server's own.
  • LiteSpeed Enterprise registers its licence on a new server. On a fresh server the licence could never register, whatever was pressed. It now registers on the server's next cycle.
  • Sites on LiteSpeed Enterprise no longer keep PHP connections open unless the site asks for it. Kept-open connections could tie up a site's PHP workers until the site stopped answering. This was already fixed for OpenLiteSpeed.

Upgrading

Press Update. A server with LiteSpeed Enterprise whose licence showed as refused registers by itself on its next cycle after the update; nothing needs pressing.

Why

An operator needs to see where errors and risks are, not only how many there are. And a web server that cannot start on an empty machine, or a licence that can never register, is a machine you cannot use.

1.273.0

2 November 2026

Moving several websites or mail domains off a server now runs them one after another, and the pages that used to ask you to reload now follow the work by themselves.

Added

  • Installing an app, importing mail from another provider, emptying a mail server and restoring a backup now show progress and update by themselves. No more "reload this page": the page follows the work and shows the result when it ends. Emptying a mail server shows how many domains have moved so far. A virtual machine restore links to the machine's page, which follows it.

Changed

  • Moves off one server go one at a time, in the order you started them. "Move all" on the Moves page now moves all of them, not five at most. Each waits its turn and says which site or mail domain it is waiting for, on the Moves page and on its own page. Websites and mail domains each keep their own queue. A move's time limit starts when it actually begins, not while it waits.
  • After a platform update finishes, the Updates page reloads itself. It then shows the new version straight away, instead of the old one with the update you just installed still offered.

Why

Each move starts by reading the old server in full (a fresh backup, or a copy of every mailbox). Several at once on a server you are emptying, often because it is struggling, made every one of them slower and riskier. And a page that says "reload to see the result" is a page people forget to come back to.

1.272.1

2 November 2026

After installing the previous update, the panel kept offering that same update again. This release stops that.

Fixed

  • After you install this update, the panel says it runs 1.272.1 and stops offering an update. The previous release (1.272.0) reported itself as 1.271.1 once installed, so the Updates page went on offering 1.272.0 as if it had never been installed. Nothing else was affected: the update itself had been applied.

Upgrading

Press Update once more. If you are on 1.272.0, the panel offers 1.272.1; after it, the offer clears.

Why

An update offer that never goes away hides the real ones, and makes it look as if the update failed when it did not.

1.271.1

2 November 2026

a fresh install of vir-forum 1.0.9 is no longer refused as 'a new major version'

Fixed

  • Installing vir-forum works again with its current release. A new install failed with "this is a new major version; this platform installs 0.x" because the installer was still set up for the forum's first releases. It now installs the 1.x line the forum is on, the one an existing forum already runs here. A future 2.x is still held back until it has been checked.

1.271.0

2 November 2026

Bring a whole website in from your computer, and install vir-forum with its mail already working.

Added

  • Import a whole-site archive from your computer, with its database and application. On a website's Import tab, choose "A file from this computer". The archive is sent in pieces, so a large one and a dropped connection are both fine, then analysed and shown to you before anything changes. A kstack archive downloaded from another website brings its database and application too, set up again here once you approve. The server takes this in once its agent has updated, which happens by itself within minutes.
  • vir-forum installs with its outgoing mail set. The install form takes the mail server, port, account, password and From address. They are checked before anything is made, and a mistake that would have meant sign-in links silently never arriving is refused with a sentence. The password is stored encrypted. Leave the fields blank to set mail later in the forum's own Admin, as before.

1.270.1

1 November 2026

a site archive too big for the Files tab's upload form is said so before it is sent, not crashed on

Fixed

  • Choosing a site archive that is too big for the upload form now says so, instead of crashing the page. The Files tab upload carries up to 60 MB. For a larger archive the form now tells you to upload it with SFTP and import it from the Import tab (Already uploaded into this site), which reads the whole site with its database and application.

1.270.0

1 November 2026

A Moves page for operators: one place to move websites and mail domains between servers and to follow every move.

Added

  • Moves, under Operate: pick a server, tick its websites and mail domains, choose where they go. Each row shows its owner and what depends on it - a site's staging copies, a copy's live site, a mail domain's mailboxes. A server that cannot take the work is listed with the reason. Every move starts from a fresh backup, and a node's page links straight to the list for that server.
  • Every move is followed live, and the last week is kept. Moves in flight show their steps and update by themselves. Finished ones say whether they were done or failed, why, and whether the site was put back where it was.

Fixed

  • A move that stopped without finishing no longer hides the Move and Publish buttons for ever. After 90 minutes without progress the site page reads it as stopped and offers the form again.

Why

Moving something used to mean finding a card on each site's Advanced tab. Now you pick a server and see everything that can leave it.

1.269.0

1 November 2026

Every page now shows that it is working. A bar runs along the top on every navigation, and long jobs show their steps and keep themselves up to date.

Added

  • A progress bar along the top of every page while it loads or refreshes. It starts when you click a link or submit a form, and finishes when the new page is there.
  • Long jobs show their steps and update by themselves. Moving or publishing a website, installing an app, moving mail, building a VPS, upgrading a node and updating the platform each show the step they are on, with the time it has taken. There is no "reload this page" any more. Where no stage is recorded you see a bar without a percentage, never a made-up one.

Changed

  • Moving a website takes a fresh backup first. The move used to restore the newest backup that already existed, so anything written since then stayed behind. Now it backs up the old server first and restores that. If the backup fails, the move stops before anything switches and the site stays where it is.

Fixed

  • Publish names the server the site goes live on. The note said "the same server" even when the site was moving to another web server. It now gives the server's name.

Why

You no longer have to wonder whether a click did anything, or reload a page to see how far a move has got.

1.268.1

1 November 2026

Added

  • Publishing a dev website to its own domain asks which web server it goes live on; another server moves the dev website there first, and the live site and its staging run there together. Part of v1.268.0, which ships in this release.

Fixed

  • A virtual machine given an extra Hetzner address is reachable again: the platform no longer asks Hetzner Robot for a separate MAC, and removes the ones v1.267.0 asked for. Virtual machines reach the internet through their own server, so an extra Hetzner address must reach that server. v1.267.0 asked Robot for a separate MAC for each free extra address on a virtual-machine server, and Hetzner then sent that address's traffic to a MAC nothing carries: a virtual machine given it answered neither ping nor SSH. This release never asks for one, and on its first sync removes each MAC v1.267.0 asked for - at Hetzner Robot and on Addresses - listing each on Activity as "A MAC the platform made for an extra address was removed again". A MAC you entered yourself is left as it is.

Upgrading

Update straight to this release from 1.267.0 or 1.267.1. Nothing else to do: the first sync after the update (at start) removes the MACs v1.267.0 made, and an affected virtual machine answers again within a few minutes.

1.267.1

1 November 2026

Fixed

  • Publishing a dev website to its own domain works on a server whose web server is chosen - it was refused with 'this site's web server is its server's'. On a server where the web server is chosen for the whole server, Publish to a domain made the new live website ask for the dev website's own web server and was refused. The live website now takes the server's web server, like every other site on it.

1.267.0

1 November 2026

Added

  • A VM server's extra Hetzner address gets its own MAC from Hetzner Robot by itself - WITHDRAWN in v1.268.1: update straight to v1.268.1. This made an extra address unreachable for the virtual machine given it: virtual machines reach the internet through their own server, and a separate MAC sends the address's traffic elsewhere. v1.268.1 stops it and removes each MAC this release asked for.

Upgrading

Update straight to v1.268.1.

1.266.0

1 November 2026

Standby can now take HTTP/3 away from a server while a security fix is pending, and give it back once the fix is installed. Each switch is recorded with its reason.

Added

  • The server page says why HTTP/3 is off. Each HTTP/3 switch records the reason and reference it was given, for example a CVE number. The server's HTTP/3 card shows them with the time, so nobody switches it back on by hand while the fix is still pending.

Changed

  • Switching HTTP/3 off now stays off when the server is given a new role. Before, the platform defaults could switch HTTP/3 back on when the web role was given again.

Security

  • Standby can switch a server's HTTP/3 off while a vulnerability is open, and back on when it is fixed. A paired Standby gets this one switch and nothing else on your servers. It still cannot add, remove or reconfigure them. Existing pairings pick it up when the panel updates, with no re-pairing.

Why

Some web server vulnerabilities can only be reached over HTTP/3. Switching HTTP/3 off on the affected server closes the hole without touching anything else. Visitors keep loading the sites over HTTP/2.

1.265.2

1 November 2026

Rename files from a phone, and the platform's own files are protected in the file manager instead of being put back with an alert.

Changed

  • Files the platform writes for your website are protected in the file manager. Files such as .user.ini and php.ini are written from your website's settings. They are marked "platform", open read-only, and cannot be renamed, moved or deleted - the server explains why and where to change them. Before, deleting one worked, the platform wrote it back and raised an alert.

Fixed

  • You can rename a file in the file manager on a phone. Select a file and press Rename… in the toolbar. The menu on each row is always visible on touch screens, and long names are shortened so the row's actions stay on screen.

1.265.1

1 November 2026

Double-clicking a folder in the file manager opens that folder, and a Node or Python website whose application is removed stops running Node and shows its empty-site page.

Changed

  • A Node or Python website with nothing of its own to run stops running, and shows its empty-site page. When an application is removed, or a Node or Python website has none, the platform no longer keeps its own small program running in the website's container to say "no application is running". Nothing runs, and the web server answers with the website's empty-site page and a normal 200 response. The files it used to write there, server.js and kstack-empty.html, are removed on the next update cycle, and a server.js you create yourself is yours and never replaced.

Fixed

  • A double-click in the file manager opens the folder you clicked. Selecting a row showed a bar above the list that pushed every row down one line, so the second click of a double-click landed on the row below - often the up row, sending you back. The selection's actions now appear in the toolbar in place of New file, New folder and Upload, messages appear under the list, and nothing above the rows moves. With no file open the list uses the full width.

1.265.0

1 November 2026

A rebuilt file manager, removing an application can now delete everything it left, and an empty website answers with its own page straight away.

Added

  • Removing an application asks whether to keep or delete its files and database. Remove now asks every time. Keep moves the files into a folder inside the site and keeps the database, as before. Delete everything removes the files, every copy an earlier removal or reinstall put aside, and the database, freeing the space at once. Folders left by earlier removals are labelled in the file manager with their size.

Changed

  • The file manager is rebuilt, inside the website's Files tab. One file manager, on the Files tab, so the website's other tabs stay on screen; old links lead there. A toolbar for the folder you have open: up, the path, find in files (results open the file at the matching line), new file, new folder and upload - or drag files in. Select several items with checkboxes, Ctrl-click or Shift-click and move, copy or delete them together. Folders and files have their own icons, and the list shows size, last change and permissions, sortable. The editor fills the space beside the list and colours the code. On a phone you see the folder or the open file, one at a time.

Fixed

  • The site's own folder can be opened, and going up never opens another folder by mistake. The file manager could not show the site's top folder, and double-clicking the up row could open the folder that slid under the pointer. Every row now works the same way: a click selects, a double-click or Enter opens.
  • Deleting a folder says what is in it, and the folders a site runs from are protected. Deleting a folder first shows how many files and how much space it holds, and says everything inside goes with it. public_html, logs and tmp can be emptied but not deleted or renamed, and the platform's own records are no longer listed.
  • An empty website shows its own page with a normal response. A website with nothing published answers with its "nothing is published here yet" page (or the words you set for it) and a normal 200 response instead of an error code. A website whose application was removed shows the same page again. When you upload an index page, by the file manager or by SFTP, the site shows it at once rather than minutes later.

1.264.1

31 October 2026

Websites created on a server that runs Incus 7.0 now get their full isolation, and the website's Health card names exactly which isolation setting is missing.

Fixed

  • The Health card names the isolation setting that is actually missing. It used to name the x32 system-call rule for any missing isolation setting. It now says which one is missing, such as "/proc and /sys read-only".

Security

  • Websites created after a server moved to Incus 7.0 get their full isolation again. Incus 7.0 reads container settings differently, and one isolation setting, which keeps the system's /proc and /sys read-only inside a website's container, was not applied to websites created after the upgrade. The same change affected setting up a virtual machine with SSH keys on a server running Incus 7.0. Every setting now reaches the server as written. Websites that missed it get it automatically, and it takes effect the next time the website restarts.

Upgrading

After updating, restart any website whose Health card says its isolation is waiting for a restart. Its container takes the missing setting when it starts.

1.264.0

31 October 2026

Your coding agent can now work on any dev website under the platform's staging domain straight away, and can rebuild an application so its changes show up.

Added

  • Studio can rebuild a site's application after changing its files. A new tool builds the application again from the changed files and restarts it, so visitors see the change:

    • EmDash runs its build;
    • NodeBB builds its assets;
    • Flarum clears its cache;
    • any other Node.js or Python site installs and builds from its lockfile.

    If the build fails, the version that was serving stays in place, and the agent gets the build's last lines so it can fix the file and try again. A PHP site needs no rebuild: a written file is served at once.

Changed

  • Studio edits any website under the staging domain straight away. Your coding agent can list, read and write the files of any site under the platform's staging domain, as well as staging copies, with no copy made first. A website on its own domain is still never changed from Studio.

Upgrading

The rebuild needs the node agent from this release. Nodes take it after the platform updates.

Why

A dev website made under the staging domain used to be refused by Studio, which only accepted copies of another site. And a change to a built application, such as an EmDash template or a NodeBB theme, showed nothing until the application was built again.

1.263.3

31 October 2026

Websites served by OpenLiteSpeed behind nginx keep answering while their web server is restarted under traffic, and no longer refuse ordinary files with "403 Forbidden".

Fixed

  • A site behind nginx no longer goes down when its OpenLiteSpeed is restarted while visitors are browsing. OpenLiteSpeed 1.9.4 could refuse an ordinary file (an image, a stylesheet, a script) with "403 Forbidden" when it was asked for twice in the same second just after a request for a folder. It then crashed while showing the error page for that refusal. After a few crashes it stopped restarting itself for a while, and visitors saw "502 Bad Gateway". OpenLiteSpeed in each site's container now serves every file it is able to read, as nginx, Apache and OpenLiteSpeed at the front already did, so neither problem can happen.

Upgrading

Nothing to do. After the update, each website served by OpenLiteSpeed behind nginx gets its new configuration and one graceful restart.

Known advisory, with no fix published yet: RUSTSEC-2023-0071 in the rsa library (a timing side channel; medium severity). It is listed here because no corrected version exists to upgrade to.

Why

On servers where nginx sits in front of each site's OpenLiteSpeed, a restart made while visitors were browsing (for example after a settings change) could take the site down for several seconds with "502 Bad Gateway", and some requests for ordinary files were refused with "403 Forbidden". This release removes both.

1.263.2

31 October 2026

EmDash now installs without fetching anything from Google: the fonts of its admin come with its own packages too.

Fixed

  • EmDash installs on servers that cannot download Google's font files. 1.263.1 moved the site's own fonts off Google, but EmDash's admin still downloaded its font, Noto Sans, from Google while the site was built, so the install could still fail with "cannot fetch font file". That font now comes with EmDash's packages as well, in every script it covered, and the admin looks the same. The build also no longer sends usage statistics to the framework's makers. If an EmDash install failed for you, press Reinstall EmDash on the website's Apps tab after updating.

Upgrading

After updating, press Reinstall EmDash on any website where an EmDash install failed.

This release was published without its full automated test pass. Every test passed except one known, unrelated check of the OpenLiteSpeed web server restarting under load, which fails the same way without this change and is being fixed separately. The EmDash install test, which this release changes, passed in both runs.