+
-
+
@@ -46,7 +69,7 @@
{% include matomo.html %}
-
+
diff --git a/webpages/vm-operator/admin-gui.md b/webpages/admin-gui.md
similarity index 67%
rename from webpages/vm-operator/admin-gui.md
rename to webpages/admin-gui.md
index 4bfa3d3..4b7f5b2 100644
--- a/webpages/vm-operator/admin-gui.md
+++ b/webpages/admin-gui.md
@@ -1,5 +1,9 @@
---
title: "VM-Operator: Administrator View — Provides an overview of running VMs"
+description: >-
+ Information about the administrator view of the VM-Operator, which provides
+ an overview of the defined VMs, their state and resource consumptions and
+ actions for starting, stopping and accessing the VMs.
layout: vm-operator
---
diff --git a/webpages/vm-operator/controller.md b/webpages/controller.md
similarity index 98%
rename from webpages/vm-operator/controller.md
rename to webpages/controller.md
index cc6a274..e20263f 100644
--- a/webpages/vm-operator/controller.md
+++ b/webpages/controller.md
@@ -1,5 +1,8 @@
---
title: "VM-Operator: Controller — Reconciles the VM CRs"
+description: >-
+ Information about the VM Operator's controller component its
+ configuration options and the CRD used to define VMs.
layout: vm-operator
---
diff --git a/webpages/vm-operator/favicon.svg b/webpages/favicon.svg
similarity index 100%
rename from webpages/vm-operator/favicon.svg
rename to webpages/favicon.svg
diff --git a/webpages/vm-operator/index-pic.svg b/webpages/index-pic.svg
similarity index 100%
rename from webpages/vm-operator/index-pic.svg
rename to webpages/index-pic.svg
diff --git a/webpages/vm-operator/index.md b/webpages/index.md
similarity index 89%
rename from webpages/vm-operator/index.md
rename to webpages/index.md
index baf8e20..ea9c5eb 100644
--- a/webpages/vm-operator/index.md
+++ b/webpages/index.md
@@ -1,6 +1,9 @@
---
-title: Run VMs on Kubernetes using Qemu/KVM and SPICE
-description: A solution for running VMs on Kubernetes with a web interface for admins and users. Focuses on running Qemu/KVM virtual machines and using SPICE as display protocol.
+title: "Run VMs on Kubernetes using QEMU/KVM and SPICE"
+description: >-
+ A solution for running VMs on Kubernetes with a web interface for
+ admins and users. Focuses on running QEMU/KVM virtual machines and
+ using SPICE as display protocol.
layout: vm-operator
---
@@ -8,7 +11,7 @@ layout: vm-operator

-The goal of this project is to provide an easy to use and flexible solution
+This project provides an easy to use and flexible solution
for running Qemu/KVM based VMs in Kubernetes pods.
The image used for the VM pods combines Qemu and a control program
diff --git a/webpages/vm-operator/manager.md b/webpages/manager.md
similarity index 98%
rename from webpages/vm-operator/manager.md
rename to webpages/manager.md
index c1965f1..d283484 100644
--- a/webpages/vm-operator/manager.md
+++ b/webpages/manager.md
@@ -1,5 +1,8 @@
---
-title: "VM-Operator: The Manager — Provides the controller and a web user interface"
+title: "VM-Operator: The Manager — Provides the controller and a Web UI"
+description: >-
+ Information about the installation and configuration of the
+ VM Operator.
layout: vm-operator
---
diff --git a/webpages/pools.md b/webpages/pools.md
new file mode 100644
index 0000000..a42293e
--- /dev/null
+++ b/webpages/pools.md
@@ -0,0 +1,73 @@
+---
+title: "VM-Operator: VM pools — assigning VMs to users dynamically"
+layout: vm-operator
+---
+
+# VM Pools
+
+*Since 4.0.0*
+
+## Prepare the VM
+
+### Shared file system
+
+Mount a shared file system as home file system on all VMs in the pool.
+If you want to use the sample script for logging in a user, the filesystem
+must support POSIX file access control lists (ACLs).
+
+### Restrict access
+
+The VMs should only be accessible via a desktop started by the VM-Operator.
+
+ * Disable the display manager.
+
+ ```console
+ # systemctl disable gdm
+ # systemctl stop gdm
+ ```
+
+ * Disable `getty` on tty1.
+
+ ```console
+ # systemctl mask getty@tty1
+ # systemctl stop getty@tty1
+ ```
+
+You can, of course, disable `getty` completely. If you do this, make sure
+that you can still access your master VM through `ssh`, else you have
+locked yourself out.
+
+Strictly speaking, it is not necessary to disable these services, because
+the sample script includes a `Conflicts=` directive in the systemd service
+that starts the desktop for the user. However, this is mainly intended for
+development purposes and not for production.
+
+The following should actually be configured for any VM.
+
+ * Prevent suspend/hibernate, because it will lock the VM.
+
+ ```console
+ # systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
+ ```
+
+### Install the VM-Operator agent
+
+The VM-Operator agent runs as a systemd service. Sample configuration
+files can be found
+[here](https://github.com/mnlipp/VM-Operator/tree/main/dev-example/vmop-agent).
+Copy
+
+ * `99-vmop-agent.rules` to `/usr/local/lib/udev/rules.d/99-vmop-agent.rules`,
+ * `vmop-agent` to `/usr/local/libexec/vmop-agent` and
+ * `vmop-agent.service` to `/usr/local/lib/systemd/system/vmop-agent.service`.
+
+Note that some of the target directories do not exist by default and have to
+be created first. Don't forget to run `restorecon` on systems with SELinux.
+
+Enable everything:
+
+```console
+# udevadm control --reload-rules
+# systemctl enable vmop-agent
+# udevadm trigger
+ ```
diff --git a/webpages/robots-readthedocs.txt b/webpages/robots-readthedocs.txt
new file mode 100644
index 0000000..90e0f33
--- /dev/null
+++ b/webpages/robots-readthedocs.txt
@@ -0,0 +1,3 @@
+User-agent: *
+Allow: /
+Sitemap: https://kubernetes-vm-operator.readthedocs.io/sitemap.xml
diff --git a/webpages/robots.txt b/webpages/robots.txt
new file mode 100644
index 0000000..e1ed7b0
--- /dev/null
+++ b/webpages/robots.txt
@@ -0,0 +1,3 @@
+User-agent: *
+Allow: /
+Sitemap: https://vm-operator.jdrupes.org/sitemap.xml
diff --git a/webpages/vm-operator/runner.md b/webpages/runner.md
similarity index 96%
rename from webpages/vm-operator/runner.md
rename to webpages/runner.md
index c72793d..a6a744d 100644
--- a/webpages/vm-operator/runner.md
+++ b/webpages/runner.md
@@ -1,5 +1,9 @@
---
title: "VM-Operator: The Runner — Starts and monitors a VM"
+description: >-
+ Description of the VM Operator's runner component which starts
+ QEMU and thus the VM, optionally together with a TPM, in a
+ kubenernetes pod and monitors everything.
layout: vm-operator
---
diff --git a/webpages/stylesheets/styles.css b/webpages/stylesheets/styles.css
index 8d6b803..41fb0d0 100644
--- a/webpages/stylesheets/styles.css
+++ b/webpages/stylesheets/styles.css
@@ -189,6 +189,56 @@ footer {
margin-bottom:5px;
}
+#search {
+
+ --pagefind-ui-font: inherit;
+ --pagefind-ui-border-radius: 4px;
+
+ position: absolute;
+ right: 1em;
+ top: 1em;
+
+ .pagefind-ui__form {
+ width: 20em;
+ margin-left: auto;
+
+ &::before {
+ top: calc(17px * var(--pagefind-ui-scale));
+ }
+ }
+
+ .pagefind-ui__search-input {
+ font-weight: inherit;
+ height: calc(48px * var(--pagefind-ui-scale));
+ }
+
+ .pagefind-ui__search-clear {
+ font-weight: inherit;
+ height: calc(42px * var(--pagefind-ui-scale));
+ }
+
+ .pagefind-ui__drawer {
+ position: absolute;
+ right: 0;
+ width: 40em;
+ background-color: white;
+ border: solid var(--pagefind-ui-border-width) var(--pagefind-ui-border);
+ padding: 0 1em 1em 1em;
+ }
+
+ .pagefind-ui__message {
+ padding-top: 0;
+ }
+
+ .pagefind-ui__result {
+ padding: 0;
+ }
+
+ .pagefind-ui__result-title {
+ font-weight: inherit;
+ }
+}
+
@media print, screen and (max-width: 960px) {
div.wrapper {
diff --git a/webpages/vm-operator/upgrading.md b/webpages/upgrading.md
similarity index 58%
rename from webpages/vm-operator/upgrading.md
rename to webpages/upgrading.md
index 77cacad..6fdbc44 100644
--- a/webpages/vm-operator/upgrading.md
+++ b/webpages/upgrading.md
@@ -1,5 +1,7 @@
---
title: "VM-Operator: Upgrading — Issues to watch out for"
+description: >-
+ Information about issues to watch out for when upgrading the VM-Operator.
layout: vm-operator
---
@@ -7,16 +9,31 @@ layout: vm-operator
## To version 4.0.0
-The VmViewer conlet has been renamed to VmAccess. This affects the
-[configuration](https://jdrupes.org/vm-operator/user-gui.html). Configuration information using the old path
-"/Manager/GuiHttpServer/ConsoleWeblet/WebConsole/ComponentCollector/VmViewer"
-is still accepted for backward compatibility, but should be updated.
+ * The VmViewer conlet has been renamed to VmAccess. This affects the
+ [configuration](https://jdrupes.org/vm-operator/user-gui.html). Configuration
+ information using the old path
+ `/Manager/GuiHttpServer/ConsoleWeblet/WebConsole/ComponentCollector/VmViewer`
+ is still accepted for backward compatibility until the next major version,
+ but should be updated.
-The change of name also causes conlets added to the overview page by
-users to "disappear" from the GUI. They have to be re-added.
+ The change of name also causes conlets added to the overview page by
+ users to "disappear" from the GUI. They have to be re-added.
-The latter behavior also applies to the VmConlet conlet which has been
-renamed to VmMgmt.
+ The latter behavior also applies to the VmConlet conlet which has been
+ renamed to VmMgmt.
+
+ * The configuration property `passwordValidity` has been moved from component
+ `/Manager/Controller/DisplaySecretMonitor` to
+ `/Manager/Controller/Reconciler/DisplaySecretReconciler`. The old path is
+ still accepted for backward compatibility until the next major version,
+ but should be updated.
+
+ * The standard [template](./runner.html#stand-alone-configuration) used
+ to generate the QEMU command has been updated. Unless you have enabled
+ automatic updates of the template in the VM definition, you have to
+ update the template manually. If you're using your own template, you
+ have to add a virtual serial port (see the git history of the standard
+ template for the required addition).
## To version 3.4.0
diff --git a/webpages/vm-operator/user-gui.md b/webpages/user-gui.md
similarity index 91%
rename from webpages/vm-operator/user-gui.md
rename to webpages/user-gui.md
index 0439db2..828eb98 100644
--- a/webpages/vm-operator/user-gui.md
+++ b/webpages/user-gui.md
@@ -1,5 +1,9 @@
---
title: "VM-Operator: User View — Allows users to manage their own VMs"
+description: >-
+ Information about the user view of the VM-Operator, which allows users
+ to access and optionally manage the VMs for which they have the
+ respective permissions.
layout: vm-operator
---
@@ -127,16 +131,20 @@ of 16 (strong) random bytes (128 random bits). It is valid for
10 seconds only. This may be challenging on a slower computer
or if users may not enable automatic open for connection files
in the browser. The validity can therefore be adjusted in the
-configuration.
+configuration.[^oldPath]
```yaml
"/Manager":
"/Controller":
- "/DisplaySecretMonitor":
- # Validity of generated password in seconds
- passwordValidity: 10
+ "/Reconciler":
+ "/DisplaySecretReconciler":
+ # Validity of generated password in seconds
+ passwordValidity: 10
```
+[^oldPath]: Before version 4.0, the path for `passwordValidity` was
+ `/Manager/Controller/DisplaySecretMonitor`.
+
Taking into account that the controller generates a display
secret automatically by default, this approach to securing
console access should be sufficient in all cases. (Any feedback
diff --git a/webpages/vm-operator/webgui.md b/webpages/webgui.md
similarity index 100%
rename from webpages/vm-operator/webgui.md
rename to webpages/webgui.md
|