diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 658bc6d00..000000000
Binary files a/.DS_Store and /dev/null differ
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index b0f834c11..079c0fb1b 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -18,11 +18,11 @@ jobs:
         uses: actions/setup-node@v3
         with:
           # choose node.js version to use
-          node-version: '16'
+          node-version: '22'
 
       - name: Install and Build 🔧 # 
         run: |
-            yarn
+            yarn install --non-interactive --frozen-lockfile
             yarn docs:build
 
       - name: Deploy 🚀
diff --git a/.gitignore b/.gitignore
index 30672a0ea..3f1855b07 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,8 @@ docs/.vuepress/.temp
 node_modules
 
 .idea
-yarn.lock
+docs/.vuepress/dist/
+.vscode
+*.code-workspace
+.vs/
+.DS_Store
diff --git a/README.md b/README.md
index 1ff5cb3a0..ffc62fd07 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,54 @@
 # cloudlinux-documentation
 
-# Install dependencies
+## Install dependencies
 
-```
+```sh
 $ yarn
 ```
 
-# Start local server
+## Run development server
 
 ```sh
 $ yarn docs:dev
 ```
-# Static assets
+
+## Build static assets
 
 ```sh
 $ yarn docs:build
 ```
+
+## Adding Images
+
+When adding new images to the documentation, follow these guidelines:
+
+1. Image Location:
+   - Place all images in the `docs/.vuepress/public/images/` directory.
+   - Use subdirectories that match your documentation structure. Feel free to create new subdirectories as needed.
+   - Avoid placing images directly in the `images` directory.
+
+2. Image Format:
+   - Use WebP format for all images. Convert other formats to WebP before adding.
+
+3. Referencing Images in Markdown:
+   - Use relative paths from the root of the public directory.
+   - The path structure should mirror your documentation structure.
+
+
+### Example: Adding an image to the Solo CloudLinux User Docs
+
+Let's say you want to add an image to `End-user Documents > Cloudlinux Solo for end-users`.
+
+1. Convert your image to WebP format and give it a meaningful name, for example `solo-cloudlinux-dashboard.webp`.
+    - The filename should be all lowercase and use hyphens to separate words. no spaces or special characters.
+    - Use a descriptive name that reflects the image content.
+    - No more than 5 words in the filename.
+
+2. Place the image in the following directory:
+    ```
+    docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux
+    ```
+3. Reference the image in your markdown file:
+    ```
+    ![Solo CloudLinux Dashboard](/images/user-docs/user-docs-solo-cloudlinux/solo-cloudlinux-dashboard.webp)
+    ```
\ No newline at end of file
diff --git a/docs/.DS_Store b/docs/.DS_Store
deleted file mode 100644
index 37edf1822..000000000
Binary files a/docs/.DS_Store and /dev/null differ
diff --git a/docs/.vuepress/assets/icons/bot-icon.webp b/docs/.vuepress/assets/icons/bot-icon.webp
new file mode 100644
index 000000000..02c94cfe1
Binary files /dev/null and b/docs/.vuepress/assets/icons/bot-icon.webp differ
diff --git a/docs/.vuepress/client.ts b/docs/.vuepress/client.ts
index a7dff5ad4..628fae917 100644
--- a/docs/.vuepress/client.ts
+++ b/docs/.vuepress/client.ts
@@ -1,16 +1,28 @@
 import {provide} from "vue";
 import {defineClientConfig} from "@vuepress/client";
+import mitt from 'mitt';
 
 import Layout from "./theme/layouts/Layout.vue";
 import HomeLayout from "./theme/layouts/HomeLayout.vue";
 import NotFound from "./theme/layouts/NotFound.vue";
 
 import bottomLinks from "./config-client/bottomLinks";
+import navbarLinks from "./config-client/navbarLinks";
 import documents from "./config-client/documents";
 import sidebar from "./config-client/sidebar";
 import social from "./config-client/social";
 
+import Chat from "./components/Chat.vue";
+import CodeTabs from "./components/CodeTabs.vue";
+import CodeWithCopy from "./components/CodeWithCopy.vue";
+
 export default defineClientConfig({
+    rootComponents: [
+        Chat,
+    ],
+    async enhance({ app }) {
+        app.config.globalProperties.$eventBus = mitt();
+    },
     layouts: {
         Layout,
         HomeLayout,
@@ -25,8 +37,6 @@ export default defineClientConfig({
             allowGithubEdit: true,
             githubMainDir: "docs",
             githubRepository: "cloudlinux/cloudlinux-documentation",
-            submitRequestURL: "https://www.cloudlinux.com/support-portal/",
-            tryFreeLink: "https://cloudlinux.com/trial",
             MOBILE_BREAKPOINT: 767,
 
             //docs cards
@@ -52,14 +62,14 @@ export default defineClientConfig({
                 sidebar,
                 siteTitle: "Documentation",
                 stayInTouch: "Stay in touch",
-                submitRequest: "Submit support request",
-                tryFree: "Try Free",
+                navbarLinks: navbarLinks,
             },
 
             // Products
             productsList: ['CloudLinux', 'Imunify', 'TuxCare'],
             productsTitle: 'Products',
-
+            productsURLs: ['https://docs.cloudlinux.com', 'https://docs.imunify360.com', 'https://docs.tuxcare.com'],
+            
             //social links for footer
             social,
 
@@ -67,11 +77,12 @@ export default defineClientConfig({
             algoliaOptions: {
                 apiKey: "e6b9d79daf71aa98e2e2a51d4556f9d4",
                 indexName: "cloudlinuxos",
-                appId: "0TCNL6CGX8"
+                appId: "0TCNL6CGX8",
             },
 
-            MAX_ALGOLIA_VISIBLE_RESULT: 10,
-            MAX_ALGOLIA_VISIBLE_ROWS: 5,
+            MAX_VISIBLE_RESULT: 12,
+            MAX_VISIBLE_ROWS: 12,
+            MAX_HITS_PER_PAGE: 12,
         })
     }
 })
diff --git a/docs/.vuepress/components/Chat.vue b/docs/.vuepress/components/Chat.vue
new file mode 100644
index 000000000..9101d7eae
--- /dev/null
+++ b/docs/.vuepress/components/Chat.vue
@@ -0,0 +1,476 @@
+<template>
+  <div id="bot-ui">
+    <!-- Conditionally show toggle button with highlight -->
+    <div class="toggle-container" v-show="!(isMobile && showChat)">
+      <div v-if="shouldShowTooltip" class="pulse-ring"></div>
+      <button
+        class="chat-toggle"
+        @click="toggleChat"
+        :class="{ 'chat-open': showChat }"
+      >
+        <img
+          v-if="!showChat"
+          src="../assets/icons/bot-icon.webp"
+          alt="Bot icon"
+          class="bot-icon"
+        />
+        <svg
+          v-else
+          xmlns="http://www.w3.org/2000/svg"
+          viewBox="0 0 24 24"
+          fill="none"
+          stroke="currentColor"
+          stroke-width="2"
+          stroke-linecap="round"
+          stroke-linejoin="round"
+        >
+          <line x1="18" y1="6" x2="6" y2="18"></line>
+          <line x1="6" y1="6" x2="18" y2="18"></line>
+        </svg>
+      </button>
+      
+      <div v-if="shouldShowTooltip" class="highlight-container">
+        <div class="tooltip-text">
+          <div class="tooltip-close" @click="dismissTooltip">×</div>
+          <div class="tooltip-title"><b>Need help?</b></div>
+          <div class="tooltip-subtitle">I'm an AI chatbot, trained to answer all your questions.</div>
+        </div>
+      </div>
+    </div>
+
+    <div
+      v-if="showChat"
+      class="chat-container"
+      :class="{ fullscreen: isMobile, 'desktop-view': !isMobile }"
+    >
+      <div class="chat-header">
+        <div class="header-actions">
+          <button class="close-btn" @click="toggleChat">
+            <svg
+              xmlns="http://www.w3.org/2000/svg"
+              viewBox="0 0 24 24"
+              fill="none"
+              stroke="currentColor"
+              stroke-width="2"
+              stroke-linecap="round"
+              stroke-linejoin="round"
+            >
+              <line x1="18" y1="6" x2="6" y2="18"></line>
+              <line x1="6" y1="6" x2="18" y2="18"></line>
+            </svg>
+          </button>
+        </div>
+      </div>
+
+      <div class="iframe-container" ref="iframeContainer">
+        <iframe
+          :src="iframeUrl"
+          class="chat-iframe"
+          frameborder="0"
+          allow="clipboard-read; clipboard-write; fullscreen"
+          @load="onIframeLoad"
+        />
+        <div v-if="isLoading" class="loading-overlay">
+          <div class="spinner"></div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      showChat: false,
+      isLoading: true,
+      iframeUrl: "https://chatbot.cloudlinux.com/docs/cloudlinux",
+      windowWidth: 0, // Changed from window.innerWidth to avoid SSR error
+      tooltipDismissedTime: null,
+      tooltipDismissDuration: 2 * 60 * 60 * 1000, // 2 hours in milliseconds
+    };
+  },
+  computed: {
+    isMobile() {
+      return this.windowWidth < 768;
+    },
+    shouldShowTooltip() {
+      // Don't show tooltip if chat is open
+      if (this.showChat) {
+        return false;
+      }
+      
+      // Don't show tooltip if it was recently dismissed
+      if (this.tooltipDismissedTime) {
+        const currentTime = new Date().getTime();
+        if (currentTime - this.tooltipDismissedTime < this.tooltipDismissDuration) {
+          return false;
+        }
+      }
+      
+      return true;
+    },
+  },
+  mounted() {
+    window.addEventListener("resize", this.handleResize);
+    this.handleResize(); // Set initial windowWidth on client-side
+    this.loadTooltipDismissalState();
+  },
+  beforeUnmount() {
+    window.removeEventListener("resize", this.handleResize);
+  },
+  methods: {
+    toggleChat() {
+      this.showChat = !this.showChat;
+      // Dismiss tooltip when chat is opened
+      if (this.showChat) {
+        this.dismissTooltip();
+      }
+    },
+    handleResize() {
+      this.windowWidth = window.innerWidth;
+    },
+    onIframeLoad() {
+      this.isLoading = false;
+    },
+    dismissTooltip() {
+      const currentTime = new Date().getTime();
+      this.tooltipDismissedTime = currentTime;
+      if (typeof localStorage !== 'undefined') {
+        localStorage.setItem('cldocs_chatbot_tooltip_dismissed_time', currentTime.toString());
+      }
+    },
+    loadTooltipDismissalState() {
+      if (typeof localStorage !== 'undefined') {
+        const dismissedTime = localStorage.getItem('cldocs_chatbot_tooltip_dismissed_time');
+        if (dismissedTime) {
+          const parsedTime = parseInt(dismissedTime);
+          const currentTime = new Date().getTime();
+          
+          // If the dismissal duration has passed, clear the stored time
+          if (currentTime - parsedTime >= this.tooltipDismissDuration) {
+            localStorage.removeItem('cldocs_chatbot_tooltip_dismissed_time');
+            this.tooltipDismissedTime = null;
+          } else {
+            this.tooltipDismissedTime = parsedTime;
+          }
+        }
+      }
+    },
+  },
+};
+</script>
+
+<style lang="stylus" scoped>
+$primary-color = #3f83f8
+$background-color = white
+$border-radius = 16px
+mobile-breakpoint = 768px
+
+#bot-ui {
+  font-family: "Inter", "Avenir", Helvetica, Arial, sans-serif
+  position: fixed
+  bottom: 20px
+  right: 20px
+  z-index: 9999
+  transition: all 0.3s ease
+}
+
+.toggle-container {
+  position: relative
+}
+
+.pulse-ring {
+  position: absolute
+  top: 50%
+  left: 50%
+  transform: translate(-50%, -50%)
+  width: 66px
+  height: 66px
+  border-radius: 50%
+  background: rgba(63, 131, 248, 0.3)
+  animation: pulse 2s infinite
+  z-index: -1
+}
+
+.chat-toggle {
+  position: relative
+  background: white
+  border: 2px solid $primary-color
+  border-radius: 50%
+  width: 56px
+  height: 56px
+  cursor: pointer
+  display: flex
+  align-items: center
+  justify-content: center
+  box-shadow: 0 4px 12px rgba(0,0,0,0.15)
+  transition: transform 0.3s ease, box-shadow 0.3s ease
+  z-index: 10000
+  padding: 0
+  overflow: hidden
+
+  .bot-icon {
+    width: calc(100% - 4px)
+    height: calc(100% - 4px)
+    border-radius: 50%
+    object-fit: cover
+  }
+
+  svg {
+    color: $primary-color
+    width: 32px
+    height: 32px
+  }
+
+  &:hover {
+    transform: scale(1.05)
+    box-shadow: 0 6px 16px rgba(0,0,0,0.2)
+  }
+}
+
+.highlight-container {
+  position: absolute;
+  bottom: calc(100% + 15px);
+  right: 0;
+  display: flex;
+  flex-direction: column;
+  align-items: flex-end;
+  pointer-events: auto;
+  z-index: 10001;
+  max-width: 90vw;
+}
+
+.tooltip-text {
+  background: white;
+  color: black;
+  padding: 12px 20px;
+  border-radius: 20px;
+  font-size: 0.95rem; /* Increase this value to make the tooltip text larger */
+  animation: float 3s ease-in-out infinite;
+  position: relative;
+  text-align: right;
+  font-weight: 500;
+  box-shadow: 0 0 15px $primary-color;
+  overflow: visible;
+  text-overflow: clip;
+
+  &:hover {
+    animation-play-state: paused;
+  }
+}
+
+.tooltip-close {
+  position: absolute;
+  top: -8px;
+  right: -8px;
+  width: 20px;
+  height: 20px;
+  background: white;
+  border: 1px solid #ddd;
+  border-radius: 50%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  cursor: pointer;
+  font-size: 14px;
+  line-height: 1;
+  color: #666;
+  transition: all 0.2s ease;
+  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
+  z-index: 10;
+  pointer-events: auto;
+
+  &:hover {
+    background: #f5f5f5;
+    transform: scale(1.1);
+    color: #333;
+  }
+}
+
+.tooltip-title {
+  margin-bottom: 4px;
+  position: relative;
+  z-index: 2;
+}
+
+.tooltip-subtitle {
+  white-space: nowrap;
+  position: relative;
+  z-index: 2;
+}
+
+.chat-container {
+  position: fixed
+  border-radius: $border-radius
+  overflow: hidden
+  box-shadow: 0 12px 32px rgba(0,0,0,0.2)
+  background: $background-color
+  transition: all 0.3s ease
+  z-index: 9999
+
+  &.fullscreen {
+    top: 0
+    left: 0
+    right: 0
+    bottom: 0
+    border-radius: 0
+    width: 100%
+    height: 100vh
+  }
+
+  &.desktop-view {
+    top: 5vh
+    left: 5vw
+    right: 5vw
+    bottom: 5vh
+    width: 90vw
+    height: 90vh
+    max-width: none
+  }
+}
+
+.chat-header {
+  background: $primary-color
+  color: white
+  padding: 1rem 1.5rem
+  display: flex
+  justify-content: flex-end
+  align-items: center
+
+  .header-content {
+    display: flex
+    align-items: center
+
+    .header-avatar {
+      width: 32px
+      height: 32px
+      border-radius: 50%
+      margin-right: 10px
+      object-fit: cover
+    }
+
+    .bot-title {
+      font-weight: 600
+      font-size: 1rem
+    }
+  }
+
+  .header-actions {
+    display: flex
+    align-items: center
+
+    .close-btn {
+      background: none
+      border: none
+      color: white
+      cursor: pointer
+      display: flex
+      align-items: center
+      justify-content: center
+
+      svg {
+        stroke: white
+        width: 24px
+        height: 24px
+      }
+
+      &:hover {
+        opacity: 0.8
+      }
+    }
+  }
+}
+
+.iframe-container {
+  position: relative
+  width: 100%
+  height: calc(100% - 60px)
+}
+
+.chat-iframe {
+  width: 100%
+  height: 100%
+  border: none
+}
+
+.loading-overlay {
+  position: absolute
+  top: 0
+  left: 0
+  width: 100%
+  height: 100%
+  display: flex
+  justify-content: center
+  align-items: center
+  background: rgba(255, 255, 255, 0.7)
+
+  .spinner {
+    border: 4px solid $primary-color
+    border-top: 4px solid transparent
+    border-radius: 50%
+    width: 40px
+    height: 40px
+    animation: spin 1s linear infinite
+  }
+}
+
+@keyframes spin {
+  0% { transform: rotate(0deg) }
+  100% { transform: rotate(360deg) }
+}
+
+@keyframes pulse {
+  0% {
+    transform: translate(-50%, -50%) scale(0.8)
+    opacity: 0.7
+  }
+  50% {
+    transform: translate(-50%, -50%) scale(1.2)
+    opacity: 0.3
+  }
+  100% {
+    transform: translate(-50%, -50%) scale(1)
+    opacity: 0
+  }
+}
+
+@keyframes float {
+  0%, 100% {
+    transform: translateY(0)
+  }
+  50% {
+    transform: translateY(-4px)
+  }
+}
+
+@media (max-width: mobile-breakpoint) {
+  #bot-ui {
+    bottom: 15px
+    right: 15px
+  }
+
+  .chat-container {
+    bottom: 0
+  }
+
+  .chat-toggle.chat-open {
+    display: none
+  }
+
+  .highlight-container {
+    bottom: calc(100% + 15px)
+    right: 0
+  }
+
+  .tooltip-text {
+    font-size: 0.9rem; /* Adjust this value to change the tooltip text size on mobile devices */
+    padding: 10px 16px;
+    max-width: 90vw;
+  }
+  
+  .tooltip-subtitle {
+    white-space: nowrap;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/docs/.vuepress/components/CodeTabs.vue b/docs/.vuepress/components/CodeTabs.vue
new file mode 100644
index 000000000..bbf009a85
--- /dev/null
+++ b/docs/.vuepress/components/CodeTabs.vue
@@ -0,0 +1,159 @@
+<template>
+  <div class="code-tabs">
+    <div class="tab-buttons">
+      <button v-for="(tab, index) in tabs" :key="index" :class="{ active: activeTab === index }" @click="activeTab = index">
+        {{ tab.title }}
+      </button>
+    </div>
+
+    <div class="tab-content code-block-wrapper">
+      <button class="copy-button" @click="copyCode" aria-label="Copy code">
+        <svg v-if="!copied" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+          <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"/>
+          <path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"/>
+        </svg>
+        <svg v-else xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
+          <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"/>
+        </svg>
+      </button>
+
+      <pre><code ref="codeRef" class="language-bash">{{ tabs[activeTab].content }}</code></pre>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'CodeTabs',
+  props: {
+    tabs: {
+      type: Array,
+      required: true
+    }
+  },
+  data() {
+    return {
+      activeTab: 0,
+      copied: false
+    }
+  },
+  watch: {
+    activeTab() {
+      this.highlight()
+    }
+  },
+  mounted() {
+    this.highlight()
+  },
+  methods: {
+    highlight() {
+      this.$nextTick(() => {
+        if (typeof window !== 'undefined' && window.hljs && this.$refs.codeRef) {
+          window.hljs.highlightElement(this.$refs.codeRef)
+        }
+      })
+    },
+    copyCode() {
+      const text = this.tabs[this.activeTab].content
+      navigator.clipboard.writeText(text).then(() => {
+        this.copied = true
+        setTimeout(() => (this.copied = false), 2000)
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.code-tabs {
+  border: 1px solid #ccc;
+  border-radius: 8px;
+  overflow: hidden;
+  margin-bottom: 1.5rem;
+}
+
+.tab-buttons {
+  display: flex;
+  background-color: #2d2d2d;
+  border-bottom: 1px solid #444;
+}
+
+.tab-buttons button {
+  padding: 0.85em;
+  flex: 1;
+  background: none;
+  border: none;
+  cursor: pointer;
+  font-weight: 500;
+  color: #ccc;
+}
+
+.tab-buttons button.active {
+  color: #fff;
+  border-bottom: 2px solid #1994f9;
+  font-weight: bold;
+}
+
+.tab-content {
+  position: relative;
+  background-color: #2d2d2d;
+  font-family: monospace;
+  padding: 1rem;
+}
+
+.code-block-wrapper {
+  background-color: #2d2d2d;
+  padding: 12px;
+  position: relative;
+  overflow: hidden;
+}
+
+pre {
+  margin: 0;
+  background-color: transparent;
+  color: #2d2d2d;
+  font-size: 14px;
+  overflow-x: auto;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+  max-width: 100%;
+  line-height: 1.5;
+  box-shadow: none;
+}
+
+code {
+  color: #ccc;
+  background: none;
+  display: block;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+
+.copy-button {
+  position: absolute;
+  top: 0.5rem;
+  right: 0.5rem;
+  background: none;
+  border: none;
+  cursor: pointer;
+  padding: 0.2rem;
+  z-index: 10;
+}
+
+.copy-button svg {
+  fill: #ccc;
+  width: 20px;
+  height: 20px;
+  transition: fill 0.2s;
+}
+
+.copy-button:hover svg {
+  fill: #1994f9;
+}
+
+.language-bash {
+  font-size: 0.85em;
+  padding: 0;
+}
+</style>
+
diff --git a/docs/.vuepress/components/CodeWithCopy.vue b/docs/.vuepress/components/CodeWithCopy.vue
new file mode 100644
index 000000000..b22bbb360
--- /dev/null
+++ b/docs/.vuepress/components/CodeWithCopy.vue
@@ -0,0 +1,63 @@
+<template>
+  <div class="code-block-wrapper">
+    <button class="copy-button" @click="copyCode" aria-label="Copy code">
+      <svg v-if="!copied" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" class="copy-icon">
+        <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path>
+        <path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
+      </svg>
+      <svg v-else xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" class="copy-icon">
+        <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
+      </svg>
+    </button>
+    <slot />
+  </div>
+</template>
+
+<script setup>
+import { ref } from 'vue';
+
+const copied = ref(false);
+
+function copyCode() {
+  const code = document.querySelector('.code-block-wrapper pre code')?.innerText;
+  if (code) {
+    navigator.clipboard.writeText(code);
+    copied.value = true;
+    
+    setTimeout(() => {
+      copied.value = false;
+    }, 2000);
+  }
+}
+</script>
+
+<style scoped>
+.copy-button svg {
+  transition: fill 0.3s;
+}
+
+.copy-icon {
+  fill: #ccc;
+  width: 20px;
+  height: 20px;
+}
+
+.code-block-wrapper {
+  position: relative;
+}
+
+.copy-button {
+  position: absolute;
+  top: 0.5rem;
+  right: 0.5rem;
+  background: none;
+  border: none;
+  cursor: pointer;
+  padding: 0.2rem;
+  z-index: 10;
+}
+
+.copy-button:hover .copy-icon {
+  fill: #1994f9;
+}
+</style>
diff --git a/docs/.vuepress/config-client/bottomLinks.ts b/docs/.vuepress/config-client/bottomLinks.ts
index eb307cb40..852ebf759 100644
--- a/docs/.vuepress/config-client/bottomLinks.ts
+++ b/docs/.vuepress/config-client/bottomLinks.ts
@@ -5,10 +5,14 @@ export default [
     },
     {
         text: "Forum",
-        url: "https://www.cloudlinux.com/getting-started-with-cloudlinux-os"
+        url: "https://forum.cloudlinux.com/"
     },
     {
         text: "Blog",
         url: "https://blog.cloudlinux.com/"
+    },
+        {
+        text: "Privacy Policy",
+        url: "https://www.cloudlinux.com/privacy-policy/"
     }
-]
\ No newline at end of file
+]
diff --git a/docs/.vuepress/config-client/documents.ts b/docs/.vuepress/config-client/documents.ts
index 5b97ecad6..f284fbad7 100644
--- a/docs/.vuepress/config-client/documents.ts
+++ b/docs/.vuepress/config-client/documents.ts
@@ -2,30 +2,20 @@ export default [
     {
         title: "Introduction to Cloudlinux OS",
         description: "Introduction to CloudLinux OS editions and their description.",
-        link: "/introduction/",
+        link: "/introduction/cloudlinux-os-editions/",
     },
     {
-        title: "CloudLinux Solo",
-        description: "CloudLinux OS Solo is designed for VPS or dedicated servers with a single hosting account for any number of websites.",
-        link: "/solo/introduction/",
+        title: "CloudLinux OS",
+        description: "Optimizes shared hosting environments by enhancing stability, security, and performance through user isolation and efficient resource management. Featuring tools like LVE resource limits, CageFS, and multiple language selectors, it empowers hosting providers to offer superior services.",
+        link: "/cloudlinuxos/cloudlinux_installation/",
     },
     {
-        title: "CloudLinux OS Admin",
-        description: "CloudLinux OS Admin is designed for shared hosting providers and allows flawless migration of big shared hosting customers to individual VPS with the same CloudLinux features as on shared hosting.",
-        link: "/admin/description",
+        title: "AccelerateWP",
+        description: "AccelerateWP carries a suite of optimization features that can be enabled and automatically configured for the end user's site.",
+        link: "/cloudlinuxos/shared-pro/#acceleratewp",
     },
     {
-        title: "CloudLinux OS Shared",
-        description: "CloudLinux OS Shared is designed for shared hosting providers. It isolates each customer into a separate “Lightweight Virtualized Environment” (LVE), which allocates and limits server resources.",
-        link: "/shared/cloudlinux_installation/",
-    },
-    {
-        title: "CloudLinux OS Shared Pro",
-        description: "CloudLinux OS Shared Pro extends your CloudLinux OS Shared functionality with even more useful features.",
-        link: "/shared-pro/",
-    },
-    {
-        title: "CLN",
+        title: "CLN - CloudLinux Licenses",
         description: "CLN is a CloudLinux Network designed to easily manage your licenses of CloudLinux products and services by means of a user-friendly interface.",
         link: "/cln/introduction/",
     },
@@ -36,7 +26,7 @@ export default [
     },
     {
         title: "End-user Documents",
-        description: "Documentation section for end-users on Cloudlinux OS Shared & Solo.",
-        link: "/user-docs/user-docs-shared-cloudlinux/",
+        description: "Documentation section for end-users on Cloudlinux OS.",
+        link: "/user-docs/user-docs-shared-pro-cloudlinux/",
     }
-]
\ No newline at end of file
+]
diff --git a/docs/.vuepress/config-client/navbarLinks.ts b/docs/.vuepress/config-client/navbarLinks.ts
new file mode 100644
index 000000000..649db33e1
--- /dev/null
+++ b/docs/.vuepress/config-client/navbarLinks.ts
@@ -0,0 +1,12 @@
+export default [
+    {
+      text: "Submit support request",
+      url: "https://www.cloudlinux.com/support-portal/",
+      class: "btn"
+    },
+    {
+      text: "Try Free",
+      url: "https://cloudlinux.com/trial",
+      class: "btn btn-white"
+    }
+  ]
\ No newline at end of file
diff --git a/docs/.vuepress/config-client/sidebar.ts b/docs/.vuepress/config-client/sidebar.ts
index f958866eb..b07c191a7 100644
--- a/docs/.vuepress/config-client/sidebar.ts
+++ b/docs/.vuepress/config-client/sidebar.ts
@@ -3,7 +3,7 @@ export default {
         {
             collapsable: false,
             children: [
-                "/user-docs/user-docs-shared-cloudlinux/",
+                "/user-docs/user-docs-shared-pro-cloudlinux/",
                 "/user-docs/user-docs-solo-cloudlinux/"
             ]
         },
@@ -12,31 +12,9 @@ export default {
         {
             collapsable: false,
             children: [
-                "/introduction/"
-            ]
-        },
-    ],
-    '/admin/': [
-        {
-            collapsable: false,
-            children: [
-            "/admin/description/",
-            "/admin/installation/",
-            "/admin/components/",
-            "/admin/faq/"
-            ]
-        },
-    ],
-    '/solo/': [
-        {
-            collapsable: false,
-            children: [
-            "/solo/introduction/",
-            "/solo/installation/",
-            "/solo/activation/",
-            "/solo/administration/",
-            "/solo/manager/",
-            "/solo/faq/"
+                "/introduction/cloudlinux-os-editions/",
+                "/introduction/solo/",
+                "/introduction/admin/"
             ]
         },
     ],
@@ -53,17 +31,7 @@ export default {
                 "/cln/account_settings/",
                 "/cln/cln_for_resellers/",
                 "/cln/whmcs_plugin/",
-                "/cln/whmcs_awp_plugin/"
-            ]
-        },
-    ],
-    '/shared-pro/': [
-        {
-            collapsable: false,
-            children: [
-                "/shared-pro/x-ray/",
-                "/shared-pro/centralized-monitoring/",
-                "/shared-pro/accelerate-wp/"
+                "/cln/whmcs_advantage/"
             ]
         },
     ],
@@ -80,20 +48,23 @@ export default {
             ]
         },
     ],
-    '/shared/': [
+    '/cloudlinuxos/': [
         {
             collapsable: false,
             children: [
-                "/shared/cloudlinux_installation/",
-                "/shared/elevate/",
-                "/shared/limits/",
-                "/shared/lve_manager/",
-                "/shared/cloudlinux_os_components/",
-                "/shared/command-line_tools/",
-                "/shared/control_panel_integration/",
-                "/shared/cloudlinux_os_kernel/",
-                "/shared/for_cloudlinux_partners/",
-                "/shared/deprecated/"
+                "/cloudlinuxos/cloudlinux_installation/",
+                "/cloudlinuxos/elevate/",
+                "/cloudlinuxos/limits/",
+                "/cloudlinuxos/lve_manager/",
+                "/cloudlinuxos/cloudlinux_os_components/",
+                "/cloudlinuxos/shared-pro/",
+                "/cloudlinuxos/command-line_tools/",
+                "/cloudlinuxos/max_webserver/",
+                "/cloudlinuxos/alt-ea_packages/",
+                "/cloudlinuxos/control_panel_integration/",
+                "/cloudlinuxos/cloudlinux_os_kernel/",
+                "/cloudlinuxos/for_cloudlinux_partners/",
+                "/cloudlinuxos/deprecated/"
             ]
         },
     ],
@@ -109,4 +80,4 @@ export default {
             ]
         },
     ]
-}
\ No newline at end of file
+}
diff --git a/docs/.vuepress/config-user/plugins.ts b/docs/.vuepress/config-user/plugins.ts
index 02217eec3..2f34fd682 100644
--- a/docs/.vuepress/config-user/plugins.ts
+++ b/docs/.vuepress/config-user/plugins.ts
@@ -1,5 +1,7 @@
 import {containerPlugin} from "@vuepress/plugin-container";
 import {ContainerPluginOptions} from "@vuepress/plugin-container/lib/node/containerPlugin";
+import { registerComponentsPlugin } from '@vuepress/plugin-register-components'
+import { path } from '@vuepress/utils'
 
 export default [
     containerPlugin({
@@ -17,5 +19,7 @@ export default [
         before: info => `<div class="danger custom-block"><p class="custom-block-title">${info}</p>`,
         after: () => '</div>',
     } as ContainerPluginOptions),
-
+    registerComponentsPlugin({
+        componentsDir: path.resolve(__dirname, './components'),
+    })
 ]
\ No newline at end of file
diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts
index a4200f4d1..f8692df33 100644
--- a/docs/.vuepress/config.ts
+++ b/docs/.vuepress/config.ts
@@ -1,20 +1,37 @@
-import {defineUserConfig, viteBundler} from "vuepress";
-import theme from "./theme"
+import { defineUserConfig, viteBundler } from "vuepress";
+import theme from "./theme";
 import plugins from "./config-user/plugins";
+import headFunctions from "./headFunctions";
 
 export default defineUserConfig({
-    theme,
-    markdown: {
-        headers: {
-            level: [2,3,4,5]
-        }
+  theme,
+  markdown: {
+    headers: {
+      level: [2, 3, 4, 5],
     },
-    plugins,
-    bundler: viteBundler({
-        viteOptions: {
-            ssr: {
-                noExternal: ['vue-select']
-            }
+  },
+  plugins,
+  bundler: viteBundler({
+    viteOptions: {
+      ssr: {
+        noExternal: ['vue-select', 'vue-multiselect'],
+      },
+    },
+    vuePluginOptions: {
+      template: {
+        compilerOptions: {
+          isCustomElement: (tag) => {
+            // List of deprecated HTML tags to treat as custom elements
+            // Add any other custom elements to this list 
+            const customElements = [
+              'Badge', 'center', 'font', 'big', 'small', 'strike', 'tt', 
+              'marquee', 'blink', 'applet', 'frameset', 'frame', 'dir',
+            ];
+            return customElements.includes(tag);
+          },
         },
-    })
-});
\ No newline at end of file
+      },
+    },
+  }),
+  head: headFunctions,
+});
diff --git a/docs/.vuepress/headFunctions.ts b/docs/.vuepress/headFunctions.ts
new file mode 100644
index 000000000..26f55b5c1
--- /dev/null
+++ b/docs/.vuepress/headFunctions.ts
@@ -0,0 +1,81 @@
+import routes from './routes.json';
+
+export default [
+  [
+    "script",
+    {
+      type: "text/javascript",
+      id: "hs-script-loader",
+      async: true,
+      defer: true,
+      src: "//js.hs-scripts.com/5408110.js",
+    },
+  ],
+  [
+    "script",
+    {},
+    `
+    (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
+    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+    })(window,document,'script','dataLayer','GTM-T538N4K');
+    `,
+  ],
+  [
+    "script",
+    {},
+    `
+    (function() {
+    var routes = ${JSON.stringify(routes)};
+    
+    // Function to normalize a URL by removing a trailing slash and leading characters
+    function normalizeUrl(url) {
+      url = url.endsWith('/') ? url.slice(0, -1) : url;
+      url = url.startsWith('/') ? url.slice(1) : url;
+      url = url.startsWith('?') ? url.slice(1) : url;
+      return url;
+    }
+  
+    var currentPath = window.location.pathname + window.location.search + window.location.hash;
+    currentPath = normalizeUrl(currentPath);
+  
+    for (var route_url in routes) {
+      if (normalizeUrl(route_url) === currentPath) {
+      window.location.href = routes[route_url];
+      break; // Exit the loop after redirecting
+      }
+    }
+    })();
+    `,
+  ],
+  [
+    "script",
+    {},
+    `
+    (function() {
+      // Trigger the scroll event without actually scrolling
+      function triggerScrollEvent() {
+      const targetElement = window;
+      const scrollEvent = new Event('scroll', {
+        bubbles: true,
+        cancelable: true,
+      });
+      targetElement.dispatchEvent(scrollEvent);
+      }
+  
+      // Call the triggerScrollEvent and scrollBodyDown functions after the page is fully loaded
+      window.addEventListener('load', () => {
+      triggerScrollEvent();
+      });
+    })();
+    `,
+  ],
+  [
+    "meta",
+    {
+      name: "google-site-verification",
+      content: "5-Q2NFM8YQ1f64j819in5tsqnlwNjQXX6Y0PQzmBEcs",
+    },
+  ],
+];
\ No newline at end of file
diff --git a/docs/.vuepress/public/AWPDirectAdmin.png b/docs/.vuepress/public/AWPDirectAdmin.png
new file mode 100644
index 000000000..d74296514
Binary files /dev/null and b/docs/.vuepress/public/AWPDirectAdmin.png differ
diff --git a/docs/.vuepress/public/cln-activation-key-details.png b/docs/.vuepress/public/cln-activation-key-details.png
new file mode 100644
index 000000000..cbdfdaba7
Binary files /dev/null and b/docs/.vuepress/public/cln-activation-key-details.png differ
diff --git a/docs/.vuepress/public/cln-activation-keys.png b/docs/.vuepress/public/cln-activation-keys.png
new file mode 100644
index 000000000..e1bae2aab
Binary files /dev/null and b/docs/.vuepress/public/cln-activation-keys.png differ
diff --git a/docs/.vuepress/public/cln-edit-activation-key.png b/docs/.vuepress/public/cln-edit-activation-key.png
new file mode 100644
index 000000000..9db632146
Binary files /dev/null and b/docs/.vuepress/public/cln-edit-activation-key.png differ
diff --git a/docs/.vuepress/public/cln-edit-ip-license.png b/docs/.vuepress/public/cln-edit-ip-license.png
new file mode 100644
index 000000000..3d4ef8351
Binary files /dev/null and b/docs/.vuepress/public/cln-edit-ip-license.png differ
diff --git a/docs/.vuepress/public/cln-ip-licenses-section.png b/docs/.vuepress/public/cln-ip-licenses-section.png
new file mode 100644
index 000000000..5d402af9b
Binary files /dev/null and b/docs/.vuepress/public/cln-ip-licenses-section.png differ
diff --git a/docs/.vuepress/public/cloudlinux-xmlrpc-api.pdf b/docs/.vuepress/public/cloudlinux-xmlrpc-api.pdf
new file mode 100644
index 000000000..41698223a
Binary files /dev/null and b/docs/.vuepress/public/cloudlinux-xmlrpc-api.pdf differ
diff --git a/docs/.vuepress/public/cloudlinux_rest_api.pdf b/docs/.vuepress/public/cloudlinux_rest_api.pdf
new file mode 100644
index 000000000..abb6ad488
Binary files /dev/null and b/docs/.vuepress/public/cloudlinux_rest_api.pdf differ
diff --git a/docs/.vuepress/public/images/cln/account_settings/companyinformation_zoom70.webp b/docs/.vuepress/public/images/cln/account_settings/companyinformation_zoom70.webp
new file mode 100644
index 000000000..169015268
Binary files /dev/null and b/docs/.vuepress/public/images/cln/account_settings/companyinformation_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/account_settings/personalinfo_zoom70.webp b/docs/.vuepress/public/images/cln/account_settings/personalinfo_zoom70.webp
new file mode 100644
index 000000000..85b2a517b
Binary files /dev/null and b/docs/.vuepress/public/images/cln/account_settings/personalinfo_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/account_settings/reports_zoom70.webp b/docs/.vuepress/public/images/cln/account_settings/reports_zoom70.webp
new file mode 100644
index 000000000..6a7b3d2e4
Binary files /dev/null and b/docs/.vuepress/public/images/cln/account_settings/reports_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/account_settings/settings_zoom70.webp b/docs/.vuepress/public/images/cln/account_settings/settings_zoom70.webp
new file mode 100644
index 000000000..d47a7a97c
Binary files /dev/null and b/docs/.vuepress/public/images/cln/account_settings/settings_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/account_settings/sublogins_zoom70.webp b/docs/.vuepress/public/images/cln/account_settings/sublogins_zoom70.webp
new file mode 100644
index 000000000..ed8858f4e
Binary files /dev/null and b/docs/.vuepress/public/images/cln/account_settings/sublogins_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/billing/billing_zoom70.webp b/docs/.vuepress/public/images/cln/billing/billing_zoom70.webp
new file mode 100644
index 000000000..1d1fc7d21
Binary files /dev/null and b/docs/.vuepress/public/images/cln/billing/billing_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/billing/billinginvoices_zoom70.webp b/docs/.vuepress/public/images/cln/billing/billinginvoices_zoom70.webp
new file mode 100644
index 000000000..723ebd1ba
Binary files /dev/null and b/docs/.vuepress/public/images/cln/billing/billinginvoices_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/billing/clncloudlinuxpaypal_zoom60.webp b/docs/.vuepress/public/images/cln/billing/clncloudlinuxpaypal_zoom60.webp
new file mode 100644
index 000000000..455ec0ca2
Binary files /dev/null and b/docs/.vuepress/public/images/cln/billing/clncloudlinuxpaypal_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cln/billing/clnpaymentconfirmation_zoom60.webp b/docs/.vuepress/public/images/cln/billing/clnpaymentconfirmation_zoom60.webp
new file mode 100644
index 000000000..794e52d85
Binary files /dev/null and b/docs/.vuepress/public/images/cln/billing/clnpaymentconfirmation_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cln/billing/clnpaynowbtn_zoom50.webp b/docs/.vuepress/public/images/cln/billing/clnpaynowbtn_zoom50.webp
new file mode 100644
index 000000000..dcba7b796
Binary files /dev/null and b/docs/.vuepress/public/images/cln/billing/clnpaynowbtn_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/billing/clnselectpaymentmethod2_zoom60.webp b/docs/.vuepress/public/images/cln/billing/clnselectpaymentmethod2_zoom60.webp
new file mode 100644
index 000000000..bc377bcd7
Binary files /dev/null and b/docs/.vuepress/public/images/cln/billing/clnselectpaymentmethod2_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cln/billing/clnselectpaymentmethod_zoom60.webp b/docs/.vuepress/public/images/cln/billing/clnselectpaymentmethod_zoom60.webp
new file mode 100644
index 000000000..e255b964d
Binary files /dev/null and b/docs/.vuepress/public/images/cln/billing/clnselectpaymentmethod_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/cln-activation-key-details.png b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-activation-key-details.png
new file mode 100644
index 000000000..cbdfdaba7
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-activation-key-details.png differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/cln-activation-keys.png b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-activation-keys.png
new file mode 100644
index 000000000..e1bae2aab
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-activation-keys.png differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/cln-choose-permissions.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-choose-permissions.webp
new file mode 100644
index 000000000..57f869cb0
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-choose-permissions.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/cln-edit-activation-key.png b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-edit-activation-key.png
new file mode 100644
index 000000000..9db632146
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-edit-activation-key.png differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/cln-edit-ip-license.png b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-edit-ip-license.png
new file mode 100644
index 000000000..3d4ef8351
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-edit-ip-license.png differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/cln-ip-licenses-section.png b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-ip-licenses-section.png
new file mode 100644
index 000000000..5d402af9b
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-ip-licenses-section.png differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/cln-ip-licenses-section.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-ip-licenses-section.webp
new file mode 100644
index 000000000..5d402af9b
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/cln-ip-licenses-section.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clnactivatebackup.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clnactivatebackup.webp
new file mode 100644
index 000000000..cfeb8b297
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clnactivatebackup.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clnarrow.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clnarrow.webp
new file mode 100644
index 000000000..57987c7c0
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clnarrow.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clnautopayments_zoom60.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clnautopayments_zoom60.webp
new file mode 100644
index 000000000..924ea418b
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clnautopayments_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clncreatebackup_zoom70.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clncreatebackup_zoom70.webp
new file mode 100644
index 000000000..1b3288427
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clncreatebackup_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clndeposittopup_zoom60.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clndeposittopup_zoom60.webp
new file mode 100644
index 000000000..849dc5e1c
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clndeposittopup_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clnicondownload.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clnicondownload.webp
new file mode 100644
index 000000000..0929f0833
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clnicondownload.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clniconshow.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clniconshow.webp
new file mode 100644
index 000000000..ae0ccf8ec
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clniconshow.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clniplicense_zoom60.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clniplicense_zoom60.webp
new file mode 100644
index 000000000..72ccc6a26
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clniplicense_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clnmanagebackup.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clnmanagebackup.webp
new file mode 100644
index 000000000..e31f7b030
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clnmanagebackup.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clnresellerinvoices_zoom60.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clnresellerinvoices_zoom60.webp
new file mode 100644
index 000000000..dedd4452a
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clnresellerinvoices_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cln/cln_for_resellers/clntopup.webp b/docs/.vuepress/public/images/cln/cln_for_resellers/clntopup.webp
new file mode 100644
index 000000000..ab4cf8ba7
Binary files /dev/null and b/docs/.vuepress/public/images/cln/cln_for_resellers/clntopup.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/add_item.webp b/docs/.vuepress/public/images/cln/dashboard/add_item.webp
new file mode 100644
index 000000000..a6c139cf4
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/add_item.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/add_mass_action (1).webp b/docs/.vuepress/public/images/cln/dashboard/add_mass_action (1).webp
new file mode 100644
index 000000000..f1e805879
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/add_mass_action (1).webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/add_mass_action.webp b/docs/.vuepress/public/images/cln/dashboard/add_mass_action.webp
new file mode 100644
index 000000000..f1e805879
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/add_mass_action.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/add_server.webp b/docs/.vuepress/public/images/cln/dashboard/add_server.webp
new file mode 100644
index 000000000..b236ea095
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/add_server.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/added_result.webp b/docs/.vuepress/public/images/cln/dashboard/added_result.webp
new file mode 100644
index 000000000..3dbc39c44
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/added_result.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/allserverspng_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/allserverspng_zoom70.webp
new file mode 100644
index 000000000..e094bedd1
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/allserverspng_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/bin.webp b/docs/.vuepress/public/images/cln/dashboard/bin.webp
new file mode 100644
index 000000000..be4d870b9
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/bin.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/cln_edit-activation_key_permissions.webp b/docs/.vuepress/public/images/cln/dashboard/cln_edit-activation_key_permissions.webp
new file mode 100644
index 000000000..57f869cb0
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/cln_edit-activation_key_permissions.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/cln_shared-pro_activation-keys.webp b/docs/.vuepress/public/images/cln/dashboard/cln_shared-pro_activation-keys.webp
new file mode 100644
index 000000000..bd6eea049
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/cln_shared-pro_activation-keys.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/cln_shared-pro_edit_key.webp b/docs/.vuepress/public/images/cln/dashboard/cln_shared-pro_edit_key.webp
new file mode 100644
index 000000000..2e164602f
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/cln_shared-pro_edit_key.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/cloudlinuxactivationkeysdetails_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/cloudlinuxactivationkeysdetails_zoom70.webp
new file mode 100644
index 000000000..176ba76c6
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/cloudlinuxactivationkeysdetails_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/cloudlinuxosactivationkeys_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/cloudlinuxosactivationkeys_zoom70.webp
new file mode 100644
index 000000000..aaafeb8ad
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/cloudlinuxosactivationkeys_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/create_group.webp b/docs/.vuepress/public/images/cln/dashboard/create_group.webp
new file mode 100644
index 000000000..2d44895ac
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/create_group.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/cross.webp b/docs/.vuepress/public/images/cln/dashboard/cross.webp
new file mode 100644
index 000000000..f10315389
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/cross.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/dashboard_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/dashboard_zoom70.webp
new file mode 100644
index 000000000..134b45764
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/dashboard_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/editactivationkey.webp b/docs/.vuepress/public/images/cln/dashboard/editactivationkey.webp
new file mode 100644
index 000000000..351d4f643
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/editactivationkey.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/freetrial_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/freetrial_zoom70.webp
new file mode 100644
index 000000000..d439ab447
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/freetrial_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/fretrialpurchase_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/fretrialpurchase_zoom70.webp
new file mode 100644
index 000000000..66d233aa3
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/fretrialpurchase_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/ie-cl-permission-iplicense.webp b/docs/.vuepress/public/images/cln/dashboard/ie-cl-permission-iplicense.webp
new file mode 100644
index 000000000..86c537e3b
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/ie-cl-permission-iplicense.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/ie-cln-permission-popup.webp b/docs/.vuepress/public/images/cln/dashboard/ie-cln-permission-popup.webp
new file mode 100644
index 000000000..5074bdefa
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/ie-cln-permission-popup.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/ie-cln-permission-server-level.webp b/docs/.vuepress/public/images/cln/dashboard/ie-cln-permission-server-level.webp
new file mode 100644
index 000000000..dd6c4d605
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/ie-cln-permission-server-level.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/ie-cln-popup-window.webp b/docs/.vuepress/public/images/cln/dashboard/ie-cln-popup-window.webp
new file mode 100644
index 000000000..82d84b7d4
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/ie-cln-popup-window.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/im360editactivationkey.webp b/docs/.vuepress/public/images/cln/dashboard/im360editactivationkey.webp
new file mode 100644
index 000000000..15c66b6bd
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/im360editactivationkey.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/im360licensetypes_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/im360licensetypes_zoom70.webp
new file mode 100644
index 000000000..0f1c6df3d
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/im360licensetypes_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/im360upto30activationkey_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/im360upto30activationkey_zoom70.webp
new file mode 100644
index 000000000..79c1d4132
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/im360upto30activationkey_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunify-email-global-level.webp b/docs/.vuepress/public/images/cln/dashboard/imunify-email-global-level.webp
new file mode 100644
index 000000000..debd05f74
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunify-email-global-level.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunify-email-manage-permission-cln.webp b/docs/.vuepress/public/images/cln/dashboard/imunify-email-manage-permission-cln.webp
new file mode 100644
index 000000000..2d9184234
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunify-email-manage-permission-cln.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunify-email-manage-permissions2.webp b/docs/.vuepress/public/images/cln/dashboard/imunify-email-manage-permissions2.webp
new file mode 100644
index 000000000..5074bdefa
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunify-email-manage-permissions2.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunify-email-permissions-server-level.webp b/docs/.vuepress/public/images/cln/dashboard/imunify-email-permissions-server-level.webp
new file mode 100644
index 000000000..757bedbb5
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunify-email-permissions-server-level.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunify-email-popup-cln.webp b/docs/.vuepress/public/images/cln/dashboard/imunify-email-popup-cln.webp
new file mode 100644
index 000000000..82d84b7d4
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunify-email-popup-cln.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunify360activationkeydetails_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/imunify360activationkeydetails_zoom70.webp
new file mode 100644
index 000000000..13d75e731
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunify360activationkeydetails_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunify360activationkeys_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/imunify360activationkeys_zoom70.webp
new file mode 100644
index 000000000..26f6dd1c9
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunify360activationkeys_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunify360changeserverlisencetype.webp b/docs/.vuepress/public/images/cln/dashboard/imunify360changeserverlisencetype.webp
new file mode 100644
index 000000000..95ae2567a
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunify360changeserverlisencetype.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunifyemail-cln-global-level.webp b/docs/.vuepress/public/images/cln/dashboard/imunifyemail-cln-global-level.webp
new file mode 100644
index 000000000..53a16de0e
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunifyemail-cln-global-level.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/imunifyemail-cln-permission-by-key.webp b/docs/.vuepress/public/images/cln/dashboard/imunifyemail-cln-permission-by-key.webp
new file mode 100644
index 000000000..32c227d48
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/imunifyemail-cln-permission-by-key.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/kcactivationkeypage_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/kcactivationkeypage_zoom70.webp
new file mode 100644
index 000000000..8bfb6810d
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/kcactivationkeypage_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/kceditpng.webp b/docs/.vuepress/public/images/cln/dashboard/kceditpng.webp
new file mode 100644
index 000000000..b732fd54e
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/kceditpng.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/kcremovekey.webp b/docs/.vuepress/public/images/cln/dashboard/kcremovekey.webp
new file mode 100644
index 000000000..a71f27fc0
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/kcremovekey.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/kcstickytag.webp b/docs/.vuepress/public/images/cln/dashboard/kcstickytag.webp
new file mode 100644
index 000000000..75fb080b6
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/kcstickytag.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/kernelcareactivationkeydetails_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/kernelcareactivationkeydetails_zoom70.webp
new file mode 100644
index 000000000..53694e596
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/kernelcareactivationkeydetails_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/manage_group (1).webp b/docs/.vuepress/public/images/cln/dashboard/manage_group (1).webp
new file mode 100644
index 000000000..3d34d549e
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/manage_group (1).webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/manage_group.webp b/docs/.vuepress/public/images/cln/dashboard/manage_group.webp
new file mode 100644
index 000000000..3d34d549e
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/manage_group.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/manage_server_groups.webp b/docs/.vuepress/public/images/cln/dashboard/manage_server_groups.webp
new file mode 100644
index 000000000..3d34d549e
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/manage_server_groups.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/move_to_another_group.webp b/docs/.vuepress/public/images/cln/dashboard/move_to_another_group.webp
new file mode 100644
index 000000000..4f90af65e
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/move_to_another_group.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/new_group.webp b/docs/.vuepress/public/images/cln/dashboard/new_group.webp
new file mode 100644
index 000000000..1a12cfd3f
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/new_group.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/newclnclbackup_zoom70.webp b/docs/.vuepress/public/images/cln/dashboard/newclnclbackup_zoom70.webp
new file mode 100644
index 000000000..729ff1728
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/newclnclbackup_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/plus.webp b/docs/.vuepress/public/images/cln/dashboard/plus.webp
new file mode 100644
index 000000000..3c4b71a2c
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/plus.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/remove_server.webp b/docs/.vuepress/public/images/cln/dashboard/remove_server.webp
new file mode 100644
index 000000000..f5086753d
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/remove_server.webp differ
diff --git a/docs/.vuepress/public/images/cln/dashboard/removeactivationkey.webp b/docs/.vuepress/public/images/cln/dashboard/removeactivationkey.webp
new file mode 100644
index 000000000..dbde50f0c
Binary files /dev/null and b/docs/.vuepress/public/images/cln/dashboard/removeactivationkey.webp differ
diff --git a/docs/.vuepress/public/images/cln/introduction/serverlicensecheck_zoom70.webp b/docs/.vuepress/public/images/cln/introduction/serverlicensecheck_zoom70.webp
new file mode 100644
index 000000000..f35e61d9b
Binary files /dev/null and b/docs/.vuepress/public/images/cln/introduction/serverlicensecheck_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/payment_methods/billinginformation_zoom70.webp b/docs/.vuepress/public/images/cln/payment_methods/billinginformation_zoom70.webp
new file mode 100644
index 000000000..0f4f79ffc
Binary files /dev/null and b/docs/.vuepress/public/images/cln/payment_methods/billinginformation_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/payment_methods/billingpaymentmethods_zoom70.webp b/docs/.vuepress/public/images/cln/payment_methods/billingpaymentmethods_zoom70.webp
new file mode 100644
index 000000000..3a4406ae2
Binary files /dev/null and b/docs/.vuepress/public/images/cln/payment_methods/billingpaymentmethods_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/purchase/billingpurchase_zoom70.webp b/docs/.vuepress/public/images/cln/purchase/billingpurchase_zoom70.webp
new file mode 100644
index 000000000..098906404
Binary files /dev/null and b/docs/.vuepress/public/images/cln/purchase/billingpurchase_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/purchase/cartpage_zoom70.webp b/docs/.vuepress/public/images/cln/purchase/cartpage_zoom70.webp
new file mode 100644
index 000000000..19d72fef2
Binary files /dev/null and b/docs/.vuepress/public/images/cln/purchase/cartpage_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/purchase/key-based-clos-plus.webp b/docs/.vuepress/public/images/cln/purchase/key-based-clos-plus.webp
new file mode 100644
index 000000000..c8ba25cfc
Binary files /dev/null and b/docs/.vuepress/public/images/cln/purchase/key-based-clos-plus.webp differ
diff --git a/docs/.vuepress/public/images/cln/purchase/purchasecloudlinux_zoom70.webp b/docs/.vuepress/public/images/cln/purchase/purchasecloudlinux_zoom70.webp
new file mode 100644
index 000000000..f4a013c62
Binary files /dev/null and b/docs/.vuepress/public/images/cln/purchase/purchasecloudlinux_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/purchase/purchaseels_zoom70.webp b/docs/.vuepress/public/images/cln/purchase/purchaseels_zoom70.webp
new file mode 100644
index 000000000..1d62f6368
Binary files /dev/null and b/docs/.vuepress/public/images/cln/purchase/purchaseels_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/purchase/purchaseimunify360_zoom70.webp b/docs/.vuepress/public/images/cln/purchase/purchaseimunify360_zoom70.webp
new file mode 100644
index 000000000..b275816a6
Binary files /dev/null and b/docs/.vuepress/public/images/cln/purchase/purchaseimunify360_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/purchase/purchasekernelcare_zoom70.webp b/docs/.vuepress/public/images/cln/purchase/purchasekernelcare_zoom70.webp
new file mode 100644
index 000000000..f15d52ecd
Binary files /dev/null and b/docs/.vuepress/public/images/cln/purchase/purchasekernelcare_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-activate.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-activate.webp
new file mode 100644
index 000000000..73238e540
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-activate.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-configure.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-configure.webp
new file mode 100644
index 000000000..acee89ef3
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-configure.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-menu.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-menu.webp
new file mode 100644
index 000000000..d652a9038
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-menu.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page-example-cron.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page-example-cron.webp
new file mode 100644
index 000000000..15fb652e4
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page-example-cron.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page-push-modal.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page-push-modal.webp
new file mode 100644
index 000000000..63f2accfd
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page-push-modal.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page.webp
new file mode 100644
index 000000000..0c8016eea
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-config-option-price.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-config-option-price.webp
new file mode 100644
index 000000000..fc1674aaf
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-config-option-price.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-config-option.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-config-option.webp
new file mode 100644
index 000000000..8ee2ba997
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-config-option.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-config-option.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-config-option.webp
new file mode 100644
index 000000000..403813795
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-config-option.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-price.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-price.webp
new file mode 100644
index 000000000..f93293228
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-price.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-upgrades.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-upgrades.webp
new file mode 100644
index 000000000..579479b8a
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-product-upgrades.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-service-change-config-option.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-service-change-config-option.webp
new file mode 100644
index 000000000..88582a76f
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-service-change-config-option.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-ui-new-config-option.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-ui-new-config-option.webp
new file mode 100644
index 000000000..19fd72258
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-ui-new-config-option.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-ui-upgrade-config-option.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-ui-upgrade-config-option.webp
new file mode 100644
index 000000000..90c50dae2
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-admin-ui-upgrade-config-option.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-order.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-order.webp
new file mode 100644
index 000000000..19fd72258
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-order.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services-config-option-change.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services-config-option-change.webp
new file mode 100644
index 000000000..05e05be4c
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services-config-option-change.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services-config-option-upgrade.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services-config-option-upgrade.webp
new file mode 100644
index 000000000..90c50dae2
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services-config-option-upgrade.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services.webp b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services.webp
new file mode 100644
index 000000000..be54669c9
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_advantage/whmcs-advantage-user-services.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/LinkedCLProducts.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/LinkedCLProducts.webp
new file mode 100644
index 000000000..31e8a3c52
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/LinkedCLProducts.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/MainProduct.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/MainProduct.webp
new file mode 100644
index 000000000..4061144fb
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/MainProduct.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig10licensesdetails_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig10licensesdetails_zoom50.webp
new file mode 100644
index 000000000..8c0e24b83
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig10licensesdetails_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig11orderproductsgroup_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig11orderproductsgroup_zoom50.webp
new file mode 100644
index 000000000..3f401d5de
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig11orderproductsgroup_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig12orderconfigureproduct_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig12orderconfigureproduct_zoom50.webp
new file mode 100644
index 000000000..623978189
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig12orderconfigureproduct_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig13orderreviewandcheckout_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig13orderreviewandcheckout_zoom50.webp
new file mode 100644
index 000000000..f6f9deb0a
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig13orderreviewandcheckout_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig14imunify360licensesforwhmcsadminarea_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig14imunify360licensesforwhmcsadminarea_zoom50.webp
new file mode 100644
index 000000000..888aa894e
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig14imunify360licensesforwhmcsadminarea_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig15imunify360licensesforwhmcsclientarea_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig15imunify360licensesforwhmcsclientarea_zoom50.webp
new file mode 100644
index 000000000..8c0e24b83
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig15imunify360licensesforwhmcsclientarea_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig16changinglicenseipaddress_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig16changinglicenseipaddress_zoom70.webp
new file mode 100644
index 000000000..705f9ee0f
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig16changinglicenseipaddress_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig18licenseslist_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig18licenseslist_zoom70.webp
new file mode 100644
index 000000000..74977e581
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig18licenseslist_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig19addonlicenseslist_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig19addonlicenseslist_zoom70.webp
new file mode 100644
index 000000000..7d78eb81c
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig19addonlicenseslist_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig2imunify360licenseforwhmcsaddon_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig2imunify360licenseforwhmcsaddon_zoom70.webp
new file mode 100644
index 000000000..74977e581
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig2imunify360licenseforwhmcsaddon_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig3configurationofproductaddon1_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig3configurationofproductaddon1_zoom50.webp
new file mode 100644
index 000000000..e27beece8
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig3configurationofproductaddon1_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig3configurationofproductaddon2_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig3configurationofproductaddon2_zoom50.webp
new file mode 100644
index 000000000..406e539a3
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig3configurationofproductaddon2_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig4creatingrelation_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig4creatingrelation_zoom70.webp
new file mode 100644
index 000000000..4f33cbae8
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig4creatingrelation_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig5creatingrelationdirectly_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig5creatingrelationdirectly_zoom70.webp
new file mode 100644
index 000000000..f2e6d7e13
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig5creatingrelationdirectly_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig6configurationofproductaddon_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig6configurationofproductaddon_zoom50.webp
new file mode 100644
index 000000000..bda261b2a
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig6configurationofproductaddon_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig6creatingrelationdirectlybetweenserverandlicenseprovisioningmodules_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig6creatingrelationdirectlybetweenserverandlicenseprovisioningmodules_zoom70.webp
new file mode 100644
index 000000000..9cd038f38
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig6creatingrelationdirectlybetweenserverandlicenseprovisioningmodules_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig7imunify360productsettings_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig7imunify360productsettings_zoom50.webp
new file mode 100644
index 000000000..38548bba3
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig7imunify360productsettings_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig7setupkernelcarelicense_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig7setupkernelcarelicense_zoom70.webp
new file mode 100644
index 000000000..7ccdb4f66
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig7setupkernelcarelicense_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig8imunify360servicesettings_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig8imunify360servicesettings_zoom50.webp
new file mode 100644
index 000000000..e0be7fa2c
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig8imunify360servicesettings_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig8licensekeycustomfield_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig8licensekeycustomfield_zoom70.webp
new file mode 100644
index 000000000..eea090387
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig8licensekeycustomfield_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/fig9clientproductslist_zoom50.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/fig9clientproductslist_zoom50.webp
new file mode 100644
index 000000000..6d5bee6e5
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/fig9clientproductslist_zoom50.webp differ
diff --git a/docs/.vuepress/public/images/cln/whmcs_plugin/whmcsfig1imunify360licenseforwhmcs_zoom70.webp b/docs/.vuepress/public/images/cln/whmcs_plugin/whmcsfig1imunify360licenseforwhmcs_zoom70.webp
new file mode 100644
index 000000000..e03a53485
Binary files /dev/null and b/docs/.vuepress/public/images/cln/whmcs_plugin/whmcsfig1imunify360licenseforwhmcs_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureSearch.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureSearch.webp
new file mode 100644
index 000000000..ef37c585b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureSearch.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureSwitch.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureSwitch.webp
new file mode 100644
index 000000000..a6e6961f3
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureSwitch.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureVirt.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureVirt.webp
new file mode 100644
index 000000000..6b457042f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/AzureVirt.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/CLWizardInstallation.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/CLWizardInstallation.webp
new file mode 100644
index 000000000..33395ef43
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/CLWizardInstallation.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/DashboardVZ.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/DashboardVZ.webp
new file mode 100644
index 000000000..e2792abe5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/DashboardVZ.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ1.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ1.webp
new file mode 100644
index 000000000..1a7d3dd45
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ2.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ2.webp
new file mode 100644
index 000000000..c50be2d6e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ3.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ3.webp
new file mode 100644
index 000000000..e48297775
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/LsapiVZ3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/UsersEnabled.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/UsersEnabled.webp
new file mode 100644
index 000000000..bd02909e6
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/UsersEnabled.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/WizardVZ.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/WizardVZ.webp
new file mode 100644
index 000000000..367865cf5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/WizardVZ.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/addsshkey.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/addsshkey.webp
new file mode 100644
index 000000000..d01d59738
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/addsshkey.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/1.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/1.webp
new file mode 100644
index 000000000..5cd75086f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/2.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/2.webp
new file mode 100644
index 000000000..dbec144a8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/3.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/3.webp
new file mode 100644
index 000000000..fac7afa3a
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/4.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/4.webp
new file mode 100644
index 000000000..c04a346ca
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/4.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/5.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/5.webp
new file mode 100644
index 000000000..c23357618
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/5.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/6.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/6.webp
new file mode 100644
index 000000000..72e1d6d04
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/6.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cloudlinuximages.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cloudlinuximages.webp
new file mode 100644
index 000000000..ad888a52b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/cloudlinuximages.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/customimages.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/customimages.webp
new file mode 100644
index 000000000..30a07b305
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/customimages.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_available.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_available.webp
new file mode 100644
index 000000000..4d5e89b35
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_available.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_done.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_done.webp
new file mode 100644
index 000000000..2777edf80
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_done.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_iso_source.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_iso_source.webp
new file mode 100644
index 000000000..a5e694e23
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_iso_source.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_iso_source_old.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_iso_source_old.webp
new file mode 100644
index 000000000..cdfc375d2
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_iso_source_old.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_progress.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_progress.webp
new file mode 100644
index 000000000..c351fda6e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_progress.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_done.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_done.webp
new file mode 100644
index 000000000..7702feb10
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_done.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_done_old.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_done_old.webp
new file mode 100644
index 000000000..6c8af1d76
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_done_old.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_network.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_network.webp
new file mode 100644
index 000000000..6f20db116
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_network.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_network_old1.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_network_old1.webp
new file mode 100644
index 000000000..b20a70eb7
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_network_old1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_working.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_working.webp
new file mode 100644
index 000000000..08e2e5f1f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_working.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_network_address.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_network_address.webp
new file mode 100644
index 000000000..f5fed73aa
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_network_address.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_network_address_old.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_network_address_old.webp
new file mode 100644
index 000000000..c7e4a7ef5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_source_network_address_old.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_summary.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_summary.webp
new file mode 100644
index 000000000..0b23244d8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_summary.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_summary_old.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_summary_old.webp
new file mode 100644
index 000000000..7bd6e1831
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/installation_summary_old.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection.webp
new file mode 100644
index 000000000..8c204ae80
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection1.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection1.webp
new file mode 100644
index 000000000..8e4f22963
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection_old.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection_old.webp
new file mode 100644
index 000000000..8e4f22963
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection_old.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection_solo.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection_solo.webp
new file mode 100644
index 000000000..0f4e6c844
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/software_selection_solo.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshclient.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshclient.webp
new file mode 100644
index 000000000..b021a346a
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshclient.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshot-2013-07-30-21-25-48.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshot-2013-07-30-21-25-48.webp
new file mode 100644
index 000000000..744153d2d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshot-2013-07-30-21-25-48.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshot-2013-07-30-21-31-05.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshot-2013-07-30-21-31-05.webp
new file mode 100644
index 000000000..d91bd7225
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/sshot-2013-07-30-21-31-05.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/startdroplet.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/startdroplet.webp
new file mode 100644
index 000000000..36199615c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/startdroplet.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/uploadimage.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/uploadimage.webp
new file mode 100644
index 000000000..8dfbe482c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/uploadimage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/welcome_page.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/welcome_page.webp
new file mode 100644
index 000000000..305b619cc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/welcome_page.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/welcome_page_old.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/welcome_page_old.webp
new file mode 100644
index 000000000..7c68bf9de
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_installation/welcome_page_old.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CL-hide-ruby.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CL-hide-ruby.webp
new file mode 100644
index 000000000..2cd5e37d7
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CL-hide-ruby.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CageFS-enabled.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CageFS-enabled.webp
new file mode 100644
index 000000000..1cbdac805
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CageFS-enabled.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CageFS-init.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CageFS-init.webp
new file mode 100644
index 000000000..079966fdf
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/CageFS-init.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart1 (1).webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart1 (1).webp
new file mode 100644
index 000000000..b65f202aa
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart1 (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart1.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart1.webp
new file mode 100644
index 000000000..b65f202aa
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart2 (1).webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart2 (1).webp
new file mode 100644
index 000000000..778bc1a58
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart2 (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart2.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart2.webp
new file mode 100644
index 000000000..778bc1a58
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart3 (1).webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart3 (1).webp
new file mode 100644
index 000000000..2a492a2c8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart3 (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart3.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart3.webp
new file mode 100644
index 000000000..2a492a2c8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Chart3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedAdditionSettings.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedAdditionSettings.webp
new file mode 100644
index 000000000..0bf1d60d4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedAdditionSettings.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedExternalAppTab.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedExternalAppTab.webp
new file mode 100644
index 000000000..0d83df203
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedExternalAppTab.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedForOtherCP.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedForOtherCP.webp
new file mode 100644
index 000000000..6b851380d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedForOtherCP.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedForPlesk.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedForPlesk.webp
new file mode 100644
index 000000000..6a1ae5b5d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedForPlesk.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedHandlerName.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedHandlerName.webp
new file mode 100644
index 000000000..88f174f1e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedHandlerName.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedOtherCP.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedOtherCP.webp
new file mode 100644
index 000000000..123261ac0
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedOtherCP.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedPlesk.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedPlesk.webp
new file mode 100644
index 000000000..149677698
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedPlesk.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedScriptHandler.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedScriptHandler.webp
new file mode 100644
index 000000000..2fabb58e4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedScriptHandler.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/NewTurnedOff.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/NewTurnedOff.webp
new file mode 100644
index 000000000..ca1b65706
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/NewTurnedOff.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/NewTurnedOn.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/NewTurnedOn.webp
new file mode 100644
index 000000000..1a6413ba9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/NewTurnedOn.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Nodejs_supported_versions.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Nodejs_supported_versions.webp
new file mode 100644
index 000000000..1847eb7cc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Nodejs_supported_versions.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/PHP_supported_versions.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/PHP_supported_versions.webp
new file mode 100644
index 000000000..18edf1953
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/PHP_supported_versions.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Python_supported_versions.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Python_supported_versions.webp
new file mode 100644
index 000000000..c88b0aae8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Python_supported_versions.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Ruby_supported_versions.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Ruby_supported_versions.webp
new file mode 100644
index 000000000..0888d2d2b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/Ruby_supported_versions.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cageFS-verify.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cageFS-verify.webp
new file mode 100644
index 000000000..5cfda5db5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cageFS-verify.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/check-ea-php.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/check-ea-php.webp
new file mode 100644
index 000000000..423682b86
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/check-ea-php.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-cagefs-options.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-cagefs-options.webp
new file mode 100644
index 000000000..8f2f243d3
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-cagefs-options.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-enable-disable-cagefs.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-enable-disable-cagefs.webp
new file mode 100644
index 000000000..144206b29
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-enable-disable-cagefs.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-enable-disable-cagefs2.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-enable-disable-cagefs2.webp
new file mode 100644
index 000000000..c86451d9d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-enable-disable-cagefs2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-update-cagefs-skeleton.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-update-cagefs-skeleton.webp
new file mode 100644
index 000000000..bc2676231
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/cpanel-update-cagefs-skeleton.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/createapp_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/createapp_zoom70.webp
new file mode 100644
index 000000000..cd93e7f85
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/createapp_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/custom_file_cPanel1.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/custom_file_cPanel1.webp
new file mode 100644
index 000000000..a2cc166dc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/custom_file_cPanel1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/custom_file_cPanel2.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/custom_file_cPanel2.webp
new file mode 100644
index 000000000..6926ed1a4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/custom_file_cPanel2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/enable-CageFS-to-user.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/enable-CageFS-to-user.webp
new file mode 100644
index 000000000..218f4775b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/enable-CageFS-to-user.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/enable-disable-cagefs-for-user.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/enable-disable-cagefs-for-user.webp
new file mode 100644
index 000000000..e9d803e81
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/enable-disable-cagefs-for-user.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplog (1).webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplog (1).webp
new file mode 100644
index 000000000..b75f1c81d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplog (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplog.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplog.webp
new file mode 100644
index 000000000..b75f1c81d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplog.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplogsorry.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplogsorry.webp
new file mode 100644
index 000000000..5a76345eb
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/errorapplogsorry.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img1-zoom73.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img1-zoom73.webp
new file mode 100644
index 000000000..585e5b85d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img1-zoom73.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img2-zoom71.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img2-zoom71.webp
new file mode 100644
index 000000000..8e5f9a562
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img2-zoom71.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img3.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img3.webp
new file mode 100644
index 000000000..35b9389ae
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/img3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/ispmanager_cagefs_user_zoom98.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/ispmanager_cagefs_user_zoom98.webp
new file mode 100644
index 000000000..6b5a23c19
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/ispmanager_cagefs_user_zoom98.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_lsapidiagrammnew.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_lsapidiagrammnew.webp
new file mode 100644
index 000000000..000eddea6
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_lsapidiagrammnew.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_1.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_1.webp
new file mode 100644
index 000000000..457e8f00f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_2.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_2.webp
new file mode 100644
index 000000000..38d34afbc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_3.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_3.webp
new file mode 100644
index 000000000..95bd7f4a6
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/not-initialized.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/not-initialized.webp
new file mode 100644
index 000000000..6ac39da09
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/not-initialized.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/php-handlers.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/php-handlers.webp
new file mode 100644
index 000000000..39f1b7e8e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/php-handlers.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/php_selector_options.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/php_selector_options.webp
new file mode 100644
index 000000000..1e9136098
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/php_selector_options.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk-php-settings.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk-php-settings.webp
new file mode 100644
index 000000000..555b40372
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk-php-settings.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk-update-cagefs-skeleton.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk-update-cagefs-skeleton.webp
new file mode 100644
index 000000000..bc6c6c82e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk-update-cagefs-skeleton.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk_cagefs_icon.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk_cagefs_icon.webp
new file mode 100644
index 000000000..4214fffc8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk_cagefs_icon.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk_cagefs_manager_disable_all.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk_cagefs_manager_disable_all.webp
new file mode 100644
index 000000000..302fbbb0f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/plesk_cagefs_manager_disable_all.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/runapp_zoom60.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/runapp_zoom60.webp
new file mode 100644
index 000000000..4f4539df9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/runapp_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/runningappdomain_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/runningappdomain_zoom70.webp
new file mode 100644
index 000000000..499b543cb
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/runningappdomain_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/screen1-phpselector-featuremanager.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/screen1-phpselector-featuremanager.webp
new file mode 100644
index 000000000..a18dc0ccf
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/screen1-phpselector-featuremanager.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/setconfiguration_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/setconfiguration_zoom70.webp
new file mode 100644
index 000000000..b8884c359
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/cloudlinux_os_components/setconfiguration_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/command-line_tools/1111_2.webp b/docs/.vuepress/public/images/cloudlinuxos/command-line_tools/1111_2.webp
new file mode 100644
index 000000000..d3567fa4c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/command-line_tools/1111_2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/control_panel_integration/IniPath.webp b/docs/.vuepress/public/images/cloudlinuxos/control_panel_integration/IniPath.webp
new file mode 100644
index 000000000..6daa63ec4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/control_panel_integration/IniPath.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/CL-hide-python-ruby.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/CL-hide-python-ruby.webp
new file mode 100644
index 000000000..0b9cba68d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/CL-hide-python-ruby.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000133.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000133.webp
new file mode 100644
index 000000000..d797782ae
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000133.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000233.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000233.webp
new file mode 100644
index 000000000..3c350cde8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000233.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000255.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000255.webp
new file mode 100644
index 000000000..70a8e8346
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000255.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000256.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000256.webp
new file mode 100644
index 000000000..062aec345
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000256.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000257.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000257.webp
new file mode 100644
index 000000000..7f49617fe
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000257.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000261.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000261.webp
new file mode 100644
index 000000000..19e7811a2
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/clip000261.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/embim1.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/embim1.webp
new file mode 100644
index 000000000..90293da70
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/embim1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/optimumcachecollect_zoom93.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/optimumcachecollect_zoom93.webp
new file mode 100644
index 000000000..cf1e93ae8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/optimumcachecollect_zoom93.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/webapp001_zoom94.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/webapp001_zoom94.webp
new file mode 100644
index 000000000..2e908b8ed
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/webapp001_zoom94.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/deprecated/webapp002_zoom93.webp b/docs/.vuepress/public/images/cloudlinuxos/deprecated/webapp002_zoom93.webp
new file mode 100644
index 000000000..c1e45998c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/deprecated/webapp002_zoom93.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/limits/PhysicalMemoryUsageDisablePageCacheAccounting.webp b/docs/.vuepress/public/images/cloudlinuxos/limits/PhysicalMemoryUsageDisablePageCacheAccounting.webp
new file mode 100644
index 000000000..753961e19
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/limits/PhysicalMemoryUsageDisablePageCacheAccounting.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-cPanel.webp b/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-cPanel.webp
new file mode 100644
index 000000000..9239ec140
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-cPanel.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-diagram.webp b/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-diagram.webp
new file mode 100644
index 000000000..6fcba2ab5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-diagram.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-enabling.webp b/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-enabling.webp
new file mode 100644
index 000000000..8fcdac26f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/limits/ResellerLimits-enabling.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/limits/inodelimitsoptions_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/limits/inodelimitsoptions_zoom70.webp
new file mode 100644
index 000000000..11eed0029
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/limits/inodelimitsoptions_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/limits/inodescpanel (1).webp b/docs/.vuepress/public/images/cloudlinuxos/limits/inodescpanel (1).webp
new file mode 100644
index 000000000..91a377135
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/limits/inodescpanel (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/limits/inodescpanel.webp b/docs/.vuepress/public/images/cloudlinuxos/limits/inodescpanel.webp
new file mode 100644
index 000000000..91a377135
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/limits/inodescpanel.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSEnable.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSEnable.webp
new file mode 100644
index 000000000..99158da46
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSEnable.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSEnabledUsers.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSEnabledUsers.webp
new file mode 100644
index 000000000..d6b017e73
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSEnabledUsers.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSInit.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSInit.webp
new file mode 100644
index 000000000..079966fdf
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/CageFSInit.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Code200.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Code200.webp
new file mode 100644
index 000000000..f3300f467
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Code200.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Domains.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Domains.webp
new file mode 100644
index 000000000..c90029637
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Domains.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/EmailNotifications.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/EmailNotifications.webp
new file mode 100644
index 000000000..29f7c4cf3
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/EmailNotifications.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error1.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error1.webp
new file mode 100644
index 000000000..65747e132
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error2.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error2.webp
new file mode 100644
index 000000000..2e05b77ca
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error3.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error3.webp
new file mode 100644
index 000000000..d5baf2e86
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Error3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/GroupDisableCageFS.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/GroupDisableCageFS.webp
new file mode 100644
index 000000000..1c5b3ff3e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/GroupDisableCageFS.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue1.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue1.webp
new file mode 100644
index 000000000..c66f90918
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue2.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue2.webp
new file mode 100644
index 000000000..674e8353f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue3.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue3.webp
new file mode 100644
index 000000000..e678748fc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue4.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue4.webp
new file mode 100644
index 000000000..f4e391234
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Issue4.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/MyDomainsTab.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/MyDomainsTab.webp
new file mode 100644
index 000000000..668c0603d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/MyDomainsTab.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/NewSelector.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/NewSelector.webp
new file mode 100644
index 000000000..c8a977486
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/NewSelector.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Node.js-Selector-edit-app.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Node.js-Selector-edit-app.webp
new file mode 100644
index 000000000..22a8bd88e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Node.js-Selector-edit-app.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Node.jsClientPlugin.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Node.jsClientPlugin.webp
new file mode 100644
index 000000000..68c1725d9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/Node.jsClientPlugin.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHPSelectorClientPlugin.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHPSelectorClientPlugin.webp
new file mode 100644
index 000000000..9bd9c2ccf
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHPSelectorClientPlugin.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHPSelectorDashboardMalfunction.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHPSelectorDashboardMalfunction.webp
new file mode 100644
index 000000000..d32159988
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHPSelectorDashboardMalfunction.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_DirectAdmin_admin.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_DirectAdmin_admin.webp
new file mode 100644
index 000000000..79ad547dd
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_DirectAdmin_admin.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_DirectAdmin_user.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_DirectAdmin_user.webp
new file mode 100644
index 000000000..0ba548562
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_DirectAdmin_user.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_cPanel_admin.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_cPanel_admin.webp
new file mode 100644
index 000000000..2510149b2
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_cPanel_admin.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_cPanel_user.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_cPanel_user.webp
new file mode 100644
index 000000000..64dbab0f5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PHP_version_message_cPanel_user.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonChangeDefaultVersion.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonChangeDefaultVersion.webp
new file mode 100644
index 000000000..456c04766
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonChangeDefaultVersion.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonCreateApp1.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonCreateApp1.webp
new file mode 100644
index 000000000..ab96ee3f3
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonCreateApp1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonDomains.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonDomains.webp
new file mode 100644
index 000000000..54bb7bb0c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonDomains.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEUWebApp.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEUWebApp.webp
new file mode 100644
index 000000000..2285054bc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEUWebApp.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnableDisable.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnableDisable.webp
new file mode 100644
index 000000000..17e51090c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnableDisable.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnabled.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnabled.webp
new file mode 100644
index 000000000..57ced93a9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnabled.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEndUserIcon (1).webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEndUserIcon (1).webp
new file mode 100644
index 000000000..95a12cc67
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEndUserIcon (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEndUserIcon.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEndUserIcon.webp
new file mode 100644
index 000000000..95a12cc67
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEndUserIcon.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnvVar.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnvVar.webp
new file mode 100644
index 000000000..fc591ab87
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonEnvVar.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonGeneral.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonGeneral.webp
new file mode 100644
index 000000000..4d1315189
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonGeneral.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonInstall.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonInstall.webp
new file mode 100644
index 000000000..b3802ec88
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonInstall.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonRestartRemove.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonRestartRemove.webp
new file mode 100644
index 000000000..10ad1bb13
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonRestartRemove.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonSelectorEditApp.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonSelectorEditApp.webp
new file mode 100644
index 000000000..2f0c6cd14
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonSelectorEditApp.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonStartStopApp.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonStartStopApp.webp
new file mode 100644
index 000000000..747257bb9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/PythonStartStopApp.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-HTTP-queries.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-HTTP-queries.webp
new file mode 100644
index 000000000..222c94fa6
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-HTTP-queries.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage (1).webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage (1).webp
new file mode 100644
index 000000000..efac34d69
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage-table.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage-table.webp
new file mode 100644
index 000000000..40cb88f67
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage-table.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage.webp
new file mode 100644
index 000000000..efac34d69
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-current-usage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-dashboard.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-dashboard.webp
new file mode 100644
index 000000000..9bf39ed03
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-dashboard.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-db-queries.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-db-queries.webp
new file mode 100644
index 000000000..8409c0346
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-db-queries.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-faults-chart.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-faults-chart.webp
new file mode 100644
index 000000000..864809a31
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-faults-chart.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-no-issues.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-no-issues.webp
new file mode 100644
index 000000000..abc64a8bb
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-no-issues.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-snapshots.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-snapshots.webp
new file mode 100644
index 000000000..231f45f95
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-snapshots.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-usage-table.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-usage-table.webp
new file mode 100644
index 000000000..4a61ed615
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RU-usage-table.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RubyClientPlugin1.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RubyClientPlugin1.webp
new file mode 100644
index 000000000..1f2a01050
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RubyClientPlugin1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RubyClientPluginStart.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RubyClientPluginStart.webp
new file mode 100644
index 000000000..1c59048ba
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RubyClientPluginStart.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RunDiagnostic.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RunDiagnostic.webp
new file mode 100644
index 000000000..7a57bec60
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/RunDiagnostic.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SelectorFilters.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SelectorFilters.webp
new file mode 100644
index 000000000..694200072
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SelectorFilters.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SetVersion.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SetVersion.webp
new file mode 100644
index 000000000..da09545c4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SetVersion.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SlowSiteAnalyzerEmailNotifications.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SlowSiteAnalyzerEmailNotifications.webp
new file mode 100644
index 000000000..da12d434b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/SlowSiteAnalyzerEmailNotifications.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/TopSlow.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/TopSlow.webp
new file mode 100644
index 000000000..55342e4bc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/TopSlow.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/TurningOnOffNotifications.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/TurningOnOffNotifications.webp
new file mode 100644
index 000000000..69eba8dfa
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/TurningOnOffNotifications.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/UsePHPSelector.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/UsePHPSelector.webp
new file mode 100644
index 000000000..2277ccba7
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/UsePHPSelector.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/UsePHPSelector1.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/UsePHPSelector1.webp
new file mode 100644
index 000000000..ac8ec5153
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/UsePHPSelector1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringMain.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringMain.webp
new file mode 100644
index 000000000..a33a532e1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringMain.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringPHPSiteAnalyzer.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringPHPSiteAnalyzer.webp
new file mode 100644
index 000000000..072c37822
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringPHPSiteAnalyzer.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringSlider.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringSlider.webp
new file mode 100644
index 000000000..5d3733745
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringSlider.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringSlider1.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringSlider1.webp
new file mode 100644
index 000000000..fe4f41279
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/WebsiteMonitoringSlider1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/actionshoster.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/actionshoster.webp
new file mode 100644
index 000000000..7d8aa11f1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/actionshoster.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/client_resource_usage.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/client_resource_usage.webp
new file mode 100644
index 000000000..c986db52d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/client_resource_usage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/currentusagetabresellerr_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/currentusagetabresellerr_zoom70.webp
new file mode 100644
index 000000000..abb2c25a2
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/currentusagetabresellerr_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/dashboard_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/dashboard_zoom70.webp
new file mode 100644
index 000000000..ffd2c8ef1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/dashboard_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/faults-to-include.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/faults-to-include.webp
new file mode 100644
index 000000000..9be1afdb8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/faults-to-include.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/historicalusageresellertab_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/historicalusageresellertab_zoom70.webp
new file mode 100644
index 000000000..97c74ba07
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/historicalusageresellertab_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/history_charts_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/history_charts_zoom70.webp
new file mode 100644
index 000000000..d47452b5c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/history_charts_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/historyhoster.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/historyhoster.webp
new file mode 100644
index 000000000..0d33d38de
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/historyhoster.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/inode-limits.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/inode-limits.webp
new file mode 100644
index 000000000..3bdf3403d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/inode-limits.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/installationwizardmain_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/installationwizardmain_zoom70.webp
new file mode 100644
index 000000000..c4236462b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/installationwizardmain_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/installationwizardstep1_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/installationwizardstep1_zoom70.webp
new file mode 100644
index 000000000..b9c5b064f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/installationwizardstep1_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_01.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_01.webp
new file mode 100644
index 000000000..489a337f3
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_01.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_02.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_02.webp
new file mode 100644
index 000000000..5b96b5ff1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_02.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_03.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_03.webp
new file mode 100644
index 000000000..385c27ccd
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_03.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_04.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_04.webp
new file mode 100644
index 000000000..7b9cc0498
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_04.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_05.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_05.webp
new file mode 100644
index 000000000..30412d970
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-extension_05.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-faults-email-notifications.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-faults-email-notifications.webp
new file mode 100644
index 000000000..8728b8e66
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lve-faults-email-notifications.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lvemanagermainmenu_zoom80.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lvemanagermainmenu_zoom80.webp
new file mode 100644
index 000000000..8fc43f8d3
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/lvemanagermainmenu_zoom80.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/man_01_zoom73 (1).webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/man_01_zoom73 (1).webp
new file mode 100644
index 000000000..77944c300
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/man_01_zoom73 (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/man_01_zoom73.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/man_01_zoom73.webp
new file mode 100644
index 000000000..77944c300
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/man_01_zoom73.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/minimum-number-of-faults-to-notify.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/minimum-number-of-faults-to-notify.webp
new file mode 100644
index 000000000..5b285c8b7
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/minimum-number-of-faults-to-notify.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql-governor-settings.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql-governor-settings.webp
new file mode 100644
index 000000000..59328599d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql-governor-settings.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql_packages_limits.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql_packages_limits.webp
new file mode 100644
index 000000000..c5ade0e36
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql_packages_limits.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql_packages_limits_edit.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql_packages_limits_edit.webp
new file mode 100644
index 000000000..d3a777386
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/mysql_packages_limits_edit.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsconfirmation_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsconfirmation_zoom70.webp
new file mode 100644
index 000000000..24afec8a5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsconfirmation_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsenable_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsenable_zoom70.webp
new file mode 100644
index 000000000..30fefa212
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsenable_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsgeneral_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsgeneral_zoom70.webp
new file mode 100644
index 000000000..0626cedab
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsgeneral_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsmakedefault_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsmakedefault_zoom70.webp
new file mode 100644
index 000000000..461587939
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsmakedefault_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsselectordomains_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsselectordomains_zoom70.webp
new file mode 100644
index 000000000..06427bbb8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsselectordomains_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsselectorlogo_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsselectorlogo_zoom70.webp
new file mode 100644
index 000000000..77e9b8a59
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsselectorlogo_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsslider_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsslider_zoom70.webp
new file mode 100644
index 000000000..5a62c0bb1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsslider_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsusermain_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsusermain_zoom70.webp
new file mode 100644
index 000000000..d0f4a6afc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsusermain_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsuseruirestartremove_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsuseruirestartremove_zoom70.webp
new file mode 100644
index 000000000..d5daa6e47
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsuseruirestartremove_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsuseruistartstop_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsuseruistartstop_zoom70.webp
new file mode 100644
index 000000000..a421e64ba
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/nodejsuseruistartstop_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-cagefs.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-cagefs.webp
new file mode 100644
index 000000000..382b2aeea
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-cagefs.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-general.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-general.webp
new file mode 100644
index 000000000..a6cd47e82
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-general.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-nodejs.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-nodejs.webp
new file mode 100644
index 000000000..16e53f944
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-nodejs.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-python-selector.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-python-selector.webp
new file mode 100644
index 000000000..49bd04be7
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options-python-selector.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options02_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options02_zoom70.webp
new file mode 100644
index 000000000..882d71233
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options02_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options03_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options03_zoom70.webp
new file mode 100644
index 000000000..fd13393de
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/options03_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/optionsresellernotify_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/optionsresellernotify_zoom70.webp
new file mode 100644
index 000000000..7adf9c068
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/optionsresellernotify_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/packageshostertab_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/packageshostertab_zoom70.webp
new file mode 100644
index 000000000..48b59f4da
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/packageshostertab_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/packagesreseller_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/packagesreseller_zoom70.webp
new file mode 100644
index 000000000..907d77a0b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/packagesreseller_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector (1).webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector (1).webp
new file mode 100644
index 000000000..7e892ba28
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector.webp
new file mode 100644
index 000000000..7e892ba28
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector_customer.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector_customer.webp
new file mode 100644
index 000000000..b347557dc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector_customer.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector_options.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector_options.webp
new file mode 100644
index 000000000..1e9136098
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/php_selector_options.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_error.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_error.webp
new file mode 100644
index 000000000..a7190329e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_error.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_info.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_info.webp
new file mode 100644
index 000000000..eb91ae15f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_info.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_success.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_success.webp
new file mode 100644
index 000000000..61fb5759c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_success.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_warning.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_warning.webp
new file mode 100644
index 000000000..4130299d6
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/pic_warning.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/sevendayschartresellers_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/sevendayschartresellers_zoom70.webp
new file mode 100644
index 000000000..b8c6e5782
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/sevendayschartresellers_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/statisticstabhoster_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/statisticstabhoster_zoom70.webp
new file mode 100644
index 000000000..e133b19b2
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/statisticstabhoster_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/statisticstabreseller_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/statisticstabreseller_zoom70.webp
new file mode 100644
index 000000000..75e79c70f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/statisticstabreseller_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/user-interface-settings.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/user-interface-settings.webp
new file mode 100644
index 000000000..513c1c1fa
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/user-interface-settings.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabhoster_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabhoster_zoom70.webp
new file mode 100644
index 000000000..eab5ad44f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabhoster_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabpopup_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabpopup_zoom70.webp
new file mode 100644
index 000000000..1f04cc037
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabpopup_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabreseller_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabreseller_zoom70.webp
new file mode 100644
index 000000000..62cfd718f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/userstabreseller_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard-dashboard_zoom60.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard-dashboard_zoom60.webp
new file mode 100644
index 000000000..ddfcd6d8d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard-dashboard_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_close_btn (1).webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_close_btn (1).webp
new file mode 100644
index 000000000..e15b86a44
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_close_btn (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_close_btn.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_close_btn.webp
new file mode 100644
index 000000000..e15b86a44
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_close_btn.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_download_btn (1).webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_download_btn (1).webp
new file mode 100644
index 000000000..ffb68d3fe
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_download_btn (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_download_btn.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_download_btn.webp
new file mode 100644
index 000000000..ffb68d3fe
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_download_btn.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_installation_status_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_installation_status_zoom70.webp
new file mode 100644
index 000000000..0d0c51140
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_installation_status_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_lsapi_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_lsapi_zoom90.webp
new file mode 100644
index 000000000..0962f9eff
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_lsapi_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_mysqlgovernor_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_mysqlgovernor_zoom90.webp
new file mode 100644
index 000000000..0834bad28
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_mysqlgovernor_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_node.jsselector_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_node.jsselector_zoom90.webp
new file mode 100644
index 000000000..9e754ec25
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_node.jsselector_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_php_selector_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_php_selector_zoom90.webp
new file mode 100644
index 000000000..0091491c0
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_php_selector_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_python_selector_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_python_selector_zoom90.webp
new file mode 100644
index 000000000..7a3b4d103
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_python_selector_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_ruby_selector_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_ruby_selector_zoom90.webp
new file mode 100644
index 000000000..3041694ae
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_ruby_selector_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_try_again_btn (1).webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_try_again_btn (1).webp
new file mode 100644
index 000000000..04cf54302
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_try_again_btn (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_try_again_btn.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_try_again_btn.webp
new file mode 100644
index 000000000..04cf54302
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_try_again_btn.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_warning_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_warning_zoom70.webp
new file mode 100644
index 000000000..6f79326f7
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizard_warning_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardautoinstallationfails_zoom80.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardautoinstallationfails_zoom80.webp
new file mode 100644
index 000000000..1b440c739
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardautoinstallationfails_zoom80.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardbroken_zoom70.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardbroken_zoom70.webp
new file mode 100644
index 000000000..10d3c0ca2
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardbroken_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardcagefs_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardcagefs_zoom90.webp
new file mode 100644
index 000000000..a180fac9b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardcagefs_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardinstallremove_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardinstallremove_zoom90.webp
new file mode 100644
index 000000000..682c7635b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardinstallremove_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardsuccess_zoom90.webp b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardsuccess_zoom90.webp
new file mode 100644
index 000000000..ba0711fa6
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/lve_manager/wizardsuccess_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminNonPaidPremium.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminNonPaidPremium.webp
new file mode 100644
index 000000000..f4abb252f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminNonPaidPremium.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminPaidPremium.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminPaidPremium.webp
new file mode 100644
index 000000000..7ae6ba94d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminPaidPremium.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPBrokenPHP.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPBrokenPHP.webp
new file mode 100644
index 000000000..b82dfaf3d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPBrokenPHP.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPDisable.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPDisable.webp
new file mode 100644
index 000000000..dbcec9a18
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPDisable.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPDisablePremiumOnly.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPDisablePremiumOnly.webp
new file mode 100644
index 000000000..4e4f99b54
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPDisablePremiumOnly.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPFilters.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPFilters.webp
new file mode 100644
index 000000000..ded160aef
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPFilters.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPNoRedis.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPNoRedis.webp
new file mode 100644
index 000000000..c21aa43ed
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPNoRedis.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPStats.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPStats.webp
new file mode 100644
index 000000000..3e68a443c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPStats.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPStatsPremium.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPStatsPremium.webp
new file mode 100644
index 000000000..a91a3e73b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPStatsPremium.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPUpgradeLink.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPUpgradeLink.webp
new file mode 100644
index 000000000..46433bb06
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPUpgradeLink.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPUpgradeNoLink.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPUpgradeNoLink.webp
new file mode 100644
index 000000000..3602d337e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/AWPUpgradeNoLink.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/CMInstallationPremium.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/CMInstallationPremium.webp
new file mode 100644
index 000000000..40a465802
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/CMInstallationPremium.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/CMInstallationProd.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/CMInstallationProd.webp
new file mode 100644
index 000000000..a99164ed0
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/accelerate-wp/CMInstallationProd.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/AutoLogout.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/AutoLogout.webp
new file mode 100644
index 000000000..d7f735902
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/AutoLogout.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager1.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager1.webp
new file mode 100644
index 000000000..a4f290e64
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager2.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager2.webp
new file mode 100644
index 000000000..98f3e89ea
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager2.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager3.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager3.webp
new file mode 100644
index 000000000..d0fca929c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager4.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager4.webp
new file mode 100644
index 000000000..4b2ff6619
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager4.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager5.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager5.webp
new file mode 100644
index 000000000..359416914
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager5.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager6.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager6.webp
new file mode 100644
index 000000000..3c81d6574
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager6.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager7.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager7.webp
new file mode 100644
index 000000000..9d7fcc783
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager7.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager8.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager8.webp
new file mode 100644
index 000000000..4bec25dbb
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager8.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAllServers.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAllServers.webp
new file mode 100644
index 000000000..5882ac5df
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAllServers.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMCLNAccount.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMCLNAccount.webp
new file mode 100644
index 000000000..a8f8c7da5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMCLNAccount.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskIOpsCompleted.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskIOpsCompleted.webp
new file mode 100644
index 000000000..5f5368fb4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskIOpsCompleted.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskReadWriteData.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskReadWriteData.webp
new file mode 100644
index 000000000..7bde116fb
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskReadWriteData.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskReadWriteTime.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskReadWriteTime.webp
new file mode 100644
index 000000000..4070e7bdf
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskReadWriteTime.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskSpaceUsage.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskSpaceUsage.webp
new file mode 100644
index 000000000..bf33b9a7b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskSpaceUsage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskSpaceUsageBasics.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskSpaceUsageBasics.webp
new file mode 100644
index 000000000..97f907e44
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskSpaceUsageBasics.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMInstallationPremium.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMInstallationPremium.webp
new file mode 100644
index 000000000..7a5a7a5e2
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMInstallationPremium.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMInstallationProd.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMInstallationProd.webp
new file mode 100644
index 000000000..a99164ed0
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMInstallationProd.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMemoryUsage.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMemoryUsage.webp
new file mode 100644
index 000000000..7f66aac0d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMemoryUsage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMostLoadedUsers.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMostLoadedUsers.webp
new file mode 100644
index 000000000..77cb1f894
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMostLoadedUsers.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMostPopularStates.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMostPopularStates.webp
new file mode 100644
index 000000000..d25c89ce7
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMostPopularStates.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMySQLQueries.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMySQLQueries.webp
new file mode 100644
index 000000000..0933c6bf0
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMySQLQueries.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMNetworkTrafficUsage.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMNetworkTrafficUsage.webp
new file mode 100644
index 000000000..cd0846b63
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMNetworkTrafficUsage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMOpenFileDescriptorContextSwitches.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMOpenFileDescriptorContextSwitches.webp
new file mode 100644
index 000000000..9e215d11b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMOpenFileDescriptorContextSwitches.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMSCPUUsag.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMSCPUUsag.webp
new file mode 100644
index 000000000..7703f7428
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMSCPUUsag.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMSystemLoad.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMSystemLoad.webp
new file mode 100644
index 000000000..6f360167d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMSystemLoad.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMTimeSpentDoingIO.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMTimeSpentDoingIO.webp
new file mode 100644
index 000000000..0da5c439b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMTimeSpentDoingIO.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUPdates.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUPdates.webp
new file mode 100644
index 000000000..5439b6d41
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUPdates.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUsers.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUsers.webp
new file mode 100644
index 000000000..39cc09026
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUsers.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUsersCharts.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUsersCharts.webp
new file mode 100644
index 000000000..c482d3a7b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUsersCharts.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMvalue.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMvalue.webp
new file mode 100644
index 000000000..9be126f29
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/centralized-monitoring/CMvalue.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPDirectAdmin.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPDirectAdmin.webp
new file mode 100644
index 000000000..18078f8cc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPDirectAdmin.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPlesk.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPlesk.webp
new file mode 100644
index 000000000..b5c1d92fc
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPlesk.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPlugin.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPlugin.webp
new file mode 100644
index 000000000..c00a91851
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPlugin.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumApplied.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumApplied.webp
new file mode 100644
index 000000000..2475d1a15
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumApplied.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumReview.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumReview.webp
new file mode 100644
index 000000000..0c4b698d0
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumReview.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumUI.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumUI.webp
new file mode 100644
index 000000000..a332740f8
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPPremiumUI.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPUserUI.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPUserUI.webp
new file mode 100644
index 000000000..265883424
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AWPUserUI.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AdviceApplied.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AdviceApplied.webp
new file mode 100644
index 000000000..556f5b8f3
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AdviceApplied.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AdviceReview.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AdviceReview.webp
new file mode 100644
index 000000000..5f0ee017e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/AdviceReview.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/CDNFlow.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/CDNFlow.webp
new file mode 100644
index 000000000..0d85a668d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/CDNFlow.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/CDNGeneral.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/CDNGeneral.webp
new file mode 100644
index 000000000..4b0ce7c97
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/CDNGeneral.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQAdviceReview.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQAdviceReview.webp
new file mode 100644
index 000000000..b2880bc19
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQAdviceReview.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQAdviceTable.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQAdviceTable.webp
new file mode 100644
index 000000000..102e3cfca
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQAdviceTable.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQIncMessage.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQIncMessage.webp
new file mode 100644
index 000000000..a15069925
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQIncMessage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQIncompatible.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQIncompatible.webp
new file mode 100644
index 000000000..248d8fefe
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/FAQIncompatible.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/MobileDiag.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/MobileDiag.webp
new file mode 100644
index 000000000..94e0bd604
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/MobileDiag.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/WPPlugins.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/WPPlugins.webp
new file mode 100644
index 000000000..d716f7778
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/wpos-plugin/WPPlugins.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPAdmin.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPAdmin.webp
new file mode 100644
index 000000000..bf869f49a
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPAdmin.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPBrokenPHP.d69c93c1.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPBrokenPHP.d69c93c1.webp
new file mode 100644
index 000000000..b82dfaf3d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPBrokenPHP.d69c93c1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPDisable.8d6e3701.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPDisable.8d6e3701.webp
new file mode 100644
index 000000000..dbcec9a18
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPDisable.8d6e3701.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPDisablePremiumOnly.29475d2a.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPDisablePremiumOnly.29475d2a.webp
new file mode 100644
index 000000000..4e4f99b54
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPDisablePremiumOnly.29475d2a.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPFilters.ddf8451a.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPFilters.ddf8451a.webp
new file mode 100644
index 000000000..572ff9b88
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPFilters.ddf8451a.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPGettingStarted.df20613a (1).webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPGettingStarted.df20613a (1).webp
new file mode 100644
index 000000000..b38f9d57c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPGettingStarted.df20613a (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPGettingStarted.df20613a.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPGettingStarted.df20613a.webp
new file mode 100644
index 000000000..b38f9d57c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPGettingStarted.df20613a.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPNoRedis.8fb30039.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPNoRedis.8fb30039.webp
new file mode 100644
index 000000000..c21aa43ed
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPNoRedis.8fb30039.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPStats.88c80ca6.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPStats.88c80ca6.webp
new file mode 100644
index 000000000..a021c4231
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPStats.88c80ca6.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPStatsPremium.67c9ebd7.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPStatsPremium.67c9ebd7.webp
new file mode 100644
index 000000000..799c9360c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPStatsPremium.67c9ebd7.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPUpgradeLink.f34baf60.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPUpgradeLink.f34baf60.webp
new file mode 100644
index 000000000..46433bb06
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPUpgradeLink.f34baf60.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPUpgradeNoLink.914ceca7.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPUpgradeNoLink.914ceca7.webp
new file mode 100644
index 000000000..3602d337e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AWPUpgradeNoLink.914ceca7.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AutoLogout.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AutoLogout.webp
new file mode 100644
index 000000000..d7f735902
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/AutoLogout.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager1.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager1.webp
new file mode 100644
index 000000000..a4f290e64
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager3.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager3.webp
new file mode 100644
index 000000000..d0fca929c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager3.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager4.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager4.webp
new file mode 100644
index 000000000..4b2ff6619
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager4.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager5.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager5.webp
new file mode 100644
index 000000000..359416914
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager5.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager6.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager6.webp
new file mode 100644
index 000000000..3c81d6574
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager6.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager7.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager7.webp
new file mode 100644
index 000000000..9d7fcc783
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager7.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager8.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager8.webp
new file mode 100644
index 000000000..4bec25dbb
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAlertManager8.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAllServers.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAllServers.webp
new file mode 100644
index 000000000..5882ac5df
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMAllServers.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMCLNAccount.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMCLNAccount.webp
new file mode 100644
index 000000000..a8f8c7da5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMCLNAccount.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskIOpsCompleted.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskIOpsCompleted.webp
new file mode 100644
index 000000000..5f5368fb4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskIOpsCompleted.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskReadWriteData.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskReadWriteData.webp
new file mode 100644
index 000000000..7bde116fb
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskReadWriteData.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskReadWriteTime.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskReadWriteTime.webp
new file mode 100644
index 000000000..4070e7bdf
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskReadWriteTime.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskSpaceUsage.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskSpaceUsage.webp
new file mode 100644
index 000000000..bf33b9a7b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskSpaceUsage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskSpaceUsageBasics.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskSpaceUsageBasics.webp
new file mode 100644
index 000000000..97f907e44
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMDiskSpaceUsageBasics.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMInstallationProd.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMInstallationProd.webp
new file mode 100644
index 000000000..1e83debc1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMInstallationProd.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMemoryUsage.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMemoryUsage.webp
new file mode 100644
index 000000000..7f66aac0d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMemoryUsage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMostLoadedUsers.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMostLoadedUsers.webp
new file mode 100644
index 000000000..77cb1f894
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMostLoadedUsers.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMostPopularStates.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMostPopularStates.webp
new file mode 100644
index 000000000..d25c89ce7
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMostPopularStates.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMySQLQueries.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMySQLQueries.webp
new file mode 100644
index 000000000..0933c6bf0
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMMySQLQueries.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMNetworkTrafficUsage.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMNetworkTrafficUsage.webp
new file mode 100644
index 000000000..cd0846b63
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMNetworkTrafficUsage.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMOpenFileDescriptorContextSwitches.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMOpenFileDescriptorContextSwitches.webp
new file mode 100644
index 000000000..9e215d11b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMOpenFileDescriptorContextSwitches.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMSCPUUsag.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMSCPUUsag.webp
new file mode 100644
index 000000000..7703f7428
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMSCPUUsag.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMSystemLoad.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMSystemLoad.webp
new file mode 100644
index 000000000..6f360167d
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMSystemLoad.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMTimeSpentDoingIO.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMTimeSpentDoingIO.webp
new file mode 100644
index 000000000..0da5c439b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMTimeSpentDoingIO.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUPdates.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUPdates.webp
new file mode 100644
index 000000000..5439b6d41
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUPdates.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUsers.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUsers.webp
new file mode 100644
index 000000000..39cc09026
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUsers.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUsersCharts.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUsersCharts.webp
new file mode 100644
index 000000000..c482d3a7b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CMUsersCharts.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CPUIOLimiting.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CPUIOLimiting.webp
new file mode 100644
index 000000000..359bd640e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/CPUIOLimiting.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/FilterIndicator.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/FilterIndicator.webp
new file mode 100644
index 000000000..7e3ff9a9b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/FilterIndicator.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/HideXRayAppCheckbox.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/HideXRayAppCheckbox.webp
new file mode 100644
index 000000000..fa7f53dd9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/HideXRayAppCheckbox.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/PDFReport.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/PDFReport.webp
new file mode 100644
index 000000000..0d1334a1f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/PDFReport.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/RecordedSession.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/RecordedSession.webp
new file mode 100644
index 000000000..a2c269f78
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/RecordedSession.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/RequestDetails.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/RequestDetails.webp
new file mode 100644
index 000000000..c7b29b156
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/RequestDetails.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvanced (1).webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvanced (1).webp
new file mode 100644
index 000000000..fa703b4e1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvanced (1).webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvanced.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvanced.webp
new file mode 100644
index 000000000..fa703b4e1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvanced.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.data.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.data.webp
new file mode 100644
index 000000000..3772aff74
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.data.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.request.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.request.webp
new file mode 100644
index 000000000..918aaba6c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.request.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.ui.awp.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.ui.awp.webp
new file mode 100644
index 000000000..d1d6e9c74
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.ui.awp.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.ui.xray.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.ui.xray.webp
new file mode 100644
index 000000000..ec546a4e9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.ui.xray.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAppUIIcon.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAppUIIcon.webp
new file mode 100644
index 000000000..a0b17910a
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAppUIIcon.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAutotracingtaskstab.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAutotracingtaskstab.webp
new file mode 100644
index 000000000..376b40b1a
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayAutotracingtaskstab.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCollectedRequests.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCollectedRequests.webp
new file mode 100644
index 000000000..5afbc62ef
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCollectedRequests.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportByHourRequests.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportByHourRequests.webp
new file mode 100644
index 000000000..e104a8539
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportByHourRequests.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportCollectedRequests.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportCollectedRequests.webp
new file mode 100644
index 000000000..6a4b3a28c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportCollectedRequests.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportExample.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportExample.webp
new file mode 100644
index 000000000..c439c160c
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportExample.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportRequestDetails.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportRequestDetails.webp
new file mode 100644
index 000000000..5fce924d1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportRequestDetails.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTasksList.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTasksList.webp
new file mode 100644
index 000000000..04be45398
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTasksList.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTab.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTab.webp
new file mode 100644
index 000000000..96241d2b4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTab.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksList.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksList.webp
new file mode 100644
index 000000000..ec3c31240
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksList.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksListCreated.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksListCreated.webp
new file mode 100644
index 000000000..dea7405cd
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksListCreated.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksListGrouped.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksListGrouped.webp
new file mode 100644
index 000000000..712710d3a
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksListGrouped.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksRequestsList.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksRequestsList.webp
new file mode 100644
index 000000000..7421bfd66
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksRequestsList.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCreateContinuousTaskBtn.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCreateContinuousTaskBtn.webp
new file mode 100644
index 000000000..537d1065b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCreateContinuousTaskBtn.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCreateContinuousTaskForm.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCreateContinuousTaskForm.webp
new file mode 100644
index 000000000..3499dbf55
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayCreateContinuousTaskForm.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayDatabaseQueries.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayDatabaseQueries.webp
new file mode 100644
index 000000000..f4b477a62
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayDatabaseQueries.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayDelete.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayDelete.webp
new file mode 100644
index 000000000..2b19bee13
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayDelete.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserFPMerror.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserFPMerror.webp
new file mode 100644
index 000000000..cca12cdeb
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserFPMerror.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUI.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUI.webp
new file mode 100644
index 000000000..f10bf5ed5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUI.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIError.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIError.webp
new file mode 100644
index 000000000..526ccf177
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIError.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIStart.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIStart.webp
new file mode 100644
index 000000000..98b0b02e2
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIStart.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIWarning.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIWarning.webp
new file mode 100644
index 000000000..a46665b0e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIWarning.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUiSpecifyURL.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUiSpecifyURL.webp
new file mode 100644
index 000000000..f92f05358
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUiSpecifyURL.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayExternalRequests.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayExternalRequests.webp
new file mode 100644
index 000000000..cf2c73de4
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayExternalRequests.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayPHPInfo.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayPHPInfo.webp
new file mode 100644
index 000000000..7b6f730aa
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayPHPInfo.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayPHPInfoRemoteAddr.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayPHPInfoRemoteAddr.webp
new file mode 100644
index 000000000..32a9177be
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayPHPInfoRemoteAddr.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayScanDir.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayScanDir.webp
new file mode 100644
index 000000000..b8449ce15
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayScanDir.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySlowestRequest.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySlowestRequest.webp
new file mode 100644
index 000000000..0e8e72d0b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySlowestRequest.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceDetails.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceDetails.webp
new file mode 100644
index 000000000..2ad406636
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceDetails.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceError.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceError.webp
new file mode 100644
index 000000000..7b2e6e22e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceError.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceMainTab.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceMainTab.webp
new file mode 100644
index 000000000..8f4daf291
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceMainTab.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySoftwareModulesPlugins.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySoftwareModulesPlugins.webp
new file mode 100644
index 000000000..0c5c79763
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySoftwareModulesPlugins.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStart.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStart.webp
new file mode 100644
index 000000000..cccdb20f9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStart.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStartTracing.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStartTracing.webp
new file mode 100644
index 000000000..4523d08b1
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStartTracing.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStop.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStop.webp
new file mode 100644
index 000000000..c541ad671
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStop.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStopped.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStopped.webp
new file mode 100644
index 000000000..6163bbd3e
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayStopped.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySystemFunctions.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySystemFunctions.webp
new file mode 100644
index 000000000..140207b2b
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRaySystemFunctions.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTracingTask.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTracingTask.webp
new file mode 100644
index 000000000..f00ad95a9
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTracingTask.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTracingTaskCreated.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTracingTaskCreated.webp
new file mode 100644
index 000000000..47a552216
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTracingTaskCreated.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTrcingTaskList.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTrcingTaskList.webp
new file mode 100644
index 000000000..0a4a522db
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTrcingTaskList.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTrcingTaskList1.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTrcingTaskList1.webp
new file mode 100644
index 000000000..d4ad0428f
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayTrcingTaskList1.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayUI.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayUI.webp
new file mode 100644
index 000000000..f44931624
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayUI.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayView.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayView.webp
new file mode 100644
index 000000000..98f3e89ea
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayView.webp differ
diff --git a/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayView1.webp b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayView1.webp
new file mode 100644
index 000000000..33bac1be5
Binary files /dev/null and b/docs/.vuepress/public/images/cloudlinuxos/shared-pro/x-ray/XRayView1.webp differ
diff --git a/docs/.vuepress/public/images/cm-ui-component.png b/docs/.vuepress/public/images/cm-ui-component.png
new file mode 100644
index 000000000..3853dcf89
Binary files /dev/null and b/docs/.vuepress/public/images/cm-ui-component.png differ
diff --git a/docs/.vuepress/public/images/dnf-cl9-lts.png b/docs/.vuepress/public/images/dnf-cl9-lts.png
new file mode 100644
index 000000000..8a6bf4439
Binary files /dev/null and b/docs/.vuepress/public/images/dnf-cl9-lts.png differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureSearch.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureSearch.webp
new file mode 100644
index 000000000..ef37c585b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureSearch.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureSwitch.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureSwitch.webp
new file mode 100644
index 000000000..a6e6961f3
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureSwitch.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureVirt.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureVirt.webp
new file mode 100644
index 000000000..6b457042f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/AzureVirt.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/CLWizardInstallation.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/CLWizardInstallation.webp
new file mode 100644
index 000000000..33395ef43
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/CLWizardInstallation.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/DashboardVZ.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/DashboardVZ.webp
new file mode 100644
index 000000000..e2792abe5
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/DashboardVZ.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ1.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ1.webp
new file mode 100644
index 000000000..1a7d3dd45
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ2.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ2.webp
new file mode 100644
index 000000000..c50be2d6e
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ3.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ3.webp
new file mode 100644
index 000000000..e48297775
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/LsapiVZ3.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/UsersEnabled.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/UsersEnabled.webp
new file mode 100644
index 000000000..bd02909e6
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/UsersEnabled.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/WizardVZ.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/WizardVZ.webp
new file mode 100644
index 000000000..367865cf5
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/WizardVZ.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/addsshkey.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/addsshkey.webp
new file mode 100644
index 000000000..d01d59738
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/addsshkey.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/1.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/1.webp
new file mode 100644
index 000000000..5cd75086f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/2.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/2.webp
new file mode 100644
index 000000000..dbec144a8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/3.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/3.webp
new file mode 100644
index 000000000..fac7afa3a
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/3.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/4.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/4.webp
new file mode 100644
index 000000000..c04a346ca
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/4.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/5.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/5.webp
new file mode 100644
index 000000000..c23357618
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/5.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/6.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/6.webp
new file mode 100644
index 000000000..72e1d6d04
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cl9_secureboot/6.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/cloudlinuximages.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cloudlinuximages.webp
new file mode 100644
index 000000000..ad888a52b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/cloudlinuximages.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/customimages.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/customimages.webp
new file mode 100644
index 000000000..30a07b305
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/customimages.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_available.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_available.webp
new file mode 100644
index 000000000..4d5e89b35
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_available.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_done.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_done.webp
new file mode 100644
index 000000000..2777edf80
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_done.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_iso_source.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_iso_source.webp
new file mode 100644
index 000000000..a5e694e23
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_iso_source.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_iso_source_old.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_iso_source_old.webp
new file mode 100644
index 000000000..cdfc375d2
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_iso_source_old.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_progress.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_progress.webp
new file mode 100644
index 000000000..c351fda6e
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_progress.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_done.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_done.webp
new file mode 100644
index 000000000..7702feb10
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_done.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_done_old.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_done_old.webp
new file mode 100644
index 000000000..6c8af1d76
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_done_old.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_network.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_network.webp
new file mode 100644
index 000000000..6f20db116
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_network.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_network_old1.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_network_old1.webp
new file mode 100644
index 000000000..b20a70eb7
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_network_old1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_working.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_working.webp
new file mode 100644
index 000000000..08e2e5f1f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_gray_working.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_network_address.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_network_address.webp
new file mode 100644
index 000000000..f5fed73aa
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_network_address.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_network_address_old.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_network_address_old.webp
new file mode 100644
index 000000000..c7e4a7ef5
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_source_network_address_old.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_summary.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_summary.webp
new file mode 100644
index 000000000..0b23244d8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_summary.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_summary_old.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_summary_old.webp
new file mode 100644
index 000000000..7bd6e1831
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/installation_summary_old.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection.webp
new file mode 100644
index 000000000..8c204ae80
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection1.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection1.webp
new file mode 100644
index 000000000..8e4f22963
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection_old.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection_old.webp
new file mode 100644
index 000000000..8e4f22963
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection_old.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection_solo.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection_solo.webp
new file mode 100644
index 000000000..0f4e6c844
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/software_selection_solo.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshclient.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshclient.webp
new file mode 100644
index 000000000..b021a346a
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshclient.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshot-2013-07-30-21-25-48.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshot-2013-07-30-21-25-48.webp
new file mode 100644
index 000000000..744153d2d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshot-2013-07-30-21-25-48.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshot-2013-07-30-21-31-05.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshot-2013-07-30-21-31-05.webp
new file mode 100644
index 000000000..d91bd7225
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/sshot-2013-07-30-21-31-05.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/startdroplet.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/startdroplet.webp
new file mode 100644
index 000000000..36199615c
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/startdroplet.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/uploadimage.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/uploadimage.webp
new file mode 100644
index 000000000..8dfbe482c
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/uploadimage.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/welcome_page.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/welcome_page.webp
new file mode 100644
index 000000000..305b619cc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/welcome_page.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_installation/welcome_page_old.webp b/docs/.vuepress/public/images/legacy/cloudlinux_installation/welcome_page_old.webp
new file mode 100644
index 000000000..7c68bf9de
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_installation/welcome_page_old.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CL-hide-ruby.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CL-hide-ruby.webp
new file mode 100644
index 000000000..2cd5e37d7
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CL-hide-ruby.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CageFS-enabled.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CageFS-enabled.webp
new file mode 100644
index 000000000..1cbdac805
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CageFS-enabled.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CageFS-init.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CageFS-init.webp
new file mode 100644
index 000000000..079966fdf
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/CageFS-init.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart1 (1).webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart1 (1).webp
new file mode 100644
index 000000000..b65f202aa
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart1 (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart1.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart1.webp
new file mode 100644
index 000000000..b65f202aa
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart2 (1).webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart2 (1).webp
new file mode 100644
index 000000000..778bc1a58
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart2 (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart2.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart2.webp
new file mode 100644
index 000000000..778bc1a58
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart3 (1).webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart3 (1).webp
new file mode 100644
index 000000000..2a492a2c8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart3 (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart3.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart3.webp
new file mode 100644
index 000000000..2a492a2c8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Chart3.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedAdditionSettings.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedAdditionSettings.webp
new file mode 100644
index 000000000..0bf1d60d4
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedAdditionSettings.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedExternalAppTab.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedExternalAppTab.webp
new file mode 100644
index 000000000..0d83df203
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedExternalAppTab.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedForOtherCP.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedForOtherCP.webp
new file mode 100644
index 000000000..6b851380d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedForOtherCP.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedForPlesk.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedForPlesk.webp
new file mode 100644
index 000000000..6a1ae5b5d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedForPlesk.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedHandlerName.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedHandlerName.webp
new file mode 100644
index 000000000..88f174f1e
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedHandlerName.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedOtherCP.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedOtherCP.webp
new file mode 100644
index 000000000..123261ac0
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedOtherCP.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedPlesk.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedPlesk.webp
new file mode 100644
index 000000000..149677698
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedPlesk.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedScriptHandler.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedScriptHandler.webp
new file mode 100644
index 000000000..2fabb58e4
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/LiteSpeedScriptHandler.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/NewTurnedOff.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/NewTurnedOff.webp
new file mode 100644
index 000000000..ca1b65706
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/NewTurnedOff.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/NewTurnedOn.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/NewTurnedOn.webp
new file mode 100644
index 000000000..1a6413ba9
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/NewTurnedOn.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Nodejs_supported_versions.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Nodejs_supported_versions.webp
new file mode 100644
index 000000000..1847eb7cc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Nodejs_supported_versions.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/PHP_supported_versions.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/PHP_supported_versions.webp
new file mode 100644
index 000000000..18edf1953
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/PHP_supported_versions.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Python_supported_versions.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Python_supported_versions.webp
new file mode 100644
index 000000000..c88b0aae8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Python_supported_versions.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Ruby_supported_versions.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Ruby_supported_versions.webp
new file mode 100644
index 000000000..0888d2d2b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/Ruby_supported_versions.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cageFS-verify.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cageFS-verify.webp
new file mode 100644
index 000000000..5cfda5db5
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cageFS-verify.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/check-ea-php.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/check-ea-php.webp
new file mode 100644
index 000000000..423682b86
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/check-ea-php.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-cagefs-options.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-cagefs-options.webp
new file mode 100644
index 000000000..8f2f243d3
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-cagefs-options.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-enable-disable-cagefs.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-enable-disable-cagefs.webp
new file mode 100644
index 000000000..144206b29
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-enable-disable-cagefs.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-enable-disable-cagefs2.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-enable-disable-cagefs2.webp
new file mode 100644
index 000000000..c86451d9d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-enable-disable-cagefs2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-update-cagefs-skeleton.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-update-cagefs-skeleton.webp
new file mode 100644
index 000000000..bc2676231
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/cpanel-update-cagefs-skeleton.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/createapp_zoom70.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/createapp_zoom70.webp
new file mode 100644
index 000000000..cd93e7f85
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/createapp_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/custom_file_cPanel1.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/custom_file_cPanel1.webp
new file mode 100644
index 000000000..a2cc166dc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/custom_file_cPanel1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/custom_file_cPanel2.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/custom_file_cPanel2.webp
new file mode 100644
index 000000000..6926ed1a4
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/custom_file_cPanel2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/enable-CageFS-to-user.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/enable-CageFS-to-user.webp
new file mode 100644
index 000000000..218f4775b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/enable-CageFS-to-user.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/enable-disable-cagefs-for-user.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/enable-disable-cagefs-for-user.webp
new file mode 100644
index 000000000..e9d803e81
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/enable-disable-cagefs-for-user.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplog (1).webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplog (1).webp
new file mode 100644
index 000000000..b75f1c81d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplog (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplog.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplog.webp
new file mode 100644
index 000000000..b75f1c81d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplog.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplogsorry.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplogsorry.webp
new file mode 100644
index 000000000..5a76345eb
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/errorapplogsorry.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img1-zoom73.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img1-zoom73.webp
new file mode 100644
index 000000000..585e5b85d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img1-zoom73.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img2-zoom71.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img2-zoom71.webp
new file mode 100644
index 000000000..8e5f9a562
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img2-zoom71.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img3.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img3.webp
new file mode 100644
index 000000000..35b9389ae
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/img3.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/ispmanager_cagefs_user_zoom98.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/ispmanager_cagefs_user_zoom98.webp
new file mode 100644
index 000000000..6b5a23c19
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/ispmanager_cagefs_user_zoom98.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_lsapidiagrammnew.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_lsapidiagrammnew.webp
new file mode 100644
index 000000000..000eddea6
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_lsapidiagrammnew.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_1.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_1.webp
new file mode 100644
index 000000000..457e8f00f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_2.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_2.webp
new file mode 100644
index 000000000..38d34afbc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_3.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_3.webp
new file mode 100644
index 000000000..95bd7f4a6
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/mod_suexec_admin_ui_3.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/not-initialized.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/not-initialized.webp
new file mode 100644
index 000000000..6ac39da09
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/not-initialized.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/php-handlers.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/php-handlers.webp
new file mode 100644
index 000000000..39f1b7e8e
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/php-handlers.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/php_selector_options.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/php_selector_options.webp
new file mode 100644
index 000000000..1e9136098
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/php_selector_options.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk-php-settings.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk-php-settings.webp
new file mode 100644
index 000000000..555b40372
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk-php-settings.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk-update-cagefs-skeleton.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk-update-cagefs-skeleton.webp
new file mode 100644
index 000000000..bc6c6c82e
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk-update-cagefs-skeleton.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk_cagefs_icon.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk_cagefs_icon.webp
new file mode 100644
index 000000000..4214fffc8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk_cagefs_icon.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk_cagefs_manager_disable_all.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk_cagefs_manager_disable_all.webp
new file mode 100644
index 000000000..302fbbb0f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/plesk_cagefs_manager_disable_all.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/runapp_zoom60.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/runapp_zoom60.webp
new file mode 100644
index 000000000..4f4539df9
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/runapp_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/runningappdomain_zoom70.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/runningappdomain_zoom70.webp
new file mode 100644
index 000000000..499b543cb
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/runningappdomain_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/screen1-phpselector-featuremanager.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/screen1-phpselector-featuremanager.webp
new file mode 100644
index 000000000..a18dc0ccf
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/screen1-phpselector-featuremanager.webp differ
diff --git a/docs/.vuepress/public/images/legacy/cloudlinux_os_components/setconfiguration_zoom70.webp b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/setconfiguration_zoom70.webp
new file mode 100644
index 000000000..b8884c359
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/cloudlinux_os_components/setconfiguration_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/command-line_tools/1111_2.webp b/docs/.vuepress/public/images/legacy/command-line_tools/1111_2.webp
new file mode 100644
index 000000000..d3567fa4c
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/command-line_tools/1111_2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/control_panel_integration/IniPath.webp b/docs/.vuepress/public/images/legacy/control_panel_integration/IniPath.webp
new file mode 100644
index 000000000..6daa63ec4
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/control_panel_integration/IniPath.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/CL-hide-python-ruby.webp b/docs/.vuepress/public/images/legacy/deprecated/CL-hide-python-ruby.webp
new file mode 100644
index 000000000..0b9cba68d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/CL-hide-python-ruby.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/clip000133.webp b/docs/.vuepress/public/images/legacy/deprecated/clip000133.webp
new file mode 100644
index 000000000..d797782ae
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/clip000133.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/clip000233.webp b/docs/.vuepress/public/images/legacy/deprecated/clip000233.webp
new file mode 100644
index 000000000..3c350cde8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/clip000233.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/clip000255.webp b/docs/.vuepress/public/images/legacy/deprecated/clip000255.webp
new file mode 100644
index 000000000..70a8e8346
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/clip000255.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/clip000256.webp b/docs/.vuepress/public/images/legacy/deprecated/clip000256.webp
new file mode 100644
index 000000000..062aec345
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/clip000256.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/clip000257.webp b/docs/.vuepress/public/images/legacy/deprecated/clip000257.webp
new file mode 100644
index 000000000..7f49617fe
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/clip000257.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/clip000261.webp b/docs/.vuepress/public/images/legacy/deprecated/clip000261.webp
new file mode 100644
index 000000000..19e7811a2
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/clip000261.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/embim1.webp b/docs/.vuepress/public/images/legacy/deprecated/embim1.webp
new file mode 100644
index 000000000..90293da70
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/embim1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/optimumcachecollect_zoom93.webp b/docs/.vuepress/public/images/legacy/deprecated/optimumcachecollect_zoom93.webp
new file mode 100644
index 000000000..cf1e93ae8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/optimumcachecollect_zoom93.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/webapp001_zoom94.webp b/docs/.vuepress/public/images/legacy/deprecated/webapp001_zoom94.webp
new file mode 100644
index 000000000..2e908b8ed
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/webapp001_zoom94.webp differ
diff --git a/docs/.vuepress/public/images/legacy/deprecated/webapp002_zoom93.webp b/docs/.vuepress/public/images/legacy/deprecated/webapp002_zoom93.webp
new file mode 100644
index 000000000..c1e45998c
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/deprecated/webapp002_zoom93.webp differ
diff --git a/docs/.vuepress/public/images/legacy/limits/PhysicalMemoryUsageDisablePageCacheAccounting.webp b/docs/.vuepress/public/images/legacy/limits/PhysicalMemoryUsageDisablePageCacheAccounting.webp
new file mode 100644
index 000000000..753961e19
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/limits/PhysicalMemoryUsageDisablePageCacheAccounting.webp differ
diff --git a/docs/.vuepress/public/images/legacy/limits/ResellerLimits-cPanel.webp b/docs/.vuepress/public/images/legacy/limits/ResellerLimits-cPanel.webp
new file mode 100644
index 000000000..9239ec140
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/limits/ResellerLimits-cPanel.webp differ
diff --git a/docs/.vuepress/public/images/legacy/limits/ResellerLimits-diagram.webp b/docs/.vuepress/public/images/legacy/limits/ResellerLimits-diagram.webp
new file mode 100644
index 000000000..6fcba2ab5
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/limits/ResellerLimits-diagram.webp differ
diff --git a/docs/.vuepress/public/images/legacy/limits/ResellerLimits-enabling.webp b/docs/.vuepress/public/images/legacy/limits/ResellerLimits-enabling.webp
new file mode 100644
index 000000000..8fcdac26f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/limits/ResellerLimits-enabling.webp differ
diff --git a/docs/.vuepress/public/images/legacy/limits/inodelimitsoptions_zoom70.webp b/docs/.vuepress/public/images/legacy/limits/inodelimitsoptions_zoom70.webp
new file mode 100644
index 000000000..11eed0029
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/limits/inodelimitsoptions_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/limits/inodescpanel (1).webp b/docs/.vuepress/public/images/legacy/limits/inodescpanel (1).webp
new file mode 100644
index 000000000..91a377135
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/limits/inodescpanel (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/limits/inodescpanel.webp b/docs/.vuepress/public/images/legacy/limits/inodescpanel.webp
new file mode 100644
index 000000000..91a377135
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/limits/inodescpanel.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/CageFSEnable.webp b/docs/.vuepress/public/images/legacy/lve_manager/CageFSEnable.webp
new file mode 100644
index 000000000..99158da46
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/CageFSEnable.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/CageFSEnabledUsers.webp b/docs/.vuepress/public/images/legacy/lve_manager/CageFSEnabledUsers.webp
new file mode 100644
index 000000000..d6b017e73
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/CageFSEnabledUsers.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/CageFSInit.webp b/docs/.vuepress/public/images/legacy/lve_manager/CageFSInit.webp
new file mode 100644
index 000000000..079966fdf
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/CageFSInit.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Code200.webp b/docs/.vuepress/public/images/legacy/lve_manager/Code200.webp
new file mode 100644
index 000000000..f3300f467
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Code200.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Domains.webp b/docs/.vuepress/public/images/legacy/lve_manager/Domains.webp
new file mode 100644
index 000000000..c90029637
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Domains.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/EmailNotifications.webp b/docs/.vuepress/public/images/legacy/lve_manager/EmailNotifications.webp
new file mode 100644
index 000000000..29f7c4cf3
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/EmailNotifications.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Error1.webp b/docs/.vuepress/public/images/legacy/lve_manager/Error1.webp
new file mode 100644
index 000000000..65747e132
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Error1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Error2.webp b/docs/.vuepress/public/images/legacy/lve_manager/Error2.webp
new file mode 100644
index 000000000..2e05b77ca
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Error2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Error3.webp b/docs/.vuepress/public/images/legacy/lve_manager/Error3.webp
new file mode 100644
index 000000000..d5baf2e86
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Error3.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/GroupDisableCageFS.webp b/docs/.vuepress/public/images/legacy/lve_manager/GroupDisableCageFS.webp
new file mode 100644
index 000000000..1c5b3ff3e
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/GroupDisableCageFS.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Issue1.webp b/docs/.vuepress/public/images/legacy/lve_manager/Issue1.webp
new file mode 100644
index 000000000..c66f90918
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Issue1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Issue2.webp b/docs/.vuepress/public/images/legacy/lve_manager/Issue2.webp
new file mode 100644
index 000000000..674e8353f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Issue2.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Issue3.webp b/docs/.vuepress/public/images/legacy/lve_manager/Issue3.webp
new file mode 100644
index 000000000..e678748fc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Issue3.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Issue4.webp b/docs/.vuepress/public/images/legacy/lve_manager/Issue4.webp
new file mode 100644
index 000000000..f4e391234
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Issue4.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/MyDomainsTab.webp b/docs/.vuepress/public/images/legacy/lve_manager/MyDomainsTab.webp
new file mode 100644
index 000000000..668c0603d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/MyDomainsTab.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/NewSelector.webp b/docs/.vuepress/public/images/legacy/lve_manager/NewSelector.webp
new file mode 100644
index 000000000..c8a977486
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/NewSelector.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Node.js-Selector-edit-app.webp b/docs/.vuepress/public/images/legacy/lve_manager/Node.js-Selector-edit-app.webp
new file mode 100644
index 000000000..22a8bd88e
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Node.js-Selector-edit-app.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/Node.jsClientPlugin.webp b/docs/.vuepress/public/images/legacy/lve_manager/Node.jsClientPlugin.webp
new file mode 100644
index 000000000..68c1725d9
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/Node.jsClientPlugin.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PHPSelectorClientPlugin.webp b/docs/.vuepress/public/images/legacy/lve_manager/PHPSelectorClientPlugin.webp
new file mode 100644
index 000000000..9bd9c2ccf
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PHPSelectorClientPlugin.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PHPSelectorDashboardMalfunction.webp b/docs/.vuepress/public/images/legacy/lve_manager/PHPSelectorDashboardMalfunction.webp
new file mode 100644
index 000000000..d32159988
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PHPSelectorDashboardMalfunction.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_DirectAdmin_admin.webp b/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_DirectAdmin_admin.webp
new file mode 100644
index 000000000..79ad547dd
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_DirectAdmin_admin.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_DirectAdmin_user.webp b/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_DirectAdmin_user.webp
new file mode 100644
index 000000000..0ba548562
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_DirectAdmin_user.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_cPanel_admin.webp b/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_cPanel_admin.webp
new file mode 100644
index 000000000..2510149b2
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_cPanel_admin.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_cPanel_user.webp b/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_cPanel_user.webp
new file mode 100644
index 000000000..64dbab0f5
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PHP_version_message_cPanel_user.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonChangeDefaultVersion.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonChangeDefaultVersion.webp
new file mode 100644
index 000000000..456c04766
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonChangeDefaultVersion.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonCreateApp1.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonCreateApp1.webp
new file mode 100644
index 000000000..ab96ee3f3
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonCreateApp1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonDomains.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonDomains.webp
new file mode 100644
index 000000000..54bb7bb0c
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonDomains.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonEUWebApp.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonEUWebApp.webp
new file mode 100644
index 000000000..2285054bc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonEUWebApp.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonEnableDisable.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonEnableDisable.webp
new file mode 100644
index 000000000..17e51090c
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonEnableDisable.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonEnabled.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonEnabled.webp
new file mode 100644
index 000000000..57ced93a9
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonEnabled.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonEndUserIcon (1).webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonEndUserIcon (1).webp
new file mode 100644
index 000000000..95a12cc67
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonEndUserIcon (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonEndUserIcon.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonEndUserIcon.webp
new file mode 100644
index 000000000..95a12cc67
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonEndUserIcon.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonEnvVar.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonEnvVar.webp
new file mode 100644
index 000000000..fc591ab87
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonEnvVar.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonGeneral.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonGeneral.webp
new file mode 100644
index 000000000..4d1315189
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonGeneral.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonInstall.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonInstall.webp
new file mode 100644
index 000000000..b3802ec88
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonInstall.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonRestartRemove.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonRestartRemove.webp
new file mode 100644
index 000000000..10ad1bb13
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonRestartRemove.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonSelectorEditApp.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonSelectorEditApp.webp
new file mode 100644
index 000000000..2f0c6cd14
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonSelectorEditApp.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/PythonStartStopApp.webp b/docs/.vuepress/public/images/legacy/lve_manager/PythonStartStopApp.webp
new file mode 100644
index 000000000..747257bb9
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/PythonStartStopApp.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-HTTP-queries.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-HTTP-queries.webp
new file mode 100644
index 000000000..222c94fa6
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-HTTP-queries.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage (1).webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage (1).webp
new file mode 100644
index 000000000..efac34d69
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage-table.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage-table.webp
new file mode 100644
index 000000000..40cb88f67
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage-table.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage.webp
new file mode 100644
index 000000000..efac34d69
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-current-usage.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-dashboard.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-dashboard.webp
new file mode 100644
index 000000000..9bf39ed03
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-dashboard.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-db-queries.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-db-queries.webp
new file mode 100644
index 000000000..8409c0346
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-db-queries.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-faults-chart.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-faults-chart.webp
new file mode 100644
index 000000000..864809a31
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-faults-chart.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-no-issues.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-no-issues.webp
new file mode 100644
index 000000000..abc64a8bb
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-no-issues.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-snapshots.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-snapshots.webp
new file mode 100644
index 000000000..231f45f95
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-snapshots.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RU-usage-table.webp b/docs/.vuepress/public/images/legacy/lve_manager/RU-usage-table.webp
new file mode 100644
index 000000000..4a61ed615
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RU-usage-table.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RubyClientPlugin1.webp b/docs/.vuepress/public/images/legacy/lve_manager/RubyClientPlugin1.webp
new file mode 100644
index 000000000..1f2a01050
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RubyClientPlugin1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RubyClientPluginStart.webp b/docs/.vuepress/public/images/legacy/lve_manager/RubyClientPluginStart.webp
new file mode 100644
index 000000000..1c59048ba
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RubyClientPluginStart.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/RunDiagnostic.webp b/docs/.vuepress/public/images/legacy/lve_manager/RunDiagnostic.webp
new file mode 100644
index 000000000..7a57bec60
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/RunDiagnostic.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/SelectorFilters.webp b/docs/.vuepress/public/images/legacy/lve_manager/SelectorFilters.webp
new file mode 100644
index 000000000..694200072
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/SelectorFilters.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/SetVersion.webp b/docs/.vuepress/public/images/legacy/lve_manager/SetVersion.webp
new file mode 100644
index 000000000..da09545c4
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/SetVersion.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/SlowSiteAnalyzerEmailNotifications.webp b/docs/.vuepress/public/images/legacy/lve_manager/SlowSiteAnalyzerEmailNotifications.webp
new file mode 100644
index 000000000..da12d434b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/SlowSiteAnalyzerEmailNotifications.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/TopSlow.webp b/docs/.vuepress/public/images/legacy/lve_manager/TopSlow.webp
new file mode 100644
index 000000000..55342e4bc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/TopSlow.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/TurningOnOffNotifications.webp b/docs/.vuepress/public/images/legacy/lve_manager/TurningOnOffNotifications.webp
new file mode 100644
index 000000000..69eba8dfa
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/TurningOnOffNotifications.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/UsePHPSelector.webp b/docs/.vuepress/public/images/legacy/lve_manager/UsePHPSelector.webp
new file mode 100644
index 000000000..2277ccba7
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/UsePHPSelector.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/UsePHPSelector1.webp b/docs/.vuepress/public/images/legacy/lve_manager/UsePHPSelector1.webp
new file mode 100644
index 000000000..ac8ec5153
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/UsePHPSelector1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringMain.webp b/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringMain.webp
new file mode 100644
index 000000000..a33a532e1
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringMain.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringPHPSiteAnalyzer.webp b/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringPHPSiteAnalyzer.webp
new file mode 100644
index 000000000..072c37822
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringPHPSiteAnalyzer.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringSlider.webp b/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringSlider.webp
new file mode 100644
index 000000000..5d3733745
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringSlider.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringSlider1.webp b/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringSlider1.webp
new file mode 100644
index 000000000..fe4f41279
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/WebsiteMonitoringSlider1.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/actionshoster.webp b/docs/.vuepress/public/images/legacy/lve_manager/actionshoster.webp
new file mode 100644
index 000000000..7d8aa11f1
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/actionshoster.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/client_resource_usage.webp b/docs/.vuepress/public/images/legacy/lve_manager/client_resource_usage.webp
new file mode 100644
index 000000000..c986db52d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/client_resource_usage.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/currentusagetabresellerr_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/currentusagetabresellerr_zoom70.webp
new file mode 100644
index 000000000..abb2c25a2
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/currentusagetabresellerr_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/dashboard_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/dashboard_zoom70.webp
new file mode 100644
index 000000000..ffd2c8ef1
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/dashboard_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/faults-to-include.webp b/docs/.vuepress/public/images/legacy/lve_manager/faults-to-include.webp
new file mode 100644
index 000000000..9be1afdb8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/faults-to-include.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/historicalusageresellertab_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/historicalusageresellertab_zoom70.webp
new file mode 100644
index 000000000..97c74ba07
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/historicalusageresellertab_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/history_charts_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/history_charts_zoom70.webp
new file mode 100644
index 000000000..d47452b5c
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/history_charts_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/historyhoster.webp b/docs/.vuepress/public/images/legacy/lve_manager/historyhoster.webp
new file mode 100644
index 000000000..0d33d38de
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/historyhoster.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/inode-limits.webp b/docs/.vuepress/public/images/legacy/lve_manager/inode-limits.webp
new file mode 100644
index 000000000..3bdf3403d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/inode-limits.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/installationwizardmain_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/installationwizardmain_zoom70.webp
new file mode 100644
index 000000000..c4236462b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/installationwizardmain_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/installationwizardstep1_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/installationwizardstep1_zoom70.webp
new file mode 100644
index 000000000..b9c5b064f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/installationwizardstep1_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_01.webp b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_01.webp
new file mode 100644
index 000000000..489a337f3
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_01.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_02.webp b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_02.webp
new file mode 100644
index 000000000..5b96b5ff1
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_02.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_03.webp b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_03.webp
new file mode 100644
index 000000000..385c27ccd
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_03.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_04.webp b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_04.webp
new file mode 100644
index 000000000..7b9cc0498
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_04.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_05.webp b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_05.webp
new file mode 100644
index 000000000..30412d970
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/lve-extension_05.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/lve-faults-email-notifications.webp b/docs/.vuepress/public/images/legacy/lve_manager/lve-faults-email-notifications.webp
new file mode 100644
index 000000000..8728b8e66
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/lve-faults-email-notifications.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/lvemanagermainmenu_zoom80.webp b/docs/.vuepress/public/images/legacy/lve_manager/lvemanagermainmenu_zoom80.webp
new file mode 100644
index 000000000..8fc43f8d3
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/lvemanagermainmenu_zoom80.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/man_01_zoom73 (1).webp b/docs/.vuepress/public/images/legacy/lve_manager/man_01_zoom73 (1).webp
new file mode 100644
index 000000000..77944c300
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/man_01_zoom73 (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/man_01_zoom73.webp b/docs/.vuepress/public/images/legacy/lve_manager/man_01_zoom73.webp
new file mode 100644
index 000000000..77944c300
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/man_01_zoom73.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/minimum-number-of-faults-to-notify.webp b/docs/.vuepress/public/images/legacy/lve_manager/minimum-number-of-faults-to-notify.webp
new file mode 100644
index 000000000..5b285c8b7
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/minimum-number-of-faults-to-notify.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/mysql-governor-settings.webp b/docs/.vuepress/public/images/legacy/lve_manager/mysql-governor-settings.webp
new file mode 100644
index 000000000..59328599d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/mysql-governor-settings.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/mysql_packages_limits.webp b/docs/.vuepress/public/images/legacy/lve_manager/mysql_packages_limits.webp
new file mode 100644
index 000000000..c5ade0e36
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/mysql_packages_limits.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/mysql_packages_limits_edit.webp b/docs/.vuepress/public/images/legacy/lve_manager/mysql_packages_limits_edit.webp
new file mode 100644
index 000000000..d3a777386
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/mysql_packages_limits_edit.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsconfirmation_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsconfirmation_zoom70.webp
new file mode 100644
index 000000000..24afec8a5
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsconfirmation_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsenable_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsenable_zoom70.webp
new file mode 100644
index 000000000..30fefa212
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsenable_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsgeneral_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsgeneral_zoom70.webp
new file mode 100644
index 000000000..0626cedab
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsgeneral_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsmakedefault_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsmakedefault_zoom70.webp
new file mode 100644
index 000000000..461587939
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsmakedefault_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsselectordomains_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsselectordomains_zoom70.webp
new file mode 100644
index 000000000..06427bbb8
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsselectordomains_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsselectorlogo_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsselectorlogo_zoom70.webp
new file mode 100644
index 000000000..77e9b8a59
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsselectorlogo_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsslider_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsslider_zoom70.webp
new file mode 100644
index 000000000..5a62c0bb1
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsslider_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsusermain_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsusermain_zoom70.webp
new file mode 100644
index 000000000..d0f4a6afc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsusermain_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsuseruirestartremove_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsuseruirestartremove_zoom70.webp
new file mode 100644
index 000000000..d5daa6e47
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsuseruirestartremove_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/nodejsuseruistartstop_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/nodejsuseruistartstop_zoom70.webp
new file mode 100644
index 000000000..a421e64ba
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/nodejsuseruistartstop_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/options-cagefs.webp b/docs/.vuepress/public/images/legacy/lve_manager/options-cagefs.webp
new file mode 100644
index 000000000..382b2aeea
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/options-cagefs.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/options-general.webp b/docs/.vuepress/public/images/legacy/lve_manager/options-general.webp
new file mode 100644
index 000000000..a6cd47e82
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/options-general.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/options-nodejs.webp b/docs/.vuepress/public/images/legacy/lve_manager/options-nodejs.webp
new file mode 100644
index 000000000..16e53f944
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/options-nodejs.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/options-python-selector.webp b/docs/.vuepress/public/images/legacy/lve_manager/options-python-selector.webp
new file mode 100644
index 000000000..49bd04be7
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/options-python-selector.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/options02_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/options02_zoom70.webp
new file mode 100644
index 000000000..882d71233
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/options02_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/options03_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/options03_zoom70.webp
new file mode 100644
index 000000000..fd13393de
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/options03_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/optionsresellernotify_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/optionsresellernotify_zoom70.webp
new file mode 100644
index 000000000..7adf9c068
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/optionsresellernotify_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/packageshostertab_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/packageshostertab_zoom70.webp
new file mode 100644
index 000000000..48b59f4da
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/packageshostertab_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/packagesreseller_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/packagesreseller_zoom70.webp
new file mode 100644
index 000000000..907d77a0b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/packagesreseller_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/php_selector (1).webp b/docs/.vuepress/public/images/legacy/lve_manager/php_selector (1).webp
new file mode 100644
index 000000000..7e892ba28
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/php_selector (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/php_selector.webp b/docs/.vuepress/public/images/legacy/lve_manager/php_selector.webp
new file mode 100644
index 000000000..7e892ba28
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/php_selector.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/php_selector_customer.webp b/docs/.vuepress/public/images/legacy/lve_manager/php_selector_customer.webp
new file mode 100644
index 000000000..b347557dc
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/php_selector_customer.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/php_selector_options.webp b/docs/.vuepress/public/images/legacy/lve_manager/php_selector_options.webp
new file mode 100644
index 000000000..1e9136098
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/php_selector_options.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/pic_error.webp b/docs/.vuepress/public/images/legacy/lve_manager/pic_error.webp
new file mode 100644
index 000000000..a7190329e
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/pic_error.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/pic_info.webp b/docs/.vuepress/public/images/legacy/lve_manager/pic_info.webp
new file mode 100644
index 000000000..eb91ae15f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/pic_info.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/pic_success.webp b/docs/.vuepress/public/images/legacy/lve_manager/pic_success.webp
new file mode 100644
index 000000000..61fb5759c
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/pic_success.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/pic_warning.webp b/docs/.vuepress/public/images/legacy/lve_manager/pic_warning.webp
new file mode 100644
index 000000000..4130299d6
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/pic_warning.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/sevendayschartresellers_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/sevendayschartresellers_zoom70.webp
new file mode 100644
index 000000000..b8c6e5782
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/sevendayschartresellers_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/statisticstabhoster_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/statisticstabhoster_zoom70.webp
new file mode 100644
index 000000000..e133b19b2
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/statisticstabhoster_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/statisticstabreseller_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/statisticstabreseller_zoom70.webp
new file mode 100644
index 000000000..75e79c70f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/statisticstabreseller_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/user-interface-settings.webp b/docs/.vuepress/public/images/legacy/lve_manager/user-interface-settings.webp
new file mode 100644
index 000000000..513c1c1fa
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/user-interface-settings.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/userstabhoster_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/userstabhoster_zoom70.webp
new file mode 100644
index 000000000..eab5ad44f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/userstabhoster_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/userstabpopup_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/userstabpopup_zoom70.webp
new file mode 100644
index 000000000..1f04cc037
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/userstabpopup_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/userstabreseller_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/userstabreseller_zoom70.webp
new file mode 100644
index 000000000..62cfd718f
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/userstabreseller_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard-dashboard_zoom60.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard-dashboard_zoom60.webp
new file mode 100644
index 000000000..ddfcd6d8d
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard-dashboard_zoom60.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_close_btn (1).webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_close_btn (1).webp
new file mode 100644
index 000000000..e15b86a44
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_close_btn (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_close_btn.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_close_btn.webp
new file mode 100644
index 000000000..e15b86a44
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_close_btn.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_download_btn (1).webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_download_btn (1).webp
new file mode 100644
index 000000000..ffb68d3fe
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_download_btn (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_download_btn.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_download_btn.webp
new file mode 100644
index 000000000..ffb68d3fe
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_download_btn.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_installation_status_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_installation_status_zoom70.webp
new file mode 100644
index 000000000..0d0c51140
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_installation_status_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_lsapi_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_lsapi_zoom90.webp
new file mode 100644
index 000000000..0962f9eff
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_lsapi_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_mysqlgovernor_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_mysqlgovernor_zoom90.webp
new file mode 100644
index 000000000..0834bad28
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_mysqlgovernor_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_node.jsselector_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_node.jsselector_zoom90.webp
new file mode 100644
index 000000000..9e754ec25
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_node.jsselector_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_php_selector_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_php_selector_zoom90.webp
new file mode 100644
index 000000000..0091491c0
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_php_selector_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_python_selector_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_python_selector_zoom90.webp
new file mode 100644
index 000000000..7a3b4d103
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_python_selector_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_ruby_selector_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_ruby_selector_zoom90.webp
new file mode 100644
index 000000000..3041694ae
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_ruby_selector_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_try_again_btn (1).webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_try_again_btn (1).webp
new file mode 100644
index 000000000..04cf54302
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_try_again_btn (1).webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_try_again_btn.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_try_again_btn.webp
new file mode 100644
index 000000000..04cf54302
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_try_again_btn.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizard_warning_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizard_warning_zoom70.webp
new file mode 100644
index 000000000..6f79326f7
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizard_warning_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizardautoinstallationfails_zoom80.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizardautoinstallationfails_zoom80.webp
new file mode 100644
index 000000000..1b440c739
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizardautoinstallationfails_zoom80.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizardbroken_zoom70.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizardbroken_zoom70.webp
new file mode 100644
index 000000000..10d3c0ca2
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizardbroken_zoom70.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizardcagefs_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizardcagefs_zoom90.webp
new file mode 100644
index 000000000..a180fac9b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizardcagefs_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizardinstallremove_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizardinstallremove_zoom90.webp
new file mode 100644
index 000000000..682c7635b
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizardinstallremove_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/legacy/lve_manager/wizardsuccess_zoom90.webp b/docs/.vuepress/public/images/legacy/lve_manager/wizardsuccess_zoom90.webp
new file mode 100644
index 000000000..ba0711fa6
Binary files /dev/null and b/docs/.vuepress/public/images/legacy/lve_manager/wizardsuccess_zoom90.webp differ
diff --git a/docs/.vuepress/public/images/linked-server-centralized-monitoring.png b/docs/.vuepress/public/images/linked-server-centralized-monitoring.png
new file mode 100644
index 000000000..c5b47a594
Binary files /dev/null and b/docs/.vuepress/public/images/linked-server-centralized-monitoring.png differ
diff --git a/docs/.vuepress/public/images/solo/faq/EnablePHPFpm.webp b/docs/.vuepress/public/images/solo/faq/EnablePHPFpm.webp
new file mode 100644
index 000000000..82e649de1
Binary files /dev/null and b/docs/.vuepress/public/images/solo/faq/EnablePHPFpm.webp differ
diff --git a/docs/.vuepress/public/images/solo/faq/InstallationViaMultiPHPManager.webp b/docs/.vuepress/public/images/solo/faq/InstallationViaMultiPHPManager.webp
new file mode 100644
index 000000000..82e649de1
Binary files /dev/null and b/docs/.vuepress/public/images/solo/faq/InstallationViaMultiPHPManager.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_available.webp b/docs/.vuepress/public/images/solo/installation/installation_available.webp
new file mode 100644
index 000000000..4d5e89b35
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_available.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_done.webp b/docs/.vuepress/public/images/solo/installation/installation_done.webp
new file mode 100644
index 000000000..2777edf80
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_done.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_iso_source.webp b/docs/.vuepress/public/images/solo/installation/installation_iso_source.webp
new file mode 100644
index 000000000..cdfc375d2
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_iso_source.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_progress.webp b/docs/.vuepress/public/images/solo/installation/installation_progress.webp
new file mode 100644
index 000000000..c351fda6e
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_progress.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_source_gray_done.webp b/docs/.vuepress/public/images/solo/installation/installation_source_gray_done.webp
new file mode 100644
index 000000000..6c8af1d76
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_source_gray_done.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_source_gray_network.webp b/docs/.vuepress/public/images/solo/installation/installation_source_gray_network.webp
new file mode 100644
index 000000000..b20a70eb7
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_source_gray_network.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_source_gray_working.webp b/docs/.vuepress/public/images/solo/installation/installation_source_gray_working.webp
new file mode 100644
index 000000000..08e2e5f1f
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_source_gray_working.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_source_network_address.webp b/docs/.vuepress/public/images/solo/installation/installation_source_network_address.webp
new file mode 100644
index 000000000..c7e4a7ef5
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_source_network_address.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/installation_summary.webp b/docs/.vuepress/public/images/solo/installation/installation_summary.webp
new file mode 100644
index 000000000..7bd6e1831
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/installation_summary.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/software_selection_solo.webp b/docs/.vuepress/public/images/solo/installation/software_selection_solo.webp
new file mode 100644
index 000000000..0f4e6c844
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/software_selection_solo.webp differ
diff --git a/docs/.vuepress/public/images/solo/installation/welcome_page.webp b/docs/.vuepress/public/images/solo/installation/welcome_page.webp
new file mode 100644
index 000000000..7c68bf9de
Binary files /dev/null and b/docs/.vuepress/public/images/solo/installation/welcome_page.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPAdminSolo.webp b/docs/.vuepress/public/images/solo/manager/AWPAdminSolo.webp
new file mode 100644
index 000000000..41eb8a81f
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPAdminSolo.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPBrokenPHP.d69c93c1.webp b/docs/.vuepress/public/images/solo/manager/AWPBrokenPHP.d69c93c1.webp
new file mode 100644
index 000000000..b82dfaf3d
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPBrokenPHP.d69c93c1.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPDisable.8d6e3701.webp b/docs/.vuepress/public/images/solo/manager/AWPDisable.8d6e3701.webp
new file mode 100644
index 000000000..dbcec9a18
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPDisable.8d6e3701.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPDisablePremiumOnly.29475d2a.webp b/docs/.vuepress/public/images/solo/manager/AWPDisablePremiumOnly.29475d2a.webp
new file mode 100644
index 000000000..4e4f99b54
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPDisablePremiumOnly.29475d2a.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPFilters.ddf8451a.webp b/docs/.vuepress/public/images/solo/manager/AWPFilters.ddf8451a.webp
new file mode 100644
index 000000000..572ff9b88
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPFilters.ddf8451a.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPGettingStarted.df20613a.webp b/docs/.vuepress/public/images/solo/manager/AWPGettingStarted.df20613a.webp
new file mode 100644
index 000000000..b38f9d57c
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPGettingStarted.df20613a.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPNoRedis.8fb30039.webp b/docs/.vuepress/public/images/solo/manager/AWPNoRedis.8fb30039.webp
new file mode 100644
index 000000000..c21aa43ed
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPNoRedis.8fb30039.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPStats.88c80ca6.webp b/docs/.vuepress/public/images/solo/manager/AWPStats.88c80ca6.webp
new file mode 100644
index 000000000..a021c4231
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPStats.88c80ca6.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPStatsPremium.67c9ebd7.webp b/docs/.vuepress/public/images/solo/manager/AWPStatsPremium.67c9ebd7.webp
new file mode 100644
index 000000000..799c9360c
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPStatsPremium.67c9ebd7.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPUpgradeLink.f34baf60.webp b/docs/.vuepress/public/images/solo/manager/AWPUpgradeLink.f34baf60.webp
new file mode 100644
index 000000000..46433bb06
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPUpgradeLink.f34baf60.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/AWPUpgradeNoLink.914ceca7.webp b/docs/.vuepress/public/images/solo/manager/AWPUpgradeNoLink.914ceca7.webp
new file mode 100644
index 000000000..3602d337e
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/AWPUpgradeNoLink.914ceca7.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/FilterIndicator.webp b/docs/.vuepress/public/images/solo/manager/FilterIndicator.webp
new file mode 100644
index 000000000..7e3ff9a9b
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/FilterIndicator.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolalert.webp b/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolalert.webp
new file mode 100644
index 000000000..09bcb0e9d
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolalert.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolemail.webp b/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolemail.webp
new file mode 100644
index 000000000..e1f27b478
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolemail.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolsettings.webp b/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolsettings.webp
new file mode 100644
index 000000000..5dcfcecdc
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/Webmonitoringtoolsettings.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringMain.webp b/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringMain.webp
new file mode 100644
index 000000000..53e95c143
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringMain.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringSlider.webp b/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringSlider.webp
new file mode 100644
index 000000000..5d3733745
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringSlider.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringSlider1.webp b/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringSlider1.webp
new file mode 100644
index 000000000..fe4f41279
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/WebsiteMonitoringSlider1.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayAdvanced.webp b/docs/.vuepress/public/images/solo/manager/XRayAdvanced.webp
new file mode 100644
index 000000000..fa703b4e1
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayAdvanced.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayAutotracingtaskstab.webp b/docs/.vuepress/public/images/solo/manager/XRayAutotracingtaskstab.webp
new file mode 100644
index 000000000..376b40b1a
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayAutotracingtaskstab.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportByHourRequests.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportByHourRequests.webp
new file mode 100644
index 000000000..e104a8539
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportByHourRequests.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportCollectedRequests.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportCollectedRequests.webp
new file mode 100644
index 000000000..6a4b3a28c
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportCollectedRequests.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportExample.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportExample.webp
new file mode 100644
index 000000000..c439c160c
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportExample.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportRequestDetails.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportRequestDetails.webp
new file mode 100644
index 000000000..5fce924d1
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTaskDaylyReportRequestDetails.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTasksList.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTasksList.webp
new file mode 100644
index 000000000..ec3c31240
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTasksList.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTab.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTab.webp
new file mode 100644
index 000000000..96241d2b4
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTab.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksList.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksList.webp
new file mode 100644
index 000000000..ec3c31240
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksList.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksListCreated.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksListCreated.webp
new file mode 100644
index 000000000..dea7405cd
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksListCreated.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksListGrouped.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksListGrouped.webp
new file mode 100644
index 000000000..712710d3a
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksListGrouped.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksRequestsList.webp b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksRequestsList.webp
new file mode 100644
index 000000000..7421bfd66
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayContinuousTracingTasksRequestsList.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayCreateContinuousTaskBtn.webp b/docs/.vuepress/public/images/solo/manager/XRayCreateContinuousTaskBtn.webp
new file mode 100644
index 000000000..537d1065b
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayCreateContinuousTaskBtn.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayCreateContinuousTaskForm.webp b/docs/.vuepress/public/images/solo/manager/XRayCreateContinuousTaskForm.webp
new file mode 100644
index 000000000..3499dbf55
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayCreateContinuousTaskForm.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayDatabaseQueries.webp b/docs/.vuepress/public/images/solo/manager/XRayDatabaseQueries.webp
new file mode 100644
index 000000000..f4b477a62
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayDatabaseQueries.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayDelete.webp b/docs/.vuepress/public/images/solo/manager/XRayDelete.webp
new file mode 100644
index 000000000..2b19bee13
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayDelete.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayExternalRequests.webp b/docs/.vuepress/public/images/solo/manager/XRayExternalRequests.webp
new file mode 100644
index 000000000..cf2c73de4
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayExternalRequests.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayPHPInfo.webp b/docs/.vuepress/public/images/solo/manager/XRayPHPInfo.webp
new file mode 100644
index 000000000..7b6f730aa
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayPHPInfo.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayPHPInfoRemoteAddr.webp b/docs/.vuepress/public/images/solo/manager/XRayPHPInfoRemoteAddr.webp
new file mode 100644
index 000000000..32a9177be
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayPHPInfoRemoteAddr.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayScanDir.webp b/docs/.vuepress/public/images/solo/manager/XRayScanDir.webp
new file mode 100644
index 000000000..b8449ce15
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayScanDir.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRaySlowestRequest.webp b/docs/.vuepress/public/images/solo/manager/XRaySlowestRequest.webp
new file mode 100644
index 000000000..0e8e72d0b
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRaySlowestRequest.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRaySoftwareModulesPlugins.webp b/docs/.vuepress/public/images/solo/manager/XRaySoftwareModulesPlugins.webp
new file mode 100644
index 000000000..0c5c79763
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRaySoftwareModulesPlugins.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayStart.webp b/docs/.vuepress/public/images/solo/manager/XRayStart.webp
new file mode 100644
index 000000000..cccdb20f9
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayStart.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayStop.webp b/docs/.vuepress/public/images/solo/manager/XRayStop.webp
new file mode 100644
index 000000000..c541ad671
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayStop.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayStopped.webp b/docs/.vuepress/public/images/solo/manager/XRayStopped.webp
new file mode 100644
index 000000000..6163bbd3e
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayStopped.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRaySystemFunctions.webp b/docs/.vuepress/public/images/solo/manager/XRaySystemFunctions.webp
new file mode 100644
index 000000000..140207b2b
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRaySystemFunctions.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayTracingTask.webp b/docs/.vuepress/public/images/solo/manager/XRayTracingTask.webp
new file mode 100644
index 000000000..f00ad95a9
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayTracingTask.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayTracingTaskCreated.webp b/docs/.vuepress/public/images/solo/manager/XRayTracingTaskCreated.webp
new file mode 100644
index 000000000..42d63503c
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayTracingTaskCreated.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayTrcingTaskList.webp b/docs/.vuepress/public/images/solo/manager/XRayTrcingTaskList.webp
new file mode 100644
index 000000000..0a4a522db
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayTrcingTaskList.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayTrcingTaskList1.webp b/docs/.vuepress/public/images/solo/manager/XRayTrcingTaskList1.webp
new file mode 100644
index 000000000..d4ad0428f
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayTrcingTaskList1.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayView.webp b/docs/.vuepress/public/images/solo/manager/XRayView.webp
new file mode 100644
index 000000000..98f3e89ea
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayView.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/XRayView1.webp b/docs/.vuepress/public/images/solo/manager/XRayView1.webp
new file mode 100644
index 000000000..33bac1be5
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/XRayView1.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPBrokenPHP.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPBrokenPHP.webp
new file mode 100644
index 000000000..b82dfaf3d
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPBrokenPHP.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPDisable.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPDisable.webp
new file mode 100644
index 000000000..dbcec9a18
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPDisable.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPDisablePremiumOnly.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPDisablePremiumOnly.webp
new file mode 100644
index 000000000..4e4f99b54
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPDisablePremiumOnly.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPFilters.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPFilters.webp
new file mode 100644
index 000000000..572ff9b88
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPFilters.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPGettingStarted.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPGettingStarted.webp
new file mode 100644
index 000000000..b38f9d57c
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPGettingStarted.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPNoRedis.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPNoRedis.webp
new file mode 100644
index 000000000..c21aa43ed
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPNoRedis.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPStats.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPStats.webp
new file mode 100644
index 000000000..a021c4231
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPStats.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPStatsPremium.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPStatsPremium.webp
new file mode 100644
index 000000000..799c9360c
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPStatsPremium.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPUpgradeLink.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPUpgradeLink.webp
new file mode 100644
index 000000000..46433bb06
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPUpgradeLink.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/awp/AWPUpgradeNoLink.webp b/docs/.vuepress/public/images/solo/manager/awp/AWPUpgradeNoLink.webp
new file mode 100644
index 000000000..3602d337e
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/awp/AWPUpgradeNoLink.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivation.webp b/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivation.webp
new file mode 100644
index 000000000..3bf6e5a91
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivation.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivationsignup.webp b/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivationsignup.webp
new file mode 100644
index 000000000..d883b545a
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivationsignup.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivationsignupform.webp b/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivationsignupform.webp
new file mode 100644
index 000000000..0542a7037
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/cloudlinuxmanageractivationsignupform.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/howtofindlvemanagerinpanel.webp b/docs/.vuepress/public/images/solo/manager/howtofindlvemanagerinpanel.webp
new file mode 100644
index 000000000..4ddedd6de
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/howtofindlvemanagerinpanel.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_RecordedSession.webp b/docs/.vuepress/public/images/solo/manager/solo_RecordedSession.webp
new file mode 100644
index 000000000..769c47b8e
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_RecordedSession.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerEmailNotifications.webp b/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerEmailNotifications.webp
new file mode 100644
index 000000000..a9cec9e45
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerEmailNotifications.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerReport.webp b/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerReport.webp
new file mode 100644
index 000000000..12f706704
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerReport.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerSettings.webp b/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerSettings.webp
new file mode 100644
index 000000000..06c863dab
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_SlowSiteAnalyzerSettings.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_XRayCollectedRequests.webp b/docs/.vuepress/public/images/solo/manager/solo_XRayCollectedRequests.webp
new file mode 100644
index 000000000..ab6b6ac21
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_XRayCollectedRequests.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_lvemanagermainmenu.webp b/docs/.vuepress/public/images/solo/manager/solo_lvemanagermainmenu.webp
new file mode 100644
index 000000000..0d80296ef
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_lvemanagermainmenu.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_php_selector_1.webp b/docs/.vuepress/public/images/solo/manager/solo_php_selector_1.webp
new file mode 100644
index 000000000..265f78687
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_php_selector_1.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_php_selector_2.webp b/docs/.vuepress/public/images/solo/manager/solo_php_selector_2.webp
new file mode 100644
index 000000000..43e8d4f2a
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_php_selector_2.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_php_selector_3.webp b/docs/.vuepress/public/images/solo/manager/solo_php_selector_3.webp
new file mode 100644
index 000000000..23f5482d0
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_php_selector_3.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_php_selector_4.webp b/docs/.vuepress/public/images/solo/manager/solo_php_selector_4.webp
new file mode 100644
index 000000000..f7eccb700
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_php_selector_4.webp differ
diff --git a/docs/.vuepress/public/images/solo/manager/solo_php_selector_5.webp b/docs/.vuepress/public/images/solo/manager/solo_php_selector_5.webp
new file mode 100644
index 000000000..71ab4a916
Binary files /dev/null and b/docs/.vuepress/public/images/solo/manager/solo_php_selector_5.webp differ
diff --git a/docs/.vuepress/public/images/ubuntu/faq/enablephp-fpm.webp b/docs/.vuepress/public/images/ubuntu/faq/enablephp-fpm.webp
new file mode 100644
index 000000000..82e649de1
Binary files /dev/null and b/docs/.vuepress/public/images/ubuntu/faq/enablephp-fpm.webp differ
diff --git a/docs/.vuepress/public/images/ubuntu/faq/viaMultiPHP.webp b/docs/.vuepress/public/images/ubuntu/faq/viaMultiPHP.webp
new file mode 100644
index 000000000..f4863d7c8
Binary files /dev/null and b/docs/.vuepress/public/images/ubuntu/faq/viaMultiPHP.webp differ
diff --git a/docs/.vuepress/public/images/ubuntu/features/Dashboard.webp b/docs/.vuepress/public/images/ubuntu/features/Dashboard.webp
new file mode 100644
index 000000000..9796c55be
Binary files /dev/null and b/docs/.vuepress/public/images/ubuntu/features/Dashboard.webp differ
diff --git a/docs/.vuepress/public/images/ubuntu/features/Param.webp b/docs/.vuepress/public/images/ubuntu/features/Param.webp
new file mode 100644
index 000000000..92b95cf81
Binary files /dev/null and b/docs/.vuepress/public/images/ubuntu/features/Param.webp differ
diff --git a/docs/.vuepress/public/images/ubuntu/features/remove-mod-ruid2.webp b/docs/.vuepress/public/images/ubuntu/features/remove-mod-ruid2.webp
new file mode 100644
index 000000000..075412e04
Binary files /dev/null and b/docs/.vuepress/public/images/ubuntu/features/remove-mod-ruid2.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPApp.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPApp.webp
new file mode 100644
index 000000000..93a04f9bc
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPApp.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCDNEnabled.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCDNEnabled.webp
new file mode 100644
index 000000000..5733f43b5
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCDNEnabled.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCriticalCSSEnabled.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCriticalCSSEnabled.webp
new file mode 100644
index 000000000..7e78faf16
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCriticalCSSEnabled.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCriticalCSSStarted.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCriticalCSSStarted.webp
new file mode 100644
index 000000000..102438d12
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCriticalCSSStarted.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPDirectAdmin.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPDirectAdmin.webp
new file mode 100644
index 000000000..18078f8cc
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPDirectAdmin.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPEnableManually.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPEnableManually.webp
new file mode 100644
index 000000000..c3a9b2276
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPEnableManually.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationAuthenticationFailed.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationAuthenticationFailed.webp
new file mode 100644
index 000000000..513af5198
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationAuthenticationFailed.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationDatabaseTableCannotBeCreated.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationDatabaseTableCannotBeCreated.webp
new file mode 100644
index 000000000..560c40894
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationDatabaseTableCannotBeCreated.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationMonthlyQuotaExceeded.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationMonthlyQuotaExceeded.webp
new file mode 100644
index 000000000..a90a5176d
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationMonthlyQuotaExceeded.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationProgress.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationProgress.webp
new file mode 100644
index 000000000..c672d79fb
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationProgress.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSaaSServiceNotAvailable.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSaaSServiceNotAvailable.webp
new file mode 100644
index 000000000..5fa263fbb
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSaaSServiceNotAvailable.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSettings.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSettings.webp
new file mode 100644
index 000000000..693846817
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSettings.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSuccess.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSuccess.webp
new file mode 100644
index 000000000..b0fae7431
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSuccess.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationWrongFilePermissions.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationWrongFilePermissions.webp
new file mode 100644
index 000000000..8ce7ebbbd
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationWrongFilePermissions.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPlesk.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPlesk.webp
new file mode 100644
index 000000000..b5c1d92fc
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPlesk.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPlugin.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPlugin.webp
new file mode 100644
index 000000000..c00a91851
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPlugin.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumApplied.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumApplied.webp
new file mode 100644
index 000000000..2475d1a15
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumApplied.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumReview.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumReview.webp
new file mode 100644
index 000000000..0c4b698d0
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumReview.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumUI.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumUI.webp
new file mode 100644
index 000000000..9d8dc9285
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumUI.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeLink.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeLink.webp
new file mode 100644
index 000000000..46433bb06
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeLink.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeModuleWait.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeModuleWait.webp
new file mode 100644
index 000000000..27bc9bf83
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeModuleWait.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeNoLink.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeNoLink.webp
new file mode 100644
index 000000000..3602d337e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeNoLink.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUserUI.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUserUI.webp
new file mode 100644
index 000000000..95991008a
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUserUI.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceApplied.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceApplied.webp
new file mode 100644
index 000000000..556f5b8f3
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceApplied.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceReview.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceReview.webp
new file mode 100644
index 000000000..5f0ee017e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceReview.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AppliedAdvice.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AppliedAdvice.webp
new file mode 100644
index 000000000..dec7d2df9
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/AppliedAdvice.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/CDNFlow.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/CDNFlow.webp
new file mode 100644
index 000000000..0d85a668d
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/CDNFlow.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/CDNGeneral.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/CDNGeneral.webp
new file mode 100644
index 000000000..4b0ce7c97
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/CDNGeneral.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQAdviceReview.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQAdviceReview.webp
new file mode 100644
index 000000000..b2880bc19
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQAdviceReview.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQAdviceTable.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQAdviceTable.webp
new file mode 100644
index 000000000..8ff4630bf
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQAdviceTable.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQIncMessage.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQIncMessage.webp
new file mode 100644
index 000000000..1e6dd699c
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQIncMessage.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQIncompatible.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQIncompatible.webp
new file mode 100644
index 000000000..0bc231b34
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/FAQIncompatible.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/MobileDiag.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/MobileDiag.webp
new file mode 100644
index 000000000..2b90dcc7e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/MobileDiag.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceApply.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceApply.webp
new file mode 100644
index 000000000..e0e461115
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceApply.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceDashboard.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceDashboard.webp
new file mode 100644
index 000000000..6eb7dd8c0
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceDashboard.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceDetails.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceDetails.webp
new file mode 100644
index 000000000..7b5a90439
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceDetails.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceError.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceError.webp
new file mode 100644
index 000000000..d219b05c2
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceError.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceTable.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceTable.webp
new file mode 100644
index 000000000..7705a9f42
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceTable.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/WPPlugins.webp b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/WPPlugins.webp
new file mode 100644
index 000000000..d716f7778
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-shared-pro-cloudlinux/WPPlugins.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237417668-66788efe-0c22-4310-a11b-572b6647f3b0.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237417668-66788efe-0c22-4310-a11b-572b6647f3b0.webp
new file mode 100644
index 000000000..f2a66ae20
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237417668-66788efe-0c22-4310-a11b-572b6647f3b0.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237417908-abdd950a-75ca-4bde-8eb9-faae0b5194c5.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237417908-abdd950a-75ca-4bde-8eb9-faae0b5194c5.webp
new file mode 100644
index 000000000..102438d12
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237417908-abdd950a-75ca-4bde-8eb9-faae0b5194c5.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428202-1a72f6b7-35a1-4a69-a1e2-53b81329645a.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428202-1a72f6b7-35a1-4a69-a1e2-53b81329645a.webp
new file mode 100644
index 000000000..693846817
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428202-1a72f6b7-35a1-4a69-a1e2-53b81329645a.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428270-b53f9409-104d-43db-a545-81237ad26e61.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428270-b53f9409-104d-43db-a545-81237ad26e61.webp
new file mode 100644
index 000000000..c672d79fb
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428270-b53f9409-104d-43db-a545-81237ad26e61.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428367-143f32b1-1ef3-47c0-9f67-b1e8aa93b5a6.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428367-143f32b1-1ef3-47c0-9f67-b1e8aa93b5a6.webp
new file mode 100644
index 000000000..b0fae7431
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428367-143f32b1-1ef3-47c0-9f67-b1e8aa93b5a6.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428429-062062c4-08e3-4848-984a-42afae22a0f2.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428429-062062c4-08e3-4848-984a-42afae22a0f2.webp
new file mode 100644
index 000000000..8ce7ebbbd
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428429-062062c4-08e3-4848-984a-42afae22a0f2.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428544-7515a087-7a6b-4923-bf4f-2d42cb986be5.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428544-7515a087-7a6b-4923-bf4f-2d42cb986be5.webp
new file mode 100644
index 000000000..560c40894
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428544-7515a087-7a6b-4923-bf4f-2d42cb986be5.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428583-494fe2c4-3915-4b6b-9245-ff67c0777de8.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428583-494fe2c4-3915-4b6b-9245-ff67c0777de8.webp
new file mode 100644
index 000000000..a90a5176d
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428583-494fe2c4-3915-4b6b-9245-ff67c0777de8.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428648-5d62fb2d-51f0-410a-94d5-de74619c61cb.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428648-5d62fb2d-51f0-410a-94d5-de74619c61cb.webp
new file mode 100644
index 000000000..513af5198
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428648-5d62fb2d-51f0-410a-94d5-de74619c61cb.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428754-5f73a64d-bd82-482e-9a72-29dbb92ab676.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428754-5f73a64d-bd82-482e-9a72-29dbb92ab676.webp
new file mode 100644
index 000000000..5fa263fbb
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/237428754-5f73a64d-bd82-482e-9a72-29dbb92ab676.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPApp.8999ae0f.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPApp.8999ae0f.webp
new file mode 100644
index 000000000..93a04f9bc
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPApp.8999ae0f.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPApp.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPApp.webp
new file mode 100644
index 000000000..93a04f9bc
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPApp.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCDNEnabled.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCDNEnabled.webp
new file mode 100644
index 000000000..5733f43b5
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCDNEnabled.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCriticalCSSEnabled.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCriticalCSSEnabled.webp
new file mode 100644
index 000000000..7e78faf16
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCriticalCSSEnabled.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCriticalCSSStarted.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCriticalCSSStarted.webp
new file mode 100644
index 000000000..102438d12
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPCriticalCSSStarted.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPDirectAdmin.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPDirectAdmin.webp
new file mode 100644
index 000000000..18078f8cc
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPDirectAdmin.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.2a271fe5 (1).webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.2a271fe5 (1).webp
new file mode 100644
index 000000000..c3a9b2276
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.2a271fe5 (1).webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.2a271fe5.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.2a271fe5.webp
new file mode 100644
index 000000000..c3a9b2276
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.2a271fe5.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.webp
new file mode 100644
index 000000000..c3a9b2276
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationAuthenticationFailed.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationAuthenticationFailed.webp
new file mode 100644
index 000000000..513af5198
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationAuthenticationFailed.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationDatabaseTableCannotBeCreated.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationDatabaseTableCannotBeCreated.webp
new file mode 100644
index 000000000..560c40894
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationDatabaseTableCannotBeCreated.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationMonthlyQuotaExceeded.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationMonthlyQuotaExceeded.webp
new file mode 100644
index 000000000..a90a5176d
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationMonthlyQuotaExceeded.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationProgress.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationProgress.webp
new file mode 100644
index 000000000..c672d79fb
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationProgress.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSaaSServiceNotAvailable.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSaaSServiceNotAvailable.webp
new file mode 100644
index 000000000..5fa263fbb
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSaaSServiceNotAvailable.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSettings.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSettings.webp
new file mode 100644
index 000000000..693846817
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSettings.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSuccess.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSuccess.webp
new file mode 100644
index 000000000..b0fae7431
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSuccess.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationWrongFilePermissions.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationWrongFilePermissions.webp
new file mode 100644
index 000000000..8ce7ebbbd
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationWrongFilePermissions.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlesk.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlesk.webp
new file mode 100644
index 000000000..b5c1d92fc
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlesk.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlugin.452c01c7.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlugin.452c01c7.webp
new file mode 100644
index 000000000..c00a91851
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlugin.452c01c7.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlugin.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlugin.webp
new file mode 100644
index 000000000..c00a91851
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPlugin.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumApplied.f4ab49cb.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumApplied.f4ab49cb.webp
new file mode 100644
index 000000000..2475d1a15
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumApplied.f4ab49cb.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumApplied.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumApplied.webp
new file mode 100644
index 000000000..2475d1a15
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumApplied.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumReview.02e7d6cc.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumReview.02e7d6cc.webp
new file mode 100644
index 000000000..0c4b698d0
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumReview.02e7d6cc.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumReview.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumReview.webp
new file mode 100644
index 000000000..0c4b698d0
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumReview.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumUI.7b99ce0c.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumUI.7b99ce0c.webp
new file mode 100644
index 000000000..9d8dc9285
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumUI.7b99ce0c.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumUI.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumUI.webp
new file mode 100644
index 000000000..9d8dc9285
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumUI.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeLink.f34baf60.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeLink.f34baf60.webp
new file mode 100644
index 000000000..46433bb06
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeLink.f34baf60.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeLink.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeLink.webp
new file mode 100644
index 000000000..46433bb06
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeLink.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeModuleWait.5c4c71b8.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeModuleWait.5c4c71b8.webp
new file mode 100644
index 000000000..27bc9bf83
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeModuleWait.5c4c71b8.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeModuleWait.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeModuleWait.webp
new file mode 100644
index 000000000..27bc9bf83
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeModuleWait.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeNoLink.914ceca7.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeNoLink.914ceca7.webp
new file mode 100644
index 000000000..3602d337e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeNoLink.914ceca7.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeNoLink.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeNoLink.webp
new file mode 100644
index 000000000..3602d337e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeNoLink.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.94d6a8ef (1).webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.94d6a8ef (1).webp
new file mode 100644
index 000000000..95991008a
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.94d6a8ef (1).webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.94d6a8ef.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.94d6a8ef.webp
new file mode 100644
index 000000000..95991008a
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.94d6a8ef.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.webp
new file mode 100644
index 000000000..95991008a
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceApplied.0b7c5061.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceApplied.0b7c5061.webp
new file mode 100644
index 000000000..556f5b8f3
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceApplied.0b7c5061.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceApplied.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceApplied.webp
new file mode 100644
index 000000000..556f5b8f3
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceApplied.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.8699f409 (1).webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.8699f409 (1).webp
new file mode 100644
index 000000000..5f0ee017e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.8699f409 (1).webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.8699f409.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.8699f409.webp
new file mode 100644
index 000000000..5f0ee017e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.8699f409.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.webp
new file mode 100644
index 000000000..5f0ee017e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AppliedAdvice.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AppliedAdvice.webp
new file mode 100644
index 000000000..dec7d2df9
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/AppliedAdvice.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNFlow.466a7b63.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNFlow.466a7b63.webp
new file mode 100644
index 000000000..0d85a668d
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNFlow.466a7b63.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNFlow.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNFlow.webp
new file mode 100644
index 000000000..0d85a668d
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNFlow.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNGeneral.06ed95d9.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNGeneral.06ed95d9.webp
new file mode 100644
index 000000000..4b0ce7c97
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNGeneral.06ed95d9.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNGeneral.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNGeneral.webp
new file mode 100644
index 000000000..4b0ce7c97
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/CDNGeneral.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceReview.69722882.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceReview.69722882.webp
new file mode 100644
index 000000000..b2880bc19
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceReview.69722882.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceReview.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceReview.webp
new file mode 100644
index 000000000..b2880bc19
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceReview.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceTable.664b8959.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceTable.664b8959.webp
new file mode 100644
index 000000000..8ff4630bf
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceTable.664b8959.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceTable.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceTable.webp
new file mode 100644
index 000000000..8ff4630bf
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceTable.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncMessage.2f518d51.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncMessage.2f518d51.webp
new file mode 100644
index 000000000..1e6dd699c
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncMessage.2f518d51.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncMessage.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncMessage.webp
new file mode 100644
index 000000000..1e6dd699c
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncMessage.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncompatible.d2ab0ad9.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncompatible.d2ab0ad9.webp
new file mode 100644
index 000000000..0bc231b34
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncompatible.d2ab0ad9.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncompatible.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncompatible.webp
new file mode 100644
index 000000000..0bc231b34
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/FAQIncompatible.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/MobileDiag.deeabdcc.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/MobileDiag.deeabdcc.webp
new file mode 100644
index 000000000..2b90dcc7e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/MobileDiag.deeabdcc.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/MobileDiag.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/MobileDiag.webp
new file mode 100644
index 000000000..2b90dcc7e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/MobileDiag.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/ResourceUsageWithoutLVE.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/ResourceUsageWithoutLVE.webp
new file mode 100644
index 000000000..0a3c2b85c
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/ResourceUsageWithoutLVE.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceApply.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceApply.webp
new file mode 100644
index 000000000..e0e461115
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceApply.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceDashboard.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceDashboard.webp
new file mode 100644
index 000000000..6eb7dd8c0
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceDashboard.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceDetails.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceDetails.webp
new file mode 100644
index 000000000..7b5a90439
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceDetails.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceError.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceError.webp
new file mode 100644
index 000000000..d219b05c2
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceError.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/WPPlugins.47e882c9.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/WPPlugins.47e882c9.webp
new file mode 100644
index 000000000..d716f7778
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/WPPlugins.47e882c9.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/WPPlugins.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/WPPlugins.webp
new file mode 100644
index 000000000..d716f7778
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/WPPlugins.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUI.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUI.webp
new file mode 100644
index 000000000..f10bf5ed5
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUI.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUIStart.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUIStart.webp
new file mode 100644
index 000000000..98b0b02e2
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUIStart.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUIWarning.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUIWarning.webp
new file mode 100644
index 000000000..a46665b0e
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUIWarning.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUiSpecifyURL.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUiSpecifyURL.webp
new file mode 100644
index 000000000..f92f05358
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUiSpecifyURL.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/solo_XRayEndUserPluginUIIcon.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/solo_XRayEndUserPluginUIIcon.webp
new file mode 100644
index 000000000..37598e3fc
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/solo_XRayEndUserPluginUIIcon.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_1.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_1.webp
new file mode 100644
index 000000000..ee775988b
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_1.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_2.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_2.webp
new file mode 100644
index 000000000..29e637498
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_2.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_3.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_3.webp
new file mode 100644
index 000000000..daf575bf0
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_3.webp differ
diff --git a/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_4.webp b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_4.webp
new file mode 100644
index 000000000..1b09556e5
Binary files /dev/null and b/docs/.vuepress/public/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_4.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AWPDirectAdmin.webp b/docs/.vuepress/public/images/wpos-plugin/AWPDirectAdmin.webp
new file mode 100644
index 000000000..18078f8cc
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AWPDirectAdmin.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AWPPlesk.webp b/docs/.vuepress/public/images/wpos-plugin/AWPPlesk.webp
new file mode 100644
index 000000000..b5c1d92fc
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AWPPlesk.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AWPPlugin.webp b/docs/.vuepress/public/images/wpos-plugin/AWPPlugin.webp
new file mode 100644
index 000000000..c00a91851
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AWPPlugin.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AWPPremiumApplied.webp b/docs/.vuepress/public/images/wpos-plugin/AWPPremiumApplied.webp
new file mode 100644
index 000000000..2475d1a15
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AWPPremiumApplied.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AWPPremiumReview.webp b/docs/.vuepress/public/images/wpos-plugin/AWPPremiumReview.webp
new file mode 100644
index 000000000..0c4b698d0
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AWPPremiumReview.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AWPPremiumUI.webp b/docs/.vuepress/public/images/wpos-plugin/AWPPremiumUI.webp
new file mode 100644
index 000000000..a332740f8
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AWPPremiumUI.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AWPUserUI.webp b/docs/.vuepress/public/images/wpos-plugin/AWPUserUI.webp
new file mode 100644
index 000000000..265883424
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AWPUserUI.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AdviceApplied.webp b/docs/.vuepress/public/images/wpos-plugin/AdviceApplied.webp
new file mode 100644
index 000000000..556f5b8f3
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AdviceApplied.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/AdviceReview.webp b/docs/.vuepress/public/images/wpos-plugin/AdviceReview.webp
new file mode 100644
index 000000000..5f0ee017e
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/AdviceReview.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/CDNFlow.webp b/docs/.vuepress/public/images/wpos-plugin/CDNFlow.webp
new file mode 100644
index 000000000..0d85a668d
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/CDNFlow.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/CDNGeneral.webp b/docs/.vuepress/public/images/wpos-plugin/CDNGeneral.webp
new file mode 100644
index 000000000..4b0ce7c97
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/CDNGeneral.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/FAQAdviceReview.webp b/docs/.vuepress/public/images/wpos-plugin/FAQAdviceReview.webp
new file mode 100644
index 000000000..b2880bc19
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/FAQAdviceReview.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/FAQAdviceTable.webp b/docs/.vuepress/public/images/wpos-plugin/FAQAdviceTable.webp
new file mode 100644
index 000000000..102e3cfca
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/FAQAdviceTable.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/FAQIncMessage.webp b/docs/.vuepress/public/images/wpos-plugin/FAQIncMessage.webp
new file mode 100644
index 000000000..a15069925
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/FAQIncMessage.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/FAQIncompatible.webp b/docs/.vuepress/public/images/wpos-plugin/FAQIncompatible.webp
new file mode 100644
index 000000000..248d8fefe
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/FAQIncompatible.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/MobileDiag.webp b/docs/.vuepress/public/images/wpos-plugin/MobileDiag.webp
new file mode 100644
index 000000000..94e0bd604
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/MobileDiag.webp differ
diff --git a/docs/.vuepress/public/images/wpos-plugin/WPPlugins.webp b/docs/.vuepress/public/images/wpos-plugin/WPPlugins.webp
new file mode 100644
index 000000000..d716f7778
Binary files /dev/null and b/docs/.vuepress/public/images/wpos-plugin/WPPlugins.webp differ
diff --git a/docs/.vuepress/routes.json b/docs/.vuepress/routes.json
new file mode 100644
index 000000000..ad9b26fea
--- /dev/null
+++ b/docs/.vuepress/routes.json
@@ -0,0 +1,129 @@
+{
+    "/?compatiblity_matrix.html": "/cloudlinuxos/limits/#compatibility-matrix",
+    "/cloudlinux_os_components/#installation-5": "/cloudlinuxos/cloudlinux_os_components/#installation-and-update-5",
+    "/cloudlinux_os_components/#installation-and-update-2": "/cloudlinuxos/cloudlinux_os_components/#installation-and-update-1",
+    "/?cagefs_installation.html": "/cloudlinuxos/cloudlinux_os_components/#installation-and-update-1",
+    "/mysql_governor.html": "/cloudlinuxos/cloudlinux_os_components/#mysql-governor",
+    "?backing_up_mysql.html": "/cloudlinuxos/cloudlinux_os_components/#backing-up-mysql",
+    "/mod_lsapi_troubleshooting.html": "/cloudlinuxos/cloudlinux_os_components/#troubleshooting-3",
+    "/cloudlinux_installation/#registering-cloudlinux-server": "/cloudlinuxos/cloudlinux_installation/#license-activation",
+    "/apache_mod_lsapi.html":"/cloudlinuxos/cloudlinux_os_components/#apache-mod-lsapi-pro",
+    "/cagefs.html":"/cloudlinuxos/cloudlinux_os_components/#cagefs",
+    "/change_mysql_version.html":"/cloudlinuxos/cloudlinux_os_components/#change-mysql-version",
+    "/cldiag.html":"/cloudlinuxos/command-line_tools/#cldiag",
+    "/custom_php_ini_options.html":"/cloudlinuxos/cloudlinux_os_components/#custom-php-ini-options",
+    "?apache_mod_lsapi.html":"/cloudlinuxos/cloudlinux_os_components/#apache-mod-lsapi-pro",
+    "?custom_php_ini_options.html":"/cloudlinuxos/cloudlinux_os_components/#custom-php-ini-options",
+    "?hybrid_kernel.html":"/cloudlinuxos/cloudlinux_os_kernel/#hybrid-kernels",
+    "?installation.html":"/cloudlinuxos/cloudlinux_installation/",
+    "?link_traversal_protection.html":"/cloudlinuxos/cloudlinux_os_kernel/#securelinks-and-link-traversal-protection",
+    "?lve_limits_with_packages.html":"/cloudlinuxos/lve_manager/#packages",
+    "?lve_pam_module.html":"/cloudlinuxos/cloudlinux_os_components/#lve-pam-module",
+    "?php_selector_installation.html":"/cloudlinuxos/cloudlinux_os_components/#installation-and-update-3",
+    "?virtuozzo_and_openvz.html":"/cloudlinuxos/cloudlinux_installation/#virtuozzo-and-openvz",
+    "/installation-wizard.html":"/cloudlinuxos/lve_manager/#installation-wizard",
+    "/lve-limits-validation.html":"/cloudlinuxos/limits/#limits-validation",
+    "/mysql_governor_installation.html":"/cloudlinuxos/cloudlinux_os_components/#installation-and-update-2",
+    "/node_js_selector.html":"/cloudlinuxos/cloudlinux_os_components/#node-js-selector",
+    "/php_selector.html":"/cloudlinuxos/cloudlinux_os_components/#php-selector",
+    "/php_selector_installation.html":"/cloudlinuxos/cloudlinux_os_components/#installation-and-update-3",
+    "/python_and_ruby_selector.html":"/cloudlinuxos/cloudlinux_os_components/#python-selector",
+    "/reseller_limits.html":"/cloudlinuxos/limits/#reseller-limits",
+    "/cloudlinux-os-plus/#x-ray-autotracing":"/cloudlinuxos/shared-pro/#x-ray-autotracing",
+    "/cloudlinux_installation/#activation":"/cloudlinuxos/cloudlinux_installation/#license-activation",
+    "/cloudlinux_installation/#converting-existing-servers":"/cloudlinuxos/cloudlinux_installation/#converting-existing-servers",
+    "/cloudlinux_installation/#known-restrictions-and-issues":"/cloudlinuxos/cloudlinux_installation/#known-restrictions-and-issues",
+    "/cloudlinux_installation/#uninstalling":"/cloudlinuxos/cloudlinux_installation/#uninstalling",
+    "/cloudlinux_os_components/#customize-lve-stats2-notifications":"/cloudlinuxos/cloudlinux_os_components/#customize-lve-stats2-notifications",
+    "/cloudlinux_os_components/#installation-enabling-and-disabling":"/cloudlinuxos/command-line_tools/#cagefs",
+    "/cloudlinux_os_components/#php-selector":"/cloudlinuxos/cloudlinux_os_components/#php-selector",
+    "/cloudlinux_os_components/#node-js-selector":"/cloudlinuxos/cloudlinux_os_components/#node-js-selector",
+    "/lve_manager/#node-js-selector-2":"/cloudlinuxos/lve_manager/#node-js-selector",
+    "/cloudlinux-os-plus/#faq-2":"/cloudlinuxos/shared-pro/#faq-2",
+    "/cloudlinux-os-plus/#installation-2":"/cloudlinuxos/shared-pro/#installation-1",
+    "/cloudlinux-os-plus/#i-started-a-tracing-task-and-made-requests-to-url-but-did-not-see-any-results-in-the-ui-what-should-i-do":"/cloudlinuxos/shared-pro/#i-started-a-tracing-task-and-made-requests-to-url-but-did-not-see-any-results-in-the-ui-what-should-i-do",
+    "/control_panel_integration/#mysql-governor":"/cloudlinuxos/control_panel_integration/#mysql-governor",
+    "/control_panel_integration/#the-list-of-the-integration-scripts":"/cloudlinuxos/control_panel_integration/#the-list-of-the-integration-scripts",
+    "/ffmpeg":"/cloudlinuxos/cloudlinux_os_components/#ffmpeg",
+    "/limits/#limits-validation":"/cloudlinuxos/limits/#limits-validation",
+    "/php_selector/#litespeed-support":"/cloudlinuxos/cloudlinux_os_components/#litespeed-support",
+    "/python_selector":"/cloudlinuxos/cloudlinux_os_components/#python-selector",
+    "/python_selector/#installation":"/cloudlinuxos/cloudlinux_os_components/#installation-1",
+    "/user-docs/user-docs-shared-cloudlinux/#acceleratewp":"/user-docs/user-docs-shared-pro-cloudlinux/#acceleratewp",
+    "/cloudlinux-os-plus":"/cloudlinuxos/shared-pro/",
+    "/cloudlinuxos": "/cloudlinuxos/cloudlinux_installation/#installation",
+    "/shared": "/cloudlinuxos/",
+    "/shared-pro/accelerate-wp/#set-upgrade-url-for-cdn": "/cloudlinuxos/shared-pro/#set-upgrade-url-for-cdn",
+    "/shared-pro/": "/cloudlinuxos/shared-pro/",
+    "/cloudlinuxos-pro/introduction/":"/cloudlinuxos/shared-pro/#introduction",
+    "/shared-pro/accelerate-wp": "/cloudlinuxos/shared-pro/#acceleratewp",
+    "/cloudlinuxos/shared-pro/accelerate-wp/": "/cloudlinuxos/shared-pro/#acceleratewp",
+    "/solo/introduction/":"/introduction/solo/",
+    "/solo/activation/":"/introduction/solo/#license-activation",
+    "/solo/faq/":"/introduction/solo/#faq",
+    "/admin/description/":"/introduction/admin/",
+    "/admin/installation/":"/introduction/admin/#licensing",
+    "/admin/components/":"/introduction/admin/#components",
+    "/admin/faq/":"/introduction/admin/#faq",
+    "/introduction/":"/introduction/cloudlinux-os-editions/",
+    "/introduction/#cloudlinux-os-life-cycle":"/introduction/cloudlinux-os-editions/#cloudlinux-os-life-cycle",
+    "/introduction/#cloudlinux-9":"/cloudlinuxos/cloudlinux_installation/#requirements",
+    "/cloudlinuxos/apache2nginx/":"/cloudlinuxos/max_webserver/",
+    "/shared-pro/x-ray":"/cloudlinuxos/shared-pro/#x-ray",
+    "/cloudlinuxos/alt-ea_packages/#alt-php": "https://docs.tuxcare.com/els-for-languages/php/",
+    "/cloudlinuxos/alt-ea_packages/#about-alt-php": "https://docs.tuxcare.com/els-for-languages/php/#about-alt-php",
+    "/cloudlinuxos/alt-ea_packages/#a-list-of-alt-php-versions-that-we-support-for-different-operating-systems": "https://docs.tuxcare.com/els-for-languages/php/#supported-os-and-php-versions",
+    "/cloudlinuxos/alt-ea_packages/#_1-cloudlinux": "https://docs.tuxcare.com/els-for-languages/php/#supported-os-and-php-versions",
+    "/cloudlinuxos/alt-ea_packages/#_2-debian": "https://docs.tuxcare.com/els-for-languages/php/#supported-os-and-php-versions",
+    "/cloudlinuxos/alt-ea_packages/#_3-ubuntu": "https://docs.tuxcare.com/els-for-languages/php/#supported-os-and-php-versions",
+    "/cloudlinuxos/alt-ea_packages/#bundled-php-extensions": "https://docs.tuxcare.com/els-for-languages/php/#php-extensions-list",
+    "/cloudlinuxos/alt-ea_packages/#list-of-extensions-supported-by-the-alt-ea-team-for-each-version-of-php": "https://docs.tuxcare.com/els-for-languages/php/#php-extensions-list",
+    "/cloudlinuxos/alt-ea_packages/#php-5-2-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_5.2_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-5-3-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_5.3_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-5-4-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_5.4_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-5-5-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_5.5_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-5-6-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_5.6_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-7-0-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_7.0_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-7-1-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_7.1_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-7-2-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_7.2_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-7-3-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_7.3_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-7-4-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_7.4_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-8-0-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_8.0_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-8-1-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_8.1_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-8-2-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_8.2_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-8-3-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_8.3_extensions",
+    "/cloudlinuxos/alt-ea_packages/#php-8-4-extensions": "https://docs.tuxcare.com/els-for-languages/php/#PHP_8.4_extensions",
+    "/cloudlinuxos/alt-ea_packages/#how-do-i-install-alt-php": "https://docs.tuxcare.com/els-for-languages/php/#installation-instructions-for-linux",
+    "/cloudlinuxos/alt-ea_packages/#what-commands-should-i-use-to-install-alt-php-on-cloudlinux-and-ubuntu": "https://docs.tuxcare.com/els-for-languages/php/#installation-instructions-for-linux",
+    "/cloudlinuxos/alt-ea_packages/#for-centos-rhel-based-systems-using-yum": "https://docs.tuxcare.com/els-for-languages/php/#installation-instructions-for-linux",
+    "/cloudlinuxos/alt-ea_packages/#for-debian-based-systems-using-apt-get": "https://docs.tuxcare.com/els-for-languages/php/#installation-instructions-for-linux",
+    "/cloudlinuxos/alt-ea_packages/#how-can-i-check-which-versions-of-php-are-already-installed": "https://docs.tuxcare.com/els-for-languages/php/#installation-instructions-for-linux",
+    "/cloudlinuxos/alt-ea_packages/#for-centos-rhel": "https://docs.tuxcare.com/els-for-languages/php/#installation-instructions-for-linux",
+    "/cloudlinuxos/alt-ea_packages/#for-ubuntu-debian": "https://docs.tuxcare.com/els-for-languages/php/#installation-instructions-for-linux",
+    "/cloudlinuxos/alt-ea_packages/#how-do-i-find-out-what-dependencies-alt-packages-have": "https://docs.tuxcare.com/els-for-languages/php/#Find_out_what_dependencies_alt-php_packages_have",
+    "/cloudlinuxos/alt-ea_packages/#for-centos-rhel-based-systems-using-yum-1": "https://docs.tuxcare.com/els-for-languages/php/#Find_out_what_dependencies_alt-php_packages_have",
+    "/cloudlinuxos/alt-ea_packages/#for-debian-based-systems-using-apt": "https://docs.tuxcare.com/els-for-languages/php/#Find_out_what_dependencies_alt-php_packages_have",
+    "/cloudlinuxos/alt-ea_packages/#how-do-i-check-the-current-version-of-alt-php-packages": "https://docs.tuxcare.com/els-for-languages/php/#Check_current_version_of_alt-php_packages",
+    "/cloudlinuxos/alt-ea_packages/#for-centos-rhel-using-yum": "https://docs.tuxcare.com/els-for-languages/php/#Check_current_version_of_alt-php_packages",
+    "/cloudlinuxos/alt-ea_packages/#for-ubuntu-using-apt": "https://docs.tuxcare.com/els-for-languages/php/#Check_current_version_of_alt-php_packages",
+    "/cloudlinuxos/alt-ea_packages/#how-do-i-update-alt-php": "https://docs.tuxcare.com/els-for-languages/php/#Update_alt-php",
+    "/cloudlinuxos/alt-ea_packages/#for-centos-rhel-based-systems-using-yum-2": "https://docs.tuxcare.com/els-for-languages/php/#Update_alt-php",
+    "/cloudlinuxos/alt-ea_packages/#for-debian-based-systems-using-apt-1": "https://docs.tuxcare.com/els-for-languages/php/#Update_alt-php",
+    "/cloudlinuxos/alt-ea_packages/#what-commands-should-i-use-to-search-for-packages-in-repositories": "https://docs.tuxcare.com/els-for-languages/php/#Search_for_packages_in_repositories",
+    "/cloudlinuxos/alt-ea_packages/#for-centos-rhel-using-yum-1": "https://docs.tuxcare.com/els-for-languages/php/#Search_for_packages_in_repositories",
+    "/cloudlinuxos/alt-ea_packages/#for-ubuntu-using-apt-1": "https://docs.tuxcare.com/els-for-languages/php/#Search_for_packages_in_repositories",
+    "/cloudlinuxos/alt-ea_packages/#how-to-use-alt-php": "https://docs.tuxcare.com/els-for-languages/php/#useful-commands-and-usage-of-php-els",
+    "/cloudlinuxos/alt-ea_packages/#the-bin-files": "https://docs.tuxcare.com/els-for-languages/php/#The_bin_files",
+    "/cloudlinuxos/alt-ea_packages/#modules-and-pecl-extensions": "https://docs.tuxcare.com/els-for-languages/php/#Modules_and_pecl_extensions",
+    "/cloudlinuxos/alt-ea_packages/#running-code-on-a-specific-version-through-the-cli": "https://docs.tuxcare.com/els-for-languages/php/#Running_code_on_a_specific_version_through_the_CLI",
+    "/cloudlinuxos/alt-ea_packages/#location-of-ini-config-files": "https://docs.tuxcare.com/els-for-languages/php/#Location_of_ini_config_files",
+    "/cloudlinuxos/alt-ea_packages/#location-of-default-ini": "https://docs.tuxcare.com/els-for-languages/php/#Location_of_default.ini",
+    "/cloudlinuxos/alt-ea_packages/#listing-enabled-modules-on-a-specific-version": "https://docs.tuxcare.com/els-for-languages/php/#Listing_enabled_modules_on_a_specific_version",
+    "/cloudlinuxos/alt-ea_packages/#enabling-a-module-through-the-cli": "https://docs.tuxcare.com/els-for-languages/php/#Enabling_a_module",
+    "/cloudlinuxos/alt-ea_packages/#additional-configurations-optional": "https://docs.tuxcare.com/els-for-languages/php/#Enabling_a_module",
+    "/cloudlinuxos/alt-ea_packages/#enabling-a-module-through-default-ini": "https://docs.tuxcare.com/els-for-languages/php/#Enabling_a_module",
+    "/cloudlinuxos/alt-ea_packages/#enabling-a-module-through-the-configuration-files": "https://docs.tuxcare.com/els-for-languages/php/#Enabling_a_module",
+    "/cloudlinuxos/alt-ea_packages/#alt-python": "https://docs.tuxcare.com/els-for-languages/python/",
+    "/cloudlinuxos/alt-ea_packages/#alt-php-python-ruby-nodejs-end-of-life": "/cloudlinuxos/alt-ea_packages/#alt-python-ruby-nodejs-end-of-life",
+    "/cloudlinuxos/alt-ea_packages/#alt-php-eol": "https://docs.tuxcare.com/els-for-languages/php/#End_Of_Life"
+}
diff --git a/docs/.vuepress/styles/theme.styl b/docs/.vuepress/styles/theme.styl
index 6a3b66c64..a05bb2076 100644
--- a/docs/.vuepress/styles/theme.styl
+++ b/docs/.vuepress/styles/theme.styl
@@ -73,6 +73,7 @@ p a code
   color $accentColor
 
 
+
 kbd
   background #eee
   border solid 0.15rem #ddd
@@ -134,13 +135,14 @@ h3
 h4
   font-size 1.05rem
 
+h5
+  font-size 1.00rem
+
 a.header-anchor
   font-size 0.85em
   float left
-  margin-left -0.87em
   padding-right 0.23em
   margin-top 0.125em
-  opacity 0
 
   &:hover
     text-decoration none
@@ -196,6 +198,53 @@ th, td
   border-radius 6px
   font-size 12px
 
+:not(.language-text) > code
+  color: #4b6c89
+  padding: 0.25rem 0.5rem
+  margin: 0
+  font-size: .85em
+  background-color: rgba(27,31,35,.05)
+  border-radius: 3px
+
+badge[type="warning"]
+  display: inline-block
+  padding: 0.2em 0.5em;
+  border-radius: 3px;
+  font-weight: bold;
+  background-color: #FFD42A;
+  color: black;
+  font-size: 12px;
+  margin-left: 0.5em;
+
+  &:before
+    content: attr(text);
+
+badge[type="info"]
+  display: inline-block
+  padding: 0.2em 0.5em;
+  border-radius: 3px;
+  font-weight: bold;
+  background-color: #48AE41;
+  color: white;
+  font-size: 12px;
+  margin-left: 0.5em;
+
+  &:before
+    content: attr(text);
+
+badge[type="danger"]
+  display: inline-block
+  padding: 0.2em 0.5em;
+  border-radius: 3px;
+  font-weight: bold;
+  background-color: #CA2029;
+  color: white;
+  font-size: 12px;
+  margin-left: 0.5em;
+
+  &:before
+    content: attr(text);
+
 @media (max-width: $mobileBreakpoint)
   .content:not(.custom)
     width 100%
diff --git a/docs/.vuepress/styles/wrapper.styl b/docs/.vuepress/styles/wrapper.styl
index 123592393..1bacbcb25 100644
--- a/docs/.vuepress/styles/wrapper.styl
+++ b/docs/.vuepress/styles/wrapper.styl
@@ -1,4 +1,5 @@
 $wrapper
   max-width $contentWidth
   margin 0 3rem
-
+  overflow-x hidden
+  white-space normal
diff --git a/docs/.vuepress/theme/cards/DocsCard.vue b/docs/.vuepress/theme/cards/DocsCard.vue
index 17f0ddaf9..90501724a 100644
--- a/docs/.vuepress/theme/cards/DocsCard.vue
+++ b/docs/.vuepress/theme/cards/DocsCard.vue
@@ -8,7 +8,7 @@
       <p v-if="card.description" class="docs-card-container__main-paragraph">{{ card.description }}</p>
     </div>
     <div class="docs-card-container__footer">
-      <button @click="goTo()" class="docs-card-container__footer-btn">View tutorial</button>
+      <button @click="goTo()" class="docs-card-container__footer-btn">View Documentation</button>
     </div>
   </div>
 </template>
@@ -91,4 +91,4 @@ const goTo = () => router.push(props.card?.link)
     &__footer
       margin-bottom 0
       padding-top 0
-</style>
\ No newline at end of file
+</style>
diff --git a/docs/.vuepress/theme/components/Breadcrumb.vue b/docs/.vuepress/theme/components/Breadcrumb.vue
index 6447a3dba..331f0d64d 100644
--- a/docs/.vuepress/theme/components/Breadcrumb.vue
+++ b/docs/.vuepress/theme/components/Breadcrumb.vue
@@ -1,24 +1,55 @@
 <template>
   <div class="breadcrumb-wrapper">
-      <span class="breadcrumb-title">{{ siteTitle }}:</span>
-    <router-link class="breadcrumb" v-for="crumb in breadCrumbs" :key="crumb.path" :to="crumb.path">
+    <router-link
+      v-for="(crumb, index) in breadCrumbs"
+      :key="crumb.path"
+      class="breadcrumb"
+      :to="crumb.path"
+    >
       {{ crumb.title }}
     </router-link>
   </div>
 </template>
 
 <script setup>
-import {computed, inject} from "vue";
-import {usePageData, useSiteData} from "@vuepress/client";
+import { computed } from "vue";
+import { usePageData, useSiteData } from "@vuepress/client";
+
+const page = usePageData();
+const site = useSiteData();
+
+const siteTitle = computed(() => site.value.title);
+
+const titleMap = {
+  '/els-for-languages/': 'ELS for Languages',
+  '/introduction/': 'Introduction to Cloudlinux OS',
+  '/cloudlinuxos/': 'CloudLinux OS',
+  '/cln/': 'CLN - CloudLinux Licenses',
+  '/ubuntu/': 'CloudLinux Subsystem For Ubuntu',
+  '/user-docs/': 'End-user Documents',
+};
 
-const page = usePageData()
-const site = useSiteData()
-const { locales: {siteTitle}} = inject("themeConfig")
 const breadCrumbs = computed(() => {
-    const crumbs = [];
-    if (page.value.path !== '/') {
-      crumbs.push({path: page.value.path, title: page.value.title});
+  const segments = page.value.path.split("/").filter(Boolean);
+  const crumbs = [{ path: "/", title: "Documentation" }];
+  let cumulativePath = "";
+
+  for (let i = 0; i < segments.length; i++) {
+    cumulativePath += `/${segments[i]}`;
+    const isLast = i === segments.length - 1;
+    const fullPath = cumulativePath.endsWith(".html") ? cumulativePath : `${cumulativePath}/`;
+
+    let title;
+
+    if (isLast) {
+      title = page.value.title;
+    } else {
+      title = titleMap[fullPath] || fullPath;
     }
+
+    crumbs.push({ path: fullPath, title });
+  }
+
   return crumbs;
 });
 </script>
@@ -28,17 +59,22 @@ const breadCrumbs = computed(() => {
 
 .breadcrumb
   color $breadcrumbColor
+  text-decoration none
 
-  &::after
+  &:not(:last-child)::after
     content " > "
     font-family inherit
     font-size inherit
+    color $breadcrumbColor
+
+  &:not(:last-child)
+    cursor pointer
+
+    &:hover
+      color #1994f9
 
   &:last-child
     cursor default
+    color $breadcrumbColor
 
-.breadcrumb-title
-  color $breadcrumbColor
-  font-weight 600
-  margin-right 2px
 </style>
diff --git a/docs/.vuepress/theme/drawer/Drawer.vue b/docs/.vuepress/theme/drawer/Drawer.vue
index df25a6650..2db1d2f76 100644
--- a/docs/.vuepress/theme/drawer/Drawer.vue
+++ b/docs/.vuepress/theme/drawer/Drawer.vue
@@ -11,19 +11,15 @@
           <p @click="onCloseDrawer" class="drawer-cross__text">close</p>
         </div>
       </div>
-      <DrawerTabs v-model="selectedTabIndex" :data="tabs"/>
       <main>
-       <div class="drawer-main">
-         <div class="drawer-main__wrapper">
-           <div class="drawer-main__breadcrumb">
-             <p v-if="drawerArticleResult.length" class="drawer-main__breadcrumb__text">Home
-               <img :src="withBase('/arrows/arrow-right-breadcrumb.svg')" alt="breadcrumb icon"/>
-               Documentation
-             </p>
-           </div>
-           <DrawerSearchResult :modelValue="modelValue" :data="drawerArticleResult"/>
-         </div>
-       </div>
+        <div class="drawer-main">
+          <div class="drawer-main__wrapper">
+            <div class="drawer-main__breadcrumb">
+              <!-- Optional breadcrumb can stay here -->
+            </div>
+            <DrawerSearchResult :modelValue="modelValue" :data="drawerArticleResult"/>
+          </div>
+        </div>
         <Footer v-if="isOpenDrawer && isMobileWidth" class="drawer-footer__mobile"/>
       </main>
     </div>
@@ -32,10 +28,9 @@
 </template>
 
 <script setup>
-import {withBase} from "@vuepress/client";
+import { withBase } from "@vuepress/client";
 import Footer from "../footer/Footer.vue";
-import {computed, ref, watch} from "vue";
-import DrawerTabs from "./DrawerTabs.vue";
+import { computed, ref, watch } from "vue";
 import DrawerSearchResult from "./DrawerSearchResult.vue";
 
 const props = defineProps({
@@ -44,7 +39,7 @@ const props = defineProps({
     required: true,
     default: false
   },
-  isMobileWidth:{
+  isMobileWidth: {
     type: Boolean,
     required: true,
     default: false
@@ -59,39 +54,21 @@ const props = defineProps({
     required: true,
     default: () => []
   }
-})
-
-
-const emit = defineEmits(['closeDrawer', 'update:modelValue'])
-
-const selectedTabIndex = ref(0);
-
-const tabs = computed(() => {
-    const uniqueTitles = props.homeLayoutSearchResult.reduce((unique, result) => {
-        const title = result.hierarchy?.lvl0;
-        unique[title] = unique[title] || { title, numberResults: 0 };
-        unique[title].numberResults++;
-        return unique;
-    }, {});
-    return Object.values(uniqueTitles);
 });
 
+const emit = defineEmits(['closeDrawer', 'update:modelValue']);
+
 const drawerArticleResult = computed(() => {
-  if (selectedTabIndex.value === -1) {
-    return props.homeLayoutSearchResult || [];
-  }
-  const selectedTab = tabs.value[selectedTabIndex.value];
-  return props.homeLayoutSearchResult.filter(result => result.hierarchy.lvl0 === selectedTab?.title);
-})
+  return props.homeLayoutSearchResult; // Now directly returning all results since there are no tabs
+});
 
 const onCloseDrawer = () => {
-  emit('closeDrawer')
-  selectedTabIndex.value = 0
+  emit('closeDrawer');
 }
 
 watch(() => props.isOpenDrawer, () => {
-  document.body.classList.toggle('disable-scroll', props.isOpenDrawer)
-})
+  document.body.classList.toggle('disable-scroll', props.isOpenDrawer);
+});
 </script>
 
 <style lang="stylus">
diff --git a/docs/.vuepress/theme/drawer/DrawerSearch.vue b/docs/.vuepress/theme/drawer/DrawerSearch.vue
index 0a4eccab2..93b512266 100644
--- a/docs/.vuepress/theme/drawer/DrawerSearch.vue
+++ b/docs/.vuepress/theme/drawer/DrawerSearch.vue
@@ -1,23 +1,27 @@
 <template>
-  <form id="search-form" class="drawer-header__input">
-    <input :value="modelValue"
+  <form id="search-form" class="drawer-header__input" @submit.prevent="performSearch">
+    <input type="text" 
+           :value="modelValue"
            @input="$emit('update:modelValue', $event.target.value)"
            id="algolia-search-input"
            :placeholder="placeholder"
            :class="activeSearchClass"
-           @keypress.enter.prevent="$emit('openDrawer')"
+           maxlength="100"
     />
     <div :class="activeSearchIconClass">
-      <img @click="$emit('openDrawer')" alt="search icon" :src="withBase(activeSearchIcon)"/>
+      <img v-if="!loading" @click="performSearch" alt="search icon" :src="withBase(activeSearchIcon)"/>
+      <div v-if="loading" class="spinner"></div>
     </div>
   </form>
 </template>
 
 <script setup>
 import {usePageFrontmatter, withBase} from "@vuepress/client";
-import {computed, inject, watch} from "vue";
+import {computed, inject, ref, watch} from "vue";
 
+const { MAX_HITS_PER_PAGE } = inject('themeConfig')
 const {headerDefaultSearchIcon, headerSearchIcon, headerSearchPlaceholder} = inject('themeConfig')
+
 const props = defineProps({
   options: {
     type: [Object, Array],
@@ -35,9 +39,10 @@ const props = defineProps({
     type: Boolean,
   }
 });
-const emit = defineEmits(["openDrawer", 'update:modelValue', 'result'])
 
+const emit = defineEmits(["openDrawer", 'update:modelValue', 'result'])
 const frontmatter = usePageFrontmatter()
+
 const isGlobalLayout = computed(() => {
   return frontmatter.value.layout === 'HomeLayout'
 })
@@ -59,40 +64,111 @@ const placeholderDesktop = computed(() => {
 })
 
 const placeholder = computed(() => {
-  return props.isMobileWidth ? 'Search accross all Imunify Security support' : placeholderDesktop.value
+  return props.isMobileWidth ? 'Search accross all CloudLinux Docs' : placeholderDesktop.value
 })
 
-
-const initialize = async (userOptions) => {
-  if( typeof window === 'undefined' ) return
-  const [docsearchModule] = await Promise.all([
-    import(/* webpackChunkName: "docsearch" */ "docsearch.js/dist/cdn/docsearch.min.js"),
-    import(/* webpackChunkName: "docsearch" */ "docsearch.js/dist/cdn/docsearch.min.css"),
-  ]);
-  const docsearch = docsearchModule.default;
-  docsearch(
-      Object.assign({}, userOptions, {
-        inputSelector: "#algolia-search-input",
-        handleSelected: () => {
-          emit('openDrawer')
-        },
-        transformData: (hits) => {
-          emit('result', hits)
+function parseDocs(api_response) {
+  return api_response.cloudlinux_docs.map((doc) => {
+    const titleParts = doc.title.split("->").map((part) => part.trim());
+
+    const hierarchy = {
+      lvl0: titleParts[0] || null,
+      lvl1: titleParts[1] || null,
+      lvl2: titleParts[2] || null,
+      lvl3: titleParts[3] || null,
+      lvl4: titleParts[4] || null,
+      lvl5: null,
+      lvl6: null,
+    };
+
+    const anchor = doc.url.split("#")[1] || "";
+
+    const objectID = doc.id;
+
+    return {
+      anchor,
+      content: null,
+      hierarchy,
+      url: doc.url,
+      title: doc.title,
+      preview: doc.preview,
+      category: doc.category,
+      section: doc.section,
+      objectID,
+      _highlightResult: {
+        hierarchy: {
+          lvl0: {
+            value: hierarchy.lvl0 || "",
+            matchLevel: "none",
+            matchedWords: [],
+          },
+          lvl1: {
+            value: hierarchy.lvl1 || "",
+            matchLevel: "full",
+            fullyHighlighted: false,
+            matchedWords: [hierarchy.lvl1?.toLowerCase()],
+          },
         },
-      })
-  );
-};
-watch(
-    () => props.options,
-    async (newValue) => {
-     await initialize(newValue);
-    }, {
-      immediate: true
+        hierarchy_camel: [
+          {
+            lvl0: {
+              value: hierarchy.lvl0 || "",
+              matchLevel: "none",
+              matchedWords: [],
+            },
+            lvl1: {
+              value: `<span class="algolia-docsearch-suggestion--highlight">${hierarchy.lvl1 || ""}</span>`,
+              matchLevel: "full",
+              fullyHighlighted: false,
+              matchedWords: [hierarchy.lvl1?.toLowerCase()],
+            },
+          },
+        ],
+      },
+    };
+  });
+}
+
+async function queryGlobalSearch(query, n_results=10) {
+  const baseUrl = 'https://global-search.cl-edu.com/search';
+  let urlEncodedQuery = encodeURIComponent(query);
+  let url = `${baseUrl}?query=${urlEncodedQuery}&collections=cloudlinux_docs&n_results=${n_results}&source=cloudlinux_docs`;
+  try {
+    const response = await fetch(url);
+    if (!response.ok) {
+      throw new Error(`HTTP error! status: ${response.status}`);
     }
+    const data = await response.json();
+    return data;
+  } catch (error) {
+    console.error('Error querying global search:', error);
+    return null;
+  }
+}
+
+const loading = ref(false); // Reactive variable for loading state
+
+const performSearch = async () => {
+  loading.value = true; // Set loading to true when search starts
+  const data = await queryGlobalSearch(props.modelValue, MAX_HITS_PER_PAGE);
+  loading.value = false; // Set loading to false when search finishes
+  if (data) {
+    const hits = parseDocs(data);
+    emit('result', hits);
+    emit('openDrawer');
+  }
+}
+
+watch(
+  () => props.options,
+  async (newValue) => {
+    // Initialize if needed or any other dependent setup
+  }, {
+    immediate: true
+  }
 );
 </script>
 
-
 <style lang="stylus">
 @import '../../styles/config.styl'
 .algolia-autocomplete
@@ -134,7 +210,6 @@ watch(
   justify-content center
   align-content center
 
-
 @media (max-width: $mobileBreakpoint)
   .drawer-header__search
     width 100%
@@ -153,4 +228,18 @@ watch(
     width 75%
   .header-layout__search-title
     text-align center
-</style>
+
+.spinner
+  border 4px solid rgba(0, 0, 0, 0.1)
+  border-top 4px solid #3498db
+  border-radius 50%
+  width 20px
+  height 20px
+  animation spin 1s linear infinite
+
+@keyframes spin
+  0%
+    transform rotate(0deg)
+  100%
+    transform rotate(360deg)
+</style>
\ No newline at end of file
diff --git a/docs/.vuepress/theme/drawer/DrawerSearchResult.vue b/docs/.vuepress/theme/drawer/DrawerSearchResult.vue
index a6d55f25f..e8a5ca9c5 100644
--- a/docs/.vuepress/theme/drawer/DrawerSearchResult.vue
+++ b/docs/.vuepress/theme/drawer/DrawerSearchResult.vue
@@ -1,168 +1,202 @@
 <template>
   <section v-if="data.length" class="drawer-main__search-results">
-    <template v-for="(i) in visibleResults" :key="i">
-      <div class="search-result" @click="gotTo(i?.url || '/')">
-        <div class="search-result__title" v-html="getTitleForArticle(i._highlightResult?.hierarchy)"/>
-        <div class="search-result__breadcrumb" v-html="getBreadcrumbsForArticle(i._highlightResult?.hierarchy)"/>
-        <div class="search-result__text" v-html="i._highlightResult?.content?.value"></div>
+    <template v-for="(item, index) in visibleResults" :key="item.objectID || index">
+      <div class="search-result" @click="gotTo(parseUrl(item.url))">
+        <a :href="item.url" class="search-result__title" v-html="highlightMatchingWords(getTitleForArticle(item.title), modelValue)"></a>
+        <div
+          class="search-result__breadcrumb"
+          v-html="highlightMatchingWords(getBreadcrumbsForArticle(item.title), modelValue)"
+        ></div>
+        <div
+          class="search-result__text"
+          v-html="highlightMatchingWords(formatPreviewMarkdown(item.preview), modelValue)"
+        ></div>
       </div>
     </template>
-  </section>
-  <div v-if="data.length">
-    <div v-if="countOfHiddenResults" class="hidden_results" @click="showAllHiddenResult">
-      <p class="hidden_results__text">Show all results({{ countOfHiddenResults }})</p>
-    </div>
-    <div v-else-if="!countOfHiddenResults && isShowAllResult" class="hidden_results" @click="collapseResults">
-      <p class="hidden_results__text">Collapse results</p>
+    <div v-if="countOfHiddenResults > 0" class="show-more" @click="showAllHiddenResult">
+      <p>Show {{ countOfHiddenResults }} more results</p>
     </div>
-  </div>
+  </section>
   <div v-else>
-    <p v-if="!modelValue.length" class="no_results">What are you searching for?</p>
-    <p v-else class="no_results">
-      Sorry! No results found for
-      <span v-if="modelValue">"{{ modelValue }}"</span>
-      😞<br/>Please try ask the community (link to the
-      <a class="no_results__link" href=" https://forum.cloudlinux.com/" target="_blank">https://forum.cloudlinux.com/</a>).
-    </p>
+    <p v-if="!modelValue.length" class="no_results">Please type your search query, then press Enter or click the search button.</p>
   </div>
 </template>
 
 <script setup>
-import {computed, inject, ref} from "vue";
+import { computed, inject, ref } from "vue";
+import { marked } from "marked";
+
+const renderer = new marked.Renderer();
+
+renderer.heading = function (text) {
+  if (typeof text !== "string") return "";
+  return `<strong>${text}</strong>`;
+};
+
+renderer.image = function () {
+  return "";
+};
+
+renderer.table = function () {
+  return "";
+}
+
+const formatPreviewMarkdown = (markdown) => {
+  let md = marked(markdown, { renderer });
+  md = md.replace(/<br>/g, ""); // Remove all <br> tags
+  return md;
+};
 
 const props = defineProps({
   data: {
     type: [Array, Object],
-    required: true
+    required: true,
   },
   modelValue: {
     type: String,
-    required: true
-  }
-})
-const { MAX_ALGOLIA_VISIBLE_RESULT, MAX_ALGOLIA_VISIBLE_ROWS } = inject('themeConfig')
+    required: true,
+  },
+});
+
+const { MAX_VISIBLE_RESULT } = inject("themeConfig");
 const isShowAllResult = ref(false);
 
 const gotTo = (url) => {
- window.location.href = url;
-}
+  const parsedCurrentUrl = new URL(window.location.href);
+  if (parsedCurrentUrl.pathname + parsedCurrentUrl.hash === url) {
+    window.location.reload();
+    return;
+  }
+  window.location.href = parsedCurrentUrl.origin + url;
+};
+
+const parseUrl = (url) => {
+  const parsed = new URL(url);
+  return parsed.pathname + parsed.hash;
+};
 
 const visibleResults = computed(() => {
-  if (isShowAllResult.value) {
-    return props.data;
-  }
-  return props.data?.slice(0, MAX_ALGOLIA_VISIBLE_RESULT);
-})
+  return isShowAllResult.value ? props.data : props.data?.slice(0, MAX_VISIBLE_RESULT);
+});
 
 const countOfHiddenResults = computed(() => {
   return props.data.length - visibleResults.value.length;
-})
+});
 
 const showAllHiddenResult = () => {
   isShowAllResult.value = true;
-}
+};
+
+const getTitleForArticle = (title) => {
+  let sliced = title.split("->").map((part) => part.trim());
+  return sliced.pop();
+};
+
+const getBreadcrumbsForArticle = (title) => {
+  let sliced = title.split("->").map((part) => part.trim());
+  sliced.pop();
+  return sliced.join(" > ");
+};
+
+// Function to highlight matching words
+const highlightMatchingWords = (text, query) => {
+  if (!query.trim()) return text; // If the query is empty, return the text as is
+
+  const regex = new RegExp(`(${query.split(/\s+/).join("|")})`, "gi");
+  return text.replace(regex, "<mark>$1</mark>");
+};
+</script>
 
-const collapseResults = () => {
-  isShowAllResult.value = false;
+<style lang="stylus">
+@import "../../styles/config.styl";
 
+.drawer-main__search-results {
+  display: grid;
+  grid-template-columns: repeat(3, 1fr); // Ensures exactly 3 columns on desktop
+  gap: 1.2rem;
+  padding: 0.5rem; // Padding around the results area
+  width: 80vw;
+  margin: 0 auto;
 }
 
-const getTitleForArticle = (obj) => {
-  for (const key in obj) {
-    if (obj[key].value !== null || obj[key].value !== undefined) {
-      return obj['lvl1']?.value || obj['lvl0']?.value
+.search-result {
+  padding: 1rem;
+  border: 1px solid $drawerSearchBorderColor;
+  border-radius: 10px; // More rounded corners
+  background: $searchResultBackgroundColor; // Added background color for better visibility
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); // Shadow for elevation
+  transition: box-shadow 0.3s ease, transform 0.3s ease;
+  cursor: pointer;
+  overflow: hidden;
+
+  &:hover {
+    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); // Increased shadow on hover
+    transform: translateY(-2px);
+    .search-result__title {
+      color: $mainColor;
+      text-decoration: underline;
     }
   }
-  return null;
-}
 
-const getBreadcrumbsForArticle = (obj) => {
-  return Object.values(obj).slice(2).filter(Boolean).map((content) => content.value).join(' > ')
+  &__title {
+    font-size: $drawerSearchResultTitleFontSize;
+    font-weight: $drawerSearchResultTitleWeight;
+    color: $drawerSearchResultTitleColor;
+    margin: 0;
+    line-height: 1.4; // Increased line height for better readability
+  }
+
+  &__text {
+    font-size: $drawerSearchResultTextFontSize;
+    line-height: $drawerSearchResultTextLineHeight;
+    color: $drawerSearchResultTextColor;
+    margin: 0.5rem 0; // Added margin for spacing
+    overflow: hidden;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: 5; // Limit preview text lines for coherence
+    -webkit-box-decoration-break: clone;
+    box-decoration-break: clone;
+  }
+
+  &__breadcrumb {
+    font-size: $drawerSearchResultBreadcrumbTextSize;
+    color: $drawerSearchResultBreadcrumbColor;
+    margin: 0;
+    line-height: 1.4;
+    margin-top: 0.5rem;
+  }
 }
 
-</script>
+.show-more {
+  text-align: center;
+  margin: 1rem 0;
+  cursor: pointer;
 
-<style lang="stylus">
-@import '../../styles/config.styl'
+  p {
+    color: $mainColor;
+    font-weight: bold;
+  }
+}
 
-.algolia-docsearch-suggestion--highlight
-  background $drawerHighlightTextBgColor !important
-  color $drawerHighlightTextColor !important
+.no_results {
+  font-size: 1.5625rem;
+  text-align: center;
+}
 
+@media (max-width: $mobileBreakpoint) {
+  .drawer-main__search-results {
+    grid-template-columns: 1fr; // Single column on mobile
+  }
 
-.drawer-main__search-results
-  display: grid;
-  grid-template-columns: repeat(2, 1fr);
-  column-gap: $drawerSearchColumnGap;
-  row-gap $drawerSearchRowGap
-
-.search-result
-  display flex
-  flex-direction column
-  align-items flex-start
-  justify-content flex-start
-  gap $drawerOneSearchResultGap
-  width fit-content
-  cursor pointer
-
-  &:hover
-    .search-result__title
-      color $mainColor
-      text-decoration underline
-
-  &__title
-    font-size $drawerSearchResultTitleFontSize
-    font-weight $drawerSearchResultTitleWeight
-    line-height $drawerSearchResultTitleLineHeight
-    color $drawerSearchResultTitleColor
-    margin 0
-    &:hover
-      color $mainColor
-      text-decoration underline
-
-
-  &__text
-    font-size $drawerSearchResultTextFontSize
-    line-height $drawerSearchResultTextLineHeight
-    color $drawerSearchResultTextColor
-    margin 0
-    overflow: hidden
-    display: -webkit-box
-    -webkit-box-orient: vertical
-    -webkit-line-clamp: v-bind(MAX_ALGOLIA_VISIBLE_ROWS)
-    -webkit-box-decoration-break: clone
-    box-decoration-break: clone
-
-  &__breadcrumb
-    font-size $drawerSearchResultBreadcrumbTextSize
-    line-height $drawerSearchResultBreadcrumbLineHeight
-    color $drawerSearchResultBreadcrumbColor
-    margin 0
-
-.hidden_results
-  width: $drawerHiddenResultWidth
-  background $drawerHiddenResultBgColor
-  display: flex;
-  align-items center
-  justify-content center
-  margin-top 3.5rem
-  cursor pointer
-
-  &__text
-    font-size $drawerHiddenResultFontSize
-    font-weight 500
-    line-height 1.019rem
-    color $drawerHiddenResultColor
-
-.no_results
-  font-size 1.5625rem
-  &__link
-    &:hover
-      text-decoration underline
-
-@media (max-width: $mobileBreakpoint)
-  .hidden_results
-    margin-top 2.5rem
-    margin-bottom 0
-    font-size 1.25rem
-</style>
\ No newline at end of file
+  .no_results {
+    font-size: 1.25rem;
+  }
+}
+
+@media (min-width: 768px) and (max-width: 1024px) {
+  .drawer-main__search-results {
+    grid-template-columns: repeat(2, 1fr); // 2 columns on tablets
+  }
+}
+</style>
diff --git a/docs/.vuepress/theme/header/HeaderLayout.vue b/docs/.vuepress/theme/header/HeaderLayout.vue
index f4f370169..df2c091d9 100644
--- a/docs/.vuepress/theme/header/HeaderLayout.vue
+++ b/docs/.vuepress/theme/header/HeaderLayout.vue
@@ -27,13 +27,13 @@
       >
         <img @click="openMobileAlgoliaDrawer" class="navbar-header__mobile-search" :src="withBase(headerDefaultSearchIcon)" alt="icon image"/>
         <HeaderProducts :isMobileWidth="isMobileWidth"/>
-        <a :href="submitRequestUrl" target="_blank" class="btn">
-          {{ submitRequestTitle }}
-        </a>
 
-        <a :href="tryFreeLink" target="_blank" class="btn btn-free">
-          {{ tryFreeTitle }}
-        </a>
+        <a v-for="item in locales.navbarLinks" 
+        :href="item.url"
+        target="_blank" 
+        :class="item.class" 
+        @click="onClick(item.event)">{{ item.text }}</a>
+
       </div>
     </div>
     <HeaderLayoutSearch
@@ -60,18 +60,14 @@ const props = defineProps({
   }
 })
 
-const {siteLogo, locales, defaultURL, tryFreeLink, submitRequestURL,headerDefaultSearchIcon} = inject('themeConfig');
+const {siteLogo,  defaultURL, locales, headerDefaultSearchIcon} = inject('themeConfig');
 const linksWrapMaxWidth = ref(null)
 const frontmatter = usePageFrontmatter()
 const localePath = useRouteLocale()
 const headerLayoutSearch = ref(null)
 
-const tryFreeTitle = computed(() => locales.tryFreeLink || 'Try Free')
-
 const openMobileAlgoliaDrawer = () => headerLayoutSearch?.value?.openDrawer()
 
-const submitRequestTitle = computed(() => locales.submitRequest || 'Submit support request')
-
 const isGlobalLayout = computed(() => frontmatter.value.layout === 'HomeLayout')
 
 const homeUrl = computed(() => {
@@ -80,7 +76,16 @@ const homeUrl = computed(() => {
   return defaultUrl.replace(/\/+/g, '/');
 })
 
-const submitRequestUrl = computed(() => submitRequestURL || "https://cloudlinux.zendesk.com/hc/en-us/requests/new")
+const onClick = (event) => {
+  if (event.type) {
+    switch (event.type) {
+        case 'event':
+          var event = new CustomEvent(event.name);
+          document.dispatchEvent(event);
+      }
+  }
+}
+
 </script>
 
 <style src="../../styles/theme.styl" lang="stylus"></style>
@@ -151,7 +156,7 @@ const submitRequestUrl = computed(() => submitRequestURL || "https://cloudlinux.
   cursor: pointer;
   font-weight 600
 
-.btn-free
+.btn-white
   background-color: white;
   color black
   font-size 0.9375rem
diff --git a/docs/.vuepress/theme/header/HeaderProducts.vue b/docs/.vuepress/theme/header/HeaderProducts.vue
index 48483fb46..f86bf62e8 100644
--- a/docs/.vuepress/theme/header/HeaderProducts.vue
+++ b/docs/.vuepress/theme/header/HeaderProducts.vue
@@ -1,30 +1,3 @@
-<template>
-  <div class="header-products-wrapper">
-    <div ref="menu" class="dropdown">
-     <teleport v-if="isMobileWidth" to="body">
-       <div v-if="openedMenu" class="dropdown-wrapper">
-         <p class="dropdown-content__paragraph" v-for="product in productsList" :key="product">
-           <a class="dropdown-content__link" href="#">{{ product }}</a>
-         </p>
-       </div>
-     </teleport>
-      <div v-if="openedMenu && !isMobileWidth" class="dropdown-wrapper">
-        <p class="dropdown-content__paragraph" v-for="product in productsList" :key="product">
-          <a class="dropdown-content__link" href="#">{{ product }}</a>
-        </p>
-      </div>
-      <div @click="openedMenu = !openedMenu" class="header-products-container">
-        <img class="header-products-container__img" alt="hamburger menu" :src="withBase('/global/hamburger-menu.svg')">
-        <p class="header-products-wrapper-paragraph">{{ productsTitle }}</p>
-        <img class="products-icon__default"
-             :class="{'products-icon__rotate': openedMenu}"
-             width="10" height="8"
-             :src="withBase(arrowDownIcon)"
-             alt="arrow down icon"/>
-      </div>
-    </div>
-  </div>
-</template>
 <script setup>
 import {withBase} from "@vuepress/client";
 import {inject, onMounted, onUnmounted, ref} from "vue";
@@ -33,7 +6,7 @@ defineProps({
     type: Boolean,
   },
 })
-const {productsTitle, arrowDownIcon, productsList} = inject('themeConfig');
+const {productsTitle, arrowDownIcon, productsList, productsURLs} = inject('themeConfig');
 
 const openedMenu = ref(false)
 const menu = ref(null)
@@ -50,7 +23,33 @@ onUnmounted(() => {
   document.removeEventListener('click', clickOutside)
 })
 </script>
-
+<template>
+  <div class="header-products-wrapper">
+    <div ref="menu" class="dropdown">
+     <teleport v-if="isMobileWidth" to="body">
+       <div v-if="openedMenu" class="dropdown-wrapper">
+         <p class="dropdown-content__paragraph" v-for="(product, index) in productsList" :key="product">
+           <a class="dropdown-content__link" :href="productsURLs[index]">{{ product }}</a>
+         </p>
+       </div>
+     </teleport>
+      <div v-if="openedMenu && !isMobileWidth" class="dropdown-wrapper">
+        <p class="dropdown-content__paragraph" v-for="(product, index) in productsList" :key="product">
+          <a class="dropdown-content__link" :href="productsURLs[index]">{{ product }}</a>
+        </p>
+      </div>
+      <div @click="openedMenu = !openedMenu" class="header-products-container">
+        <img class="header-products-container__img" alt="hamburger menu" :src="withBase('/global/hamburger-menu.svg')">
+        <p class="header-products-wrapper-paragraph">{{ productsTitle }}</p>
+        <img class="products-icon__default"
+             :class="{'products-icon__rotate': openedMenu}"
+             width="10" height="8"
+             :src="withBase(arrowDownIcon)"
+             alt="arrow down icon"/>
+      </div>
+    </div>
+  </div>
+</template>
 <style lang="stylus">
 @import '../../styles/config.styl'
 
diff --git a/docs/.vuepress/theme/layouts/NotFound.vue b/docs/.vuepress/theme/layouts/NotFound.vue
index 95637f4d9..40f0fb596 100644
--- a/docs/.vuepress/theme/layouts/NotFound.vue
+++ b/docs/.vuepress/theme/layouts/NotFound.vue
@@ -1,90 +1,347 @@
 <template>
-  <div class="theme-container">
-    Not found
+  <div class="custom-container">
+    <div class="not-found-content">
+      <div class="error-header">
+        <div class="error-code">404</div>
+        <h1>Page Not Found</h1>
+        <p class="error-message">Sorry, the page you are looking for does not exist.</p>
+        <button @click="goHome" class="primary-button">
+          <span class="button-icon">←</span> Back to Home
+        </button>
+      </div>
+      
+      <div class="documents-section">
+        <h2>Browse Our Documentation</h2>
+        <div class="documents-cards">
+          <div v-for="doc in docs" :key="doc.link" class="card">
+            <div class="card-content">
+              <h3>{{ doc.title }}</h3>
+              <p>{{ doc.description }}</p>
+            </div>
+            <div class="card-footer">
+              <button @click="navigateTo(doc.link)" class="card-button">
+                Read More <span class="button-arrow">→</span>
+              </button>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
   </div>
 </template>
 
 <script setup>
-import {useRoute, useRouter} from "vue-router";
-import {onMounted, ref} from "vue";
-import {pagesData} from "../../.temp/internal/pagesData.js";
-const route = useRoute()
-const router = useRouter()
-const allPages = ref([])
-
-const redirectList = [
-  {
-    from: "cloudlinux-os-plus/#get-started",
-    to: "shared-pro/accelerate-wp/#get-started"
-  },
-  {
-    from: "cloudlinux-os-plus",
-    to: "shared-pro"
-  }
-]
+import { useRoute, useRouter } from "vue-router";
+import { onMounted, ref } from "vue";
+import { pagesData } from "../../.temp/internal/pagesData.js";
+import documents from "../../config-client/documents";
+
+const route = useRoute();
+const router = useRouter();
+const docs = ref(documents);
 
-onMounted(()=>{
-  const fullPath = route.path + route.hash;
-  const regex = new RegExp(fullPath,'gi')
+const goHome = () => {
+  router.push("/");
+};
 
+const navigateTo = (link) => {
+  router.push(link);
+};
+
+const getRecursiveLevelPath = (child, rootPath) => {
   let haveSolution = false;
 
-  const getRecursiveLevelPath = (child, rootPath) => {
-    if (haveSolution) return;
+  if (haveSolution) return;
 
-    if(child.children?.length > 0) {
-      for (let h of child.children) {
-        const path = rootPath + "/" + h.link
+  if (child.children?.length > 0) {
+    for (let h of child.children) {
+      const path = rootPath + "/" + h.link;
 
-        if (path.search(regex) !== -1) {
-          router.push(path)
-          haveSolution = true
-          return;
-        }
+      if (path.search(route.path) !== -1) {
+        router.push(path);
+        haveSolution = true;
+        return;
+      }
 
-        if (child.children.length > 0) {
-          getRecursiveLevelPath(h, rootPath)
-        }
+      if (child.children.length > 0) {
+        getRecursiveLevelPath(h, rootPath);
       }
     }
   }
+};
 
-  const redirectionURL = async () => {
-    const values = Object?.values(pagesData);
+onMounted(async () => {
+  let foundMatch = false;
+  const values = Object?.values(pagesData);
 
-    for (let redirection of redirectList) {
-      if (fullPath.search(redirection.from) !== -1) {
-        const path = fullPath.replace(redirection.from, redirection.to);
+  for (let value of values) {
+    const res = await value();
+    let rootPath = res.path;
 
-        router.push(path);
-        return;
+    if (rootPath.at(-1) === "/") {
+      rootPath = rootPath.slice(0, -1);
+    }
+
+    if (res.headers?.length > 0) {
+      for (let h of res.headers) {
+        const path = rootPath + "/" + h.link;
+
+        if (path.search(route.path) !== -1) {
+          router.push(path);
+          foundMatch = true;
+          return;
+        }
+        getRecursiveLevelPath(h, rootPath);
       }
     }
+  }
+
+  if (route.fullPath.startsWith('/legacy')) {
+    const newPath = route.fullPath.replace('/legacy', '/cloudlinuxos');
+    window.location.href = newPath;
+    foundMatch = true;
+  } else if (route.fullPath.startsWith('/shared')) {
+    const newPath = route.fullPath.replace('/shared', '/cloudlinuxos');
+    router.push(newPath);
+    window.location.href = newPath;
+    foundMatch = true;
+  }
+  
+  // If no match is found, update the URL to show just 404.html
+  if (!foundMatch) {
+    // Get the base URL (protocol + hostname + port)
+    const baseUrl = window.location.origin;
+    
+    // Determine if there's a base path in the Vue application
+    // This assumes your Vue router base is available - if not, you might need another approach
+    const basePath = router.options.base || '/';
+    
+    // Create the complete 404.html URL
+    const new404Url = baseUrl + (basePath.endsWith('/') ? basePath : basePath + '/') + '404.html';
+    
+    // Use history.replaceState to update the URL without navigation
+    window.history.replaceState(
+      { ...history.state },
+      '404 - Page Not Found',
+      new404Url
+    );
+  }
+});
+</script>
 
-    for (let value of values) {
-      const res = await value();
+<style>
+:root {
+  --primary-color: #3273dc;
+  --primary-hover: #2366d1;
+  --secondary-color: #f5f5f5;
+  --text-color: #363636;
+  --text-light: #676767;
+  --border-color: #e1e1e1;
+  --border-radius: 8px;
+  --shadow: 0 2px 15px rgba(0, 0, 0, 0.08);
+  --transition: all 0.3s ease;
+}
 
-      let rootPath = res.path;
+.custom-container {
+  position: relative;
+  width: 100%;
+  min-height: 100vh;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: column;
+  padding: 40px 20px;
+  box-sizing: border-box;
+  background-color: #fafafa;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
+    Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
+}
 
-      if (rootPath.at(-1) === "/")
-        rootPath = rootPath.slice(0, -1);
+.not-found-content {
+  max-width: 1000px;
+  width: 100%;
+}
 
-      if(res.headers?.length > 0) {
-        for (let h of res.headers) {
-          const path = rootPath + "/" + h.link
+.error-header {
+  text-align: center;
+  margin-bottom: 60px;
+  padding: 30px;
+  background-color: white;
+  border-radius: var(--border-radius);
+  box-shadow: var(--shadow);
+}
 
-          if (path.search(regex) !== -1){
-            router.push(path)
-            haveSolution = true
-            return;
-          }
+.error-code {
+  font-size: 8rem;
+  font-weight: 700;
+  color: var(--primary-color);
+  line-height: 1;
+  margin-bottom: 10px;
+  background: linear-gradient(135deg, var(--primary-color), #60a5fa);
+  -webkit-background-clip: text;
+  background-clip: text;
+  -webkit-text-fill-color: transparent;
+}
 
-          getRecursiveLevelPath(h, rootPath);
-        }
-      }
-    }
-  };
+.error-header h1 {
+  font-size: 2.5rem;
+  color: var(--text-color);
+  margin: 0 0 15px;
+  font-weight: 600;
+}
 
-  redirectionURL();
-})
-</script>
+.error-message {
+  font-size: 1.1rem;
+  color: var(--text-light);
+  margin: 0 0 30px;
+}
+
+.primary-button {
+  display: inline-flex;
+  align-items: center;
+  padding: 12px 24px;
+  background-color: var(--primary-color);
+  color: white;
+  border: none;
+  border-radius: var(--border-radius);
+  font-size: 1rem;
+  font-weight: 500;
+  cursor: pointer;
+  transition: var(--transition);
+  box-shadow: 0 2px 10px rgba(50, 115, 220, 0.2);
+}
+
+.primary-button:hover {
+  background-color: var(--primary-hover);
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(50, 115, 220, 0.3);
+}
+
+.button-icon {
+  margin-right: 8px;
+  font-weight: bold;
+}
+
+.button-arrow {
+  margin-left: 8px;
+  transition: transform 0.2s ease;
+}
+
+.documents-section {
+  margin-top: 20px;
+  width: 100%;
+}
+
+.documents-section h2 {
+  text-align: center;
+  font-size: 1.8rem;
+  color: var(--text-color);
+  margin-bottom: 30px;
+  font-weight: 600;
+}
+
+.documents-cards {
+  display: grid;
+  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+  gap: 25px;
+}
+
+.card {
+  display: flex;
+  flex-direction: column;
+  height: 100%;
+  border-radius: var(--border-radius);
+  background-color: white;
+  box-shadow: var(--shadow);
+  transition: var(--transition);
+  overflow: hidden;
+  border: 1px solid var(--border-color);
+}
+
+.card:hover {
+  transform: translateY(-5px);
+  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
+  border-color: rgba(50, 115, 220, 0.3);
+}
+
+.card-content {
+  padding: 25px;
+  flex-grow: 1;
+}
+
+.card h3 {
+  margin: 0 0 15px;
+  font-size: 1.3rem;
+  color: var(--primary-color);
+  font-weight: 600;
+  line-height: 1.3;
+}
+
+.card p {
+  margin: 0;
+  font-size: 1rem;
+  color: var(--text-light);
+  line-height: 1.5;
+}
+
+.card-footer {
+  padding: 15px 25px 25px;
+  display: flex;
+  justify-content: flex-start;
+}
+
+.card-button {
+  display: inline-flex;
+  align-items: center;
+  padding: 10px 20px;
+  background-color: #f0f5ff;
+  color: var(--primary-color);
+  border: 1px solid var(--primary-color);
+  border-radius: var(--border-radius);
+  font-weight: 500;
+  cursor: pointer;
+  transition: var(--transition);
+}
+
+.card-button:hover {
+  background-color: var(--primary-color);
+  color: white;
+}
+
+.card-button:hover .button-arrow {
+  transform: translateX(4px);
+}
+
+/* Responsive Adjustments */
+@media (max-width: 768px) {
+  .error-code {
+    font-size: 6rem;
+  }
+  
+  .error-header h1 {
+    font-size: 2rem;
+  }
+  
+  .documents-cards {
+    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
+  }
+}
+
+@media (max-width: 480px) {
+  .error-code {
+    font-size: 4.5rem;
+  }
+  
+  .error-header h1 {
+    font-size: 1.75rem;
+  }
+  
+  .error-message {
+    font-size: 1rem;
+  }
+  
+  .documents-cards {
+    grid-template-columns: 1fr;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/docs/.vuepress/theme/sidebar/Sidebar.vue b/docs/.vuepress/theme/sidebar/Sidebar.vue
index 43f1578c8..b1f6a8959 100644
--- a/docs/.vuepress/theme/sidebar/Sidebar.vue
+++ b/docs/.vuepress/theme/sidebar/Sidebar.vue
@@ -71,11 +71,15 @@ const toggleGroup = (index) => {
 
 const isInViewport = (element) => {
   const rect = element.getBoundingClientRect();
+  const windowHeight = window.innerHeight;
+
   return (
-      rect.top >= 0 &&
-      rect.bottom <= window.innerHeight - 350
+    rect.top >= 0 &&
+    rect.left >= 0 &&
+    rect.bottom <= (window.innerHeight / 2 || document.documentElement.clientHeight / 2) &&
+    rect.right <= (window.innerWidth || document.documentElement.clientWidth)
   );
-}
+};
 watch(() => route, refreshIndex)
 
 const checkIfScroll = () => {
@@ -95,11 +99,13 @@ const checkIfScroll = () => {
       const currentLink = sidebarStringLinks.find(link => link === a.getAttribute('data-anchor'))
       sidebarAnchorsContainer.forEach(container => {
         container.querySelectorAll('.sidebar-link-container').forEach(cl => {
-          if (container.querySelector(`a[data-anchor="${currentLink}"]`)) cl.classList.remove("collapsed")
+          if (container.querySelector(`a[data-anchor="${currentLink}"]`)) {
+            cl.classList.remove("collapsed")
+          }
           else cl.classList.add("collapsed")
         })
       })
-
+        
       if (sidebar.querySelector(`a[data-anchor="${currentLink}"]`)) {
         sidebarAnchors.forEach(a => a.classList.remove("active"))
         sidebar.querySelector(`a[data-anchor="${currentLink}"]`).classList.add("active")
@@ -118,12 +124,41 @@ const resolveOpenGroupIndex = (route, items) => {
   return -1
 }
 
+const handleHashChange = () => {
+  // Get the current hash from the URL
+  const currentHash = window.location.hash;
+
+  // Find the corresponding anchor link in the sidebar
+  const sidebarAnchors = document.querySelectorAll('.sidebar a');
+  sidebarAnchors.forEach((a) => {
+    if (a.getAttribute('data-anchor') === currentHash) {
+      // Remove the "active" class from all sidebar links and add it only to the current one
+      sidebarAnchors.forEach((link) => link.classList.remove('active'));
+      a.classList.add('active');
+
+      // Expand the parent collapsible sidebar item, if any
+      const parentCollapsible = a.closest('.collapsible');
+      if (parentCollapsible) {
+        parentCollapsible.classList.remove('collapsed');
+      }
+    }
+  });
+};
+
 onMounted(() => {
-  refreshIndex()
-  !props.isMobileWidth ? window.addEventListener("scroll", checkIfScroll) : null
-})
+  refreshIndex();
+  !props.isMobileWidth ? window.addEventListener('scroll', checkIfScroll) : null;
+  !props.isMobileWidth ? window.addEventListener('resize', checkIfScroll) : null;
+
+  // Listen to the "hashchange" event to handle direct anchor link access
+  window.addEventListener('hashchange', handleHashChange);
+});
 
-onUnmounted(() => window.removeEventListener("scroll", checkIfScroll))
+onUnmounted(() => {
+  window.removeEventListener('scroll', checkIfScroll);
+  window.removeEventListener('resize', checkIfScroll);
+  window.removeEventListener('hashchange', handleHashChange);
+});
 
 </script>
 
@@ -153,4 +188,6 @@ onUnmounted(() => window.removeEventListener("scroll", checkIfScroll))
     top 3.875rem !important
     background #FFFFFF !important
     z-index 999
+    overflow-x hidden
+    white-space normal
 </style>
diff --git a/docs/.vuepress/theme/util.js b/docs/.vuepress/theme/util.js
index 46f658dec..4487b5b2d 100644
--- a/docs/.vuepress/theme/util.js
+++ b/docs/.vuepress/theme/util.js
@@ -1,5 +1,4 @@
-import {inject} from "vue";
-
+import sidebarItems from "../config-client/sidebar";
 export const hashRE = /#.*$/ // a regular expression to match the hash portion of a URL.
 export const extRE = /\.(md|html)$/ // a regular expression to match file extensions.
 export const endingSlashRE = /\/$/ // a regular expression to match the trailing slash in a URL.
@@ -163,8 +162,7 @@ function resolvePath(relative, base, append) {
  */
 
 export function resolveSidebarItems(page, route, pages) {
-    const {locales} = inject('themeConfig')
-    const {base, config} = resolveMatchingConfig(route, locales.sidebar)
+    const {base, config} = resolveMatchingConfig(route, sidebarItems)
     return config
         ? config.map(item => resolveItem(item, pages, base))
         : []
diff --git a/docs/README.md b/docs/README.md
index 06ec7aa05..e82b81741 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,3 +1,4 @@
 ---
 layout: HomeLayout
----
\ No newline at end of file
+---
+# CloudLinux Product Documentation
diff --git a/docs/admin/.DS_Store b/docs/admin/.DS_Store
deleted file mode 100644
index 5008ddfcf..000000000
Binary files a/docs/admin/.DS_Store and /dev/null differ
diff --git a/docs/admin/components/README.md b/docs/admin/components/README.md
deleted file mode 100644
index f6b778285..000000000
--- a/docs/admin/components/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Components
-
-CloudLinux OS Admin is very close to the regular CloudLinux Shared edition, which means that 
-99% of components described in this documentations are available for CloudLinux OS Admin.
-
-The exclusions are:
-
- - [MySQL Governor](/shared/control_panel_integration/#mysql-governor) is not available 
- - NodeJS, Python and Ruby selectors aren't available, however, [PHP Selector](/shared/cloudlinux_os_components/#php-selector) is available
- - [X-Ray](/shared-pro/x-ray/#x-ray) is available like with CloudLinux Shared Pro
- - [Accelerate WP](/shared-pro/accelerate-wp/#acceleratewp) is available like with CloudLinux Shared Pro
-
-The rest of the components are similar to CloudLinux OS Shared.
-
diff --git a/docs/admin/description/README.md b/docs/admin/description/README.md
deleted file mode 100644
index e562ded6c..000000000
--- a/docs/admin/description/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Description
-
-CloudLinux OS Admin is designed for shared hosting providers who want to flawlessly migrate their 
-big shared hosting customer to individual VPS with same CloudLinux features as on Shared hosting. 
-At the same time you will be able to separate such a user's websites if necessary and isolate them 
-with CageFS for efficient and extra security.
-
-Also it may be suitable for a little server with less than 5 customers on it, but be careful, 
-there is no migration to Shared edition available.
-
-Most of the features of CloudLinux OS Shared are available in this edition, with a small differences:
-
-- lve limits are set to unlimited by default (can be changed in CloudLinux Manager at any time)
-- MySQL Governor is not available in this edition
-- the license itself does not allow more than 5 users to be hosted on server.
-
-:::tip Note
-The CloudLinux OS Admin plan does not include the NodeJS, Python and Ruby selectors as well as the MySQL Governor.
-:::
-
diff --git a/docs/admin/faq/README.md b/docs/admin/faq/README.md
deleted file mode 100644
index 16c09766f..000000000
--- a/docs/admin/faq/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# FAQ
-
-**Q**: *Is it possible to convert my existing CloudLinux OS Shared server into CloudLinux OS Admin?*<br>
-**A**: No, only fresh installation is possible.
-
-**Q**: *Is Centralized Monitoring supported on CloudLinux OS Admin?*<br>
-**A**: No, Centralized Monitoring only works with CloudLinux OS Shared Pro license.
diff --git a/docs/admin/installation/README.md b/docs/admin/installation/README.md
deleted file mode 100644
index 993a9ed16..000000000
--- a/docs/admin/installation/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Installation
-
-CloudLinux OS Admin installation process is the same as for CloudLinux Shared, please forward to [installation guide](/shared/cloudlinux_installation) for the detailed instructions.
-
-:::tip Note
-The CloudLinux OS Admin can be installed and compatible only with AlmaLinux OS 8.
-:::
diff --git a/docs/cln/.DS_Store b/docs/cln/.DS_Store
index bcf05c47b..955a47361 100644
Binary files a/docs/cln/.DS_Store and b/docs/cln/.DS_Store differ
diff --git a/docs/cln/account_settings/README.md b/docs/cln/account_settings/README.md
index 8978dfbcf..2200b668b 100644
--- a/docs/cln/account_settings/README.md
+++ b/docs/cln/account_settings/README.md
@@ -3,13 +3,13 @@
 
 To go to account details click _User_ icon → _Settings_ in the top right corner.
 
-![](./images/settings_zoom70.png)
+![](/images/cln/account_settings/settings_zoom70.webp)
 
 
 ## Personal Information
 
 
-![](./images/personalinfo_zoom70.png)
+![](/images/cln/account_settings/personalinfo_zoom70.webp)
 
 
 On the _Account Details_ page choose _Personal Information_. Here you can add or change your personal information and change password.
@@ -25,7 +25,7 @@ Conversion is a critical procedure. Please contact the billing team by clicking
 ## Company Information
 
 
-![](./images/companyinformation_zoom70.png)
+![](/images/cln/account_settings/companyinformation_zoom70.webp)
 
 
 On the _Account Details_ page choose _Company Information_. Here you can add or change company information.
@@ -36,7 +36,7 @@ On the _Account Details_ page choose _Company Information_. Here you can add or
 
 You can create additional logins for your account in the form of the email address. The sub login can have any role with different permissions listed below. A master Server Administrator account has the full scope of permissions; he can create account sub logins.
 
-![](./images/sublogins_zoom70.png)
+![](/images/cln/account_settings/sublogins_zoom70.webp)
 
 You can choose one of the roles with special privileges for your sub logins.
 
@@ -103,5 +103,5 @@ You can choose one of the roles with special privileges for your sub logins.
 
 It is possible to set reports receiving for an account to the desired email address. To do so, click _Reports_ in the left side menu.
 
-![](./images/reports_zoom70.png)
+![](/images/cln/account_settings/reports_zoom70.webp)
 
diff --git a/docs/cln/account_settings/images/companyinformation_zoom70.png b/docs/cln/account_settings/images/companyinformation_zoom70.png
deleted file mode 100644
index 6a3704b78..000000000
Binary files a/docs/cln/account_settings/images/companyinformation_zoom70.png and /dev/null differ
diff --git a/docs/cln/account_settings/images/personalinfo_zoom70.png b/docs/cln/account_settings/images/personalinfo_zoom70.png
deleted file mode 100644
index 6edabb30a..000000000
Binary files a/docs/cln/account_settings/images/personalinfo_zoom70.png and /dev/null differ
diff --git a/docs/cln/account_settings/images/reports_zoom70.png b/docs/cln/account_settings/images/reports_zoom70.png
deleted file mode 100644
index 6a8b4fbf3..000000000
Binary files a/docs/cln/account_settings/images/reports_zoom70.png and /dev/null differ
diff --git a/docs/cln/account_settings/images/settings_zoom70.png b/docs/cln/account_settings/images/settings_zoom70.png
deleted file mode 100644
index 79b7bb7c7..000000000
Binary files a/docs/cln/account_settings/images/settings_zoom70.png and /dev/null differ
diff --git a/docs/cln/account_settings/images/sublogins_zoom70.png b/docs/cln/account_settings/images/sublogins_zoom70.png
deleted file mode 100644
index 62f09b40f..000000000
Binary files a/docs/cln/account_settings/images/sublogins_zoom70.png and /dev/null differ
diff --git a/docs/cln/billing/README.md b/docs/cln/billing/README.md
index 899d7f050..65ac2c569 100644
--- a/docs/cln/billing/README.md
+++ b/docs/cln/billing/README.md
@@ -10,7 +10,7 @@ The following information is available:
 * **Server licenses** — displays the number of servers activated for each product.
 * **Paid until** — the date of the next payment.
 
-![](./images/billing_zoom70.png)
+![](/images/cln/billing/billing_zoom70.webp)
 
 The following actions are available for each product:
 
@@ -50,7 +50,7 @@ If you activate the server license on CloudLinux OS version 7 or higher then no
 
 Go to _Billing → Invoices_ to get all information about all your invoices.
 
-![](./images/billinginvoices_zoom70.png)
+![](/images/cln/billing/billinginvoices_zoom70.webp)
 
 There are two tables _Paid Invoices_ and _Unpaid Invoices_.
 
@@ -93,21 +93,21 @@ To pay invoices under a customer, follow the next steps:
 
 2. Click PAY NOW
    
-    ![](./images/clnpaynowbtn_zoom50.png)
+    ![](/images/cln/billing/clnpaynowbtn_zoom50.webp)
 
      * If the selected payment method is not chosen, you’ll see the dialog with the direct link for payment
 
-      ![](./images/clnselectpaymentmethod_zoom60.png)
+      ![](/images/cln/billing/clnselectpaymentmethod_zoom60.webp)
 
      * If the selected payment method is chosen, you'll see the dialog for making payment
   
-      ![](./images/clnpaymentconfirmation_zoom60.png)
+      ![](/images/cln/billing/clnpaymentconfirmation_zoom60.webp)
 
      * In this dialog, you could select CHANGE PAYMENT METHOD and see the direct link for payment
 
-      ![](./images/clnselectpaymentmethod2_zoom60.png)
+      ![](/images/cln/billing/clnselectpaymentmethod2_zoom60.webp)
 
 3. After choosing the direct payment option you'll be redirected to the PayPal page
 
-    ![](./images/clncloudlinuxpaypal_zoom60.png)
+    ![](/images/cln/billing/clncloudlinuxpaypal_zoom60.webp)
 	
diff --git a/docs/cln/billing/images/billing_zoom70.png b/docs/cln/billing/images/billing_zoom70.png
deleted file mode 100644
index 2a8d1d7b0..000000000
Binary files a/docs/cln/billing/images/billing_zoom70.png and /dev/null differ
diff --git a/docs/cln/billing/images/billinginvoices_zoom70.png b/docs/cln/billing/images/billinginvoices_zoom70.png
deleted file mode 100644
index a061d10d5..000000000
Binary files a/docs/cln/billing/images/billinginvoices_zoom70.png and /dev/null differ
diff --git a/docs/cln/billing/images/clncloudlinuxpaypal_zoom60.png b/docs/cln/billing/images/clncloudlinuxpaypal_zoom60.png
deleted file mode 100644
index 448d055fc..000000000
Binary files a/docs/cln/billing/images/clncloudlinuxpaypal_zoom60.png and /dev/null differ
diff --git a/docs/cln/billing/images/clnpaymentconfirmation_zoom60.png b/docs/cln/billing/images/clnpaymentconfirmation_zoom60.png
deleted file mode 100644
index 1fbcb25fc..000000000
Binary files a/docs/cln/billing/images/clnpaymentconfirmation_zoom60.png and /dev/null differ
diff --git a/docs/cln/billing/images/clnpaynowbtn_zoom50.png b/docs/cln/billing/images/clnpaynowbtn_zoom50.png
deleted file mode 100644
index 12c92c493..000000000
Binary files a/docs/cln/billing/images/clnpaynowbtn_zoom50.png and /dev/null differ
diff --git a/docs/cln/billing/images/clnselectpaymentmethod2_zoom60.png b/docs/cln/billing/images/clnselectpaymentmethod2_zoom60.png
deleted file mode 100644
index d077ac330..000000000
Binary files a/docs/cln/billing/images/clnselectpaymentmethod2_zoom60.png and /dev/null differ
diff --git a/docs/cln/billing/images/clnselectpaymentmethod_zoom60.png b/docs/cln/billing/images/clnselectpaymentmethod_zoom60.png
deleted file mode 100644
index 9f89de253..000000000
Binary files a/docs/cln/billing/images/clnselectpaymentmethod_zoom60.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/README.md b/docs/cln/cln_for_resellers/README.md
index 3e45426e8..bd143c76f 100644
--- a/docs/cln/cln_for_resellers/README.md
+++ b/docs/cln/cln_for_resellers/README.md
@@ -15,7 +15,7 @@ IP license allows to register server only by it's IP (without a need to create a
 IP Licenses page allows resellers to add and remove IP licenses using automated tools via API.
 
 Click required product at the top menu and then _IP Licenses_ at the left sidebar.
-![](./images/clniplicense_zoom60.png)
+![](/images/cln/cln_for_resellers/clniplicense_zoom60.webp)
 
 The table contains the following information:
 
@@ -34,36 +34,22 @@ The following actions are available:
 * Remove IP from using this license. Tick IP(s) and click _Bin_ icon in the IP line or above the table for bulk action.
 * Filter servers list by IP and product type. Click _IP_ and select an IP, or click _Product Type_ and select a product.
 * Search in the list by a specific query. Type a search query in the search field to show specific servers.
-* Activate backup. Click ![](./images/clnactivatebackup.png). In the opened popup specify backup size and datacenter and click _Create_ to complete the action or Cancel to close the popup.
+* Activate backup. Click ![](/images/cln/cln_for_resellers/clnactivatebackup.webp). In the opened popup specify backup size and datacenter and click _Create_ to complete the action or Cancel to close the popup.
   
-    ![](./images/clncreatebackup_zoom70.png)
+    ![](/images/cln/cln_for_resellers/clncreatebackup_zoom70.webp)
 
-* Manage backup. Click ![](./images/clnmanagebackup.png). In the opened popup click _Go to the backup management_ to go to backup management system interface (opens in a new tab) or click _Cancel_ to close the popup.
+* Manage backup. Click ![](/images/cln/cln_for_resellers/clnmanagebackup.webp). In the opened popup click _Go to the backup management_ to go to backup management system interface (opens in a new tab) or click _Cancel_ to close the popup.
 
-## Converting your account to CloudLinux OS Shared type
+## Converting your account to CloudLinux OS Shared PRO type
 
 You can find the process description [here](/cln/purchase/#cloudlinux-os-plus)
 
-## Deposit Top Up
-
-
-Navigate to Billing → Balance and Top Up.
-
-![](./images/clndeposittopup_zoom60.png)
-
-To add funds via your PayPal account, click _Proceed to Checkout_. You will be redirected to PayPall checkout page. Fill in _Price per item_ and click _Continue_, then proceed with PayPal.
-
-If a reseller adds the Payment method, he will be able to "top up" the deposit.
-
-![](./images/clntopup.png)
-
-
 ## Autopayments
 
 
 Navigate to Billing → Payment Methods → Autopayment.
 
-![](./images/clnautopayments_zoom60.png)
+![](/images/cln/cln_for_resellers/clnautopayments_zoom60.webp)
 
 The following autopayment types are available:
 
@@ -79,7 +65,7 @@ When you have selected and configured autopayment type, click _Save_.
 
 Go to Billing → Invoices. There is a table with all invoices and appropriate information.
 
-![](./images/clnresellerinvoices_zoom60.png)
+![](/images/cln/cln_for_resellers/clnresellerinvoices_zoom60.webp)
 
 The table contains the following columns:
 
@@ -93,13 +79,54 @@ The table contains the following columns:
 * Total — the total amount of money you have to pay
 * Balance — amount of money on your account
 * Actions
-    * ![](./images/clniconshow.png) — open invoice in a popup (you can download it)
-    * ![](./images/clnicondownload.png) — open invoice in a new tab (you can download it)
+    * ![](/images/cln/cln_for_resellers/clniconshow.webp) — open invoice in a popup (you can download it)
+    * ![](/images/cln/cln_for_resellers/clnicondownload.webp) — open invoice in a new tab (you can download it)
 
-Click ![](./images/clnarrow.png) near invoice id to show detailed bill information:
+Click ![](/images/cln/cln_for_resellers/clnarrow.webp) near invoice id to show detailed bill information:
 
 * Title — license name
 * Quantity — licenses quantity
 * SubTotal — the price for that number of licenses
 
 
+## AccelerateWP Permissions Management for IPR Customers
+
+Accelerate WP Premium and CDN permission management will help you enable/ disable Premium and CDN features on certain servers. In cases where hosting users have root access to the server (e.g. VPS users), this permission ensures the license holder retains control over access to billable features. 
+
+By default permissions are disabled. 
+
+For managing these features via CLN for IP-based licensing:
+1. Log in to the CLN account
+2. Go to the 'CloudLinux' tab
+3. Go to the IP Licenses section
+
+![](/images/cln/cln_for_resellers/cln-ip-licenses-section.png)
+
+4. Press edit
+5. Choose new permissions 
+
+![](/images/cln/cln_for_resellers/cln-edit-ip-license.png)
+
+6. Save permissions 
+
+For managing these features via CLN for key-based licensing: 
+
+1. Log in to the CLN account
+2. Go to the 'CloudLinux' tab
+3. Go to the  'Activation keys' section 
+
+![](/images/cln/cln_for_resellers/cln-activation-keys.png)
+
+4. Select the activation key that you need 
+
+![](/images/cln/cln_for_resellers/cln-activation-key-details.png)
+
+5. Press edit 
+
+![](/images/cln/cln_for_resellers/cln-edit-activation-key.png)
+
+6. Choose new permissions
+7. Save permissions
+
+
+
diff --git a/docs/cln/cln_for_resellers/images/clnactivatebackup.png b/docs/cln/cln_for_resellers/images/clnactivatebackup.png
deleted file mode 100644
index 1b5614372..000000000
Binary files a/docs/cln/cln_for_resellers/images/clnactivatebackup.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clnarrow.png b/docs/cln/cln_for_resellers/images/clnarrow.png
deleted file mode 100644
index aa5ac28fe..000000000
Binary files a/docs/cln/cln_for_resellers/images/clnarrow.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clnautopayments_zoom60.png b/docs/cln/cln_for_resellers/images/clnautopayments_zoom60.png
deleted file mode 100644
index 53b6ddc74..000000000
Binary files a/docs/cln/cln_for_resellers/images/clnautopayments_zoom60.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clncreatebackup_zoom70.png b/docs/cln/cln_for_resellers/images/clncreatebackup_zoom70.png
deleted file mode 100644
index 519e9635e..000000000
Binary files a/docs/cln/cln_for_resellers/images/clncreatebackup_zoom70.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clndeposittopup_zoom60.png b/docs/cln/cln_for_resellers/images/clndeposittopup_zoom60.png
deleted file mode 100644
index 0091e43a5..000000000
Binary files a/docs/cln/cln_for_resellers/images/clndeposittopup_zoom60.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clnicondownload.png b/docs/cln/cln_for_resellers/images/clnicondownload.png
deleted file mode 100644
index df35ff46d..000000000
Binary files a/docs/cln/cln_for_resellers/images/clnicondownload.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clniconshow.png b/docs/cln/cln_for_resellers/images/clniconshow.png
deleted file mode 100644
index 12d8a2a16..000000000
Binary files a/docs/cln/cln_for_resellers/images/clniconshow.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clniplicense_zoom60.png b/docs/cln/cln_for_resellers/images/clniplicense_zoom60.png
deleted file mode 100644
index 21a241654..000000000
Binary files a/docs/cln/cln_for_resellers/images/clniplicense_zoom60.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clnmanagebackup.png b/docs/cln/cln_for_resellers/images/clnmanagebackup.png
deleted file mode 100644
index c55aa1b20..000000000
Binary files a/docs/cln/cln_for_resellers/images/clnmanagebackup.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clnresellerinvoices_zoom60.png b/docs/cln/cln_for_resellers/images/clnresellerinvoices_zoom60.png
deleted file mode 100644
index 65629b5b5..000000000
Binary files a/docs/cln/cln_for_resellers/images/clnresellerinvoices_zoom60.png and /dev/null differ
diff --git a/docs/cln/cln_for_resellers/images/clntopup.png b/docs/cln/cln_for_resellers/images/clntopup.png
deleted file mode 100644
index d9619a0f1..000000000
Binary files a/docs/cln/cln_for_resellers/images/clntopup.png and /dev/null differ
diff --git a/docs/cln/dashboard/README.md b/docs/cln/dashboard/README.md
index 7c6cd2e10..ec7d40b8e 100644
--- a/docs/cln/dashboard/README.md
+++ b/docs/cln/dashboard/README.md
@@ -6,7 +6,7 @@ Dashboard helps quickly navigate to user's _Products_. It includes the following
 
 Click _Dashboard_. You will be redirected to the _Products_ page.
 
-![](./images/dashboard_zoom70.png)
+![](/images/cln/dashboard/dashboard_zoom70.webp)
 
 On the _Products_ page you can see all your products.
 
@@ -26,20 +26,20 @@ There are no trials available for the ELS subscription
 
 On the _Product_ tab a user can activate a trial license if trial product hasn't been activated yet.
 
-![](./images/freetrial_zoom70.png)
+![](/images/cln/dashboard/freetrial_zoom70.webp)
 
 Just click _Free Trial_ and proceed with trial activation instructions.
 
 Also, a user is able to activate trial license from the _Purchase_ page.
 
-![](./images/fretrialpurchase_zoom70.png)
+![](/images/cln/dashboard/fretrialpurchase_zoom70.webp)
 
 ### CloudLinux OS Activation Keys
 
 
 Click _CloudLinux OS_ at the top menu to go to _CloudLinux OS Activation Keys_ page. Here you can see server licenses used/limits.
 
-![](./images/cloudlinuxosactivationkeys_zoom70.png)
+![](/images/cln/dashboard/cloudlinuxosactivationkeys_zoom70.webp)
 
 The following actions are available:
 
@@ -74,7 +74,7 @@ Default Activation Key cannot be deleted.
 
 On the _CloudLinux OS Activation Keys_ page click an activation key string in the table to go to _CloudLinux Activation Key Details_ page.
 
-![](./images/cloudlinuxactivationkeysdetails_zoom70.png)
+![](/images/cln/dashboard/cloudlinuxactivationkeysdetails_zoom70.webp)
 
 This page contains the following information:
 
@@ -87,7 +87,7 @@ The following actions are available:
 
 * **Edit key**. Click _Edit Key_ button. In the opened popup you can change a number of servers that can be activated with this key and enter some notes for your own needs so that you can easily find an activation key when there are a lot of different keys. To apply changes click _Save Changes_ or _Cancel_ to close the popup.
 
-    ![](./images/editactivationkey.png)
+    ![](/images/cln/dashboard/editactivationkey.webp)
 
 
 * **Remove key**. Click _Remove Activation Key_ button. In the opened popup click _Remove_ to apply changes or _Cancel_ to close the popup.
@@ -95,7 +95,7 @@ The following actions are available:
     You cannot delete a default activation key.
     :::
 
-    ![](./images/removeactivationkey.png)
+    ![](/images/cln/dashboard/removeactivationkey.webp)
 
 
 Below, there is a table with all servers activated with this activation key.
@@ -119,7 +119,7 @@ The following actions are available:
 
 Click _KernelCare_ at the top menu to go to _KernelCare Activation Keys_ page. Here you can see server licenses (used/limits).
 
-![](./images/kcactivationkeypage_zoom70.png)
+![](/images/cln/dashboard/kcactivationkeypage_zoom70.webp)
 
 There are two types of KernelCare licenses available: IP-based and key-based. IP-based license can only be used by IP address it is issued to, while key-based licenses can be migrated to another server within the IP range defined for the key.
 
@@ -131,7 +131,7 @@ The following actions are available:
 
 * **Copy a Default Activation Key**. Click a key to copy it to a clipboard.
 * **Generate a new Activation Key**. Click _Generate new activation key_. In an opened popup specify _Server quantity limit_, _IP range limit_, _Sticky tag_, and add some _Notes_, if any, and click _Save Changes_ to confirm the action or _Cancel_ to close the popup.
-    ![](./images/kceditpng.png)
+    ![](/images/cln/dashboard/kceditpng.webp)
 * **[Manage servers](/cln/billing/#overview-products)**.
 * **[Add server licenses](/cln/purchase/#purchase)**.
 * **Remove unused server licenses** . Click _Remove unused server licenses_ to delete all server licenses that are not used to activate a server. Do it to reduce your monthly bill as a customer pays per each server license and NOT per an activated server. Confirm your action in the opened popup by clicking _Remove_ or click _Cancel_ to close the popup.
@@ -158,7 +158,7 @@ Default Activation Key cannot be deleted.
 
 On the _KernelCare Activation Keys_ page click an activation key in the table to go to _KernelCare Activation Key Details_ page.
 
-![](./images/kernelcareactivationkeydetails_zoom70.png)
+![](/images/cln/dashboard/kernelcareactivationkeydetails_zoom70.webp)
 
 This page contains the following information:
 
@@ -177,7 +177,7 @@ The following actions are available:
 You cannot delete a default activation key.
 :::
 
-![](./images/kcremovekey.png)
+![](/images/cln/dashboard/kcremovekey.webp)
 
 Below, there is a table with all servers activated with this activation key.
 
@@ -204,14 +204,14 @@ To use this tag, go to _CLN portal → KernelCare tab → click a key to edit 
 
 You should provide a separate key for each environment and set them to a particular sticky tag which is actually the date to which all the servers in an environment have to be patched.
 
-![](./images/kcstickytag.png)
+![](/images/cln/dashboard/kcstickytag.webp)
 
 The date in _Sticky tag_ field can be any date from May 28, 2018 up to one day before today.
 
 To use Sticky Tag feature on the servers to be patched, run:
 
 ```
-$ /usr/bin/kcarectl --set-sticky-patch=KEY
+/usr/bin/kcarectl --set-sticky-patch=KEY
 ```
 
 Alternatively, you can do the same by adding ` STICKY_PATCH=KEY` to `/etc/sysconfig/kcare/kcare.conf` file.
@@ -233,7 +233,7 @@ Find more details in [KernelCare documentation](https://docs.kernelcare.com/kc-a
 
 Click _Imunify360_ at the top menu to go to _Imunify360 License Types_ page.
 
-![](./images/im360licensetypes_zoom70.png)
+![](/images/cln/dashboard/im360licensetypes_zoom70.webp)
 
 Here you can see all available license types, buy and manage them.
 
@@ -265,7 +265,7 @@ If you have only one license then after the deletion, you will not have any lice
 
 Click _Imunify360_ at the top menu, then click _Activation Keys_ on the left menu to go to _Imunify360 Activation Keys_ page.
 
-![](./images/imunify360activationkeys_zoom70.png)
+![](/images/cln/dashboard/imunify360activationkeys_zoom70.webp)
 
 Here you can see the table with a list of all Imunify360 Activation Keys. It contains the following columns:
 
@@ -291,7 +291,7 @@ Default Activation Key cannot be deleted.
 
 Click Imunify360 at the top menu then _Activation Keys → desired type of license (Single User, Up to 30 users, Up to 250 users, Unlimited)_ on the left menu to go to _Imunify360 License Type Activation Keys_.
 
-![](./images/im360upto30activationkey_zoom70.png)
+![](/images/cln/dashboard/im360upto30activationkey_zoom70.webp)
 
 This page contains the following information:
 
@@ -337,7 +337,7 @@ You cannot delete the default activation key.
 
 On the _Imunify360 Activation Keys_ page click an activation key string in the table to go to _Imunify360 Activation Key Details_ page.
 
-![](./images/imunify360activationkeydetails_zoom70.png)
+![](/images/cln/dashboard/imunify360activationkeydetails_zoom70.webp)
 
 This page contains the following information:
 
@@ -348,7 +348,7 @@ This page contains the following information:
 The following actions are available:
 
 * **Edit key**. Click _Edit Key_ button. In the opened popup you can change a number of servers that can be activated with this key and enter some notes. To apply changes, click _Save Changes_ or _Cancel_ to close the popup.
-    ![](./images/im360editactivationkey.png)
+    ![](/images/cln/dashboard/im360editactivationkey.webp)
 * **Remove key**. Click _Remove Activation Key_ button. In the opened popup click _Remove_ to apply changes or _Cancel_ to close the popup.
 
 :::tip Note
@@ -367,7 +367,101 @@ The following actions are available:
 
 * **Filter servers list by the date of registration**. Click _Registered Date_ and select a date or a period to show servers registered within selected period or date.
 * **Search in the list by specific query**. Type a search query in the search field to show specific servers.
-* **Remove a server from this activation key**. In this case, a server will not be protected by Imunify360 anymore. To do that, tick server(s) and click _Bin_ icon above the table.
+* **Remove a server from this activation key**. In this case, a server will not be protected by Imunify360 anymore. To do that, tick server(s) and click _Bin_ icon above the table. 
+
+### Imunify Email Notifications
+
+#### Subscription-based customers
+
+Starting from the 1st of June 2024, you will be billed for the Imunify Email service. Imunify Email costs 10% of your Imunify360 license. The billing will be based on whether the 'enabled' feature for Imunify Email is activated on your CLN account. This 'enabled' state indicates that the Imunify Email product is installed on your server. So, if the feature is turned on, you'll be billed accordingly. 
+
+You can enable Imunify Email on 3 levels:
+
+1. **Account**
+
+![](/images/cln/dashboard/imunify-email-global-level.webp)
+
+* When you enable the feature on an account level, the script will install  Imunify Email on all Imunify360 servers in your account in 24 hours.  You can also run `imunify360-agent update-license` command to speed up the process. 
+* When disabling the feature on an account level, the script will deactivate the Imunify Email on all Imunify360 servers in your account in 24 hours.
+* There's also a default option called 'depends on lower level'. This allows you to control permissions based on each key or license, rather than for the whole account. 
+
+2. **Key**  
+
+You can manage permission on a key level. Go to the 'Activation keys' tab and select 'add-ons'. 
+
+![](/images/cln/dashboard/imunify-email-manage-permission-cln.webp) 
+
+You will see this screen: 
+
+![](/images/cln/dashboard/imunify-email-manage-permissions2.webp) 
+
+* When you enable the feature on all servers in the key, the script will install Imunify Email on all Imunify360 servers under this key in 24 hours. You can also run `imunify360-agent update-license` command to speed up the process.
+* When disabling the feature on a key level, the script will deactivate the Imunify Email on all Imunify360 servers under this key in your account in 24 hours.
+* There's also a default option called 'depends on lower level'. This allows you to control permissions based on each server. 
+
+3. **Server**
+
+You can manage permission on a server level. Go to the 'Servers' tab and select 'add-ons'. 
+
+![](/images/cln/dashboard/imunify-email-permissions-server-level.webp)
+
+You will see this pop-up: 
+
+![](/images/cln/dashboard/imunify-email-popup-cln.webp) 
+
+* When you enable the feature, the script will install Imunify Email on this server. You can also run `imunify360-agent update-license` command to speed up the process.
+* When disabling the feature, the script will deactivate the Imunify Email on a server in 24 hours. 
+
+As a beta tester, you have the feature Imunify Email installed on your servers. We've noticed this and have activated an additional feature related to Imunify Email on all servers where we found it installed. However, you have the flexibility to modify this setting if you wish. 
+
+#### Usage-based customers
+
+Starting from the 1st of July 2024, you will be billed for the Imunify Email service for the usage in June.  Imunify Email costs 10% of your Imunify360 license. The billing will be based on whether the 'enabled' feature for Imunify Email is activated on your CLN account. This 'enabled' state indicates that the Imunify Email product is installed on your server. So, if the feature is turned on, you'll be billed accordingly. 
+
+You can enable Imunify Email on 3 levels: 
+
+1. **Account** 
+
+![](/images/cln/dashboard/imunifyemail-cln-global-level.webp) 
+
+* When you enable the feature on an account level, the script will install Imunify Email on all Imunify360 servers in your account in 24 hours. You can also run `imunify360-agent update-license` command to speed up the process.
+* When disabling the feature on an account level, the script will deactivate the Imunify Email on all Imunify360 servers in your account in 24 hours.
+* There's also a default option called 'depends on lower level'. This allows you to control permissions based on each key or license, rather than for the whole account.
+
+2. **Key** 
+
+You can manage permission on a key level. Go to the 'Activation keys' tab and select 'add-ons'. 
+
+![](/images/cln/dashboard/imunifyemail-cln-permission-by-key.webp) 
+
+You will see this screen: 
+
+![](/images/cln/dashboard/ie-cln-permission-popup.webp) 
+
+* When you enable the feature on all servers in the key, the script will install Imunify email on all Imunify360 servers under this key in 24 hours. You can also run imunify360-agent update-license command to speed up the process.
+* When disabling the feature on a key level, the script will deactivate the Imunify email on all Imunify360 servers under this key in your account in 24 hours.
+* There's also a default option called 'depends on lower level'. This allows you to control permissions based on each server. 
+
+3. **Server/ IP license**
+You can manage permission on a server level. Go to the 'Servers' tab and select 'add-ons'. 
+
+![](/images/cln/dashboard/ie-cln-permission-server-level.webp)  
+
+**IP Licenses**
+
+![](/images/cln/dashboard/ie-cl-permission-iplicense.webp) 
+
+You will see this pop-up: 
+
+![](/images/cln/dashboard/ie-cln-popup-window.webp) 
+
+* When you enable the feature, the script will install Imunify email on this server. You can also run `imunify360-agent update-license` command to speed up the process.
+* When disabling the feature, the script will deactivate the Imunify email on a server in 24 hours. 
+
+You can also use our API to manage Imunify Email add-on: [https://docs.cloudlinux.com/cloudlinux_rest_api.pdf](https://docs.cloudlinux.com/cloudlinux_rest_api.pdf)
+
+As a beta tester, you have the feature Imunify Email installed on your servers. We've noticed this and have activated an additional feature related to Imunify Email on all servers where we found it installed. However, you have the flexibility to modify this setting if you wish.
+
 
 ### ELS Activation Keys
 
@@ -377,12 +471,20 @@ There are no trials available for the ELS subscription
 
 ### CloudLinux Backup
 
+:::warning
+We regret to inform you that our CL Backup will be reaching its End of Life (EOL) phase soon, effective Oct 1st, 2023. This decision has been made after careful consideration and is in line with our commitment to focus on developing new and innovative solutions for our valued customers.
+ 
+Outlined below are important details regarding the EOL process:
+1. _End of Sales_: As of Jun 2023, we will no longer be accepting new orders for the CL Backup. 
+2. _Support_: We will continue to provide technical support until Sep 30th, 2023. However, after this date, we will no longer be able to offer support for the product.
+3. Make sure that you moved backups to other providers before Sep 30th, 2023.
+:::
 
 Available only if CLoudLinux Backup is purchased and activated.
 
 Click _CL Backup_ in the main header menu to go to _CloudLinux Backup_ page. Here you can see a table with all your backups for CloudLinux products.
 
-![](./images/newclnclbackup_zoom70.png)
+![](/images/cln/dashboard/newclnclbackup_zoom70.webp)
 
 The table includes  the following columns:
 
@@ -406,7 +508,7 @@ The table includes  the following columns:
 
 Click _Dashboard → Servers_ to go to _All Servers_ page. A list of all servers with activated products belonged to this account is available.
 
-![](./images/allserverspng_zoom70.png)
+![](/images/cln/dashboard/allserverspng_zoom70.webp)
 
 The table includes all servers that have been activated in all products within the account. The table contains the following columns:
 
@@ -426,7 +528,7 @@ Click a server name to show server details:
 When you have changed the server license successfully, you need to get a new activation key and activate Imunify360 on the server using [CLI command](https://docs.imunify360.com/command_line_interface/#register) (register). Otherwise, Imunify360 will not be registered and activated, and will not work on the server.
 :::
 
-![](./images/imunify360changeserverlisencetype.png)
+![](/images/cln/dashboard/imunify360changeserverlisencetype.webp)
 
 The following actions are available:
 
@@ -443,15 +545,15 @@ The _Server groups_ feature allows you to add servers in one group and perform g
 
 * Go to _Servers_ and select a required product, then click _Manage server groups_
     
-    ![](./images/manage_server_groups.png)
+    ![](/images/cln/dashboard/manage_server_groups.webp)
   
 * Click _Create your first group_ or _Create new group_
 
-    ![](./images/create_group.png)
+    ![](/images/cln/dashboard/create_group.webp)
 
 * Type a group name and description if needed
 
-    ![](./images/new_group.png)
+    ![](/images/cln/dashboard/new_group.webp)
 
 * Then click _Save_ to apply changes or click _Cancel_ to close the popup.
 * Close the popup.
@@ -460,39 +562,39 @@ The _Server groups_ feature allows you to add servers in one group and perform g
 
 * Go to _Servers_ and click _Manage server groups_
 
-    ![](./images/manage_group.png)
+    ![](/images/cln/dashboard/manage_group.webp)
 
-* Select a group and click _Bin_ (![](./images/bin.png))
+* Select a group and click _Bin_ (![](/images/cln/dashboard/bin.webp))
 * When the group is removed you can close the popup
 
 #### How to add a server to a group
 
-* Go to _Servers_ and select a required product. Click ![](./images/plus.png) in the _Group_ column.
+* Go to _Servers_ and select a required product. Click ![](/images/cln/dashboard/plus.webp) in the _Group_ column.
 
-    ![](./images/add_server.png)
+    ![](/images/cln/dashboard/add_server.webp)
 
 * Choose a group from the list or create a new one by typing its name
 
-    ![](./images/add_item.png)
+    ![](/images/cln/dashboard/add_item.webp)
 
 * Click _Add to group_ to apply changes or click _Cancel_ to close the popup
 * You will see that the server is added to the group
 
-    ![](./images/added_result.png)
+    ![](/images/cln/dashboard/added_result.webp)
 
 * Or for group action, select servers in the list and click _Add to server group_.
 
-    ![](./images/add_mass_action.png)
+    ![](/images/cln/dashboard/add_mass_action.webp)
 
 #### How to remove a server from a group
 
 * Go to _Servers_ and click _Manage server groups_
 
-    ![](./images/manage_group.png)
+    ![](/images/cln/dashboard/manage_group.webp)
 
-* Scroll to _Servers_ and click ![](./images/cross.png) for a server to be removed from the group
+* Scroll to _Servers_ and click ![](/images/cln/dashboard/cross.webp) for a server to be removed from the group
 
-    ![](./images/remove_server.png)
+    ![](/images/cln/dashboard/remove_server.webp)
 
 * Then click _Save_ to apply changes or click _Cancel_ to close the popup
 * Close the popup
@@ -501,13 +603,43 @@ The _Server groups_ feature allows you to add servers in one group and perform g
 
 * Go to _Servers_, select server(s) in the list and click _Add to server group_
 
-    ![](./images/add_mass_action.png)
+    ![](/images/cln/dashboard/add_mass_action.webp)
 
 * Choose a group or create a new one and click _Add to group_
 
-    ![](./images/move_to_another_group.png)
+    ![](/images/cln/dashboard/move_to_another_group.webp)
+
+* The server(s) will be moved to another group  
+
+### AccelerateWP Features Management for Regular Customers
+
+The Accelerate WP Premium and CDN permission management will help you enable/ disable Premium and CDN features on certain servers. In cases where hosting users have root access to the server (e.g. VPS users), this permission ensures the license holder retains control over access to billable features. 
+
+Default state for Cloudlinux OS editions:
+* Solo, Admin - disabled
+* Pro - enabled 
+
+For managing these features via CLN:
+
+1. Login to the CLN account 
+
+2. Go to the 'CloudLinux' tab 
+
+![](/images/cln/dashboard/cln_shared-pro_activation-keys.webp)
+
+3. Press a key when you want to enable/ disable Premium or CDN 
+
+4. Press Edit key 
+
+![](/images/cln/dashboard/cln_shared-pro_edit_key.webp) 
+
+5. Choose new permissions 
+
+![](/images/cln/dashboard/cln_edit-activation_key_permissions.webp) 
+
+6. Save permissions 
 
-* The server(s) will be moved to another group 
+Permission will apply to all registered under these key servers.
 
 
 
diff --git a/docs/cln/dashboard/images/add_item.png b/docs/cln/dashboard/images/add_item.png
deleted file mode 100644
index 90a205a78..000000000
Binary files a/docs/cln/dashboard/images/add_item.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/add_mass_action (1).png b/docs/cln/dashboard/images/add_mass_action (1).png
deleted file mode 100644
index c30d058f8..000000000
Binary files a/docs/cln/dashboard/images/add_mass_action (1).png and /dev/null differ
diff --git a/docs/cln/dashboard/images/add_mass_action.png b/docs/cln/dashboard/images/add_mass_action.png
deleted file mode 100644
index c30d058f8..000000000
Binary files a/docs/cln/dashboard/images/add_mass_action.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/add_server.png b/docs/cln/dashboard/images/add_server.png
deleted file mode 100644
index e5e943d8d..000000000
Binary files a/docs/cln/dashboard/images/add_server.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/added_result.png b/docs/cln/dashboard/images/added_result.png
deleted file mode 100644
index e1fa0bcd3..000000000
Binary files a/docs/cln/dashboard/images/added_result.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/allserverspng_zoom70.png b/docs/cln/dashboard/images/allserverspng_zoom70.png
deleted file mode 100644
index 298d7e297..000000000
Binary files a/docs/cln/dashboard/images/allserverspng_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/bin.png b/docs/cln/dashboard/images/bin.png
deleted file mode 100644
index a45f0d750..000000000
Binary files a/docs/cln/dashboard/images/bin.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/cloudlinuxactivationkeysdetails_zoom70.png b/docs/cln/dashboard/images/cloudlinuxactivationkeysdetails_zoom70.png
deleted file mode 100644
index 28d978c44..000000000
Binary files a/docs/cln/dashboard/images/cloudlinuxactivationkeysdetails_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/cloudlinuxosactivationkeys_zoom70.png b/docs/cln/dashboard/images/cloudlinuxosactivationkeys_zoom70.png
deleted file mode 100644
index 59ed5428f..000000000
Binary files a/docs/cln/dashboard/images/cloudlinuxosactivationkeys_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/create_group.png b/docs/cln/dashboard/images/create_group.png
deleted file mode 100644
index 192086ee2..000000000
Binary files a/docs/cln/dashboard/images/create_group.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/cross.png b/docs/cln/dashboard/images/cross.png
deleted file mode 100644
index 6a9669020..000000000
Binary files a/docs/cln/dashboard/images/cross.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/dashboard_zoom70.png b/docs/cln/dashboard/images/dashboard_zoom70.png
deleted file mode 100644
index 2b0abb029..000000000
Binary files a/docs/cln/dashboard/images/dashboard_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/editactivationkey.png b/docs/cln/dashboard/images/editactivationkey.png
deleted file mode 100644
index 9afadcd80..000000000
Binary files a/docs/cln/dashboard/images/editactivationkey.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/freetrial_zoom70.png b/docs/cln/dashboard/images/freetrial_zoom70.png
deleted file mode 100644
index 047ff3db8..000000000
Binary files a/docs/cln/dashboard/images/freetrial_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/fretrialpurchase_zoom70.png b/docs/cln/dashboard/images/fretrialpurchase_zoom70.png
deleted file mode 100644
index 283187830..000000000
Binary files a/docs/cln/dashboard/images/fretrialpurchase_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/im360editactivationkey.png b/docs/cln/dashboard/images/im360editactivationkey.png
deleted file mode 100644
index 19026c352..000000000
Binary files a/docs/cln/dashboard/images/im360editactivationkey.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/im360licensetypes_zoom70.png b/docs/cln/dashboard/images/im360licensetypes_zoom70.png
deleted file mode 100644
index 8d086e4d0..000000000
Binary files a/docs/cln/dashboard/images/im360licensetypes_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/im360upto30activationkey_zoom70.png b/docs/cln/dashboard/images/im360upto30activationkey_zoom70.png
deleted file mode 100644
index e53a98818..000000000
Binary files a/docs/cln/dashboard/images/im360upto30activationkey_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/imunify360activationkeydetails_zoom70.png b/docs/cln/dashboard/images/imunify360activationkeydetails_zoom70.png
deleted file mode 100644
index 744606275..000000000
Binary files a/docs/cln/dashboard/images/imunify360activationkeydetails_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/imunify360activationkeys_zoom70.png b/docs/cln/dashboard/images/imunify360activationkeys_zoom70.png
deleted file mode 100644
index d013ded86..000000000
Binary files a/docs/cln/dashboard/images/imunify360activationkeys_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/imunify360changeserverlisencetype.png b/docs/cln/dashboard/images/imunify360changeserverlisencetype.png
deleted file mode 100644
index c47ec2b53..000000000
Binary files a/docs/cln/dashboard/images/imunify360changeserverlisencetype.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/kcactivationkeypage_zoom70.png b/docs/cln/dashboard/images/kcactivationkeypage_zoom70.png
deleted file mode 100644
index 922227834..000000000
Binary files a/docs/cln/dashboard/images/kcactivationkeypage_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/kceditpng.png b/docs/cln/dashboard/images/kceditpng.png
deleted file mode 100644
index 3bce9efd3..000000000
Binary files a/docs/cln/dashboard/images/kceditpng.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/kcremovekey.png b/docs/cln/dashboard/images/kcremovekey.png
deleted file mode 100644
index 1fd3cf0ac..000000000
Binary files a/docs/cln/dashboard/images/kcremovekey.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/kcstickytag.png b/docs/cln/dashboard/images/kcstickytag.png
deleted file mode 100644
index 2c58fb0e4..000000000
Binary files a/docs/cln/dashboard/images/kcstickytag.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/kernelcareactivationkeydetails_zoom70.png b/docs/cln/dashboard/images/kernelcareactivationkeydetails_zoom70.png
deleted file mode 100644
index 8ddb75221..000000000
Binary files a/docs/cln/dashboard/images/kernelcareactivationkeydetails_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/manage_group (1).png b/docs/cln/dashboard/images/manage_group (1).png
deleted file mode 100644
index 126b86d64..000000000
Binary files a/docs/cln/dashboard/images/manage_group (1).png and /dev/null differ
diff --git a/docs/cln/dashboard/images/manage_group.png b/docs/cln/dashboard/images/manage_group.png
deleted file mode 100644
index 126b86d64..000000000
Binary files a/docs/cln/dashboard/images/manage_group.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/manage_server_groups.png b/docs/cln/dashboard/images/manage_server_groups.png
deleted file mode 100644
index 126b86d64..000000000
Binary files a/docs/cln/dashboard/images/manage_server_groups.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/move_to_another_group.png b/docs/cln/dashboard/images/move_to_another_group.png
deleted file mode 100644
index 87ab95330..000000000
Binary files a/docs/cln/dashboard/images/move_to_another_group.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/new_group.png b/docs/cln/dashboard/images/new_group.png
deleted file mode 100644
index b557d9f46..000000000
Binary files a/docs/cln/dashboard/images/new_group.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/newclnclbackup_zoom70.png b/docs/cln/dashboard/images/newclnclbackup_zoom70.png
deleted file mode 100644
index 9c77a14c7..000000000
Binary files a/docs/cln/dashboard/images/newclnclbackup_zoom70.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/plus.png b/docs/cln/dashboard/images/plus.png
deleted file mode 100644
index 068932075..000000000
Binary files a/docs/cln/dashboard/images/plus.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/remove_server.png b/docs/cln/dashboard/images/remove_server.png
deleted file mode 100644
index 1736e83c4..000000000
Binary files a/docs/cln/dashboard/images/remove_server.png and /dev/null differ
diff --git a/docs/cln/dashboard/images/removeactivationkey.png b/docs/cln/dashboard/images/removeactivationkey.png
deleted file mode 100644
index 9cb5dad8b..000000000
Binary files a/docs/cln/dashboard/images/removeactivationkey.png and /dev/null differ
diff --git a/docs/cln/introduction/README.md b/docs/cln/introduction/README.md
index 0f19e3b57..4580c3116 100644
--- a/docs/cln/introduction/README.md
+++ b/docs/cln/introduction/README.md
@@ -31,7 +31,7 @@ Go to [https://cln.cloudlinux.com/console/auth/login](https://cln.cloudlinux.com
 This server license check tool allows you to check your server license status without entering to the CLN UI.
 Go to [https://cln.cloudlinux.com/console/check-license](https://cln.cloudlinux.com/console/check-license). Specify server IP address and click _Check server license_.
 
-![](./images/serverlicensecheck_zoom70.png)
+![](/images/cln/introduction/serverlicensecheck_zoom70.webp)
 
 :::tip Note
 Server License Check does not require signing in to the CLN portal - it is available for everyone.
diff --git a/docs/cln/introduction/images/serverlicensecheck_zoom70.png b/docs/cln/introduction/images/serverlicensecheck_zoom70.png
deleted file mode 100644
index f9f766f8c..000000000
Binary files a/docs/cln/introduction/images/serverlicensecheck_zoom70.png and /dev/null differ
diff --git a/docs/cln/payment_methods/README.md b/docs/cln/payment_methods/README.md
index be1084b2b..49078e2d1 100644
--- a/docs/cln/payment_methods/README.md
+++ b/docs/cln/payment_methods/README.md
@@ -11,7 +11,7 @@ Click _Billing → Payment Methods → Billing Information_ to go to _Billing In
 
 Here you can specify an email address for invoices. Specify an email and click _Save_. All invoices and notifications will be sent to this email. You can change it anytime. If you didn’t specify any email, billing information and invoices are available only in the CLN UI. You can download an invoice on the _Billing → Invoices_ page.
 
-![](./images/billinginformation_zoom70.png)
+![](/images/cln/payment_methods/billinginformation_zoom70.webp)
 
 
 ## Payment Method
@@ -28,7 +28,7 @@ The following methods are available:
 Only one payment method can be active in a single CLN account at a time.
 :::
 
-![](./images/billingpaymentmethods_zoom70.png)
+![](/images/cln/payment_methods/billingpaymentmethods_zoom70.webp)
 
 
 #### Credit or Debit Card
diff --git a/docs/cln/payment_methods/images/billinginformation_zoom70.png b/docs/cln/payment_methods/images/billinginformation_zoom70.png
deleted file mode 100644
index 7aa350a35..000000000
Binary files a/docs/cln/payment_methods/images/billinginformation_zoom70.png and /dev/null differ
diff --git a/docs/cln/payment_methods/images/billingpaymentmethods_zoom70.png b/docs/cln/payment_methods/images/billingpaymentmethods_zoom70.png
deleted file mode 100644
index 945dd7669..000000000
Binary files a/docs/cln/payment_methods/images/billingpaymentmethods_zoom70.png and /dev/null differ
diff --git a/docs/cln/purchase/README.md b/docs/cln/purchase/README.md
index 4f15ec7be..199441625 100644
--- a/docs/cln/purchase/README.md
+++ b/docs/cln/purchase/README.md
@@ -8,7 +8,7 @@ You cannot purchase both monthly and yearly licenses for the same product in a s
 
 To pay your total due, click _Pay Now_. The _Select payment method_ popup opens. Select desired payment method and proceed with the instructions on the screen.
 
-![](./images/billingpurchase_zoom70.png)
+![](/images/cln/purchase/billingpurchase_zoom70.webp)
 
 ## CloudLinux
 
@@ -18,7 +18,7 @@ Information given in this section applies to all licenses of CloudLinux OS famil
 
 To buy new CloudLinux license(s) go to _Billing → Purchase_. Here you can see the number of your Server Licenses (used/limits).
 
-![](./images/purchasecloudlinux_zoom70.png)
+![](/images/cln/purchase/purchasecloudlinux_zoom70.webp)
 
 Specify the number of server licenses and choose _Payment method_ (monthly or yearly). Your current price is displayed on the right side. The prices depend on the number of server licenses that you already have (or will have after the purchase). The bigger the number of server licenses, the lower the price. Then click _Add to Cart_. This will activate _Cart_ menu in the top right corner of the page. To complete your purchase, click _Cart_ icon, you will be redirected to the [Cart](/cln/purchase/#cart) page. To remove a purchase from the cart, click _Remove From Cart_ button.
 
@@ -26,7 +26,7 @@ Specify the number of server licenses and choose _Payment method_ (monthly or ye
 
 If you need to purchase CloudLinux OS Shared PRO licenses, you need to upgrade your CLN account into CloudLinux OS Shared PRO type:
 
-![](./images/key-based-clos-plus.png)
+![](/images/cln/purchase/key-based-clos-plus.webp)
 
 :::tip Note
 All CloudLinux OS licenses in your CLN account are automatically upgraded to CloudLinux OS Shared PRO if you perform the account type upgrade.
@@ -42,7 +42,7 @@ Information given in this section applies to all licenses of KernelCare family (
 
 To buy new KernelCare license(s) go to _Billing → Purchase_. Here you can see the number of your Server Licenses (used/limits).
 
-![](./images/purchasekernelcare_zoom70.png)
+![](/images/cln/purchase/purchasekernelcare_zoom70.webp)
 
 Specify the number of server licenses and choose _Payment method_ (monthly or yearly). Your current price is displayed on the right side. The prices depend on the number of server licenses that you already have (or will have after the purchase). The bigger the number of server licenses, the lower the price.
 
@@ -53,7 +53,7 @@ Then click _Add to Cart_ . This will activate _Cart_ menu in the top right corne
 
 To buy new Imunify360 license(s) go to _Billing → Purchase_. Here you can see the number of your Server Licenses (used/limits).
 
-![](./images/purchaseimunify360_zoom70.png)
+![](/images/cln/purchase/purchaseimunify360_zoom70.webp)
 
 Specify the number of server licenses for each License Type (Single User, Up to 30 users, Up to 250 users, Unlimited) and choose _Payment method_ (monthly or yearly). Your current price is displayed on the right side. The prices depend on the number of server licenses that you already have (or will have after the purchase). The bigger the number of server licenses, the lower the price.
 
@@ -67,7 +67,7 @@ Information given in this section applies to all licenses of ELS family (e.g. EL
 
 To buy new ELS license(s) go to _Billing → Purchase_. Here you can see the number of your Server Licenses (used/limits).
 
-![](./images/purchaseels_zoom70.png)
+![](/images/cln/purchase/purchaseels_zoom70.webp)
 
 Specify the number of server licenses and choose _Payment method_ (monthly or yearly). Your current price is displayed on the right side. The prices depend on the number of server licenses that you already have (or will have after the purchase). The bigger the number of server licenses, the lower the price.
 
@@ -77,7 +77,7 @@ Then click _Add to Cart_ . This will activate _Cart_ menu in the top right corne
 ## Cart
 
 
-![](./images/cartpage_zoom70.png)
+![](/images/cln/purchase/cartpage_zoom70.webp)
 
 
 When you have added some products to a cart, _Cart_ menu in the top right corner of the page is activated. To complete a purchase click _Cart_ icon. You will be redirected to a _Cart_ page, where you can see your _Total Due_ and _Due Date_ and all products you’ve added to cart.
diff --git a/docs/cln/purchase/images/billingpurchase_zoom70.png b/docs/cln/purchase/images/billingpurchase_zoom70.png
deleted file mode 100644
index 67ddac979..000000000
Binary files a/docs/cln/purchase/images/billingpurchase_zoom70.png and /dev/null differ
diff --git a/docs/cln/purchase/images/cartpage_zoom70.png b/docs/cln/purchase/images/cartpage_zoom70.png
deleted file mode 100644
index c48fafcc6..000000000
Binary files a/docs/cln/purchase/images/cartpage_zoom70.png and /dev/null differ
diff --git a/docs/cln/purchase/images/key-based-clos-plus.png b/docs/cln/purchase/images/key-based-clos-plus.png
deleted file mode 100644
index c158ece64..000000000
Binary files a/docs/cln/purchase/images/key-based-clos-plus.png and /dev/null differ
diff --git a/docs/cln/purchase/images/purchasecloudlinux_zoom70.png b/docs/cln/purchase/images/purchasecloudlinux_zoom70.png
deleted file mode 100644
index a5802c47e..000000000
Binary files a/docs/cln/purchase/images/purchasecloudlinux_zoom70.png and /dev/null differ
diff --git a/docs/cln/purchase/images/purchaseels_zoom70.png b/docs/cln/purchase/images/purchaseels_zoom70.png
deleted file mode 100644
index 7ca6f709b..000000000
Binary files a/docs/cln/purchase/images/purchaseels_zoom70.png and /dev/null differ
diff --git a/docs/cln/purchase/images/purchaseimunify360_zoom70.png b/docs/cln/purchase/images/purchaseimunify360_zoom70.png
deleted file mode 100644
index 04109b589..000000000
Binary files a/docs/cln/purchase/images/purchaseimunify360_zoom70.png and /dev/null differ
diff --git a/docs/cln/purchase/images/purchasekernelcare_zoom70.png b/docs/cln/purchase/images/purchasekernelcare_zoom70.png
deleted file mode 100644
index 587af3f81..000000000
Binary files a/docs/cln/purchase/images/purchasekernelcare_zoom70.png and /dev/null differ
diff --git a/docs/cln/shared/faq/README.md b/docs/cln/shared/faq/README.md
index c93d689dc..ad2f20191 100644
--- a/docs/cln/shared/faq/README.md
+++ b/docs/cln/shared/faq/README.md
@@ -25,11 +25,6 @@ As of now, only cPanel is supported. Plesk and DirectAdmin are not supported.
 
 Feel free to contact Support via [Support Portal](https://www.cloudlinux.com/support-portal/).
 
-### Can I use other CloudLinux products (Imunify360, KernelCare) with the CloudLinux subsystem on Ubuntu?
-
-During the first beta release you cannot use other CloudLinux products (Imunify360, KernelCare) with the CloudLinux
-subsystem on Ubuntu We're planning to add them in the upcoming releases.
-
 ### Can I use Docker with the CloudLinux subsystem on Ubuntu?
 
 You cannot use Docker with the CloudLinux subsystem on Ubuntu in the current version.
@@ -40,7 +35,7 @@ Yes, it is available.
 
 ### How to set up a PHP-fpm handler for the domain?
 
-Since the PHP-fpm handler is required to use WP Optimization Suite, you may need to configure it manually.
+Since the PHP-fpm handler is required to use AccelerateWP, you may need to configure it manually.
 
 These are configuration steps:
 
diff --git a/docs/cln/shared/features/README.md b/docs/cln/shared/features/README.md
index 6af98adf2..dd9a36dbb 100644
--- a/docs/cln/shared/features/README.md
+++ b/docs/cln/shared/features/README.md
@@ -134,7 +134,7 @@ in [this documentation](https://docs.cloudlinux.com/cloudlinux_os_components/#up
 To remove MySQL Governor, run the following command:
 
 ```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --delete
+/usr/share/lve/dbgovernor/mysqlgovernor.py --delete
 ```
 
 The script will install the original MySQL server, and remove MySQL Governor.
@@ -264,7 +264,7 @@ suphp, cgi**
 To install, run the following command:
 
 ```
-# apt install ea-php81*
+apt install ea-php81*
 ```
 
 #### alt-php with suphp, cgi
@@ -277,8 +277,8 @@ To install, follow these steps:
 2. Install packages (with `alt-php74` as an example):
 
    ```
-   # apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
-   # apt install alt-php74
+   apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
+   apt install alt-php74
    ```
 
 #### PHP Selector installation instructions
@@ -295,9 +295,9 @@ Only the following handlers can be used:
 To install, run the following commands:
 
 ```
-# apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
-# apt install cagefs
-# cagefsctl –-init
+apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
+apt install cagefs
+cagefsctl –-init
 ```
 
 ## Symlink owner match protection
@@ -329,19 +329,19 @@ available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#general-i
 Installation on cPanel servers with EasyApache 4:
 
 ```
-$ apt install liblsapi liblsapi-dev 
-$ apt install ea-apache24-mod-lsapi
-$ /usr/bin/switch_mod_lsapi --setup
-$ service httpd restart
+apt install liblsapi liblsapi-dev 
+apt install ea-apache24-mod-lsapi
+/usr/bin/switch_mod_lsapi --setup
+service httpd restart
 ```
 
 Installation on servers with no panel:
 
 ```
-$ apt install liblsapi liblsapi-dev 
-$ apt install mod-lsapi
-$ /usr/bin/switch_mod_lsapi --setup
-$ service apache2 restart
+apt install liblsapi liblsapi-dev 
+apt install mod-lsapi
+/usr/bin/switch_mod_lsapi --setup
+service apache2 restart
 ```
 
 ### Configuration
@@ -355,15 +355,15 @@ In case the site responds with the error: 503 Service unavailable.
 1. Be sure that /opt has drwxr-xr-x permissions. It can be fixed with the following command:
 
 ```
-$ chmod 755 /opt 
+chmod 755 /opt 
 ```
 
 2. Change the default folder for mod_lsapi socket:
 
 ```
-$ mkdir /var/mod_lsapi
-$ chown nobody.nobody /var/mod_lsapi
-$ chmod 755 /var/mod_lsapi
+mkdir /var/mod_lsapi
+chown nobody.nobody /var/mod_lsapi
+chmod 755 /var/mod_lsapi
 ```
 
 Add to /etc/apache2/conf.d/lsapi.conf new path:
@@ -375,7 +375,7 @@ lsapi_socket_path /var/mod_lsapi
 And restart service:
 
 ```
-$ service httpd restart
+service httpd restart
 ```
 
 ### Uninstall
@@ -383,13 +383,13 @@ $ service httpd restart
 Uninstall procedure for cPanel servers with EasyApache 4:
 
 ```
-$ /usr/bin/switch_mod_lsapi --uninstall
-$ apt remove liblsapi liblsapi-dev ea-apache24-mod-lsapi
+/usr/bin/switch_mod_lsapi --uninstall
+apt remove liblsapi liblsapi-dev ea-apache24-mod-lsapi
 ```
 
 Uninstall procedure for servers with no panel:
 
 ```
-$ /usr/bin/switch_mod_lsapi --uninstall
-$ apt remove liblsapi liblsapi-dev mod-lsapi
+/usr/bin/switch_mod_lsapi --uninstall
+apt remove liblsapi liblsapi-dev mod-lsapi
 ```
diff --git a/docs/cln/whmcs_advantage/.DS_Store b/docs/cln/whmcs_advantage/.DS_Store
new file mode 100644
index 000000000..4010e9a2e
Binary files /dev/null and b/docs/cln/whmcs_advantage/.DS_Store differ
diff --git a/docs/cln/whmcs_advantage/README.md b/docs/cln/whmcs_advantage/README.md
new file mode 100644
index 000000000..935ad6993
--- /dev/null
+++ b/docs/cln/whmcs_advantage/README.md
@@ -0,0 +1,260 @@
+# CloudLinux Advantage
+
+## Overview
+
+CloudLinux Advantage for WHMCS automatically configures "Configurable options" that can be linked to the Product/Service.
+
+When a client orders/upgrade a configurable option, a request will be sent to the server to change the CloudLinux features status.
+
+## Installation and Configuration
+
+### Installation and Update
+
+1. Your WHMCS must be properly configured to work with cron because sending requests to the server is sent by cron. [How to setting up the cron](https://docs.whmcs.com/Crons#Setting_up_the_Cron_Tasks).
+2. Plesk requires the installation of an additional [extension](./#plesk-extension).
+3. Download archive [https://repo.cloudlinux.com/plugins/whmcs-cl-advantage-plugin-latest.zip](https://repo.cloudlinux.com/plugins/whmcs-cl-advantage-plugin-latest.zip)
+
+<div class="notranslate">
+
+```
+wget -q https://repo.cloudlinux.com/plugins/whmcs-cl-advantage-plugin-latest.zip
+```
+
+</div>
+
+3. Unzip the archive to <span class="notranslate">`<whmcs_root>/modules/addons`</span> folder  
+
+<div class="notranslate">
+
+```
+unzip whmcs-cl-advantage-plugin-latest.zip -d <whmcs_root>/modules/addons
+```
+
+</div>
+
+4. If your hosting requires specific files permissions, change them accordingly in the folder: <span class="notranslate">`<whmcs_root>/modules/addons/cloudlinux_advantage`</span>
+5. Go to the admin panel page "WHMCS/System Settings/Addon Modules", activate "CloudLinuxAdvantage"
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-activate.webp)
+6. Configure addon:
+   1. Enable debug mode if necessary. Logs are stored in the "System Module Debug Log"
+   2. Allow administrator access to the addon page to view information about the status of the servers
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-configure.webp)
+
+:::tip Notes
+When upgrading to a new version, be sure to open the "WHMCS/System Settings/Addon Modules" page to apply the module changes.
+:::
+
+### Setting prices for "Configurable options"
+
+During addon activation, "Configurable options" AccelerateWP are created automatically (System settings/Configurable Option/Group name "AccelerateWP")
+
+:::tip Notes
+Don't change the name of the group, options and sub-options!
+:::
+
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-config-option.webp)
+
+In the AccelerateWP group settings, you need to configure:
+* Choose for which products (cPanel/Plesk/DirectAdmin) you can additionally order the service.
+* For the "accelerate_wp_premium|AccelerateWP Premium" option, set the cost.
+  * In the option price settings, there are two options, On and Off. Adjust prices as you see fit.
+* For the "accelerate_wp_cdn|AccelerateWP CDN" option, set the cost.
+   * In the option price settings, there are options: Off, 50 GB, 100 GB etc. Adjust prices as you see fit. You can hide unwanted tariffs using the "Hide" checkbox.
+
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-config-option-price.webp)
+
+
+### Product/Service setup
+
+Set up your service to work with "Configurable options" in the "System settings/Products/Services".
+
+1. Choose the payment type, One time or Recurrent.
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-product-price.webp)
+2. Make sure the product is associated with the Configurable option "AccelerateWP"
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-product-config-option.webp)
+3. Allow clients to upgrade Configurable options so they can purchase AccelerateWP for existing subscriptions.
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-product-upgrades.webp)
+4. Save changes.
+5. Existing customers can upgrade their AccelerateWP Premium settings by changing the order using the "Upgrade/Downgrade options" button.
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-ui-upgrade-config-option.webp)
+6. New customers will be able to select AccelerateWP settings during order creation
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-ui-new-config-option.webp)
+7. The administrator can manually change the setting of AccelerateWP by editing the purchased service by the customer
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-service-change-config-option.webp)
+
+### CloudLinuxAdvantage addon page
+
+Module page contains information about the state of active features
+
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-menu.webp)
+
+In case the configurable options were accidentally removed, you can re-install them on the CloudLinuxAdvantage settings page.
+
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page.webp)
+
+The table shows the queue and history of requests to the servers for which the AccelerateWP status change will be applied.
+
+:::tip Note
+Deactivating the addon will delete the table with the history of AccelerateWP activity on the servers.
+:::
+
+| Column  | Description                                                                                                                                                                                                                                                                                             |
+|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Service | What customer service does the zarpos refer to.                                                                                                                                                                                                                                                         |
+| Suite   | For which product the status will be changed.<br/>* Last status: previous status<br/> * Current status: current service status<br/>* Will set status: What status will be set. Depending on the selected configurable option "AccelerateWP" and the status of the users's service, the status may differ. |
+| Message | The last message about the operation. A detailed error may be displayed.                                                                                                                                                                                                                                |
+| Queue   | Availability of a queue for executing a cron request                                                                                                                                                                                                                                                    |
+| Action  | Send request manually<br/>Delete log entry from module table                                                                                                                                                                                                                                            |
+
+An example of sending requests to the server for selected options for the user.
+Each line is a report of sending a request to the server for each module that the user enabled or disabled.
+In case of an error, the response from the server will be displayed in the "Message" column. In this case, you need to fix the problem and manually start sending the request using the "Retry now" button.
+
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page-example-cron.webp)
+
+The "PUSH" button is displayed for "MyImunify - Account Protection" for a bulk operation to enable/disable the module on services for which the "MyImunify - Account Protection" option is linked.  
+
+By default, the first sorted sub-option for the "MyImunify - Account Protection" option will be sent to all users, and if the user has previously independently changed the sub-option for "MyImunify - Account Protection" using the WHMCS interface, his choice will be saved and also added to the request.  
+
+More details: [https://docs.imunify360.com/myimunify/#what-is-myimunify-for-hosting-admin](https://docs.imunify360.com/myimunify/#what-is-myimunify-for-hosting-admin)
+
+![](/images/cln/whmcs_advantage/whmcs-advantage-admin-addon-page-push-modal.webp)
+
+### FAQ
+
+#### How WHMCS communicates with end-server
+
+The addon tracks the change in the order and services of the client.  
+For those client services that have the configurable options "AccelerateWP", a request is sent to the server to change the status of AccelerateWP products.
+
+Requests are sent by cron once at the beginning of every minute. If the request fails, there will be a retry after 3 seconds.
+
+Information about the servers to which requests were sent can be viewed on the addon page.
+
+If an error occurs, you will be able to retry the request on the addon page.
+
+The CloudLinuxAdvantage enters the "Allowed" status when the client service's status is set to "Active" and the configurable options "On" is selected. In other cases, the status will be set to "Default" and the feature will be turned off for user.
+
+#### How to automatically open the "Upgrade/Downgrade Options" page?
+
+Parameters can be used to determine the billing account of the user in order to display proper page.
+WHMCS plugin already has automatic redirect to upgrade page, there is only needed to set upgrade-url
+to the root of your WHMCS instance.
+
+#### Update AccelerateWP 0.0.1 module to CloudLinuxAdvantage 0.0.2
+
+If you previously had version 0.0.1 of the module installed, you need to perform the following procedure:
+* Follow the process for installing the module version 0.0.2
+* The module will automatically update the database
+* After that, you can deactivate and remove the old module AccelerateWP 0.0.1 (`<whmcs_root>/modules/addons/acceleratewp`)
+* If you are using the [extension](./#plesk-extension), you need to update it to the latest version from the "accelerate-wp-1.5-1" package
+
+```
+https://your.whmcs.com/?m=cloudlinux_advantage&action=provisioning&username=democom&domain=demo.com&server_ip=10.51.0.10
+```
+
+| Parameter | Value                 | Description                                                                                                             |
+|-----------|-----------------------|-------------------------------------------------------------------------------------------------------------------------|
+| m         | cloudlinux_advantage  | Constant.                                                                                                               |
+| action    | provisioning          | Constant.                                                                                                               |
+| username  | democom               | Customer's account name.                                                                                                |
+| domain    | demo.com              | Customer's account primary domain.                                                                                      |
+| server_ip | 10.51.0.10            | Primary IP of the server where AccelerateWP is installed.                                                               |
+| suite     | accelerate_wp_premium | Optional. To display the settings of the specified suite only. Options: accelerate_wp_premium or accelerate_wp_cdn_pro. |
+
+## Plesk extension
+
+:::tip Note
+From version AccelerateWP 1.9-8, installation and activation of the extension for Plesk starts automatically.
+:::
+
+The extension adds the ability to execute the <span class="notranslate">`accelerate-wp-admin set-suite`</span> command to the Plesk XML API.
+
+Do not install it if you are not using AccelerateWP WHMCS billing integration.
+
+:::tip Note
+Requires Plesk version 17.0 or higher  
+The Plesk extension is available since accelerate-wp-1.3-2 version
+:::
+
+### Installation
+
+1. Install
+
+<div class="notranslate">
+
+```
+/usr/sbin/plesk bin extension -i /usr/share/cloudlinux/plesk-accelerate-wp-latest.zip
+```
+
+</div>
+
+2. Activate
+
+<div class="notranslate">
+
+```
+/usr/sbin/plesk bin extension --enable accelerate-wp
+```
+
+</div>
+
+### Deinstallation
+
+<div class="notranslate">
+
+```
+/usr/sbin/plesk bin extension -u accelerate-wp
+```
+
+</div>
+
+## End user workflow
+
+### How to update an existing order (service)
+
+1. Open the services page through the menu "Services - My services"
+2. Choose the service you need
+   ![](/images/cln/whmcs_advantage/whmcs-advantage-user-services.webp)
+3. Select the action "Upgrade/Downgrade Options"
+   ![](/images/cln/whmcs_advantage/whmcs-advantage-user-services-config-option-upgrade.webp)
+4. Choose a new configuration and place an order
+   ![](/images/cln/whmcs_advantage/whmcs-advantage-user-services-config-option-change.webp)
+5. Changes will occur automatically after 1 minute or after confirmation of the order by the service provider
+
+### How to checkout new order
+
+1. Select a service in the service provider's WHMCS portal
+2. A service with AccelerateWP enabled will display options to enable them
+   ![](/images/cln/whmcs_advantage/whmcs-advantage-user-order.webp)
+3. Changes will occur automatically after 1 minute or after confirmation of the order by the service provider
+4. After purchase, you need to manually activate the modules in the AccelerateWP panel
+
+## Changelog
+
+* 0.0.3
+  * Added the ability to purchase [MyImunify - Account protection](https://docs.imunify360.com/myimunify/#what-is-myimunify-for-hosting-admin)
+  * Add the ability to bulk send the statuses of custom options "MyImunify - Account protection" to the servers
+
+* 0.0.2
+  * Module renamed from Accelerate WP to CloudLinux Advantage
+  * Added the ability to purchase AccelerateWP CDN
+  * Improved display of service and server names on the AccelerateWP module page
+  * Added the ability to hide suites on the update options page
+  * Changed "m" parameter in provisioning link (upgrade url) from accelerate_wp to cloudlinux_advantage
+
+* 0.0.1
+  * Beta release
+
+## Requirements
+
+* 0.0.3
+  * Imunify360 ^7.4.0
+
+* 0.0.2
+  * WHMCS ^8.0
+  * accelerate-wp-1.5-1
+
+* 0.0.1
+  * WHMCS ^8.0
+  * accelerate-wp-1.3-2
\ No newline at end of file
diff --git a/docs/cln/whmcs_awp_plugin/.DS_Store b/docs/cln/whmcs_awp_plugin/.DS_Store
deleted file mode 100644
index ce9da34d8..000000000
Binary files a/docs/cln/whmcs_awp_plugin/.DS_Store and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/README.md b/docs/cln/whmcs_awp_plugin/README.md
deleted file mode 100644
index 98c306a81..000000000
--- a/docs/cln/whmcs_awp_plugin/README.md
+++ /dev/null
@@ -1,202 +0,0 @@
-# CloudLinux WHMCS AWP Plugin
-
-## Overview
-
-AccelerateWP Addon for WHMCS automatically configures "Configurable options" that can be linked to the Product/Service.
-
-When a client orders/upgrade a configurable option, a request will be sent to the server to set the Allowed/Default status for AccelerateWP Premium features.
-
-## Installation and Configuration
-
-### Installation
-
-1. Your WHMCS must be properly configured to work with cron because sending requests to the server is sent by cron. [How to setting up the cron](https://docs.whmcs.com/Crons#Setting_up_the_Cron_Tasks).
-2. Plesk requires the installation of an additional [extension](./#plesk-extension).
-3. Download archive [https://repo.cloudlinux.com/plugins/whmcs-awp-plugin-latest.zip](https://repo.cloudlinux.com/plugins/whmcs-awp-plugin-latest.zip)  
-
-<div class="notranslate">
-
-```
-wget -q https://repo.cloudlinux.com/plugins/whmcs-awp-plugin-latest.zip
-```
-
-</div>
-
-3. Unzip the archive to <span class="notranslate">`<whmcs_root>/modules/addons`</span> folder  
-
-<div class="notranslate">
-
-```
-unzip whmcs-awp-plugin-latest.zip -d <whmcs_root>/modules/addons
-```
-
-</div>
-
-4. If your hosting requires specific files permissions, change them accordingly in the folder: <span class="notranslate">`<whmcs_root>/modules/addons/acceleratewp`</span>
-5. Go to the admin panel page WHMCS/System settings/Addon Modules, activate "AccelerateWP Addon"
-![](./images/whmcs-awp-admin-addon-activate.png)
-6. Configure addon:
-   1. Enable debug mode if necessary. Logs are stored in the "System Module Debug Log"
-   2. Allow administrator access to the addon page to view information about the status of the servers
-![](./images/whmcs-awp-admin-addon-configure.png)
-
-### Setting prices for "Configurable options"
-
-During addon activation, "Configurable options" AccelerateWP are created automatically (System settings/Configurable Option/Group name "AccelerateWP")
-
-:::tip Notes
-Don't change the name of the group, options and sub-options!
-:::
-
-![](./images/whmcs-awp-admin-config-option.png)
-
-In the AccelerateWP group settings, you need to configure:
-* Choose for which products (cPanel/Plesk) you can additionally order the service.
-* For the "accelerate_wp_premium|AccelerateWP Premium" option, set the cost.
-
-In the option price settings, there are two options, On and Off. Adjust prices as you see fit.
-
-![](./images/whmcs-awp-admin-config-option-price.png)
-
-### Product/Service setup
-
-Set up your service to work with "Configurable options" in the "System settings/Products/Services".
-
-1. Choose the payment type, One time or Recurrent.
-![](./images/whmcs-awp-admin-product-price.png)
-2. Make sure the product is associated with the Configurable option "AccelerateWP"
-![](./images/whmcs-awp-admin-product-config-option.png)
-3. Allow clients to upgrade Configurable options so they can purchase AccelerateWP for existing subscriptions.
-![](./images/whmcs-awp-admin-product-upgrades.png)
-4. Save changes.
-5. Existing customers can upgrade their AccelerateWP Premium settings by changing the order using the "Upgrade/Downgrade options" button.
-![](./images/whmcs-awp-admin-ui-upgrade-config-option.png)
-6. New customers will be able to select AccelerateWP settings during order creation
-![](./images/whmcs-awp-admin-ui-new-config-option.png)
-7. The administrator can manually change the setting of AccelerateWP by editing the purchased service by the customer
-![](./images/whmcs-awp-admin-service-change-config-option.png)
-
-### AccelerateWP Addon page
-
-In case the configurable options "AccelerateWP" were accidentally removed, you can re-install them on the AccelerateWP addon settings page.
-
-![](./images/whmcs-awp-admin-addon-page.png)
-
-The table shows the queue and history of requests to the servers for which the AccelerateWP status change will be applied.
-
-:::tip Note
-Deactivating the addon will delete the table with the history of AccelerateWP activity on the servers.
-:::
-
-| Column  | Description                                                                                                                                                                                                                                                                                               |
-|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| Service | What customer service does the zarpos refer to.                                                                                                                                                                                                                                                           |
-| Suite   | For which product the status will be changed.<br/>* Last status: previous status<br/> * Current status: current service status<br/>* Will set status: What status will be set. Depending on the selected configurable option "AccelerateWP" and the status of the users's service, the status may differ. |
-| Message | The last message about the operation. A detailed error may be displayed.                                                                                                                                                                                                                                  |
-| Queue   | Availability of a queue for executing a cron request                                                                                                                                                                                                                                                      |
-| Action  | Send request manually                                                                                                                                                                                                                                                                                     |
-
-An example of a request that will be executed by cron
-![](./images/whmcs-awp-admin-addon-page-example-cron.png)
-
-An example of a request that failed
-![](./images/whmcs-awp-admin-addon-page-example-error.png)
-
-Example of a successful request
-![](./images/whmcs-awp-admin-addon-page-example-success.png)
-
-### FAQ
-
-#### How WHMCS communicates with end-server
-
-The addon tracks the change in the order and services of the client.  
-For those client services that have the configurable options "AccelerateWP", a request is sent to the server to change the status of AccelerateWP products.
-
-Requests are sent by cron once at the beginning of every minute. If the request fails, there will be a retry after 3 seconds.
-
-Information about the servers to which requests were sent can be viewed on the addon page.
-
-If an error occurs, you will be able to retry the request on the addon page.
-
-The AccelerateWP module enters the "Allowed" status when the client service's status is set to "Active" and the configurable options "On" is selected. In other cases, the status will be set to "Default" and the feature will be turned off for user.
-
-### How to automatically open the "Upgrade/Downgrade Options" page?
-
-Parameters can be used to determine the billing account of the user in order to display proper page.
-WHMCS plugin already has automatic redirect to upgrade page, there is only needed to set upgrade-url
-to the root of your WHMCS instance.
-
-```
-https://your.whmcs.com/?m=acceleratewp&action=provisioning&username=democom&domain=demo.com&server_ip=10.51.0.10
-```
-
-| Parameter | Value        | Description                                              |
-|-----------|--------------|----------------------------------------------------------|
-| m         | acceleratewp | Constant.                                                |
-| action    | provisioning | Constant.                                                |
-| username  | democom      | Customer's account name.                                 |
-| domain    | demo.com     | Customer's account primary domain.                       |
-| server_ip | 10.51.0.10   | Primary IP of the server where AccelerateWP is installed |
-
-## Plesk extension
-
-The extension adds the ability to execute the <span class="notranslate">`accelerate-wp-admin set-suite`</span> command to the Plesk XML API.
-
-Do not install it if you are not using AccelerateWP WHMCS billing integration.
-
-:::tip Note
-Requires Plesk version 17.0 or higher  
-The Plesk extension is available since accelerate-wp-1.3-2 version
-:::
-
-### Installation
-
-1. Install
-
-<div class="notranslate">
-
-```
-/usr/sbin/plesk bin extension -i /usr/share/cloudlinux/plesk-accelerate-wp-latest.zip
-```
-
-</div>
-
-2. Activate
-
-<div class="notranslate">
-
-```
-/usr/sbin/plesk bin extension --enable accelerate-wp
-```
-
-</div>
-
-### Deinstallation
-
-<div class="notranslate">
-
-```
-/usr/sbin/plesk bin extension -u accelerate-wp
-```
-
-</div>
-
-## End user workflow
-
-### How to update an existing order (service)
-
-1. Open the services page through the menu "Services - My services"
-2. Choose the service you need
-   ![](./images/whmcs-awp-user-services.png)
-3. Select the action "Upgrade/Downgrade Options"
-   ![](./images/whmcs-awp-user-services-config-option-upgrade.png)
-4. Choose a new configuration and place an order
-   ![](./images/whmcs-awp-user-services-config-option-change.png)
-5. Changes will occur automatically after 1 minute or after confirmation of the order by the service provider
-
-### How to checkout new order
-
-1. Select a service in the service provider's WHMCS portal
-2. Services with AccelerateWP enabled will display an option to configure AccelerateWP Premium.
-   ![](./images/whmcs-awp-user-order.png)
-3. Changes will occur automatically after 1 minute or after confirmation of the order by the service provider
\ No newline at end of file
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-activate.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-activate.png
deleted file mode 100644
index bea6efdf7..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-activate.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-configure.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-configure.png
deleted file mode 100644
index 01ca07692..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-configure.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-cron.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-cron.png
deleted file mode 100644
index 655d4bace..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-cron.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-error.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-error.png
deleted file mode 100644
index a3ec032b7..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-error.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-success.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-success.png
deleted file mode 100644
index 2c017bb64..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page-example-success.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page.png
deleted file mode 100644
index 68b4a5996..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-addon-page.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-config-option-price.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-config-option-price.png
deleted file mode 100644
index c748bb27d..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-config-option-price.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-config-option.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-config-option.png
deleted file mode 100644
index 171e75a0b..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-config-option.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-config-option.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-config-option.png
deleted file mode 100644
index 2fe9f971b..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-config-option.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-price.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-price.png
deleted file mode 100644
index 6930a9691..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-price.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-upgrades.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-upgrades.png
deleted file mode 100644
index e988471b5..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-product-upgrades.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-service-change-config-option.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-service-change-config-option.png
deleted file mode 100644
index 1daa0d0a4..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-service-change-config-option.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-ui-new-config-option.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-ui-new-config-option.png
deleted file mode 100644
index ba7e2ba98..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-ui-new-config-option.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-ui-upgrade-config-option.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-ui-upgrade-config-option.png
deleted file mode 100644
index dd1d99a05..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-admin-ui-upgrade-config-option.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-order.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-order.png
deleted file mode 100644
index ba7e2ba98..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-order.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services-config-option-change.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services-config-option-change.png
deleted file mode 100644
index 4d34e4cdc..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services-config-option-change.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services-config-option-upgrade.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services-config-option-upgrade.png
deleted file mode 100644
index dd1d99a05..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services-config-option-upgrade.png and /dev/null differ
diff --git a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services.png b/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services.png
deleted file mode 100644
index 2149c3409..000000000
Binary files a/docs/cln/whmcs_awp_plugin/images/whmcs-awp-user-services.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/README.md b/docs/cln/whmcs_plugin/README.md
index 1a870b252..e96b02988 100644
--- a/docs/cln/whmcs_plugin/README.md
+++ b/docs/cln/whmcs_plugin/README.md
@@ -42,8 +42,8 @@ In this section we will show you how to set up our products.
 
 
 1. Download CloudLinux Licenses For WHMCS:
-   * Production: [http://repo.cloudlinux.com/plugins/whmcs-cl-plugin-latest.zip](http://repo.cloudlinux.com/plugins/whmcs-cl-plugin-latest.zip)
-   * Beta: [http://repo.cloudlinux.com/plugins/whmcs-cl-plugin-beta.zip](http://repo.cloudlinux.com/plugins/whmcs-cl-plugin-beta.zip)
+   * Production: [https://repo.cloudlinux.com/plugins/whmcs-cl-plugin-latest.zip](https://repo.cloudlinux.com/plugins/whmcs-cl-plugin-latest.zip)
+   * Beta: [https://repo.cloudlinux.com/plugins/whmcs-cl-plugin-beta.zip](https://repo.cloudlinux.com/plugins/whmcs-cl-plugin-beta.zip)
 2. Upload archive to your WHMCS root folder and extract it. Files should automatically jump into their places.
 3. Run the following script:
 
@@ -71,9 +71,9 @@ If your hosting requires specific files permissions, change them accordingly in
 8. Click <span class="notranslate">_Save Changes_</span> to confirm.
 9. If you want to use a custom field to get the correct IP during order, you can fill the _Name of the custom IP_ field and add a custom field with the same name to the main product. For example:
    * linked CloudLinuxLicenses product
-      ![](./images/LinkedCLProducts.png)
+      ![](/images/cln/whmcs_plugin/LinkedCLProducts.webp)
    * main product
-      ![](./images/MainProduct.png)
+      ![](/images/cln/whmcs_plugin/MainProduct.webp)
 10.  Setup desired <span class="notranslate">_Auto-setup_</span> options.
 
 :::tip Notes
@@ -88,11 +88,11 @@ If your hosting requires specific files permissions, change them accordingly in
 1. Go to <span class="notranslate">_Setup → Add-on Modules_</span>, find <span class="notranslate">_CloudLinux Licenses Add-on_</span> and click <span class="notranslate">_Activate_</span> next to it.
 2. The next step is permitting access to this module. Click <span class="notranslate">_Configure_</span>, select admin roles and confirm by clicking <span class="notranslate">_Save Changes_</span>.
 
-![](./images/whmcsfig1imunify360licenseforwhmcs_zoom70.png)
+![](/images/cln/whmcs_plugin/whmcsfig1imunify360licenseforwhmcs_zoom70.webp)
 
 _Fig 1: Imunify360 License For WHMCS provisioning module configuration._
 
-![](./images/fig2imunify360licenseforwhmcsaddon_zoom70.png)
+![](/images/cln/whmcs_plugin/fig2imunify360licenseforwhmcsaddon_zoom70.webp)
 
 _Fig 2: Imunify360 License For WHMCS add-on module main page._
 
@@ -112,9 +112,9 @@ The following steps must be performed to prepare such connection:
 1. Go to <span class="notranslate">_Setup → Products/Services → Products Add-ons_</span> and click <span class="notranslate">_Add New Add-on_</span>.
 2. Fill addon name, set up billing cycle and price. Then tick <span class="notranslate">_Show on Order_</span> checkbox, assign add-on to the product and click <span class="notranslate">_Save Changes_</span>.
 
-![](./images/fig3configurationofproductaddon1_zoom50.png)
+![](/images/cln/whmcs_plugin/fig3configurationofproductaddon1_zoom50.webp)
 
-![](./images/fig3configurationofproductaddon2_zoom50.png)
+![](/images/cln/whmcs_plugin/fig3configurationofproductaddon2_zoom50.webp)
 
 _Fig 3: Configuration of product add-on, which will trigger license product adding._
 
@@ -122,7 +122,7 @@ _Fig 3: Configuration of product add-on, which will trigger license product addi
 1. Go to <span class="notranslate">_Add-ons → CloudLinux Licenses Add-on → Add-on Relations_</span> and click <span class="notranslate">_Add Relation_</span>.
 2. Select previously created product add-on and license product as shown below and click <span class="notranslate">_Add Relation_</span>.
 
-![](./images/fig4creatingrelation_zoom70.png)
+![](/images/cln/whmcs_plugin/fig4creatingrelation_zoom70.webp)
 
 _Fig 4: Creating relation between product add-on and provisioning module._
 
@@ -139,7 +139,7 @@ Please do not set up pricing for license provisioning product. In exchange, you
 2. Go to <span class="notranslate">_Add-ons → CloudLinux Licenses Add-on → Products Relations_</span> and click <span class="notranslate">_Add Relation_</span>.
 3. Select server provisioning product from the Main product drop-down list and license provisioning product from the <span class="notranslate">_Linked Product With License_</span> and click <span class="notranslate">_Add Relation_</span>.
 
-![](./images/fig5creatingrelationdirectly_zoom70.png)
+![](/images/cln/whmcs_plugin/fig5creatingrelationdirectly_zoom70.webp)
 
 _Fig 5: Creating relations directly between server and license provisioning modules._
 
@@ -164,7 +164,7 @@ Below we will show what steps to proceed to prepare such connection:
    * If you have changed <span class="notranslate">Dedicated IP</span> of the main product, then each related IP-based product will terminate an old IP license and create a new one for a new IP
 :::
 
-![](./images/fig6creatingrelationdirectlybetweenserverandlicenseprovisioningmodules_zoom70.png)
+![](/images/cln/whmcs_plugin/fig6creatingrelationdirectlybetweenserverandlicenseprovisioningmodules_zoom70.webp)
 
 _Fig 6: Creating relation directly between server and license provisioning modules._
 
@@ -181,7 +181,7 @@ In order to allow your client to decide whether he wants to order server with or
 3. Go to the <span class="notranslate">_Module Settings_</span> tab and select <span class="notranslate">_CloudLinux Licenses_</span> from <span class="notranslate">_Module Name_</span> drop-down.
 4. Fill <span class="notranslate">_Username_</span> and <span class="notranslate">_Password_</span> with your CloudLinux API access (API secret key) details and select desired license type from <span class="notranslate">_License Type_</span> drop-down. Click <span class="notranslate">_Save Changes_</span> to confirm.
 
-![](./images/fig6configurationofproductaddon_zoom50.png)
+![](/images/cln/whmcs_plugin/fig6configurationofproductaddon_zoom50.webp)
 
 _Fig 7: Configuration of product add-on with Provisioning Modules._
 
@@ -206,14 +206,14 @@ _Fig 7: Configuration of product add-on with Provisioning Modules._
   
 | |
 :-------------------------: 
-|![](./images/fig7setupkernelcarelicense_zoom70.png)|
+|![](/images/cln/whmcs_plugin/fig7setupkernelcarelicense_zoom70.webp)|
 |Fig 8.2: Setup KernelCare License.|
 
 * the _License Key Custom Field_ will be automatically added.
 
 | |
 :-------------------------: 
-|![](./images/fig8licensekeycustomfield_zoom70.png)|
+|![](/images/cln/whmcs_plugin/fig8licensekeycustomfield_zoom70.webp)|
 |Fig 9.2: License Key Custom Field is displayed while editing service.|
 
 ### Imunify360 Key Licenses
@@ -226,7 +226,7 @@ _Fig 7: Configuration of product add-on with Provisioning Modules._
    * in <span class="notranslate">_Max Users_</span> field enter the number of users per server
    * in <span class="notranslate">_Key Limit_</span> field enter the number of servers and click <span class="notranslate">_Save Changes_</span>
 
-![](./images/fig7imunify360productsettings_zoom50.png)
+![](/images/cln/whmcs_plugin/fig7imunify360productsettings_zoom50.webp)
 
 _Fig 8.3: Imunify360 Product settings._
 
@@ -238,7 +238,7 @@ _Fig 8.3: Imunify360 Product settings._
   * when <span class="notranslate">_Service Created Successfully_</span> message appears, you can edit <span class="notranslate">_Service_</span>
   * enter information and settings and click <span class="notranslate">_Save Changes_</span>
 
-![](./images/fig8imunify360servicesettings_zoom50.png)
+![](/images/cln/whmcs_plugin/fig8imunify360servicesettings_zoom50.webp)
 
 _Fig 9.3: Imunify360 Service settings._
 
@@ -248,18 +248,18 @@ _Fig 9.3: Imunify360 Service settings._
 
 All the services registered in the account are displayed in <span class="notranslate">_My Products & Services_</span> area. When you choose a particular Product/Service and click <span class="notranslate">_View Details_</span>, you can view Product information, change license key, view Add-ons or make changes in <span class="notranslate">Management Actions</span> section.
 
-![](./images/fig9clientproductslist_zoom50.png)
+![](/images/cln/whmcs_plugin/fig9clientproductslist_zoom50.webp)
 
 _Fig 10.1: Client’s products list._
 
-![](./images/fig10licensesdetails_zoom50.png)
+![](/images/cln/whmcs_plugin/fig10licensesdetails_zoom50.webp)
 
 _Fig 11: Licenses details._
 
 To order and purchase a new service do the following:
 * choose <span class="notranslate">_Category → Imunify360 Group_</span> and click <span class="notranslate">_Order Now_</span> on a particular service
 
-![](./images/fig11orderproductsgroup_zoom50.png)
+![](/images/cln/whmcs_plugin/fig11orderproductsgroup_zoom50.webp)
 
 _Fig 12: Order - Products group._
 
@@ -267,14 +267,14 @@ _Fig 12: Order - Products group._
 * enter information in <span class="notranslate">_Configure Server_</span> area
 * choose <span class="notranslate">_Available Add-ons_</span> and click <span class="notranslate">_Continue Shopping_</span> to proceed or <span class="notranslate">_Checkout_</span> to view service details
 
-![](./images/fig12orderconfigureproduct_zoom50.png)
+![](/images/cln/whmcs_plugin/fig12orderconfigureproduct_zoom50.webp)
 
 _Fig 13: Order - Configure product._
 
 * enter <span class="notranslate">_Promotional Code_</span> in a specific field if you have one
 * choose <span class="notranslate">_Payment Method_</span> and click <span class="notranslate">_Continue Shopping_</span>
 
-![](./images/fig13orderreviewandcheckout_zoom50.png)
+![](/images/cln/whmcs_plugin/fig13orderreviewandcheckout_zoom50.webp)
 
 _Fig 14: Order - review and checkout._
 
@@ -288,7 +288,7 @@ Only change IP address functionality have to be ordered manually.
 
 You can also view the details of created license.
 
-![](./images/fig14imunify360licensesforwhmcsadminarea_zoom50.png)
+![](/images/cln/whmcs_plugin/fig14imunify360licensesforwhmcsadminarea_zoom50.webp)
 
 _Fig 15: Imunify360 Licenses For WHMCS admin area._
 
@@ -298,12 +298,12 @@ _Fig 15: Imunify360 Licenses For WHMCS admin area._
 
 The clients are also able to view their servers license details. And as well as you, they are able to change IP address of their licenses.
 
-![](./images/fig15imunify360licensesforwhmcsclientarea_zoom50.png)
+![](/images/cln/whmcs_plugin/fig15imunify360licensesforwhmcsclientarea_zoom50.webp)
 
 _Fig 16: Imunify360 Licenses For WHMCS Client Area._
 
 To change IP address, click <span class="notranslate">_Change_</span> as shown on the screen above. Then specify IP address and click <span class="notranslate">_Save_</span>.
-![](./images/fig16changinglicenseipaddress_zoom70.png)
+![](/images/cln/whmcs_plugin/fig16changinglicenseipaddress_zoom70.webp)
 
 _Fig 17: Changing License IP Address._
 
@@ -314,7 +314,7 @@ _Fig 17: Changing License IP Address._
 You can view the list of all licenses owned by your client at our add-on → <span class="notranslate">_Licenses List_</span>.
 You can filter the list of licenses by client name, server provisioning products, license provisioning products and license IP address/Key.
 
-![](./images/fig18licenseslist_zoom70.png)
+![](/images/cln/whmcs_plugin/fig18licenseslist_zoom70.webp)
 
 _Fig 18: Licenses List._
 
@@ -325,7 +325,7 @@ _[for WHMCS 7.2.x and newer]_
 
 You can view list of all product add-on with <span class="notranslate">Provisioning Modules</span> licenses owned by your client at our addon → <span class="notranslate">Licenses List</span>.
 
-![](./images/fig19addonlicenseslist_zoom70.png)
+![](/images/cln/whmcs_plugin/fig19addonlicenseslist_zoom70.webp)
 
 _Fig 19: Add-on Licenses List._
 
diff --git a/docs/cln/whmcs_plugin/images/LinkedCLProducts.png b/docs/cln/whmcs_plugin/images/LinkedCLProducts.png
deleted file mode 100644
index ed8c4a872..000000000
Binary files a/docs/cln/whmcs_plugin/images/LinkedCLProducts.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/MainProduct.png b/docs/cln/whmcs_plugin/images/MainProduct.png
deleted file mode 100644
index f5166e87c..000000000
Binary files a/docs/cln/whmcs_plugin/images/MainProduct.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig10licensesdetails_zoom50.png b/docs/cln/whmcs_plugin/images/fig10licensesdetails_zoom50.png
deleted file mode 100644
index 26b60ad80..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig10licensesdetails_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig11orderproductsgroup_zoom50.png b/docs/cln/whmcs_plugin/images/fig11orderproductsgroup_zoom50.png
deleted file mode 100644
index 518830ba0..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig11orderproductsgroup_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig12orderconfigureproduct_zoom50.png b/docs/cln/whmcs_plugin/images/fig12orderconfigureproduct_zoom50.png
deleted file mode 100644
index 890dda0d7..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig12orderconfigureproduct_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig13orderreviewandcheckout_zoom50.png b/docs/cln/whmcs_plugin/images/fig13orderreviewandcheckout_zoom50.png
deleted file mode 100644
index dfb689d79..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig13orderreviewandcheckout_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig14imunify360licensesforwhmcsadminarea_zoom50.png b/docs/cln/whmcs_plugin/images/fig14imunify360licensesforwhmcsadminarea_zoom50.png
deleted file mode 100644
index 22fc4843f..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig14imunify360licensesforwhmcsadminarea_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig15imunify360licensesforwhmcsclientarea_zoom50.png b/docs/cln/whmcs_plugin/images/fig15imunify360licensesforwhmcsclientarea_zoom50.png
deleted file mode 100644
index 26b60ad80..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig15imunify360licensesforwhmcsclientarea_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig16changinglicenseipaddress_zoom70.png b/docs/cln/whmcs_plugin/images/fig16changinglicenseipaddress_zoom70.png
deleted file mode 100644
index 80aa0efc6..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig16changinglicenseipaddress_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig18licenseslist_zoom70.png b/docs/cln/whmcs_plugin/images/fig18licenseslist_zoom70.png
deleted file mode 100644
index 3f5a15e99..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig18licenseslist_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig19addonlicenseslist_zoom70.png b/docs/cln/whmcs_plugin/images/fig19addonlicenseslist_zoom70.png
deleted file mode 100644
index e7e2aa4c1..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig19addonlicenseslist_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig2imunify360licenseforwhmcsaddon_zoom70.png b/docs/cln/whmcs_plugin/images/fig2imunify360licenseforwhmcsaddon_zoom70.png
deleted file mode 100644
index 3f5a15e99..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig2imunify360licenseforwhmcsaddon_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig3configurationofproductaddon1_zoom50.png b/docs/cln/whmcs_plugin/images/fig3configurationofproductaddon1_zoom50.png
deleted file mode 100644
index 3f1416d90..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig3configurationofproductaddon1_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig3configurationofproductaddon2_zoom50.png b/docs/cln/whmcs_plugin/images/fig3configurationofproductaddon2_zoom50.png
deleted file mode 100644
index 836f3ab44..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig3configurationofproductaddon2_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig4creatingrelation_zoom70.png b/docs/cln/whmcs_plugin/images/fig4creatingrelation_zoom70.png
deleted file mode 100644
index f012f0eab..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig4creatingrelation_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig5creatingrelationdirectly_zoom70.png b/docs/cln/whmcs_plugin/images/fig5creatingrelationdirectly_zoom70.png
deleted file mode 100644
index fd1671321..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig5creatingrelationdirectly_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig6configurationofproductaddon_zoom50.png b/docs/cln/whmcs_plugin/images/fig6configurationofproductaddon_zoom50.png
deleted file mode 100644
index 86e6363dc..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig6configurationofproductaddon_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig6creatingrelationdirectlybetweenserverandlicenseprovisioningmodules_zoom70.png b/docs/cln/whmcs_plugin/images/fig6creatingrelationdirectlybetweenserverandlicenseprovisioningmodules_zoom70.png
deleted file mode 100644
index 8f7a92fed..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig6creatingrelationdirectlybetweenserverandlicenseprovisioningmodules_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig7imunify360productsettings_zoom50.png b/docs/cln/whmcs_plugin/images/fig7imunify360productsettings_zoom50.png
deleted file mode 100644
index 16e422d36..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig7imunify360productsettings_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig7setupkernelcarelicense_zoom70.png b/docs/cln/whmcs_plugin/images/fig7setupkernelcarelicense_zoom70.png
deleted file mode 100644
index 93b20c3f9..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig7setupkernelcarelicense_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig8imunify360servicesettings_zoom50.png b/docs/cln/whmcs_plugin/images/fig8imunify360servicesettings_zoom50.png
deleted file mode 100644
index 1637dd1c2..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig8imunify360servicesettings_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig8licensekeycustomfield_zoom70.png b/docs/cln/whmcs_plugin/images/fig8licensekeycustomfield_zoom70.png
deleted file mode 100644
index b903ae2f5..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig8licensekeycustomfield_zoom70.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/fig9clientproductslist_zoom50.png b/docs/cln/whmcs_plugin/images/fig9clientproductslist_zoom50.png
deleted file mode 100644
index 4000b8b66..000000000
Binary files a/docs/cln/whmcs_plugin/images/fig9clientproductslist_zoom50.png and /dev/null differ
diff --git a/docs/cln/whmcs_plugin/images/whmcsfig1imunify360licenseforwhmcs_zoom70.png b/docs/cln/whmcs_plugin/images/whmcsfig1imunify360licenseforwhmcs_zoom70.png
deleted file mode 100644
index 2cbdc21ab..000000000
Binary files a/docs/cln/whmcs_plugin/images/whmcsfig1imunify360licenseforwhmcs_zoom70.png and /dev/null differ
diff --git a/docs/cln/wpos-plugin/README.md b/docs/cln/wpos-plugin/README.md
index e9fbc03b4..5a6cf56c6 100644
--- a/docs/cln/wpos-plugin/README.md
+++ b/docs/cln/wpos-plugin/README.md
@@ -12,11 +12,15 @@ application in the `Software` section.
 
 If you use Plesk control panel, (1) trigger the side panel and (2) choose the AccelerateWP widget.
 
-![](/AWPPlesk.png)
+![](/images/wpos-plugin/AWPPlesk.webp)
+
+If you use DirectAdmin control panel, hover over the main menu and choose the AccelerateWP in the Extra Features group.
+
+![](/images/wpos-plugin/AWPDirectAdmin.webp)
 
 Click the application button and get into the AccelerateWP interface.
 
-![](/AWPUserUI.png)
+![](/images/wpos-plugin/AWPUserUI.webp)
 
 Each row in the table is the WordPress website that was found on server and each column is the
 optimization feature.
@@ -29,12 +33,12 @@ a best suited optimization feature to increase it significantly.
 Use the `Advice available` link to check advice details and click the `Apply advice`
 button to activate the feature.
 
-![](/AdviceReview.png)
+![](/images/wpos-plugin/AdviceReview.webp)
 
 After a couple of minutes, the feature will be activated and advice becomes `Applied`.
 Close the window and see `Active` link in the corresponding cell of the table.
 
-![](/AdviceApplied.png)
+![](/images/wpos-plugin/AdviceApplied.webp)
 
 If you still would like to try the feature on the website where advice was not issued,
 click on the gear icon and enable the feature.
@@ -48,29 +52,36 @@ optimizations.
 In order to start working with AccelerateWP feature, check if advice is available in the corresponding
 cell on the intersection of website and AccelerateWP column.
 
-![](/AWPUserUI.png)
+![](/images/wpos-plugin/AWPUserUI.webp)
 
 And click the "Apply advice" button to activate the AccelerateWP feature.
 
-![](/AdviceReview.png)
+![](/images/wpos-plugin/AdviceReview.webp)
 
 After a couple of minutes, the plugin will be installed.
 Login into the WordPress Admin and find the AccelerateWP in the list of active plugins.
 
-![](/WPPlugins.png)
+![](/images/wpos-plugin/WPPlugins.webp)
 
 Page caching will be enabled by default. Click the "Settings" link below the plugin name to configure additional
 options.
 
-![](/AWPPlugin.png)
+![](/images/wpos-plugin/AWPPlugin.webp)
 
 ### Limitations
 
-* Website must use PHP version 7.2 or higher.
-* WordPress version must be 5.6 and higher.
+* Website must use PHP version 7.3 or higher.
+* WordPress version must be 5.8 and higher.
 * Other WordPress Caching plugins must not be installed.
 * WordPress should not run in Multisite mode.
 
+:::tip Note
+Some AccelerateWP functions depend on external services. For the functions to work properly, the following URLs and IPs need to be allowed at all security levels:
+
+* https://awp-saas.cloudlinux.com
+* 213.239.192.204
+:::
+
 ## AccelerateWP feature additional options
 
 Find more additional options in WordPress admin page.
@@ -86,7 +97,7 @@ This option is necessary if you have some functionality only for mobile devices,
 
 The following diagram helps you understand if you need mobile caching.
 
-![](/MobileDiag.png)
+![](/images/wpos-plugin/MobileDiag.webp)
 
 :::tip Note
 If you use an additional layer of Cache (Varnish, NGINX , etc.) make sure it can distinguish between desktop and mobile
@@ -190,6 +201,7 @@ the `<style>` tag or via `Elementor` will not be affected by the LazyLoad.
 The following options allows working with LazyLoad
 
 * Enable LazyLoad for images
+* Enable for CSS background images
 * Enable LazyLoad for iframes and videos
 * Excluded images or iframes
 
@@ -317,13 +329,13 @@ To set up a CDN in the AccelerateWP you must register CDN zone and get pull zone
 
 After setting up the Pull zone, you will receive an address, for example: domain.b-cdn.net
 
-![](/CDNGeneral.png)
+![](/images/wpos-plugin/CDNGeneral.webp)
 
 Go to the WP Admin of your WordPress site, open the settings of the AccelerateWP (Step 1) and select the CDN section (
 Step 2). Select the option: Enable Content Delivery Network (Step 3) and fill in the "CDN CNAME(s)" field with the
 previously received domain.b-cdn.net address (Step 4).
 
-![](/CDNFlow.png)
+![](/images/wpos-plugin/CDNFlow.webp)
 
 Click the "Save changes" button (Step 5).
 
@@ -358,11 +370,11 @@ The Object caching feature is recommended to use in the following:
 In order to start working with Object caching feature, check if advice is available in the corresponding
 cell on the intersection of website and AccelerateWP Premium column.
 
-![](/AWPPremiumUI.png)
+![](/images/wpos-plugin/AWPPremiumUI.webp)
 
 And click the "Apply advice" button to activate the Object caching feature.
 
-![](/AWPPremiumReview.png)
+![](/images/wpos-plugin/AWPPremiumReview.webp)
 
 If you still would like to try the feature on the website where advice was not issued,
 click on the gear icon and enable the feature.
@@ -386,7 +398,7 @@ directly to the plugin installation.
 
 After a couple of minutes, the redis instance will be configured, plugin will be installed and activated.
 
-![](/AWPPremiumApplied.png)
+![](/images/wpos-plugin/AWPPremiumApplied.webp)
 
 Close the window and see "Active" link in the corresponding cell of the table.
 
@@ -412,11 +424,11 @@ When you see the `Advice available` link in the corresponding feature cell, it m
 AccelerateWP decided that this feature will significantly improve the performance of your website.
 Otherwise you see the `No advice` note.
 
-![](/FAQAdviceTable.png)
+![](/images/wpos-plugin/FAQAdviceTable.webp)
 
 Click the `Advice available` link and push `Apply advice` button to automatically enable the feature.
 
-![](/FAQAdviceReview.png)
+![](/images/wpos-plugin/FAQAdviceReview.webp)
 
 ### What should I do if I see both the "No advice" note and the "Incompatible" link?
 
@@ -426,9 +438,9 @@ Causes of the `Incompatible` note are always Limitations: [AccelerateWP](/wpos-p
 Each message has a small "how to", so you can try to fix them by yourself via control panel or WordPress Admin
 interface.
 
-![](/FAQIncompatible.png)
+![](/images/wpos-plugin/FAQIncompatible.webp)
 
-![](/FAQIncMessage.png)
+![](/images/wpos-plugin/FAQIncMessage.webp)
 
 ### What should I do if I see the "Misconfiguration"?
 
diff --git a/docs/shared/README.md b/docs/cloudlinuxos/README.md
similarity index 100%
rename from docs/shared/README.md
rename to docs/cloudlinuxos/README.md
diff --git a/docs/cloudlinuxos/alt-ea_packages/README.md b/docs/cloudlinuxos/alt-ea_packages/README.md
new file mode 100644
index 000000000..3e7d1a8d5
--- /dev/null
+++ b/docs/cloudlinuxos/alt-ea_packages/README.md
@@ -0,0 +1,123 @@
+# alt/ea packages
+
+[[toc]]
+
+
+## What are alt/ea packages?
+
+alt/ea packages are software packages or assemblies of software components developed and distributed by the CloudLinux software provider. 
+These packages typically consist of a set of tools, libraries, and utilities that enhance or supplement the functionality of the operating system. 
+"alt" and "ea" stand for "alternative" and "easyapache" respectively.
+
+EA PHP versions are provided by EasyApache 4. These PHP versions are included in cPanel installation and can be managed by Multi PHP Manager.
+
+### What are the main goals and purposes of alt/ea packages?
+
+CloudLinux enables two different PHP Management Systems on cPanel systems, both our own MultiPHP Manager, as well as their own "Select PHP Version" Alternative Hardened PHP system.
+
+CloudLinux additionally provides older, End-of-Life versions of ea-php with security patches applied beyond the support provided by cPanel on alternative operating systems.
+
+As of this time, PHP Selector currently offers users the ability to install and use PHP 5.2+ and the options for these versions are managed via CloudLinux's LVE Manager plugin in WHM.
+
+For more details regarding the PHP Selector, please refer to [CloudLinux's documentation](https://docs.cloudlinux.com/cloudlinuxos/cloudlinux_os_components/#general-information-and-requirements).
+
+ea-php is the PHP versions that cPanel packages and provides via the EasyApache 4 repositories. These are the standard versions that are included in a base installation of cPanel and are managed via the MultiPHP Manager in both cPanel & WHM interface.
+
+Older versions of ea-php are available on CloudLinux that are otherwise not available on CentOS/Ubuntu/AlmaLinux that have security patches provided by CloudLinux.
+
+Extensions and different versions of ea-php are managed via the [EasyApache 4 interface](https://support.cpanel.net/hc/en-us/articles/360051163134-How-To-Install-a-PHP-Version-in-WHM) in the WHM and settings are managed via [MutliPHP Manager](https://support.cpanel.net/hc/en-us/articles/360052492693).
+
+
+## Which operating systems are alt/ea packages designed for?
+
+alt/ea packages are designed for Linux operating systems:
+- CloudLinux (CentOS, AlmaLinux)
+- Ubuntu
+- Debian
+
+### Which versions of CloudLinux support these packages?
+
+ea-php: CloudLinux 6, 7, 8, 9 (CentOS 6, 7, 8; AlmaLinux 8, 9)
+
+### Which versions of Ubuntu support these packages?
+
+ea-php: no
+
+### Which versions of Debian support these packages?
+
+ea-php: no
+
+
+## What are the main interpreters used for alt/ea packages?
+
+- alt-ruby
+
+- alt-nodejs
+
+## alt-ruby
+
+The information will be added later.
+
+## alt-nodejs
+
+The information will be added later.
+
+## alt-python/ruby/nodejs End Of Life
+
+CloudLinux provides additional security support time of 
+php, python, ruby and nodejs after the end of support from the vendor.
+Below are tables with information about the time of security support from the vendor and from CloudLinux.
+
+*EOL - end of life
+
+*SST - security support time
+
+### alt-python EOL
+
+| Version | Released | EOL by vendor | SST by vendor (years) | EOL by CloudLinux | SST by Cloudlinux after vendor's EOL (years) |
+|:---:|:---:|:---:|:---:|:---:|:---:|
+| 2.7 |	29.09.2012 | 29.09.2017 | 5.0 |
+| 3.3 | 29.09.2012 | 29.09.2017	| 5.0 |
+| 3.4 | 15.03.2014 | 18.03.2019	| 5.0 |
+| 3.5 | 12.09.2015 | 13.09.2020	| 5.0 |
+| 3.6 | 22.12.2016 | 23.12.2021	| 5.0 |
+| 3.7 | 26.06.2018 | 27.06.2023	| 5.0 |
+| 3.8 | 14.10.2019 | 14.10.2024	| 5.0 |
+| 3.9 | 05.10.2020 | 05.10.2025	| 5.0 |
+| 3.10 | 05.04.2021	| 04.10.2026 | 5.4 |
+| 3.11 | 24.10.2022 | 24.10.2027 | 5.0 |
+| 3.12 | 02.10.2023	| 02.10.2028 | 5.0 |
+
+### alt-ruby EOL
+
+| Version | Released | EOL by vendor | SST by vendor (years) | EOL by CloudLinux | SST by Cloudlinux after vendor's EOL (years) |
+|:---:|:---:|:---:|:---:|:---:|:---:|
+| 1.8 | 24.02.2013 | 24.02.2016 | 3.0 |
+| 1.9 | 24.02.2013 | 24.02.2016 | 3.0 |
+| 2.0 | 24.02.2013 | 24.02.2016 | 3.0 |
+| 2.1 | 25.12.2013 | 31.03.2017 | 3.3 |
+| 2.2 | 25.12.2014 | 31.03.2018	| 3.3 |
+| 2.3 | 24.12.2015 | 31.03.2019	| 3.3 |
+| 2.4 | 23.12.2016 | 31.03.2020	| 3.3 |
+| 2.5 | 25.12.2017 | 31.03.2021	| 3.3 |
+| 2.6 | 25.12.2018 | 31.03.2022	| 3.3 |
+| 2.7 | 25.12.2019 | 31.03.2023	| 3.3 |
+| 3.0 | 25.12.2020 | 31.03.2024	| 3.3 |
+| 3.1 | 25.12.2021 | 31.03.2025	| 3.3 |
+| 3.2 | 25.12.2022 | 31.03.2026	| 3.3 |
+
+### alt-nodejs EOL
+
+| Version | Released | EOL by vendor | SST by vendor (years) | EOL by CloudLinux | SST by Cloudlinux after vendor's EOL (years) |
+|:---:|:---:|:---:|:---:|:---:|:---:|
+| 6	| 26.04.2016 | 30.04.2019 | 3.0 |
+| 8	| 30.03.2017 | 31.12.2019 | 2.8 |
+| 9	| 31.10.2017 | 30.06.2018 | 0.6 |
+| 10 | 24.04.2018 | 30.04.2021 | 3.0 |
+| 11 | 23.10.2018 | 30.06.2019 | 0.7 |
+| 12 | 23.04.2019 | 30.04.2022 | 3.0 |
+| 14 | 21.04.2020 | 30.04.2023 | 3.0 |
+| 16 | 20.04.2021 | 11.09.2023 | 2.3 |
+| 18 | 19.04.2022 | 30.04.2025 | 3.0 |
+| 19 | 18.10.2022 | 01.06.2023 | 0.6 |
+| 20 | 18.04.2023 | 30.04.2026 | 3.0 |
\ No newline at end of file
diff --git a/docs/cloudlinuxos/cloudlinux_installation/README.md b/docs/cloudlinuxos/cloudlinux_installation/README.md
new file mode 100644
index 000000000..a3ca6fd51
--- /dev/null
+++ b/docs/cloudlinuxos/cloudlinux_installation/README.md
@@ -0,0 +1,1513 @@
+# Installation
+
+[[toc]]
+
+## Hardware Compatibility
+
+CloudLinux OS supports all the hardware supported by RHEL/CentOS/AlmaLinux, with few exceptions. Exceptions are usually hardware that require binary drivers, and that doesn't have any open source alternatives.
+
+:::tip Note
+CloudLinux OS does not support ARM-based CPUs (e.g. Graviton).
+:::
+
+:::warning Warning
+In cases where your server hardware is incompatible with any version of RHEL/CentOS/AlmaLinux and CloudLinux OS or our components - we will not be able to provide assistance in adding such hardware support or solving possible issues related to such installation.
+:::
+
+:::tip Note
+Replacing the server hardware affects specifications and support for such hardware from CloudLinux OS end.
+It is most likely that the CloudLinux OS will stop working if you replace any hardware component on the server.
+
+Example: the same HDD/SSD/NVMe model will have a new UUID and CloudLinux OS is mapped to old UUID which break the boot procedure.
+
+In this case, we are not responsible for the CloudLinux OS operation and cannot assist you in restoring the server or adapting CloudLinux OS installation to the new hardware.
+:::
+
+There are some incompatible devices with **CL6**:
+
+| |  | |
+|-|--|-|
+|**Device** | **Binary Driver** | **Source**|
+|<span class="notranslate"> B110i Smart Array RAID controller </span> | hpahcisr | [https://h10032.www1.hp.com/ctg/Manual/c01754456](https://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01732801)|
+|<span class="notranslate"> B120i/B320i Smart Array SATA RAID Controller </span>  | hpvsa | [https://www8.hp.com/h20195/v2/GetPDF.aspx/c04168333.pdf](https://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01732801)|
+|<span class="notranslate"> SanDisk DAS Cache </span> |  | [https://www.dell.com/en-us/work/learn/server-technology-components-caching](https://www.dell.com/en-us/work/learn/server-technology-components-caching)|
+
+
+With RHEL8 (**CloudLinux OS 8/CloudLinux OS 7 Hybrid**), some devices are no longer supported.
+You can check the entire list here: [Hardware enablement considerations in adopting RHEL 8](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/considerations_in_adopting_rhel_8/hardware-enablement_considerations-in-adopting-rhel-8#removed-hardware-support_hardware-enablement)
+
+## Software Compatibility 
+
+CloudLinux OS is designed to maintain full binary compatibility with CentOS and Red Hat Enterprise Linux (RHEL). This means that any software, applications, or scripts that run on CentOS or RHEL can run on CloudLinux OS without modification. The operating system ensures broad compatibility with the vast ecosystem of Linux software, providing a seamless and stable environment for hosting providers and users transitioning from other enterprise Linux distributions. This compatibility extends to package management, system libraries, and core functionalities, making CloudLinux OS a reliable drop-in replacement that supports the same software stack as its counterparts.
+
+### ZFS
+
+CloudLinux 8+ provides limited support for ZFS, to the same degree as other RHEL-like distributions. More precisely, that means:
+
+1.  CloudLinux doesn't ship any prebuilt packages of `kmod-zfs` or `zfs-dkms`, etc. But it doesn't restrict customers from using [packages built by the OpenZFS Team](https://openzfs.github.io/openzfs-docs/Getting%20Started/RHEL-based%20distro/index.html) as they are known to be compatible and work fine on CloudLinux and AlmaLinux. In fact, we know that some of our customers are already using them for quite some time.
+    1.  The most recent CloudLinux conversion script (`cldeploy`) does not prevent the conversion of the system with `zfs` modules loaded
+1.  CloudLinux tries to keep kABI mostly compatible with RHEL's, so in case ZFS works with the RHEL-like kernel, but not with a similar CloudLinux one, we will accept tickets to fix that
+1.  Because ZFS is known to have some lag in adapting to kernel changes, we consider it the customer's responsibility to test the upgradeability of the environment to the most recent kernels and ZFS versions before upgrading the entire fleet.
+1.  Most CloudLinux features, like CageFS, should work fine with ZFS-backed mount points, and if not, we will try our best to provide fixes according to severity and demand
+
+:::tip CloudLinux features known to not work with ZFS:
+
+LVE IO Limits (as well as generic cgroups limits) don't work because the ZFS data path bypasses some of the kernel's internals. See related upstream tickets [1](https://github.com/canonical/lxd/issues/7627#issuecomment-671107839), [2](https://github.com/openzfs/zfs/issues/4275#issuecomment-1137332006), [3](https://github.com/openzfs/zfs/issues/1952#issuecomment-148471131). There is also an [ongoing attempt](https://github.com/openzfs/zfs/pull/16205) to implement per-dataset IO limits on the ZFS side. 
+:::
+
+
+## Getting License
+
+You will need a valid activation key - trial or paid - to be able to use your CloudLinux OS server.
+
+### Getting Trial License
+
+The trial activation key can be used to convert your server to CloudLinux OS. 
+
+:::tip Note
+The trial license subscription will work for 30 days.
+:::
+
+If you have any issues getting activation key or if you have any questions regarding using your 
+trial subscription – contact [sales@cloudlinux.com](mailto:sales@cloudlinux.com) and we will help.
+
+To get the activation key:
+
+1. Register with CloudLinux Network: [https://cln.cloudlinux.com/console/register/customer](https://cln.cloudlinux.com/console/register/customer) (skip it if you already registered)
+2. You will receive an email with activation link
+3. Login at [https://cln.cloudlinux.com/console/auth/login](https://cln.cloudlinux.com/console/auth/login)
+4. Choose the appropriate [CloudLinux edition](/introduction/) that fits your needs.
+5. Click on `Get Trial Activation Key`.
+
+You will get a key that looks like: `12314-d34463a182fede4f4d7e140f1841bcf2`.
+
+## Converting existing servers
+
+Sometimes it is required to convert already existing servers with **`CentOS`** or **`AlmaLinux`** and make them **`CloudLinux OS`**.
+
+It is easy to convert your existing installation through the cldeploy script. The process takes a few minutes and replaces just a handful of RPMs.
+
+:::warning
+Unlike [Fresh installation](#installing-new-servers), converting immediately requires a CloudLinux OS license.
+Please refer to the [guide](#license-activation) to get an activation key.
+:::
+
+### Requirements
+
+Currently supported OS for conversion:
+* CentOS 7
+* AlmaLinux OS 8, AlmaLinux OS 9
+* RockyLinux (installation only, no uninstall option)
+
+:::warning Unsupported OS for conversion:
+* CentOS 8
+* CentOS Stream
+:::
+
+Supported control panels:
+* cPanel ([Documentation](https://docs.cpanel.net/installation-guide/system-requirements-cloudlinux/))
+* Plesk
+* DirectAdmin
+* CyberPanel ([Documentation](https://community.cyberpanel.net/t/1-convert-cyberpanel-to-cloudlinux-os-and-install-cagefs/174))
+* InterWorx ([Documentation](https://appendix.interworx.com/current/nodeworx/plugins/install-use-cloudlinux-plugin-interworx.html))
+* Webuzo ([Documentation](https://webuzo.com/docs/installing-webuzo/install-cloudlinux-os/))
+
+:::warning Other control panels:
+Control panels not mentioned in the list of supported panels have native integration or integration done by the developer of the panel.
+We cannot guarantee the stability or correct operation of CloudLinux components on such panels.
+:::
+
+:::warning Warning:
+Some CloudLinux components may not be supported by the control panel itself or the control panel can have its own analog of such a component.
+You can verify this information when reviewing the system requirements for installing a specific CloudLinux component.
+:::
+
+
+#### Note: CentOS 8 is EOL
+
+CentOS 8 reached End Of Life (EOL) on December 31st, 2021.
+If you would like to convert from CentOS 8 to CloudLinux OS 8, do the following:
+
+* Convert CentOS 8 to AlmaLinux 8 using [almalinux-deploy](https://github.com/AlmaLinux/almalinux-deploy)
+* Convert AlmaLinux 8 to CloudLinux 8 using [cldeploy](/cloudlinux_installation/#cldeploy-explained)
+
+
+### Downloading and running conversion script
+
+#### Key-based activation
+
+If you want to use your activation key for activation, run the following commands:
+
+```
+yum install wget -y
+wget https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
+bash cldeploy -k ACTIVATION_KEY
+```
+
+Where `ACTIVATION_KEY` is the one that you got on previous step. 
+Your CloudLinux OS edition will be detected automatically based on the `ACTIVATION_KEY`. 
+
+#### IP-based activation
+
+If your reseller provides you with an IP-based license, run the following commands:
+
+To convert server into the CloudLinux OS edition:
+```
+sh cldeploy -i
+```
+
+To convert server into the CloudLinux OS Admin edition:
+```
+sh cldeploy -i --to-admin-edition
+```
+
+### Next steps
+After successful conversion, reboot your system by running the following command:
+
+```
+reboot
+```
+
+Once you reboot - your server should be running with CloudLinux OS LVE kernel.
+
+You may check the booted kernel with the following command:
+
+```
+uname -r
+```
+
+:::warning Note
+If after rebooting you do not see the CloudLinux kernel (the kernel has the abbreviation LVE in its name)
+then please consider check our [knowledge base](https://cloudlinux.zendesk.com/hc/en-us/) or 
+contact [support](https://cloudlinux.zendesk.com/hc/en-us/requests/new).
+:::
+
+:::warning Note
+SELinux is not supported on CloudLinux OS 6 and 7. SELinux is supported on CloudLinux OS 8+,
+but might not work or be compatible with control panels and various components.
+:::
+
+:::tip Note
+At the end of conversion from CentOS 7.x to CloudLinux OS 7, 
+the cldeploy script converts CloudLinux OS 7 to [CloudLinux OS 7 Hybrid](/cloudlinuxos/cloudlinux_os_kernel/#hybrid-kernels).
+:::
+
+Automatic hybridization will be performed for the AMD processors with the following CPU families:
+
+* Zen / Zen+ / Zen 2 / Zen 3
+* Hygon Dhyana
+
+Automatic hybridization may be skipped by passing extra option '--no-force-hybridize'.
+See also [advanced options for cldeploy](/cloudlinuxos/command-line_tools/#cldeploy).
+
+### Minor version step-down
+
+If you are attempting to convert an AlmaLinux machine of a minor OS version higher than the most recent CloudLinux minor version, you won't be able to perform a standard conversion, since the required packages will be missing.
+
+E.g. if the AlmaLinux OS 8.8 has already become publicly accessible, but the latest CloudLinux OS release is still 8.7, a standard conversion will not be possible.
+
+This situation typically occurs after a new AlmaLinux release and persists for several weeks.
+
+If you cannot wait until the corresponding CloudLinux release, you have an option of performing a step-down conversion, in which cldeploy will install the previous CloudLinux OS minor version on your system.
+
+For instance, AlmaLinux 8.8 can be converted to CloudLinux 8.7 in such a scenario.
+
+:::tip Note
+At the moment, the step-down conversion is only supported on systems with no panel, cPanel or Plesk.
+:::
+
+:::tip Note
+When performing a step-down conversion, cldeploy will add MySQL and MariaDB RPM packages to the Yum exclude list, in order to avoid downgrading them to CloudLinux-modified versions.
+
+Not doing so would risk rendering the databases non-functional, since MySQL explicitly does not support minor-version downgrades of its packages.
+
+If you want to update these packages on a step-down converted system, make sure to exclude/disable the CloudLinux package repositories while doing so.
+:::
+
+The cldeploy script will automatically detect the latest available CloudLinux version and, depending on the result, will either proceed normally or perform the step-down conversion.
+
+#### Updating systems from a step-down conversion
+
+Once the previously missing minor CloudLinux release becomes available, you will likely want to upgrade to it from a step-down conversion.
+
+To do so, you need to do the following:
+
+* Install the newest available **`cloudlinux-release`** package over the previous one.
+   * This will replace the AlmaLinux and CloudLinux package repository configuration files that were modified by cldeploy step-down conversion.
+   * Make sure the new files replace the old ones - check for presence of **`.rpmnew`** files in **/etc/yum.repos.d/**. If there are, replace old files with them.
+* Update the system normally.
+* If you encounter problems with updating MySQL or MariaDB packages, make sure the automatically created excludes were removed from **`/etc/yum.conf`** and/or **`/etc/dnf/dnf.conf`**.
+
+### Troubleshooting
+
+If you receive any troubles during the conversion process,
+please feel free to search our [knowledge base](https://cloudlinux.zendesk.com/hc/en-us)
+or contact our support and attach the conversion log (/var/log/cldeploy.log).
+
+### How to enable secure boot for CloudLinux 9
+
+#### Overview
+CloudLinux 9 uses a non-modified AlmaLinux 9 kernel.\
+To make secure boot work with CloudLinux's kernel module you need to enroll the CloudLinux secure boot key to your server.\
+This procedure shows how to do it
+
+#### Requirements
+* UEFI support
+* mokutil package installed
+* Access to server's BIOS options menu and boot screen
+
+:::tip **Note!**
+Starting from kernel 5.14.0-362.8.1.el9_3 and kmod_lve-2.1-20 the secure boot is available without importing CloudLinux key.  
+:::
+
+#### Procedure
+1. Download CloudLinux key:
+    ```
+    wget https://repo.cloudlinux.com/cloudlinux/SECURE-BOOT-KEY-cloudlinux-kmod.der
+    ```
+2. Import the key:
+    ```
+    mokutil --import SECURE-BOOT-KEY-cloudlinux-kmod.der
+    ```
+   When prompted, enter a password of your choice. This password will be used when enrolling the key into the MOK list.
+3. Reboot server. Upon rebooting, the "Shim UEFI key management" screen appears. Press any key withing 10 seconds to proceed.
+4. Enroll the key:
+
+* Select **`Enroll MOK`**\
+![Step 1](/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/1.webp)
+
+* Select **`View key 0`**\
+![Step 2](/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/2.webp)
+
+* Make sure that CloudLinux's Secure Boot Key information is displayed\
+
+* Press the **Esc key** when you are finished\
+![Step 3](/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/3.webp)
+
+* Select **`Continue`** on the screen from Step 2
+It will ask "Enrol the key(s)?".\
+Select **`Yes/OK`**\
+![Step 4](/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/4.webp)
+
+* Enter the password you used for importing the key (point 2.ii)\
+![Step 5](/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/5.webp)
+
+* Select **`Reboot`** (Older versions may say **`Continue boot`**)\
+![Step 6](/images/cloudlinuxos/cloudlinux_installation/cl9_secureboot/6.webp)
+
+* Now you can enable Secure Boot in BIOS options menu
+
+#### Useful Commands
+* `mokutil --sb-state` (to check current Secure Boot state);
+* `mokutil --list-enrolled` (to show list of enrolled keys).
+
+#### If you wish to remove the CloudLinux key from the MOK list, follow the instructions below
+:::warning Warning
+Do not delete the key when secure boot is enabled - server will be unable to boot
+:::
+
+1. Disable Secure Boot
+2. `mokutil --delete SECURE-BOOT-KEY-cloudlinux-kmod.der`
+3. `mokutil --list-delete` (to check the key to be deleted)
+4. Reboot the system and go through the MOK management process to complete the deletion from the MOK list.
+
+### Technical Details: cldeploy
+
+By its design, CloudLinux OS is very close to the upstream operating system - RHEL.
+This makes the conversion process relatively straightforward, requiring just one reboot. 
+
+#### Installation Process
+
+Here's what the cldeploy script does when you run it:
+
+* Backups the original repository settings into <span class="notranslate">`/etc/cl-convert-saved`</span>.
+* Backups RHEL system ID into <span class="notranslate">`/etc/cl-convert-saved`</span> (RHEL systems only).
+* Installs CloudLinux repository settings & imports CloudLinux RPM key.
+* Replaces redhat/centos-release/almalinux-release, redhat-release-notes, redhat-logos with CloudLinux versions.
+* Removes cpuspeed RPM (as it conflicts with CloudLinux limits).
+* Reinstall CloudLinux version of rhnlib/rhnplugin.
+* Checks for binary kernel modules, finds replacement if needed.
+* Detects OVH servers and fixes mkinitrd and possible boot issues.
+* Detects Linode servers and fixes grub issues.
+* Checks if LES is installed.
+* Checks that <span class="notranslate">`/etc/fstab`</span> has correct <span class="notranslate">`/dev/root`</span>
+* Checks for EFI and performs the necessary configuration.
+* Installs CloudLinux kernel, lve-utils, liblve, lve-stats RPMs.
+* Installs CloudLinux Manager for the supported control panels.
+* Installs mod_hostinglimits Apache module <sup>*</sup>:
+  * RPM install for supported control panels;
+  * On Plesk, replaces psa-mod_fcgid* with mod_fcgid;
+  * Perform CustomBuild tool execution for DirectAdmin.
+
+#### Uninstallation Process
+
+To uninstall CloudLinux, run the following command:
+```
+cldeploy -c
+```
+or equivalently:
+```
+cldeploy --uninstall
+```
+
+Here's what the cldeploy script does during uninstallation:
+
+* Restores CentOS/AlmaLinux repositories, and almalinux-release/centos-release/release-notes/logos.
+* Removes lve, mod_hostinglimits, lve-stats, lvemanager packages.
+* mod_hostinglimits RPM is removed.
+
+:::tip Note
+**cldeploy doesn't remove the kernel** to prevent condition when server has no kernels and wouldn't boot. Instead, script provide the instructions on how you could remove it manually later, when it is safe to do so.
+:::
+
+On cPanel servers, rebuild of Apache with EasyApache will complete the conversion back, but doesn't have to be performed immediately.<sup> *</sup>
+On DirectAdmin servers, rebuild of Apache with custombuild will complete the conversion back, but doesn't have to be performed immediately.
+
+More information is also available here: [Uninstall CloudLinux](/cloudlinuxos/cloudlinux_installation/#uninstalling).
+
+
+## Installing new servers
+
+All CloudLinux OS editions may be installed using one ISO and source. 
+
+:::tip 
+After installing CloudLinux OS from the ISO, you can switch between different editions by updating the license key. This flexibility allows you to upgrade or change editions without reinstalling the operating system. To switch editions: 
+
+1. **Obtain the new activation key** for the desired CloudLinux OS edition from the [CloudLinux Network (CLN)](https://cln.cloudlinux.com/console/auth/login).
+2. **Re-register your server** with the new key by running the following command as the root user:
+```
+rhnreg_ks --activationkey=<new_activation_key> --force
+```
+Replace `<new_activation_key>` with the activation key for your new edition.
+For IP-based licenses, use the following command instead:
+```
+clnreg_ks --force
+```
+:::
+
+### Downloading ISO
+
+You can download the latest CloudLinux OS ISO and use it to install CloudLinux OS on your server:
+
+* CloudLinux OS 9
+
+  * x86_64 version: [https://www.repo.cloudlinux.com/cloudlinux/9/iso/x86_64/](https://www.repo.cloudlinux.com/cloudlinux/9/iso/x86_64/)
+
+* CloudLinux OS 8
+
+  * x86_64 version: [https://www.repo.cloudlinux.com/cloudlinux/8/iso/x86_64/](https://www.repo.cloudlinux.com/cloudlinux/8/iso/x86_64/)
+
+* CloudLinux OS 7
+
+  * x86_64 version: [https://repo.cloudlinux.com/cloudlinux/7/iso/x86_64/](https://repo.cloudlinux.com/cloudlinux/7/iso/x86_64/)
+
+* CloudLinux OS 6
+
+  * x86_64 version: [https://repo.cloudlinux.com/cloudlinux/6/iso/x86_64/](https://repo.cloudlinux.com/cloudlinux/6/iso/x86_64/)
+  * i386 version: [https://repo.cloudlinux.com/cloudlinux/6/iso/i386/](https://repo.cloudlinux.com/cloudlinux/6/iso/i386/)
+
+
+There are multiple ISO types available:
+
+* `CloudLinux-*-boot.iso` - this ISO is made specifically for network installation and does not contain any packages inside.
+* `CloudLinux-*-dvd1.iso` - this one contains all packages from network installation repository, 
+  so you can set up any possible configuration without network access.
+* `CloudLinux-*-minimal.iso` - this one contains only minimal set of packages to set up light server without GUI and Development tools.
+
+### Installing using the Graphical User Interface
+
+The graphical installation interface is the preferred method of manually installing CloudLinux OS. 
+It allows you to have full control over all available settings, including disk partitioning and storage configuration.
+
+The graphical mode is used by default when you boot the system from the local media. Mount and boot the image, then follow the steps.
+
+#### Language Selection
+
+The first screen displayed is the language selection page.
+
+![Welcome page screenshot](/images/cloudlinuxos/cloudlinux_installation/welcome_page.webp)
+
+First, find your preferred language in the left column and than select locale in the right one.
+Selected language will be used during installation and also as a default language of the installed system.
+
+After you select your language and locale, click `Continue` to confirm your selection 
+and proceed to the [Installation Summary](#installation-summary). 
+
+#### Installation Summary
+
+The Installation summary screen is the main dashboard of your installation parameters. 
+Most of the options which can be configured during the installation can be accessed from here.
+
+![Welcome page screenshot](/images/cloudlinuxos/cloudlinux_installation/installation_summary.webp)
+
+The summary screen displays links to other configuration screens, those links can be in 
+several different states, which are graphically indicated:
+
+- Grayed out link means that the installer is currently updating this sections. 
+  Please wait a little before accessing this section. 
+
+- A warning symbol next to an icon means that a screen requires your attention before you start the installation.
+
+- Links without warning symbol mean that screen does not require your attention. 
+  You can still change your settings in these screens, but it is not required to start installation.
+
+#### Choosing the Installation Source
+
+The first thing that you should define is where the system will be installed from.
+There are basically two options:
+
+- ISO file
+- On the network
+
+
+#### On the Network Source
+
+Use this option to download packages to be installed from a network location. 
+This is the preferred way as you automatically receive all critical bug fixes that may affect installation.
+
+:::tip Note
+Most likely your network is not configured by default, 
+so you can see the URL configuration field greyed out, like on the screenshot below. Please refer to the Network Configuration screen first to set up a network connection.
+:::
+
+![Unavailable network source](/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_network.webp)
+
+The correct installation URL for CloudLinux OS is
+
+```text
+https://repo.cloudlinux.com/cloudlinux/8/BaseOS/x86_64/kickstart/
+```
+
+Type in installation URL in the corresponding field, configure proxy if needed and press the `Done` button.
+
+![](/images/cloudlinuxos/cloudlinux_installation/installation_source_network_address.webp)
+
+
+#### ISO File Source
+
+This option is primary used as an alternative when you don't have internet connection on a target server.
+It is only available if you downloaded Minimal or DVD ISO which contains some bundled packages in.
+
+![](/images/cloudlinuxos/cloudlinux_installation/installation_iso_source.webp)
+
+Tick the `ISO file` checkbox and press the `Done` button.
+
+#### Next Steps
+
+After clicking `Done`, you will be redirected to the [Installation Summary](./#installation-summary) screen
+where [Installation source](./#choosing-the-installation-source) and [Software Selection](./#software-selection) links
+will be greyed and the `Downloading package metadata` message wll be shown. 
+
+![](/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_working.webp)
+
+Please hold on while that message disappears and proceed to the [Software Selection](./#software-selection) section.
+
+![](/images/cloudlinuxos/cloudlinux_installation/installation_source_gray_done.webp)
+
+
+#### Software Selection
+
+The Software Selection screen allows you to choose a Base Environment and Add-ons. 
+These options control which software packages will be installed on your system during the installation process.
+
+This screen is only available if Installation Source is properly configured and only after the installer 
+has downloaded package metadata from the source.
+
+It is not possible to select specific packages during a manual installation, you can only select pre-defined environments and add-ons.
+
+You should choose the CloudLinux OS, and the edition that matches your license will be set up at this stage:
+ ![](/images/cloudlinuxos/cloudlinux_installation/software_selection.webp)
+
+
+Then, on the right side of the screen, select one or more add-ons which you want to install by ticking the
+check boxes next to each add-on.
+
+#### Final Preparations
+
+Installation is almost done, all you need to do is to [configure your installation target](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-disk-partitioning-setup-x86)
+using the `Installation Destination` menu and create your [Root Password](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-configuration-progress-menu-x86#sect-account-configuration-x86).
+
+Doing that, the `Begin installation` button becomes blue, so click it.
+
+![](/images/cloudlinuxos/cloudlinux_installation/installation_available.webp) 
+
+After this point, the installation process actually starts and changes are being made to your selected disks.
+It is not possible to go back to the Installation Summary and change any settings configured there; 
+if you need to do so, you must wait for the installation process to finish, reboot your system, log in and change your settings 
+on the installed system.
+
+The bottom of the screen shows a progress bar and a message informing you of the current progress of the installation. 
+When the installation finishes, you can press the Finish installation button
+to reboot your computer and log in to your newly installed system.
+
+:::warning Warning
+Before you finish the installation and reboot, either remove the media
+which you used to start the installation, or make sure that your system tries to boot 
+from the hard drive before trying removable media. Otherwise, your computer will start the installer again instead of the installed system.
+:::
+
+![](/images/cloudlinuxos/cloudlinux_installation/installation_done.webp)
+
+#### Next Steps
+
+Reboot your system, login and check EULA which is located in the `/usr/share/cloudlinux-release/EULA`.
+
+Next, [activate your installation](#license-activation) in order to get updates.
+
+
+### License Activation
+
+To register your **CloudLinux OS** server with CloudLinux Network using activation key, run the following command:
+
+```
+yum install rhn-setup
+/usr/sbin/rhnreg_ks --activationkey=<activation key>
+```
+
+Where &lt;activation key&gt; is like `1231-2b48feedf5b5a0e0609ae028d9275c93`
+
+If you have IP based license, use the `clnreg_ks` command instead:
+
+```
+yum install rhn-setup
+/usr/sbin/clnreg_ks --force
+```
+
+
+## Cloud Provider Images (CloudLinux OS Legacy (Shared) only)
+
+* [OpenStack QEMU/KVM](https://download.cloudlinux.com/cloudlinux/images/#kvm-tab)
+* [VMware](https://download.cloudlinux.com/cloudlinux/images/#vmware-tab)
+* [Google Cloud Engine](https://download.cloudlinux.com/cloudlinux/images/#gce-tab)
+* [Amazon Web Services](https://download.cloudlinux.com/cloudlinux/images/#aws-tab)
+* [Alibaba Cloud](https://download.cloudlinux.com/cloudlinux/images/#ali-tab)
+* [Xen](/cloudlinux_installation/#installing-new-servers)
+* [CloudLinux Azure Images](./#cloudlinux-azure-images)
+
+### CloudLinux Azure Images
+
+We build and release CloudLinux 7.9 and CloudLinux 8.6 for Azure and upload to the [Mircosoft Azure Community Galleries](https://learn.microsoft.com/en-us/azure/virtual-machines/share-gallery-community?tabs=cli).
+
+Images are built in both types Azure supports: *gen1 (BIOS based)* and *gen2 (UEFI based)*. CloudLinux Images could be found in the following regions: *West Europe, Germany West Central, Southeast Asia, East US, West US 2*. A publisher of CloudLinux Images in Azure is *cloudlinux*. Community gallery name is *cloudlinux-cbc76afd-63bc-4f6e-b801-65bd2f1ab0a0*.
+
+How to use CloudLinux Image in Azure:
+
+* When creating Virtual Machine, while choosing what OS should be used, click See al images.
+   ![](/images/cloudlinuxos/cloudlinux_installation/AzureVirt.webp)
+* Switch from Marketplace to Community images.
+   ![](/images/cloudlinuxos/cloudlinux_installation/AzureSwitch.webp)
+* Search by typing *cloudlinux* or filter by *Publisher* which is also *cloudlinux* or *Azure Compute Gallery* which is *cloudlinux-cbc76afd-63bc-4f6e-b801-65bd2f1ab0a0*.
+   ![](/images/cloudlinuxos/cloudlinux_installation/AzureSearch.webp)
+* Choose a suitable image. Check that the Publisher of the selected images is *cloudlinux* and Public Gallery Name is *cloudlinux-cbc76afd-63bc-4f6e-b801-65bd2f1ab0a0*.
+
+
+### Xen Images
+
+:::tip Note
+We do not provide Xen images of CloudLinux OS Legacy (Shared) anymore, use [ISO images](#installing-new-servers) instead 
+:::
+
+## Provider-specific guidelines (CloudLinux OS Legacy (Shared) only)
+
+* [Amazon Web Services](/cloudlinuxos/cloudlinux_installation/#aws)
+* [H-Sphere](/cloudlinuxos/cloudlinux_installation/#h-sphere)
+* [DigitalOcean](/cloudlinuxos/cloudlinux_installation/#digitalocean)
+* [Linode](/cloudlinuxos/cloudlinux_installation/#linode)
+* [Virtuozzo and OpenVZ](/cloudlinuxos/cloudlinux_installation/#virtuozzo-and-openvz)
+
+### AWS
+
+CloudLinux OS Legacy (Shared) image list can be found *[here](https://download.cloudlinux.com/cloudlinux/images/#aws-tab)*.
+
+If you are going to use CloudLinux OS Legacy (Shared) with cPanel image, you may find useful the following *[article](https://cloudlinux.zendesk.com/hc/en-us/articles/360014130320-How-to-get-CloudLinux-OS-with-cPanel-AMI-working-on-AWS)*.
+
+### H-Sphere
+
+* [Requirements](/cloudlinuxos/cloudlinux_installation/#requirements)
+* [Converting from mod_fastcgi to mod_fcgid](/cloudlinuxos/cloudlinux_installation/#converting-from-mod-fastcgi-to-mod-fcgid)
+* [Older versions of H-Sphere](/cloudlinuxos/cloudlinux_installation/#older-versions-of-h-sphere)
+
+:::tip Note
+For H-Sphere 3.5+
+Please note, that CageFS and PHP Selector are not supported for H-Sphere
+:::
+
+#### Requirements
+
+1. CloudLinux OS with liblve 0.8 or later.
+2. Apache 2.2.x or 1.3.
+3. mod_suexec should be enabled.
+
+To achieve optimal performance, we recommend to [convert from mod_fastcgi to mod_fcgid](/cloudlinuxos/cloudlinux_installation/#converting-from-mod-fastcgi-to-mod-fcgid).
+
+There is no need to install mod_hostinglimits – it comes built in with H-Sphere. Once you load kernel from CloudLinux OS Legacy (Shared) with liblve 0.8 or later – it will get enabled.
+
+You can check if LVE is enabled by running:
+<span class="notranslate"> </span>
+```
+ps aux | grep httpd | grep DLIBLVE
+```
+
+If you see no output, it means that Apache didn't pick up LVE. Try checking file <span class="notranslate">` /hsphere/cloudlinuxos/scripts/apache-get-env.sh`</span>
+
+The following lines should be there:
+<div class="notranslate">
+
+```
+if [ -e /usr/lib64/liblve.so.0 -o -e /usr/lib/liblve.so.0 ]; then
+APENV_DSSL="$APENV_DSSL -DLIBLVE"
+fi
+```
+
+</div>
+
+If those strings are absent, you should add it, after:
+
+<div class="notranslate">
+
+```
+else
+APENV_DSSL='-DSSL'
+fi
+###
+```
+
+</div>
+
+and before:
+
+<div class="notranslate">
+
+```
+# this is used by apacheGetEnv.pm perl module
+if [ "$1" = 'show' ] ; then
+set | egrep "^APENV_"
+fi
+```
+
+</div>
+
+strings.
+
+Restart Apache afterward.
+
+:::tip Note
+Don't forget to [convert from mod_fastcgi to mod_fcgid](/cloudlinuxos/cloudlinux_installation/#converting-from-mod-fastcgi-to-mod-fcgid).
+:::
+
+#### Converting from mod_fastcgi to mod_fcgid
+
+To achieve the best results in productivity and stability we recommend converting from <span class="notranslate">`mod_fastcgi`</span> to <span class="notranslate">`mod_fcgid`</span>.
+
+:::tip Note
+H-Sphere 3.6.3+
+:::
+
+1. Download our fcgi.conf file:
+   
+<div class="notranslate">
+
+```
+wget -O /hsphere/local/config/httpd2/fcgi.conf https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/fcgi.conf
+```
+</div>
+
+2. Edit <span class="notranslate">`~httpd2/conf/extra/httpd-hostinglimits.conf`</span> to the following state:
+   
+<div class="notranslate">
+
+```
+######
+LoadModule hostinglimits_module /hsphere/cloudlinuxos/apache2/modules/mod_hostinglimits.so
+
+<IfModule mod_hostinglimits.c>
+SkipErrors Off
+AllowedHandlers cgi-script %php% fcgid-script application/x-miva-compiled
+DenyHandlers hs-php5-script hs-php53-script hs-php54-script
+Include /hsphere/local/config/httpd2/fcgi.conf
+ 
+</IfModule>
+#######
+```
+</div>
+
+3. Go to <span class="notranslate">`P.Servers > web server [Config]`</span> and be sure to have enabled:
+   * <span class="notranslate">`apache_version=2`</span>
+   * <span class="notranslate">`apache_mpm=prefork`</span>
+   * <span class="notranslate">`apache_fastcgi`</span>
+   * <span class="notranslate">`apache_fcgid`</span>
+   * <span class="notranslate">`PHP version/mode: php_fastcgi`*</span>
+
+:::tip Note
+*No changes needed to `httpd.conf.tmpl.custom` or `usermodule.phpmode` as this version provides its own mod_fcgid.
+:::
+
+#### Older versions of H-Sphere
+
+1. Compile mod_fcgid module:
+   
+<div class="notranslate">
+
+```
+yum install gcc liblve-devel zlib-devel openssl-devel 
+wget https://apache.osuosl.org//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
+tar zxvf mod_fcgid-2.3.9.tar.gz
+cd mod_fcgid-2.3.9/
+APXS=/hsphere/cloudlinuxos/apache2/bin/apxs ./configure.apxs 
+make
+mv modules/fcgid/.libs/mod_fcgid.so /hsphere/cloudlinuxos/apache2/modules
+```
+</div>
+
+2. Download and apply patch [https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/usemodule.phpmode.patch](https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/usemodule.phpmode.patch) to `/hsphere/local/config/scripts/usemodule.phpmode`:
+   
+ <div class="notranslate">
+
+```
+wget https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/usemodule.phpmode.patch 
+patch /hsphere/local/config/scripts/usemodule.phpmode usemodule.phpmode.patch
+```
+
+</div>
+
+3. If `/hsphere/local/config/httpd2/httpd.conf.tmpl.custom` does not exists – create it:
+   
+<div class="notranslate">
+
+```
+cp -rp /hsphere/local/config/httpd2/httpd.conf.tmpl /hsphere/local/config/httpd2/httpd.conf.tmpl.custom
+```
+</div>
+
+Download and apply patch [https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/httpd.conf.tmpl.patch](https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/httpd.conf.tmpl.patch) to the <span class="notranslate">`/hsphere/local/config/httpd2/httpd.conf.tmpl.custom`</span>:
+
+<div class="notranslate">
+
+```
+wget https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/httpd.conf.tmpl.patch 
+patch --fuzz=3 /hsphere/local/config/httpd2/httpd.conf.tmpl.cusom  httpd.conf.tmpl.patch
+```
+
+</div>
+
+4. Download pre-defined config file [https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/fcgi.conf](https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/fcgi.conf) to `/hsphere/local/config/httpd2`:
+
+<div class="notranslate">
+
+```
+wget -O /hsphere/local/config/httpd2/fcgi.conf https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/fcgi.conf
+```
+
+</div>
+
+5. Download our wrapper file [https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/php-wrapper](https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/php-wrapper) into <span class="notranslate">`/hsphere/cloudlinuxos/php5/bin/`</span> and make it executable:
+
+<div class="notranslate">
+
+```
+wget -O /hsphere/cloudlinuxos/php5/bin/php-wrapper https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/php-wrapper
+chmod 755 /hsphere/cloudlinuxos/php5/bin/php-wrapper
+```
+
+</div>
+
+6. Change permissions for <span class="notranslate">`/hsphere/local/home`</span> to 755:
+   
+<div class="notranslate">
+
+```
+chmod 755 /hsphere/local/home
+```
+
+</div>
+
+7. Edit <span class="notranslate">`~httpd2/conf/extra/httpd-hostinglimits.conf`</span> and add DenyHandlers, so section will look like:
+   
+<div class="notranslate">
+
+```
+<IfModule mod_hostinglimits.c>
+SkipErrors Off
+AllowedHandlers cgi-script %php% fcgid-script application/x-miva-compiled
+DenyHandlers hs-php5-script hs-php53-script hs-php54-script 
+</IfModule>
+```
+
+</div>
+
+8. Configure physical server from H-Sphere admin > E.Manager > P.Servers > server_name [parameters] icon, settings should be:
+ 
+<div class="notranslate">
+
+```
+apache_version = 2
+apacha_fastcgi = yes
+apache_status = yes
+```
+</div>
+
+
+![](/images/cloudlinuxos/cloudlinux_installation/sshot-2013-07-30-21-25-48.webp)
+
+9. Set PHP configuration to:
+    
+<div class="notranslate">
+
+```
+php_libphp5 enabled but not default
+php_fastcgi5 enabled and is default
+```
+</div>
+
+![](/images/cloudlinuxos/cloudlinux_installation/sshot-2013-07-30-21-31-05.webp)
+
+Other options could be configured according to personal needs.
+
+When done - click <span class="notranslate">_SUBMIT_</span> to apply changes.
+
+:::tip Note
+After updating H-Sphere software on web server with CloudLinux OS Legacy (Shared) you need to re-apply step 2 (patch usemodule.phpmode) and restart apache with `/hsphere/cloudlinuxos/scripts/apache-restart` script.
+:::
+
+### DigitalOcean
+
+* [Adding CloudLinux OS image to DigitalOcean](/cloudlinuxos/cloudlinux_installation/#adding-cloudlinux-os-image-to-digitalocean)
+
+How to make CloudLinux OS work on DigitalOcean:
+
+DigitalOcean doesn't support custom kernels. The droplet (VM) always runs DigitalOcean's kernel. CloudLinux OS requires its own kernel. To enable CloudLinux OS work on DigitalOcean droplets, we provide ability to boot into CloudLinux OS kernel using `kexec` functionality.
+
+How does this work:
+
+* <span class="notranslate"> cldeploy </span> script checks for presence of <span class="notranslate">`/etc/digitalocean`</span>. If the file detected, we assume that this is DigitalOcean droplet;
+* <span class="notranslate">`kexec-tools`</span> are installed;
+* <span class="notranslate">`kexec`</span> script will be created in <span class="notranslate">`/etc/rc.d/init.d/`</span> and set to run right after <span class="notranslate">`rc.sysinit`</span>.
+
+When executed, script <span class="notranslate">`/etc/rc.d/init.d/kexec`</span> detects the latest installed CloudLinux OS kernel, and loads that kernel.
+
+If the system cannot boot into CloudLinux OS kernel (due to any reason), subsequent reboot will skip <span class="notranslate">`kexec`</span>, allow droplet to boot into DigitalOceans' kernel.
+
+To disable booting into Cloudlinux OS kernel, run:
+
+<div class="notranslate">
+
+```
+chkconfig --del kexec
+```
+</div>
+
+To re-enable booting into CloudLinux OS kernel, run:
+<div class="notranslate">
+
+```
+chkconfig --add kexec
+```
+</div>
+
+#### Adding CloudLinux OS image to DigitalOcean
+
+Custom images are Linux distributions that have been modified to fit the specific needs of DigitalOcean users. You can find some basics of importing a custom CloudLinux OS image below.
+
+Importing custom images to DigitalOcean is free, as you are only charged for the storage of your image. To save money, you can easily import your image, start a Droplet from your image, and delete the image, so you don’t incur any storage costs.
+
+Below, we will describe how to add a qcow2 (QEMU/KVM) CloudLinux OS image as a custom image. You can find more information on image options at [https://www.digitalocean.com/docs/images/custom-images/overview/](https://www.digitalocean.com/docs/images/custom-images/overview/)
+
+1. To choose the right image, navigate to [https://images.cloudlinux.com/](https://images.cloudlinux.com/). Several different images are available for download (with and without a control panel).
+
+![](/images/cloudlinuxos/cloudlinux_installation/cloudlinuximages.webp)
+
+2. Copy the link for the image you are going to use and log into [cloud.digitalocean.com](https://blog.digitalocean.com/custom-images/cloud.digitalocean.com).
+
+Click <span class="notranslate">_Images_</span> on the left of the screen and then choose <span class="notranslate">_Custom Images_</span>. Click the <span class="notranslate">_Import via URL_</span> button and paste the CloudLinux OS Legacy (Shared) image link.
+
+![](/images/cloudlinuxos/cloudlinux_installation/customimages.webp)
+
+There are several options here, but the most important is <span class="notranslate">_Choose a datacenter region_</span>, i.e. which datacenter region your Droplets should be created in for this image.
+
+![](/images/cloudlinuxos/cloudlinux_installation/uploadimage.webp)
+
+Click the <span class="notranslate">_Upload Image_</span> button and wait until the image is successfully uploaded.
+
+3. Add your public key to access your droplets using key-based authentication: navigate to the <span class="notranslate">_Security_</span> sidebar menu and click the <span class="notranslate">_Add SSH Key_</span> button.
+
+You can find more information about creating/adding SSH keys in [this article](https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/).
+
+![](/images/cloudlinuxos/cloudlinux_installation/addsshkey.webp)
+
+4. You will then be able to start a CloudLinux OS Droplet using the image.
+   
+   :::tip Note
+   Your Droplet will be created in the same datacenter that your custom image resides in.
+   :::
+
+![](/images/cloudlinuxos/cloudlinux_installation/startdroplet.webp)
+
+5. Now, use your preferred SSH client software to connect to your Droplet. You can find more information on SSH client setup [here](https://www.digitalocean.com/docs/droplets/how-to/connect-with-ssh/).
+
+![](/images/cloudlinuxos/cloudlinux_installation/sshclient.webp)
+
+
+### Linode
+
+* [CloudLinux OS on Linode KVM](/cloudlinuxos/cloudlinux_installation/#cloudlinux-os-on-linode-kvm)
+* [CloudLinux OS on Linode Xen](/cloudlinuxos/cloudlinux_installation/#cloudlinux-os-on-linode-xen)
+
+:::warning Warning
+If you are installing CloudLinux OS 8, please make sure you’ve read [https://www.linode.com/community/questions/19397/i-just-upgraded-my-centos-8-linode-and-now-it-wont-boot-how-do-i-fix-this-proble](https://www.linode.com/community/questions/19397/i-just-upgraded-my-centos-8-linode-and-now-it-wont-boot-how-do-i-fix-this-proble)
+:::
+
+
+#### CloudLinux OS on Linode KVM
+
+To install CloudLinux OS 7 on Linode KVM server you should perform the following steps:
+
+1. Deploy CL to your Linode following the steps from *[this section](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers)*.
+
+2. Install grub on your system:
+   
+<div class="notranslate">
+
+```
+yum install grub2
+```
+</div>
+
+3. Add to <span class="notranslate">`/etc/default/grub`</span> the following parameters:
+   
+<div class="notranslate">
+
+```
+GRUB_TIMEOUT=10
+GRUB_CMDLINE_LINUX="console=ttyS0,19200n8"
+GRUB_DISABLE_LINUX_UUID=true
+GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"
+```
+</div>
+
+4. Update grub config:
+   
+<div class="notranslate">
+
+```
+grub2-mkconfig -o /boot/grub/grub.cfg
+```
+</div>
+
+5. Edit your Linode profile, change the boot settings to <span class="notranslate">`GRUB 2`</span> .
+
+6. Reboot your Linode.
+
+After reboot you will have fully operational CloudLinux OS 7 system and can proceed with other configuration you need.
+
+#### CloudLinux OS on Linode Xen
+
+To install CloudLinux OS 7 on Linode Xen please perform the following steps:
+
+1. Deploy CL to your Linode following the steps from *[this section](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers)*.
+
+2. Create the file <span class="notranslate">`/boot/grub/menu.lst`</span> with the following content:
+   
+<div class="notranslate">
+
+```
+timeout 5
+title CloudLinux 7.1, $KVERSION
+root (hd0)
+kernel /boot/vmlinuz-$KVERSION root=/dev/xvda1 ro quiet
+initrd /boot/initramfs-$KVERSION.img
+```
+</div>
+
+where <span class="notranslate">`$KVERSION`</span> is the version of the installed CloudLinux OS 7 kernel.
+
+:::tip Note
+You will need to update <span class="notranslate">`/boot/grub/menu.lst`</span> manually after every kernel update.
+:::
+
+3. Switch boot settings to <span class="notranslate">`pv-grub-x86_64`</span> and switch off <span class="notranslate">`Auto-configure networking`</span> in Linode settings.
+
+4. Reboot your Linode.
+
+In case if you will migrate to KVM later you will need only switch the boot settings to <span class="notranslate">`GRUB 2`</span>.
+
+
+### Virtuozzo and OpenVZ
+
+* [Virtuozzo 7 and OpenVZ 7](/cloudlinuxos/cloudlinux_installation/#virtuozzo-7-and-openvz-7)
+* [Virtuozzo 6 and OpenVZ 6](/cloudlinuxos/cloudlinux_installation/#virtuozzo-6-and-openvz-6)
+
+
+#### Virtuozzo 7 and OpenVZ 7
+
+
+To use CloudLinux Shared Pro in Virtuozzo container, please update the next packages to the specified versions (or higher):  
+
+* alt-php-ssa-0.3-4
+* alt-php-xray-0.5-8
+* cloudlinux-linksafe-1-5.2
+* accelerate-wp-1.0-11
+* lvemanager-7.7.5-2
+* alt-python27-cllib-3.2.32-1
+* pam_lve-0.4-3	
+* lve-wrappers-0.7.7-1
+* lve-utils-6.4.3-1
+* cagefs-7.5.1-1
+* liblve-2.1-11
+* tuned-profiles-cloudlinux-0.2-3
+
+
+#### Available Functionality
+ 
+* [Lsapi](/cloudlinuxos/cloudlinux_installation/#lsapi)
+* [AccelerateWP](/cloudlinuxos/cloudlinux_installation/#acceleratewp)
+* [Hardened PHP](/cloudlinuxos/control_panel_integration/#hardened-php)
+* [Website monitoring and Slow Site Analyzer](/cloudlinuxos/lve_manager/#website-monitoring-tool-and-slow-site-analyzer)
+* [X-Ray](/solo/manager/#x-ray)
+* [CageFS](/cloudlinuxos/cloudlinux_installation/#cagefs)
+* [PHP Selector](/cloudlinuxos/cloudlinux_installation/#php-selector)
+* [Wizard](/cloudlinuxos/cloudlinux_installation/#cloudlinux-wizard)
+* [Dashboard](/cloudlinuxos/cloudlinux_installation/#dashboard)
+* [Python Selector](/cloudlinuxos/cloudlinux_installation/#python-selector)
+* [Node.js Selector](/cloudlinuxos/cloudlinux_installation/#node-js-selector)
+
+
+#### Requirements
+
+* [Virtuozzo 7](https://wiki.openvz.org/Virtuozzo) as server system
+* Virtuozzo container with CloudLinux Shared Pro 8 
+* cloudlinux-updates-testing repo is enabled (+ `yum clean all`)
+
+#### How to install 
+
+1. Prepare Virtuozzo container with ostemplate almalinux-8-x86_64
+2. Enter to the container 
+3. Install cPanel:
+```
+cd /home && curl -o latest -L https://securedownloads.cpanel.net/latest && sh latest
+```
+4. Download and start cldeploy:
+```
+wget https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
+chmod 775  cldeploy
+./cldeploy -k SHARED_PRO_CLN_KEY_HERE --testing-repo
+```
+5. You don't need to restart the container after the cldeploy script finished execution.
+
+
+#### CloudLinux Wizard
+
+Wizard is a tool to set up CloudLinux OS components.
+
+In the current version only the lsapi module can be installed.
+
+![](/images/cloudlinuxos/cloudlinux_installation/WizardVZ.webp)
+
+#### Dashboard
+
+CloudLinux OS dashboard provides a quick overview of statistics and all administrative information for server administrators.
+
+In the current version only statistics about the lsapi module is available.
+
+![](/images/cloudlinuxos/cloudlinux_installation/DashboardVZ.webp)
+
+#### Lsapi 
+
+To install Lsapi via CloudLinux Wizard, please turn off mod_ruid2 in EasyApache 4 -> Apache Modules.
+
+:::tip Note
+For EasyApache select `Currently Installed Packages`.
+:::
+
+![](/images/cloudlinuxos/cloudlinux_installation/LsapiVZ1.webp)
+
+![](/images/cloudlinuxos/cloudlinux_installation/LsapiVZ2.webp)
+
+![](/images/cloudlinuxos/cloudlinux_installation/LsapiVZ3.webp)
+
+
+:::tip Note
+Currently mod_suexec is not available in containers and will be released in future versions. Just ignore this message, click "ok" and continue installing lsapi via the Wizard.
+:::
+
+You can find the complete lsapi documentation [here](https://docs.cloudlinux.com/cloudlinuxos/cloudlinux_os_components/#apache-mod-lsapi-pro).
+
+#### AccelerateWP 
+
+If you'd like to try Smart Advice and AccelerateWP you should participate in the Beta tester program. To become a beta tester, please send your request at our Beta program page with the signup form [here](https://www.cloudlinux.com/wp-performance/). Once you submit the request, we will send you a confirmation email with program details, terms of use, and installation instructions.
+
+All additional information can be found [here](https://docs.cloudlinux.com/cloudlinuxos/shared-pro/acceleratewp).
+
+
+#### CageFS
+
+You can find CageFS documentation [here](/cloudlinuxos/cloudlinux_os_components/#cagefs).
+
+:::warning Attention!
+[Kernel config variables](/cloudlinuxos/cloudlinux_os_kernel/#kernel-config-variables) are not available for the Virtuozzo container!
+:::
+
+
+#### PHP Selector
+
+#### How to install
+
+1. To install via SSH, update your packages in the container:
+   ```sh
+   yum update alt-python27-cllib pam_lve lve-wrappers lve-utils liblve tuned-profiles-cloudlinux lvemanager
+   ```
+2. The following commands can be executed via SSH or via CloudLinux Wizard 
+   **Via SSH:**
+   ```sh
+   yum install cagefs
+   yum groupinstall alt-php
+   cagefsctl –init
+   ```
+   **Via CloudLinux Wizard (cPanel only):**
+   ![](/images/cloudlinuxos/cloudlinux_installation/CLWizardInstallation.webp)
+3. Make sure compatible handlers are installed:
+   **Via SSH:**
+   ```
+   yum install ea-apache24-mod_suexec
+   yum install ea-apache24-mod_suphp
+   ```
+   **Or**<br>
+   [Install lsapi](/cloudlinuxos/cloudlinux_os_components/#installing-on-cpanel-servers-with-easyapache-4)<br>
+   **It's also possible to install via CloudLinux Wizard:**<br>
+   The `mod_suexec` and `mod_suphp` can be installed via cPanel EasyApache4 installation tool.<br><br>
+4. Make sure users are enabled in the CageFS:
+   ![](/images/cloudlinuxos/cloudlinux_installation/UsersEnabled.webp)
+
+Useful links:
+
+* [General information and requirements](/cloudlinuxos/cloudlinux_os_components/#general-information-and-requirements-5)
+	* [Installation and update](/cloudlinuxos/cloudlinux_os_components/#installation-and-update-4)
+	* [Installation instructions for cPanel users](/cloudlinuxos/cloudlinux_os_components/#installation-instructions-for-cpanel-users)
+* [Uninstalling](/cloudlinuxos/cloudlinux_os_components/#uninstalling-3)
+	* [Configuration and using](/cloudlinuxos/cloudlinux_os_components/#configuration-and-using)
+	* [Bundled PHP extensions](/cloudlinuxos/cloudlinux_os_components/#bundled-php-extensions)
+
+
+#### Python Selector 
+
+Python Selector for Virtuozzo is available starting from the following packages version:
+
+* lve-2.1-14
+* alt-python27-cllib-3.2.47-1
+* lvemanager-7.8.8-1
+* cagefs-7.5.5-1
+
+Please update or install the packages mentioned above using the following command:
+
+```
+yum update lve alt-python27-cllib lvemanager cagefs --enablerepo=cloudlinux-updates-testing
+```
+
+The installation of Python Selector is available via CloudLinux Wizard. Aslo, the information about manual installation can be found [here](/cloudlinuxos/cloudlinux_os_components/#cpanel-2).
+
+Information about working with Python Selector via GUI can be found [here](/cloudlinuxos/lve_manager/#python-selector-2).
+
+
+#### Node.js Selector
+
+Node.js Selector for Virtuozzo is available starting from the following packages version:
+
+* lve-2.1-14
+* alt-python27-cllib-3.2.47-1
+* lvemanager-7.8.8-1
+* cagefs-7.5.5-1
+
+Please update or install the packages mentioned above using the following command:
+
+```
+yum update lve alt-python27-cllib lvemanager cagefs --enablerepo=cloudlinux-updates-testing
+```
+
+#### Installation for cPanel
+
+To use Node.js Selector, install Node.js packages by running the following command:
+
+```
+yum groupinstall alt-nodejs
+```
+
+CloudLinux OS 7 supports both `ea-ruby24-mod_passenger` and `ea-ruby27-mod_passenger`.
+
+:::tip Note
+The `ea-apache24-mod-alt-passenger` is deprecated in favor of `ea-ruby24-mod_passenger` and `ea-ruby27-mod_passenger`.
+:::
+
+#### General Information 
+
+General information can be found [here](/cloudlinuxos/cloudlinux_os_components/#general-information-and-requirements-7). 
+
+#### Requirements  
+
+Information about Requirements can be found [here](/cloudlinuxos/cloudlinux_os_components/#requirements-2).
+
+#### Limitations 
+
+Information about limitations can be found [here](/cloudlinuxos/cloudlinux_os_components/#limitations). 
+
+If during Node.js Selector usage on cPanel servers you get "ENOMEM npm ERR! errno-12" error, try to increase Memory limit in cPanel WHM → Server Configuration → Tweak Settings → System → Max cPanel process memory, then restart cPanel service with the following command to apply changes:
+
+```
+systemctl restart cpanel.service
+```
+
+#### Node.js Deployment 
+
+Information about Node.js deployment can be found [here](/cloudlinuxos/cloudlinux_os_components/#node-js-deployment).
+
+#### Remote Usage of Node.js Interpreters 
+
+Information about Remote usage of Node.js interpreters can be found [here](/cloudlinuxos/cloudlinux_os_components/#remote-usage-of-node-js-interpreters).
+
+#### Node.js Selector UI
+
+Information about working with Node.js Selector via UI can be found [here](./lve_manager/#node-js-selector-2).
+
+
+
+#### FAQ
+
+**Q: My CloudLinux Manager-> options menu is empty.**
+
+A: You don't have AccelerateWP enabled and PHP X-Ray enabled, so there is nothing to configure. Install and enable any of those features to see settings. This minor UI issue will be fixed in future updates.
+
+**Q: Dashboard says both: that data is updated and that I need to refresh it and both panels never disappear.**
+
+A: Just click the refresh button and reload the page, data will be loaded soon.
+
+**Q: Website monitoring does not appear enabled after clicking the toggle.**
+
+A: Just reload the page, the feature will be displayed as active.
+
+**Q: Website monitoring proposes me to enable autotracing while I disable it.**
+
+A: Issue is known and will be fixed soon.
+
+
+#### Known Restrictions and Issues
+
+1. We do not recommend using [disk quota](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-disk-quotas) inside of containers - PHP Selector may be not functional for a user when disk quota is exceeded for the user.
+
+2. The following systemd directives may break CageFS inside containers:
+   * PrivateDevices
+   * PrivateMounts
+   * PrivateTmp
+   * ProtectSystem
+   * ReadOnlyDirectories
+   * ReadWriteDirectories
+   * InaccessibleDirectories
+   * ProtectHome
+
+3. Some servers require increasing `fs.ve-mount-nr` on the host node. If it wasn't done, then:
+   * CageFS will throw errors related to mounting e.g. `Can't mount jail for user`, `mount(2) system call failed: Cannot allocate memory` etc.
+   * on a host node (but not in the container!) there will be errors `reached the limit on mounts` in `/var/log/messages` throwed by kernel
+
+   To increase `fs.ve-mount-nr` on a host node:
+   * add <span class="notranslate">`fs.ve-mount-nr = 15000`</span> to <span class="notranslte">`/etc/sysctl.conf`</span>;<br/>
+   * apply it with the <span class="notranslate">`sysctl -p`</span> command.
+
+   In some very rare cases the value should be increased higher, up to 50000.
+
+#### Virtuozzo 6 and OpenVZ 6
+
+#### Installation
+
+:::tip Note
+Make sure all containers are stopped prior to doing this operation. Or reboot the server after the installation.
+:::
+
+:::tip Note
+Please make sure you have <span class="notranslate">`vzkernel-headers`</span> and <span class="notranslate">`vzkernel-devel`</span> packages installed.
+:::
+
+<div class="notranslate">
+
+```
+yum install vzkernel-headers vzkernel-devel
+
+wget -P /etc/yum.repos.d/ https://repo.cloudlinux.com/vzlve/vzlve.repo
+yum install lve-kernel-module
+```
+
+</div>
+
+
+This will setup LVE module for VZ kernel, as well as DKMS to update that module each time VZ kernel is updated.
+
+After this is done, you can add LVE support for any container on a node, at any time.
+
+To make CloudLinux OS work inside VZ container, VZ node has to be enabled. This should be done for any container where LVE support needs to be added:
+
+
+<div class="notranslate">
+
+```
+vzctl set CT_ID --devnodes lve:rw --save
+```
+
+</div>
+
+To disable LVE support for Container:
+
+<div class="notranslate">
+
+```
+vzctl set CT_ID --devnodes lve:none --save
+```
+
+</div>
+
+Inside the container, follow [standard CloudLinux installation procedures](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers).
+
+CloudLinux OS Legacy (Shared) license is required for each VZ container.
+
+:::tip Note
+Some servers require increasing `fs.ve-mount-nr` on host node, otherwise CageFS will throw errors. Look for details [here](./#known-restrictions-and-issues)
+:::
+
+#### Available functionality
+
+* CageFS
+* PHP Selector
+* max entry processes
+* mod_lsapi
+* MySQL Governor
+
+
+
+
+
+## LILO boot loader
+
+CloudLinux OS can be deployed on servers that don't have grub installed, by installing <span class="notranslate">`хороgrub`</span> first.
+
+To do that:
+
+1. Make sure grub and kernel packages are not excluded. Edit file <span class="notranslate">`/etc/yum.conf`</span> and check <span class="notranslate">`exclude=`</span> line for presence of <span class="notranslate">`kernel* grub*`</span>.
+
+2. Backup lilo config file:
+   
+<div class="notranslate">
+
+```
+mv /etc/lilo.conf /etc/lilo.conf.bak
+```
+</div>
+
+3. Convert to CloudLinux OS Legacy (Shared) using <span class="notranslate"> [deploy2cl](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers)</span> utility.
+
+4. Check <span class="notranslate">`grub.conf`</span> – it should be configured automatically:
+ 
+ <div class="notranslate">
+
+ ```
+ cat /boot/grub/grub.conf  
+ ............ 
+
+default=0
+timeout=5
+ title CloudLinux Server (2.6.18-294.8.1.el5.lve0.7.33)
+      kernel /boot/vmlinuz-2.6.18-294.8.1.el5.lve0.7.33 root=/dev/sda1  ro
+      root (hd0,0)
+      initrd /boot/initrd-2.6.18-294.8.1.el5.lve0.7.33.img
+      title linux centos5_64
+      kernel /boot/bzImage-2.6.33.5-xxxx-grs-ipv4-64 root=/dev/sda1  ro
+      root (hd0,0)
+```
+</div>
+
+5. Install grub to master boot record:
+   
+ <div class="notranslate">
+
+ ```
+ /sbin/grub-install /dev/sda
+ ```
+ </div>
+
+6. Reboot and check that you are running CloudLinux OS . <span class="notranslate">`uname -r`</span> should show something like: <span class="notranslate">`2.6.18-294.8.1.el5.lve0.7.33`</span>.
+
+
+## Switch license
+
+You can convert your existing CloudLinux OS installation to CloudLinux OS Legacy (Shared).
+
+1. Obtain new key from [CLN](https://cln.cloudlinux.com)
+2. Run `rhnreg_ks --force --activationkey=<new_key>`
+
+You can pass `--migrate-silently` argument to skip confirmation.
+
+## Uninstalling
+
+You can always uninstall CloudLinux OS. In this case, the system will be converted back to AlmaLinux or CentOS* (Depends on what system the conversion was done from).
+
+:::warning
+CentOS Linux 8 reached End Of Life (EOL) on December 31st, 2021. You can still uninstall CloudLinux and return to CentOS 8, but we don't guarantee stable operation of the system and its repositories after this action.
+:::
+
+The following actions will be taken:
+
+1. LVE related packages will be removed.
+2. CloudLinux OS repositories & <span class="notranslate">yum</span> plugin will be removed.
+3. AlmaLinux or CentOS* repositories will be set up.
+
+In the end, the script will provide instructions on how to finish the conversion back to AlmaLinux or CentOS*. That will require removal of CloudLinux OS kernel (manual step), and installation of AlmaLinux or CentOS* kernel (if needed).
+
+:::warning
+Do not forget to free up a CloudLinux OS Legacy (Shared) license by removing the server from the [Servers section of your CLN account](https://docs.cloudlinux.com/cln/dashboard/#servers). After that, if you don't intend to use the license anymore, you can [remove it](https://docs.cloudlinux.com/cln/dashboard/#cloudlinux-os-activation-keys) to avoid being billed for it. 
+:::
+
+To uninstall CloudLinux OS, run:
+
+```
+wget -O cldeploy https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
+sh cldeploy -c
+```
+
+Now you have converted back to AlmaLinux or CentOS* and it is the time to install kernel.
+
+To delete CloudLinux OS kernel, run (change the kernel package name to the one you've been using):
+
+
+```
+rpm -e --nodeps $(rpm -qa | grep kernel | grep lve)
+```
+
+To install new AlmaLlinux or CentOS* kernel once you deleted CloudLinux OS kernel, run the following command:
+
+```
+yum install kernel
+```
+
+If `yum` says that the latest kernel is already installed, it is OK.
+
+Please check your bootloader configuration before rebooting the system.
+
+To remove unused kmods and lve libs, run:
+
+```
+yum remove lve kmod*lve*
+```
+
+Kernel package and related LVE packages should be deleted and the required kernel will be installed.
+
+Before the reboot, the following command should be executed for restoring Apache and httpd.conf without mod_hostinglimits.
+
+**For EasyApache 3:**
+
+```
+/scripts/easyapache --build
+```
+
+**For EasyApache 4:**
+
+```
+/usr/local/bin/ea_install_profile --install /etc/cpanel/ea4/profiles/cpanel/default.json
+```
+
+:::tip Note
+Some of the packages from CloudLinux OS repo will still be present. They are the same as AlmaLinux or CentOS* packages, and don't have to be removed. They will be updated in the future from AlmaLinux or CentOS* repositories, as new versions come out.
+:::
diff --git a/docs/cloudlinuxos/cloudlinux_os_components/README.md b/docs/cloudlinuxos/cloudlinux_os_components/README.md
new file mode 100644
index 000000000..dc67d7fd5
--- /dev/null
+++ b/docs/cloudlinuxos/cloudlinux_os_components/README.md
@@ -0,0 +1,10346 @@
+#  CloudLinux OS components
+
+* [Reseller limits](/cloudlinuxos/limits/#reseller-limits)
+* [LVE-Stats 2](./#lve-stats-2)
+* [CageFS](./#cagefs)
+* [MySQL Governor](./#mysql-governor)
+* [PHP Selector](./#php-selector)
+* [Python Selector](./#python-selector)
+* [Ruby Selector](./#ruby-selector)
+* [Node.js Selector](./#node-js-selector)
+* [Apache mod_lsapi PRO](./#apache-mod-lsapi-pro)
+* [NGINX lsapi module](./#nginx-lsapi-module)
+* [Additional integration components](./#additional-integration-components)
+* [Apache suexec module](./#apache-suexec-module)
+
+#### General information and requirements
+
+## LVE-Stats 2
+
+### General information and requirements
+
+* [Why is it needed?](./#why-is-it-needed)
+* [Major improvements and features](./#major-improvements-and-features)
+* [What features will be implemented in the future?](./#what-features-will-be-implemented-in-the-future)
+
+#### Why is it needed?
+
+* Old LVE-statistics store averages as integer numbers, as % of <span class="notranslate">CPU</span> usage. If user used 100% of <span class="notranslate">CPU</span> for 1 second within an hour, it is only 1-2% for a minute, and 0 for 5 minutes. Data in old LVE-statistics is aggregated to 1-hour intervals. So, such peak load will noExat be recorded and we need to store data with much higher precision.
+* 100% <span class="notranslate">CPU</span> usage in old lve statistics means “all cores”. On 32 core servers usage is not visible for most users (as they are limited to 1 core).
+* Old LVE-statistics does not provide a way to determine a cause of LVE faults, i.e. what processes are running when user hits LVE limits.Example
+* Notifications in old LVE-statistics are not accurate because they are based on average values for <span class="notranslate">CPU, IO, IOPS.</span>
+* Old LVE-statistics functionality is hard to extend.
+
+#### Major improvements and features
+
+* increased precision of statistics;
+* <span class="notranslate">CPU</span> usage is calculated  in terms of % of a single core (100% usage means one core);
+* lvestats-server emulates and tracks faults for <span class="notranslate">CPU, IO, IOPS</span>;
+* lvestats-server saves “snapshots” of user’s processes and queries for each “incident” - added new lve-read-snapshot utility;
+* improved notifications about hitting LVE limits (more informative and without false positives);
+* implemented ability to add custom plugins;
+* MySQL and <span class="notranslate">PostGreSQL</span> support;
+* more pretty, scalable, interactive charts;
+* snapshots include HTTP-requests.
+
+:::tip Note
+[`mod_proctitle`](./#mod-proctitle) has to be enabled for HTTP request collection to be available
+:::
+
+#### What features will be implemented in the future?
+
+* Notifications for control panels other than CPanel.
+* Burstable Limits/server health: We are monitoring server health ( <span class="notranslate"> LA </span> , <span class="notranslate"> memory </span> , idle <span class="notranslate"> CPU </span> ) and automatically decreasing/increasing limits based on server health.
+* <span class="notranslate">Reseller Limits</span>: plugin would analyze usage per group of users (reseller’s usage), and do actions.
+* Suspend/notify plugin: would detect that user is being throttled for 10 minutes, and suspend him (just because), or notify, or increase limits.
+
+### Installation and update
+
+* [Downgrade](./#downgrade)
+
+To install, please execute:
+
+<div class="notranslate">
+
+```
+yum install lve-stats
+```
+</div>
+
+To update:
+
+<div class="notranslate">
+
+```
+yum update lve-stats
+```
+</div>
+
+Settings of old <span class="notranslate">lve-stats</span> (ver. 0.x) are imported automatically on the first install/update of a new <span class="notranslate">lve-stats</span> package.
+
+SQLite database file is located in <span class="notranslate">`/var/lve/lvestats2.db`</span>, data from old <span class="notranslate">lve-stats</span> (ver. 0.x) are being migrated automatically in the background. Migrating process can last 2-8 hours (during this time lags are possible when admin is trying to check statistics, at the same time users will not be affected). Migrating the latest 30 days, <span class="notranslate">SQLite DB</span> stable migration is provided.
+
+Currently, the new <span class="notranslate">lve-stats</span> supports all databases available in CloudLinux OS.
+
+:::tip Note
+You can also use [LVE-stats 2 CLI](/cloudlinuxos/command-line_tools/#lve-stats-2)
+:::
+
+#### Downgrade
+
+If you have any problems after update, downgrade <span class="notranslate">lve-stats2</span> to the previous stable version by running:
+
+<div class="notranslate">
+
+```
+yum downgrade lve-stats
+```
+</div>
+
+and contact CloudLinux OS support at [https://cloudlinux.zendesk.com/hc/requests/new](https://cloudlinux.zendesk.com/hc/en-us/requests/new)
+
+:::tip Note
+You may need to rename `*.rpmsave` files to original ones in order to restore settings for old <span class="notranslate">lve-stats (`/etc/sysconfig/lvestats`, `/etc/sysconfig/cloudlinux-notify`</span>).
+:::
+
+:::tip Note
+You can also use [LVE-stats 2 CLI](/cloudlinuxos/command-line_tools/#lve-stats-2)
+:::
+
+### Configuration
+
+The main configuration file <span class="notranslate">`/etc/sysconfig/lvestats2`</span> contains the following options:
+
+* <span class="notranslate">`db_type`</span> - selects appropriate database type to use;
+* <span class="notranslate">`connect-string`</span> - connection string for <span class="notranslate">PostGreSQL</span> and MySQL database, has the following form:
+
+  <div class="notranslate">
+
+  ```
+  connect_string = USER:PASSWORD@HOST[:PORT]/DATABASE
+  ```
+
+  </div>
+
+  Default port is used for specific database, if port is not specified (typical port is 3306 for MySQL and 5432 for <span class="notranslate">PostGreSQL</span>). Connection string is not used for sqlite database.
+
+* <span class="notranslate">`server_id`</span> - sets the name of the server (at most 10 characters). This option is to use with centralized database ( <span class="notranslate">PostGreSQL</span> or MySQL). For use with sqlite database, value of this option should be "localhost" (without quotes).
+* <span class="notranslate">`plugins`</span> – path to directory containing custom plugins for <span class="notranslate">lve-stats</span> (default path <span class="notranslate">`/usr/share/lve-stats/plugins`</span>).
+* <span class="notranslate">`db_timeout`</span> - period of time to write data to database (in seconds); default value is 60 seconds.
+* <span class="notranslate">`timeout`</span> - timeout for custom plugins (seconds). If plugin execution does not finish within this period, plugin is terminated. Default value is 5 seconds.
+* <span class="notranslate">`interval`</span> - duration of one cycle of <span class="notranslate">lvestats-server</span> (seconds). This should be less than total duration of execution of all plugins. Default value is 5 seconds. Increasing this parameter makes precision of statistics worse.
+* <span class="notranslate">`keep_history_days`</span> - period of time (in days) to keep history in th database. Old data is removed from the database automatically. Default value is 30 days.
+* <span class="notranslate">`mode`</span> – sets compatibility output mode (compatibility with older lveinfo version
+  * Value `v1` enables compatibility with old version of <span class="notranslate">lveinfo</span>.
+  * Value `v2` enables <span class="notranslate">`extended`</span> output mode, but can break LVE plugins for control panels (statistics in <span class="notranslate">LVE Manager</span>, <span class="notranslate">Resource Usage</span>, etc). Support of `v2` mode will be added to LVE plugins in the recent future. When mode parameter is absent, later version of <span class="notranslate">lveinfo</span> is implied.
+* <span class="notranslate">`disable_snapshots`</span> - disable snapshots and incidents.
+  Possible values:
+  * <span class="notranslate">`true`</span>
+  * <span class="notranslate">`false`</span>
+* <span class="notranslate">`disable_mysql_snapshots`</span> - disable saving SQL queries to snapshots.
+  Possible values:
+  * <span class="notranslate">`true`</span>
+  * <span class="notranslate">`false`</span>
+* <span class="notranslate">`hide_lve_more_than_maxuid`</span> - disable displaying LVE IDs greater than the max UID in resource usage.
+  Possible values:
+  * <span class="notranslate">`true`</span>
+  * <span class="notranslate">`false`</span>
+* <span class="notranslate">`use_big_uids`</span> - the option is available from <span class="notranslate">lvestats</span> version <span class="notranslate">`3.0.14-1`</span>. It allows using the user uids more than 10<sup>9</sup> and up to 2<sup>31</sup>-2 (2 147 483 646). Top border is the biggest value which <span class="notranslate">`kmodlve`</span> can use as <span class="notranslate">LVE ID</span>. You should recreate <span class="notranslate">lvestats</span> database by command <span class="notranslate">`lve-create-db --recreate`</span> if you change the option's value from <span class="notranslate">`false`</span> to <span class="notranslate">`true`</span>.
+  Possible values:
+  * <span class="notranslate">`true`</span>
+  * <span class="notranslate">`false`</span>
+
+
+Configuration files for plugins are located in <span class="notranslate">`/etc/sysconfig/lvestats.config`</span> directory.
+
+<span class="notranslate">`/etc/sysconfig/lvestats.config/SnapshotSaver.cfg`</span> contains the following options:
+
+* <span class="notranslate">`period_between_incidents`</span> - the minimal interval of time between incidents (in seconds). If minimal interval of time between LVE faults is greater than value specified, than new "incident" will begin and new snapshots will be saved. Default value is 300 seconds.
+* <span class="notranslate">`snapshots_per_minute`</span> - the maximum number of snapshots saved per minute for specific LVE id (default is `2`).
+* <span class="notranslate">`max_snapshots_per_incident`</span> - the maximum number of snapshots saved for one "incident". Default is `10`.
+* <span class="notranslate">`litespeed`</span> - enable or disable data import from LiteSpeed, default is `auto` (autodetect); `On`|`on`|`1` - force use litespeed; `Off`|`off`|`0` - force use apache
+
+<span class="notranslate">`/etc/sysconfig/lvestats.config/StatsNotifier.cfg`</span> contains the following options:
+
+* <span class="notranslate">`NOTIFY_ADMIN`</span> – enables notification for admin (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_RESELLER`</span> – enables notification for reseller (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_CUSTOMER`</span> - enables notification for customers (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_INCLUDE_RESELLER_CUSTOMER`</span> – `Y`=notify all users, `N`=notify only hoster's users (whos reseller is root), default = `N`;
+* <span class="notranslate">`NOTIFY_CPU`</span> – notify about <span class="notranslate">CPU</span> faults when customer hits 100% of his <span class="notranslate">CPU</span> limit (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_IO`</span> - notify about <span class="notranslate">IO</span> faults when customer hits 100% of his <span class="notranslate">IO</span> limit (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_IOPS`</span> - notify about <span class="notranslate">IOPS</span> faults when customer hits 100% of his <span class="notranslate">IOPS</span> limit (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_MEMORY`</span> - notify about memory faults (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_EP`</span> – notify about entry processes faults (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_NPROC`</span> – notify about number of processes faults (<span class="notranslate">`Y/N`</span>, default `N`);
+* <span class="notranslate">`NOTIFY_MIN_FAULTS_ADMIN`</span> – minimum number of faults to notify admin (default `1`);
+* <span class="notranslate">`NOTIFY_MIN_FAULTS_USER`</span> – minimum number of faults to notify customer (default `1`);
+* <span class="notranslate">`NOTIFY_INTERVAL_ADMIN`</span> – period of time to notify admin (default `12h`);
+* <span class="notranslate">`NOTIFY_INTERVAL_USER`</span> – period of time to notify customer (default `12h`);
+* <span class="notranslate">`NOTIFY_FROM_EMAIL`</span> - sender email address. For example: <span class="notranslate">`NOTIFY_FROM_EMAIL=main_admin@host.com`;</span>
+* <span class="notranslate">`NOTIFY_FROM_SUBJECT`</span> - email message subject. For example: <span class="notranslate">`NOTIFY_FROM_SUBJECT=Message from notifier`</span>
+* <span class="notranslate">`REPORT_ADMIN_EMAIL`</span> - custom email for admin reporting. For example: <span class="notranslate">`REPORT_ADMIN_EMAIL=report_email@host.com`</span>
+* <span class="notranslate">`NOTIFY_CHARSET_EMAIL`</span> – charset type for email. Available for <span class="notranslate">__lve-stats-2.9.4-1__</span> and later. Default is <span class="notranslate">`us-ascii`</span>. For example: <span class="notranslate">`NOTIFY_CHARSET_EMAIL=utf-8`</span>. If your email templates include non-Latin letters, it is recommended to use the UTF-8 encoding.
+
+These values can also be set using [cloudlinux-config CLI](/cloudlinuxos/command-line_tools/#cloudlinux-config) utility
+
+Templates of notifications are located here:
+
+* <span class="notranslate">`/usr/share/lve/emails/en_US/admin_notify.txt`</span>
+* <span class="notranslate">`/usr/share/lve/emails/en_US/reseller_notify.txt`</span>
+* <span class="notranslate">`/usr/share/lve/emails/en_US/user_notify.txt`</span>
+* <span class="notranslate">`/usr/share/lve/emails/en_US/admin_notify.html`</span>
+* <span class="notranslate">`/usr/share/lve/emails/en_US/reseller_notify.html`</span>
+
+:::tip Note
+Notifications about LVE faults are implemented for CPanel, Plesk, and DirectAdmin.
+:::
+
+After changing any options above, please restart <span class="notranslate">lvestats</span> service:
+
+<div class="notranslate">
+
+```
+service lvestats restart
+```
+
+</div>
+
+<span class="notranslate">`/etc/logrotate.d/lvestats`</span> - configuration file for <span class="notranslate">`/var/log/lve-stats.log rotation`</span>
+
+:::tip Note
+You can also use [LVE-stats 2 CLI](/cloudlinuxos/command-line_tools/#lve-stats-2)
+:::
+
+### LVE-stats2 and DB servers compatible work setup
+
+* [LVE-stats2 and MySQL DB server compatible work setup](./#lve-stats2-and-mysql-db-server-compatible-work-setup)
+* [LVE-stats2 and PostgreSQL DB server compatible work setup](./#lve-stats2-and-postgresql-db-server-compatible-work-setup)
+* [Customize LVE-stats2 notifications](./#customize-lve-stats2-notifications)
+
+#### LVE-stats2 and MySQL DB server compatible work setup
+
+:::tip Note
+Run all the commands below under root.
+:::
+
+**1. MySQL server setup**
+
+If MySQL Server is not installed, then install it according to control panel documentation.
+
+For non-panel system:
+
+* CloudLinux OS 6
+  
+  <div class="notranslate">
+
+  ```
+  yum install mysql mysql-server
+  service mysqld start
+  chkconfig mysqld on
+  ```
+  </div>
+
+* CloudLinux OS 7
+  
+  <div class="notranslate">
+
+  ```
+  yum install mariadb mariadb-server
+  systemctl start mariadb.service
+  systemctl enable mariadb.service
+  ```
+  </div>
+
+
+**2. Database setup**
+
+* Run MySQL administrative utility: <span class="notranslate">`mysql`</span>.
+* In utility run the commands:
+
+  * creating server DB. Also, check **_Note_** below.
+
+  <div class="notranslate">
+
+  ```
+  CREATE DATABASE db_lvestats2;
+  ```
+  </div>
+
+  * creating a user for <span class="notranslate">LVE Stats 2</span> server to work under. Also, check **_Note_** below.
+
+  <div class="notranslate">
+
+  ```
+  CREATE USER 'lvestats2'@'localhost' IDENTIFIED BY 'lvestats2_passwd';
+  ```
+  </div>
+
+  * granting all the privileges for all DB tables to the user. Use the username and DB name from the points above.
+
+  <div class="notranslate">
+
+  ```
+  GRANT ALL PRIVILEGES ON db_lvestats2.* TO 'lvestats2'@'localhost';
+  ```
+  </div>
+
+  * refreshing privileges information.
+
+  <div class="notranslate">
+
+  ```
+  FLUSH PRIVILEGES;
+  ```
+  </div>
+
+  * Exit administrative utility <span class="notranslate">`(Ctrl+d)`</span>.
+
+:::tip Note
+DB name, username and their passwords above are given for an example - you can use any of your choices. Using old DB from <span class="notranslate">LVE Stats</span> version 1 is also acceptable as <span class="notranslate">LVE Stats2</span> uses different tables and the old information will not be corrupted.
+:::
+
+**3.** <span class="notranslate">**LVE-stats2**</span> **setup**
+
+* Stop <span class="notranslate">LVE Stats 2</span> server by running the command:
+
+<div class="notranslate">
+
+```
+service lvestats stop
+```
+</div>
+
+* In server configuration file <span class="notranslate">`/etc/sysconfig/lvestats2`</span>, edit the following options:
+  * <span class="notranslate">`db_type = mysql`</span>
+  * <span class="notranslate">`connect_string = lvestats2:lvestats2_passwd@localhost/db_lvestats2`</span>
+
+:::tip Note
+<span class="notranslate">`connect_string`</span> option value is used in format: <span class="notranslate">`user:pass@host/database`</span>.
+Username, password and DB name must be the same as in point 2 of Database Setup above.
+:::
+
+* After making changes in configuration files run:
+
+<div class="notranslate">
+
+```
+/usr/sbin/lve-create-db 
+```
+</div>
+
+  For DB primary initialization (creating tables, indexes, etc). There is no need to create anything in the DB manually.
+
+* When done, restart server by running:
+  
+<div class="notranslate">
+
+```
+service lvestats restart
+```
+</div>
+
+
+**4. Additional security settings**
+
+If you need to provide access to <span class="notranslate">LVE Stats</span> information utilities (<span class="notranslate">`lveinfo`, `lvechart`, `lve-read-snapshot`</span>) for different users, then we recommend creating one more DB user with read-only privilege to guarantee information security. It can be done by running the following commands in administrative utility:
+
+* creating a user (check **_Note_** above)
+
+<div class="notranslate">
+
+```
+CREATE USER 'lvestats2_read'@'localhost' IDENTIFIED BY 'lvestats2_read_passwd';
+```
+</div>
+
+* granting read-only privilege to the user
+  
+<div class="notranslate">
+
+```
+GRANT SELECT ON db_lvestats2.* TO 'lvestats2_read'@'localhost';
+```
+</div>
+
+* refreshing privileges information
+
+<div class="notranslate">
+
+```
+FLUSH PRIVILEGES;
+```
+</div>
+
+If <span class="notranslate">LVE Stats2</span> server is set correctly (see information below), the information utilities will work under this user.
+
+If you need to provide access to information utilities to other users, then in order to guarantee information security you should do the following:
+
+* Assign permission 600 to the main configuration file (<span class="notranslate">`/etc/sysconfig/lvestats2`</span>), so that it could be read only by <span class="notranslate">LVE Stats 2</span> server and by utilities that run under root.
+* Copy <span class="notranslate">`/etc/sysconfig/lvestats2`</span> to <span class="notranslate">`/etc/sysconfig/lvestats2.readonly`</span>, assign permission 644 to the new file, so that it could be read by any user but could only be changed by root.
+* In <span class="notranslate">`/etc/sysconfig/lvestats2.readonly`</span> file, in the line <span class="notranslate">`connect_string`</span>, specify DB user with read-only permission, created above.
+
+These steps allow hiding main DB user username/password from other system users.
+
+If there is no need in such access differentiation, then <span class="notranslate">`/etc/sysconfig/lvestats2`</span> file access permission should be 644, so that it could be read by all users and could be changed only by root.
+
+
+**5. Using special characters in database password**
+
+Since scheme <span class="notranslate">`://user:password@host[:port]/database_name`</span> [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) is used in <span class="notranslate">`connect_string`</span> config option, then usage of special characters in user DB password is not allowed.
+
+To use special symbols in the password, it must be converted to [escape-sequence](https://en.wikipedia.org/wiki/Percent-encoding). You can convert a password to escape-sequence in a console as follows:
+
+<div class="notranslate">
+
+```
+echo -n '[You_P@$$]:' | perl -MURI::Escape -ne 'print uri_escape($_)."\n"'
+%5BYou_P%40%24%24%5D%3A
+```
+</div>
+
+Or replace the symbols manually:
+
+<div class="notranslate">
+
+```
+!    #    $    &    '    (    )    *    +    ,    /    :    ;    =    ?    @   [    ]
+%21  %23  %24  %26  %27  %28  %29  %2A  %2B  %2C  %2F  %3A  %3B  %3D  %3F  %40  %5B %5D
+```
+</div>
+
+After that <span class="notranslate">`сonnect_string`</span> will look as follows:
+
+<div class="notranslate">
+
+```
+сonnect_string=lvestats2:%5BYou_P%40%24%24%5D%3A@localhost/db_lvestats2
+```
+</div>
+
+
+#### LVE-stats2 and PostgreSQL DB server compatible work setup
+
+
+:::tip Note
+Run all the commands below under <span class="notranslate">root</span>.
+:::
+
+**1.** **<span class="notranslate">PostgreSQL</span>** **server installation and setup**
+
+* **PostgreSQL installation and initialization**
+
+  For control panels use proper documentation for installation on the links: [сPanel](https://documentation.cpanel.net/display/CKB/Install+or+Update+PostgreSQL+on+Your+cPanel+Server), [Plesk](https://kb.plesk.com/en/123729).
+
+  For non-panel CloudLinux OS, run the following commands:
+
+    * CloudLinux OS 6
+
+    <div class="notranslate">
+
+    ```
+    yum install postgresql-server postgresql
+    service postgresql initdb
+    service postgresql start
+    chkconfig postgresql on
+    ```
+    </div>
+
+    * CloudLinux OS 7
+
+    <div class="notranslate">
+
+    ```
+    yum install postgresql-server postgresql
+    postgresql-setup initdb
+    systemctl start postgresql
+    systemctl enable postgresql
+    ```
+    </div>
+
+* **Setup**
+
+  * In <span class="notranslate">`/var/lib/pgsql/data/pg_hba.conf`</span> config file change user authentication mode. Add the following lines (place before all other authentication parameters):
+  
+    <div class="notranslate">
+
+    ```
+    # IPv4 local connections for lve-stats-2.x
+    host dblvestat all 127.0.0.1/32 password
+    # IPv6 local connections for lve-stats-2.x
+    host dblvestat all ::1/128 password
+    ```
+    </div>
+    
+    These lines enable user authentication by the password for <span class="notranslate">IP4/IP6</span> connections. You can set other modes if needed.
+
+  * Apply config changes by running:
+
+    <div class="notranslate">
+
+    ```
+    service postgresql restart
+    ```
+    </div>
+
+
+**2. DB for** <span class="notranslate">**LVE-stats-2.x**</span> **- creating and setup**
+
+* Run standard <span class="notranslate">PostgreSQL psql</span> administrative utility:
+
+<div class="notranslate">
+
+```
+sudo -u postgres psql postgres 
+```
+</div>
+
+OR for сPanel
+
+<div class="notranslate">
+
+```
+psql -w -U postgres
+```
+</div>
+
+* In utility run:
+
+  * creating server DB. Also, check **_Note_** below.
+
+    <div class="notranslate">
+
+    ```
+    CREATE DATABASE dblvestat;
+    ```
+    </div>
+
+  * creating a user for <span class="notranslate">LVE Stats 2</span> server to work under. Also, check **_Note_** below.
+
+    <div class="notranslate">
+
+    ```
+    CREATE USER lvestat WITH password 'passw';
+    ```
+    </div>
+
+  * granting <span class="notranslate">lvestat</span> user all privileges for work with <span class="notranslate">dblvestat DB</span>.
+
+    <div class="notranslate">
+
+    ```
+    GRANT ALL privileges ON DATABASE dblvestat TO lvestat;
+    ```
+    </div>
+
+  * exit `psql` utility:
+
+    <div class="notranslate">
+
+    ```
+    \q
+    ```
+    </div>
+
+    OR alternatively:
+
+    <div class="notranslate">
+
+    ```
+    Ctrl+d
+    ```
+    </div>
+
+
+:::tip Note
+DB name, username and their passwords above are given for an example - you can use any of your choices. Using old DB from <span class="notranslate">LVE Stats</span> version 1 is also acceptable as <span class="notranslate">LVE Stats 2</span> uses different tables and the old information will not be corrupted
+:::
+
+**3.** <span class="notranslate">**LVE-stats-2.x**</span> **setup**
+
+* Stop <span class="notranslate">lve-stats2</span> server by running:
+
+<div class="notranslate">
+
+```
+service lvestats stop
+```
+</div>
+
+* In server config file <span class="notranslate">`/etc/sysconfig/lvestats2`</span> edit options for connecting to DB:
+  
+<div class="notranslate">
+
+```
+db_type = postgresql
+connect_string=lvestat:passw@localhost/dblvestat
+If DB is going to be used as centralized for multiple hosts then collect_usernames parameter must be changed:
+collect_usernames=true
+```
+</div>
+
+:::tip Note
+<span class="notranslate">`connect_string`</span> option value is of the format: <span class="notranslate">`user:pass@host/database`</span>. Username, password and DB name must be the same as in Database Setup section above.
+:::
+
+* After making changes in configuration files, for DB primary initialization (creating tables, indexes, etc), run:
+
+<div class="notranslate">
+
+```
+/usr/sbin/lve-create-db 
+```
+</div>
+
+* There is no need to create anything in the DB manually. When done, restart server by running:
+
+<div class="notranslate">
+
+```
+service lvestats restart
+```
+</div>
+
+**4. Additional security settings**
+
+If you need to provide access to <span class="notranslate">LVE Stats</span> information utilities (<span class="notranslate">`lveinfo`, `lve-read-snapshot`</span> ) for other users (or if <span class="notranslate">CageFS</span> is disabled), then in order to guarantee DB security the following steps are required:
+
+* Create a DB user with read-only permission:
+
+<div class="notranslate">
+
+```
+CREATE USER lvestat_read WITH password 'passw';
+GRANT CONNECT ON DATABASE dblvestat to lvestat_read;
+\connect dblvestat;
+GRANT SELECT ON lve_stats2_history, lve_stats2_history_gov, lve_stats2_history_x60, lve_stats2_incident, lve_stats2_servers, lve_stats2_snapshot, lve_stats2_user TO lvestat_read;
+```
+</div>
+
+* Assign root ownership and permission 600 to the main configuration file (<span class="notranslate">`/etc/sysconfig/lvestats2`</span>), so that it could be read only by <span class="notranslate">LVE Stats 2</span> server and by utilities that run under root.
+
+* Copy <span class="notranslate">`/etc/sysconfig/lvestats2` to `/etc/sysconfig/lvestats2.readonly`</span>, assign permission 644 to the new file, so that it could be read by any user but could be changed only by root.
+
+* In <span class="notranslate">`/etc/sysconfig/lvestats2.readonly`</span> file, in the line <span class="notranslate">`connect_string`</span>, specify DB user with read-only permission, created above.
+
+  These steps allow hiding main DB user username/password from other system users.
+
+  If there is no need in such access differentiation, then <span class="notranslate">`/etc/sysconfig/lvestats2`</span> file access permission should be 644, so that it could be read by all users and could be changed only by <span class="notranslate">root</span>.
+
+* When done, restart server by running:
+
+<div class="notranslate">
+
+```
+service lvestats restart
+```
+</div>
+
+
+**5. Using special characters in database password**
+
+Since scheme <span class="notranslate">`://user:password@host[:port]/database_name`</span> [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) is used in <span class="notranslate">`connect_string`</span> config option, then usage of special characters in user DB password is not allowed.
+
+To use special symbols in the password, it must be converted to [escape-sequence](https://en.wikipedia.org/wiki/Percent-encoding). You can convert a password to escape-sequence in a console as follows:
+
+<div class="notranslate">
+
+```
+echo -n '[You_P@$$]:' | perl -MURI::Escape -ne 'print uri_escape($_)."\n"'
+%5BYou_P%40%24%24%5D%3A
+```
+</div>
+
+OR replace the symbols manually:
+
+<div class="notranslate">
+
+```
+!    #    $    &    '    (    )    *    +    ,    /    :    ;    =    ?    @    [    ]
+%21  %23  %24  %26  %27  %28  %29  %2A  %2B  %2C  %2F  %3A  %3B  %3D  %3F  %40  %5B  %5D
+```
+</div>
+
+After that <span class="notranslate">`сonnect_string`</span> will look as follows:
+
+<div class="notranslate">
+
+```
+сonnect_string=lvestats2:%5BYou_P%40%24%24%5D%3A@localhost/db_lvestats2
+```
+</div>
+
+#### Customize LVE-stats2 notifications 
+
+<span class="notranslate">[Jinja2](http://jinja.pocoo.org/)</span> is used as a template engine for the notifications.
+
+The templates for notifications are located in <span class="notranslate">`/usr/share/lve/emails/LOCALE`</span>, where <span class="notranslate">`LOCALE`</span> is the directory with localization name (language codes are formed according to <span class="notranslate">ISO 639-1</span> and <span class="notranslate">ISO 639-2</span>).
+
+By default the templates for English are set: <span class="notranslate">`/usr/share/lve/emails/en_US.`</span>.
+
+<span class="notranslate">`/usr/share/lve/emails/en_US`</span> contains the following templates:
+
+* <span class="notranslate">`admin_notify.html`  `admin_notify.txt`</span> for administrator;
+* <span class="notranslate">`reseller_notify.html` `reseller_notify.txt`</span> for reseller;
+* <span class="notranslate">`user_notify.txt`</span> for user.
+
+
+Starting from `lve-stats-4.1.2`, it allows server administrators to use their own lvestats notifier email notification templates. 
+
+To use the custom templates, place them and the `locales.json` file to the `/etc/cl.emails.d/LOCALE` directory. File names are the same as in general `/etc/cl.emails.d/LOCALE` file.
+
+If the `/etc/cl.emails.d/LOCALE` doesn't exist or doesn't contain the templates, you can use the `/usr/share/lve/emails/LOCALE` directory, as it was in previous versions of lve-stats.
+
+Please do not edit the templates in the the `/usr/share/lve/emails` and place the new updated templates in the `/etc/cl.emails.d` directory.
+
+
+The notification is formed as <span class="notranslate">_Multipart content type_</span> [RFC1341(MIME)](https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html).
+
+The plain text is taken from the <span class="notranslate">`.txt`</span> files, html version - from the <span class="notranslate">`.html`</span> template.
+
+In case when only one template is present (<span class="notranslate">`.txt`</span> or <span class="notranslate">`.html`</span>) the notification is sent as a <span class="notranslate">_Non-multipart content_  </span> type notification.
+
+It is better to use <span class="notranslate">_Multipart content_</span> type notifications because when a mail client can not display an html-format message, then it will be displayed as plain text version.
+
+To localize notifications, copy standard templates into directory with the proper locale name and translate the template. Also you can customize the main template making proper changes into it.
+
+The list of variables that can be used in the template:
+
+| |  | |
+|-|--|-|
+|Variable | Example | Description|
+|<span class="notranslate">`TONAME`</span> | <span class="notranslate">`Customer`</span> | Notification receiver user name. Taken from profile in the control panel, by default - <span class="notranslate">`Customer`</span> for user, <span class="notranslate">`Administrator`</span> for administrator, <span class="notranslate">`Reseller`</span> for reseller.|
+|<span class="notranslate">`TOMAIL`</span> | <span class="notranslate">`support@cloudlinux.com`</span> | Notification receiver email address.|
+|<span class="notranslate">`DOMAIN`</span> | <span class="notranslate">`wordpress.test247.cloudlinux.com`</span> | Main domain. Available only for user.|
+|<span class="notranslate">`LOCALE`</span> | <span class="notranslate">`en_US`</span> | Locale in which the notification is sent. Available only for user.|
+|<span class="notranslate">`RESELLER`</span> | <span class="notranslate">`root`</span> | User reseller. Available only for user.|
+|<span class="notranslate">`PERIOD`</span> | <span class="notranslate">`12 hours`</span> | Verification and notification sending period.|
+|<span class="notranslate">`LOGIN`</span> | <span class="notranslate">`wordpress`</span> | User login in the system.|
+|<span class="notranslate">`ID`</span> | `500` | User ID in the system.|
+|<span class="notranslate"> `lPMem` `lEP` `PMemF` `lVMem` `anyF` `IOf` `VMemF` `lCPU` `aIOPS` `aEP` `aPMem` `IOPSf` `lIO` `lIOPS` `aIO` `EPf` `aCPU` `aVMem` `NprocF` `aNproc` `lNproc` `CPUf` </span> |  | See description in <span class="notranslate">`lveinfo --help`</span> output. Available only for users|
+|<span class="notranslate">`STATS_HTML`</span> |  | html table with the list of users that exceeded limits. Available for administrator and reseller.|
+|<span class="notranslate">`STATS`</span> |  | ASCII - table with the list of users that exceeded limits. Available only for admins and resellers.|
+
+Sender’s email address by default is administrator email address from control panel settings <span class="notranslate">`(root@{hostn_name}`</span> if there is no email in the control panel).
+
+It can be changed with <span class="notranslate">`NOTIFY_FROM_EMAIL`</span> option in the config <span class="notranslate">`/etc/sysconfig/lvestats.config/StatsNotifier.cfg`</span>
+
+For example:
+
+<span class="notranslate">`NOTIFY_FROM_EMAIL=support@hostername.com`</span>
+
+To apply changes restart <span class="notranslate">`lve-stats`</span> service:
+
+<div class="notranslate">
+
+```
+service lvestats restart
+```
+</div>
+
+for CloudLinux OS 7
+
+<div class="notranslate">
+
+```
+systemctl restart lvestats.service
+```
+</div>
+
+Default subject is <span class="notranslate">`Hosting account resources exceeded`</span>.  It can be changed for each template (and for localized templates as well). To change subject, in the very beginning of the file (no blank lines allowed in the beginning of the template) add the field <span class="notranslate">`Subject:`</span>, leave two blank lines after it and add template body.
+
+Customized subjects can be taken only from the templates with the resolution <span class="notranslate">`*.txt`</span> <span class="notranslate">(`admin_notify.txt`, `reseller_notify.txt`, `user_notify.txt`)</span>. Changes apply without <span class="notranslate">`lvestats`</span> restart.
+
+For backward compatibility the subject can be also changed with the key <span class="notranslate"> `NOTIFY_FROM_SUBJECT`</span> in the config <span class="notranslate">`/etc/sysconfig/lvestats.config/StatsNotifier.cfg`</span>.
+
+Customized subjects have the higher priority than the key <span class="notranslate">`NOTIFY_FROM_SUBJECT`</span>.
+
+Example for the file <span class="notranslate">`user_notify.txt`</span>
+
+<div class="notranslate" v-pre>
+	
+```
+Subject: Customized subject example
+Dear {{TONAME}},
+ 
+Your {{DOMAIN}} web hosting account exceeded one or more of its resources within the last {{PERIOD}}.
+{% if epf %}Exceeded the maximum of {{lep}} concurrent website connections. Your website was not available {{epf}} times because of this problem.
+{% endif %}{% if pmemf %}Exceeded the physical memory limit of {{lpmem}}KB. Your website was not available {{pmemf}} times because of this problem.
+{% endif %}{% if vmemf %}Exceeded the virtual memory limit of {{lvmem}}KB. Your website was not available {{vmemf}} times because of this problem.
+{% endif %}{% if nprocf %}Exceeded the number of processes limit of {{lnproc}}. Your website was not available {{nprocf}} times because of this problem.
+{% endif %}{% if cpuf %}You reached limit of {{lcpu}} of total server CPU usage {{cpuf}} times. Your website was forced to load slower to reduce its CPU usage.
+{% endif %}{% if iof %}You reached limit of {{lio}}KB/s disk io rate {{iof}} times. The disk io speed for your account was slowed as a result of this problem.
+{% endif %}{% if iopsf %}You reached limit of {{liops}} I/O operations {{iopsf}} times. The disk io speed for your account was slowed as a result of this problem.
+{% endif %}
+ 
+To view full details about your web hosting account's resource usage, including the time of each incident listed above, please click the link below and log into your cpanel hosting control panel, then click the "Resource Usage" link under the "Logs and Statistics" section.
+http://{{DOMAIN}}:2083
+ 
+If your account is regularly exceeding it's available resources, please consider upgrading to a higher level hosting plan that includes more resources. If you have any questions or need help with anything, just reply to this email and let us know.
+ 
+Sincerely,
+ 
+Your Friendly Web Hosting Support Team
+```
+</div>
+
+:::tip Note
+The email template should be in the UTF-8 encoding. The other encodings are not supported.
+:::
+
+Starting from lve-stats v. 3.0.15-1, it allows to localize the words that before were imported directly from the lve-stats program code and couldn't be changed.
+
+The email template looks like follows:
+
+```
+Dear {{TONAME}},
+Following accounts experienced issues in the past {{PERIOD}}{% if HOSTNAME is defined %} on host {{HOSTNAME}}{% endif %}
+
+{{STATS}}
+
+Sincerely,
+Your Friendly Web Hosting Support Team
+```
+
+Before, the `{TONAME}` was replaced with “Administrator”/”Reseller”/”Customer” according to the type of the addressee. The `{PERIOD}` was replaced with the duration of the period during which the limits faults were detected. The period duration includes the words "days"/"hour"/"minutes"/"seconds".
+
+In the new version, in order for the lve-stats notifier to include these words in the letter in the language corresponding to the addressee locale, you should create a file for the required locale `/usr/share/lve/emails/<encoding_name>/locale_defines.json` with the following content:
+
+```
+{
+ "NOTIFY_FROM_SUBJECT": "Your server has lve-stats faults",
+ "PERIOD": {
+   "days": "days", "hours": "hour(s)", "minutes": "minutes", "seconds": "seconds"
+ },
+ "TONAME": {
+   "admin": "Administrator", "reseller": "Reseller", "customer": "Customer"
+ }
+}
+```
+
+The file format should be JSON, and the file encoding should be UTF-8. If this file is found and successfully read, the words from it will be used in emails. 
+In case of any file reading/parsing error, a corresponding message will be written in the lve-stats log, and the contents of the file will be completely ignored.
+If a key in the JSON file content is missing, then lve-stats notifier uses the word contained in the body of the program (just like in previous lve-stats versions).
+Also, this file allows you to override/localize the subject of the email.
+
+It should be noted that this override of the subject line is the highest priority. I.e., if you want to use the subject from the configuration file `/etc/sysconfig/lvestats.config/StatsNotifier.cfg`, then do not specify the `NOTIFY_FROM_SUBJECT` key in  the `locale_defines.json`.
+
+
+### Plugins
+
+* [Creating a plugin for LVE-stats2](./#creating-a-plugin-for-lve-stats2)
+* [Introduction](./#introduction)
+* [Server plugin arrangement](./#server-plugin-arrangement)
+* [Plugin configuration](./#plugin-configuration)
+* [Types of plugins](./#types-of-plugins)
+* [Examples of plugins](./#examples-of-plugins)
+  * [Collector](./#collector)
+  * [Analyzer](./#analyzer)
+  * [Persistor](./#persistor)
+  * [Notifier](./#notifier)
+* [File info and format for /var/lve/info file](./#file-info-and-format-for-var-lve-info-file)
+
+LVE-stats2 comes with a set of generic plugins:
+
+| |  |  |  | |
+|-|--|--|--|-|
+|Plugin Name | Order | Default | Period (seconds) | Description|
+|LVECollector | 1000 | Y | 5 | Collects usage/limits data from `/proc/lve/list`|
+|CPUInfoCollector | 2000 | Y | 5 | collents info about <span class="notranslate"> CPU - `/proc/cpuinfo`</span>|
+|LVEUsernamesCollector | 3000 | Y | 3600 | collects usernames & user ids to match <span class="notranslate">`uid <-> lve id`</span> later on|
+|LVEUsageAnalyzer | 4000 | Y | 5 | analyzes usage of LVE|
+|LveUsageAggregator | 5000 | Y | 60 | aggregates data by time periods|
+|DBGovSaver | 6000 | Y | 5 | Saves data about database governor|
+|FileSaver | 7000 | Y | 5 | Saves LVE data into <span class="notranslate">`/var/lve/info`</span> |
+|CloudLinuxTopFileSaver | 8000 | Y | 60 | saves data used by <span class="notranslate"> cloudlinux-top to `/var/lve/cloudlinux-top.json`</span>|
+|DBSaver | 9000 | Y | 60 | save LVE data to database|
+|DbUsernamesSaver | 10000 | Y | 3600 | saves users name to database|
+|DBSaverX60 | 11000 | Y | 3600 | saves aggregated hourly data into database|
+|SnapshotSaver | 12000 | Y | 30 | collects & saves snapshots data|
+|StatsNotifier | 13000 | Y | varied | notify user/admin based on usage|
+|HistoryCleaner | 14000 | Y | 3600 | removes old usage|
+|ResMEMCollector | 1500 | N | 30 | collects physical memory usage from processes RES field instead of <span class="notranslate">`/proc/lve/list`</span> |
+|LVEDestroyer | - | N | 5 | destroys LVEs that weren't active for X iterations. Number of iterations is passed from config using iterations variable. <span class="notranslate">`iterations=0`</span> means plugin disabled|
+
+
+To enable non-default plugin, copy or link it to `/usr/share/lve-stats/plugins` directory.
+
+For example to enable `ResMEMCollector` plugin, do:
+
+<div class="notranslate">
+
+```
+ln -s /usr/share/lve-stats/plugins.other/res_mem_collector.py /usr/share/lve-stats/plugins/
+service lvestats restart
+```
+</div>
+
+
+#### Creating a plugin for LVE-stats2
+
+#### Introduction
+
+
+<span class="notranslate"> LVE Stats 2 </span> complex has scalable architecture, which allows to connect custom plugins.
+
+
+<span class="notranslate"> LVE Stats </span> server searches for plugins in the directory which is specified with plugins parameter of server’s _/etc/sysconfig/lvestats2_ configuration file. Default directory is <span class="notranslate"> _/usr/share/lve-stats/plugins_. </span>
+
+Each plugin must be of a <span class="notranslate"> Python </span> class, must be written in <span class="notranslate"> Python </span> language and its file must have <span class="notranslate"> .py </span> extension. Files with all other extensions will be ignored. For normal server work access permission 400 is enough; owner – <span class="notranslate"> root </span> .
+
+Plugin classes can be of the same name, but better not, because classes' names can affect the set of parameters in <span class="notranslate"> _set_config_ </span> method. You can find detailed plugins' configuring information below, in appropriate chapter.
+
+Plugin class must contain <span class="notranslate"> _execute()_ </span> method, which is invoked by the server every 5 seconds (by default, can be changed by interval parameter of configuration file).
+Also <span class="notranslate"> set_config </span> method (configuration settings) can be available. You can find more info in <span class="notranslate">[Plugins Configuration](./#plugin-configuration)</span> chapter.
+
+Additionally the following attributes can be set (plugin class instance variable):
+
+* <span class="notranslate"> order (integer) </span> - defines plugin's position in the server's plugin list, (more info in <span class="notranslate"> Servers Plugin Arrangement </span> ).
+* <span class="notranslate"> timeout (integer </span> or <span class="notranslate"> float </span> ) – the longest allowable duration of one launch of the plugin (execute method). Default value of <span class="notranslate"> timeout </span> parameter is 5 seconds.
+* <span class="notranslate"> period (integer) </span> – sets the interval between two launches of execute plugin method in seconds. If not defined, then plugin runs every 5 seconds ( <span class="notranslate"> interval </span> parameter in configuration file).
+
+When <span class="notranslate"> _execute()_   </span> method of the plugin is invoked, the server creates an attribute <span class="notranslate"> _now_ </span> in it, where launch time is recorded. This value is equal to what a standard Python function <span class="notranslate"> _time.time()_ </span> returns. All the plugins launched one after another receive the same  value of <span class="notranslate"> _now_   </span> attribute from the server. <span class="notranslate"> _now_ </span> is overwritten before <span class="notranslate"> _execute()_ </span> method is invoked.
+
+The previous value of now attribute is not saved by the server. If plugin needs it, it has to save it by itself.
+
+Plugin class can be inherited from <span class="notranslate"> _LveStatsPlugin_ </span> class, which is the part of the server itself. This is not obligatory, but inheritance can help to avoid different errors in servers work, particularly if a plugin doesn't contain required execute method.
+
+<span class="notranslate"> _LveStatsPlugin_ </span> class is defined in the file: <span class="notranslate"> _/opt/alt/python27/lib/python2.7/site-packages/lvestats/core/plugin.py_ . </span>
+
+#### Server plugin arrangement
+
+
+When the server starts, it performs the search of plugins in the directory specified in _/etc/sysconfig/lvestats2_ configuration file. This directory is scanned only when the server starts, therefore if any plugin was added into the directory, the server has to be restarted with the following command:
+<div class="notranslate">
+
+```
+service lvestats restart.
+```
+</div>
+
+After successful restart, the plugins are graded and executed  ascending by <span class="notranslate"> _order_ </span> attribute. If any plugin <span class="notranslate"> _order_ </span> attribute is not set, it is considered as a <span class="notranslate"> Python </span> language constant _sys.maxint_ (which is usually 9223372036854775807). This in fact means that such plugins will be executed in the last.
+If any plugins has similar <span class="notranslate"> _order_ </span> meanings, their execution order is unpredictable.
+
+The server invokes <span class="notranslate"> _execute_ </span> method of all plugins one after another.
+
+When the server invokes <span class="notranslate"> _execute()_ </span> method of any plugin, it transmits a data dictionary ( <span class="notranslate"> _lve_data_ </span> argument) into plugin. The dictionary is common for all the plugins. Any plugin can read, write and change any data in this dictionary. <span class="notranslate"> LVE Stats 2 </span> server doesn't control this area. That is why one must be careful while developing new plugins, in order not to change or corrupt other plugins' data which can break their functionality.
+
+If an exception occurs in <span class="notranslate"> _execute()_ </span> method, its text and <span class="notranslate"> python </span> stack trace is recorded into server log _/var/log/lve-stats_ and all the changes made to <span class="notranslate"> _lve_data_ </span> dictionary before the exception happened are lost.
+
+The keys of the <span class="notranslate"> _lve_data_ </span> dictionary are recommended to look like <span class="notranslate"> “ _PluginName_Key_ ” </span> , in order the plugins do not corrupt other data accidentally.
+
+Server contains some standard plugins which define and use the following keys in the common dictionary <span class="notranslate"> lve_data: _LVE_VERSION, stats, old_stats, procs_ </span> and <span class="notranslate"> _lve_usage_ </span> . User plugins can use data from these keys, but it is recommended not to change them if there is no special need, because it can break the next plugins in the execution queue.
+
+| | |
+|-|-|
+|Key | Content|
+|<span class="notranslate"> `LVE_VERSION` </span> | LVE version. The same as console command <span class="notranslate"> `lvectl lve-version` </span> produces.|
+|<span class="notranslate"> `stats` </span> | Dictionary, that contains lve id’s as keys and LVEStat class objects as values. Every LVEStat object contains values of usages and limits taken from <span class="notranslate"> _/proc/lve/list_ </span> file for every <span class="notranslate"> LVE Id </span> . Dictionary keys – <span class="notranslate"> integer lve id </span> , including 0 for “ <span class="notranslate"> default </span> ” LVE. This dictionary is updated on each iteration of lvestats-server (every 5 seconds by default). LVEStat – is a standard server class, it can be imported with the command from <span class="notranslate"> _lvestats.core.lvestat_ </span> `import LVEStat.` The class is described in the file <span class="notranslate"> _/opt/alt/python27/lib/python2.7/site-packages/lvestats/core/lvestat.py_ </span> . Here you can find the whole list of data fields and their functions.|
+|<span class="notranslate"> `old_stats` </span> | _stats_ content from the previous iteration. Before the first iteration – empty dictionary.|
+|<span class="notranslate"> `totalHz` </span> | When LVE_VERSION is 4, real <span class="notranslate"> CPU </span> frequency in <span class="notranslate"> Hz </span> multiplied by number of cores. When LVE_VERSION > 4, <span class="notranslate"> CPU </span> speed is in conventional units and equals to 1000000000 * cores (1 <span class="notranslate"> GHz </span> per core).|
+|<span class="notranslate"> `procs` </span> | Quantity of <span class="notranslate">  CPU </span> cores.|
+|<span class="notranslate"> `lve_usages` </span> | Contains accumulated LVE statistics for each 5-seconds interval in current minute. Cleared each minute.|
+|<span class="notranslate"> `lve_usage` </span> | Contains aggregated LVE Statistics for “previous” minute to store to database. Overwritten each minute.|
+
+Each plugin’s instance lifetime is from the moment it was loaded till the server stops working. But if <span class="notranslate"> _execute()_ </span> method working time exceeds timeout, the plugin will be terminated and restarted in the next iteration. All changes to the <span class="notranslate"> _lve_data_ </span> dictionary will be lost.
+
+During servers graceful shutdown (restart, server shutdown, commands <span class="notranslate"> `service lvestats stop, service lvestats restart` </span> ), each plugin receives SIGTERM signal.
+This is useful to correctly unload the plugin (terminate all subsidiary processes, save data to files etc.). If a plugin doesn't need to “finalize” its execution before termination, then there's no need to implement this signal handler. Below you can see an example of such handler.
+
+::: tip Note
+If a plugin implements handler for SIGTERM, then this handler must end with <span class="notranslate"> `sys.exit(0)` </span> command. Otherwise plugin process will not be terminated correctly and will become orphaned.
+:::
+
+#### Plugin configuration
+
+
+<span class="notranslate"> LVE Stats 2 </span> Server allows to configure each plugin separately.
+
+On initialization stage the server invokes <span class="notranslate"> _set_config()_ </span> method of the plugin and locates there a dictionary which contains:
+
+* all parameters from file _/etc/sysconfig/lvestats2_ (global).
+* plugin's individual configuration file parameters (if one exists). Configuration files must be located in <span class="notranslate"> _/etc/sysconfig/lvestats.config_ </span> directory, have .cfg extension and be the same format as _/etc/sysconfig/lvestats2_ . Files in this directory are matched with the plugins by name. For instance, if plugin class is <span class="notranslate"> _Plugin1_class_ </span> , then server will try to find and download <span class="notranslate"> _/etc/sysconfig/lvestats.config/Plugin1_class.cfg_. </span> Names are case sensitive. If any plugin doesn't have an individual configuration file, then it's not an error. In this case plugin will just receive parameters from _/etc/sysconfig/lvestats2_ .
+
+::: tip Note
+An individual configuration file of every plugin is loaded after server configuration file. That is why if it contains any parameters with names similar to ones of server config, then plugin will use parameters from its individual config rather than server config parameters.
+
+If a plugin doesn't require any configuration to be done, then set_config method can be skipped.
+
+In addition, plugins can use their own configuration methods.
+:::
+
+#### Types of plugins
+
+
+According to server architecture, plugins can be of the following types:
+
+* <span class="notranslate"> collectors </span>
+* <span class="notranslate"> analyzers </span>
+* <span class="notranslate"> persistors </span>
+* <span class="notranslate"> notifiers </span>
+
+<span class="notranslate"> Collectors </span> are designed to collect information; <span class="notranslate"> analyzers </span> – to analyze it and form some other data on its basis; <span class="notranslate"> persistors </span> – to save information from the common dictionary into files, databases, etc.; <span class="notranslate"> notifiers </span> - to notify system users about any events.
+
+This division is rather arbitrary. There is an opportunity to execute all the actions on collection, analysis and saving the information in one and only plugin. But at the same time the division into functionally independent parts allows to build flexible and easily configurable system for collecting and processing the data.
+
+Also it is possible to implement the systems of lazy-write, planning of collecting/processing tasks and notifying users about different events.
+
+
+#### Examples of plugins
+
+
+Here is a practical example of a user plugin.
+
+Specification:
+
+1. To trace specified file size changes. The name of file being traced must be specified in configuration file, which allows to change it without modifying the plugin itself. If file size has been changed, it has to be written as a message into our log. The name of log must be specified in configuration file as well.
+
+2. File size must be checked with default interval (5 seconds), and log notification must be held once a minute (to avoid resource expend for possibly regular write).
+
+3. System administrator must receive emails with file size at the moment the email was sent. These notifications must be sent even if the file size hasn’t been changed. Notification emails must be read periodicity from configuration file as well as sender/receiver emails .
+
+As file size check, fixing the result and notification sending must be held with different periods, then it’s impossible to realize all the tasks by means of one plugin.
+The fact that one minute (60 seconds) is multiple to 5 seconds doesn’t matter in this case, because default period can be changed in server’s configuration file, but the condition of fixing the result once a minute is a part of the specification, which can not be violated. In addition, notification email period is known in advance, as it is specified by user in configuration file.
+
+That is why we realize 4 plugins: <span class="notranslate"> **collector, analyzer, persistor** </span> and <span class="notranslate"> **notifier** </span>.
+
+
+#### **Collector**
+
+
+<span class="notranslate"> Collector's </span> aim is to determine the size of a proper file.
+
+<div class="notranslate">
+
+```
+# FSize_watcher_collector.py
+# Example plugin for monitoring file size.
+# Part 1. Collector
+
+import os
+from lvestats.core.plugin import LveStatsPlugin 
+
+# Key name
+COLLECTOR_KEY = 'FSizeWatcher_fsize'
+COLLECTOR_KEY_FILENAME = 'FSizeWatcher_fname'  
+
+class FSize_watcher_collector (LveStatsPlugin):
+	# this plugin should be first in chain
+	order = 0
+	# File to monitoring
+	file_to_monitoring = None 
+	
+	def __init__(self):
+		pass 
+		
+	# Sets configuration to plugin
+	def set_config(self, config):
+		self.file_to_monitoring = config.get('file_to_monitoring', None)
+		pass
+	# Work method
+	def execute(self, lve_data):
+		try:
+			# if monitoring file absent, do nothing
+			if self.file_to_monitoring is None or not os.path.exists(self.file_to_monitoring):
+		return 
+		
+			# Get file size
+			stat_info = os.stat(self.file_to_monitoring)
+			fsize = stat_info.st_size 
+			
+			# Place file name and file size to server data dictionary
+			lve_data[COLLECTOR_KEY_FILENAME] = self.file_to_monitoring
+			lve_data[COLLECTOR_KEY] = fsize
+		except (OSError, IOError):
+			# file absent or any other error - remove size from dictionary
+			del lve_data[COLLECTOR_KEY]
+```
+</div>
+
+Plugin algorithm is extremely simple – file size is read and written into data dictionary. Files name is read from <span class="notranslate"> _set_config_ </span> method configuration. If the name is not specified, then <span class="notranslate"> None </span> is written into appropriate variable. All the errors are completely ignored (e.g. if specified file doesn't exist or there's no way to read any of it's information).
+
+<span class="notranslate"> _order_ </span> attribute is specified as 0 to make this plugin go the first among three. Data collector must always be the first in plugins logical chain, because it provides all the necessary information for the analyzer which goes the next. Specific values of <span class="notranslate"> _order_ </span> can be of any kind, but what is important is that when the server starts, all the plugins line up in proper sequence: <span class="notranslate"> collector – analyzer – persistor </span> .
+
+In order to make plugin work, we have to create configuration file <span class="notranslate"> _/etc/sysconfig/lvestats.config/FSize_watcher_collector.cfg_ </span> with the following content:
+
+<div class="notranslate">
+
+```
+# Config file for FSize_watcher_collector plugin
+# Please define monitoring file here
+# file_to_monitoring = /usr/local/cpanel/logs/error_log
+file_to_monitoring = /usr/local/cpanel/logs/access_log
+```
+</div>
+
+Note that file name <span class="notranslate"> _FSize_watcher_collector_ </span> without .cfg extension matches plugin class name.
+
+<span class="notranslate"> _file_to_monitoring_ </span> option is read by plugin in <span class="notranslate"> _set_config_ </span> method and contains file’s full name for monitoring.
+
+Files for monitoring, suggested in the actual example - <span class="notranslate"> _/usr/local/cpanel/logs/error_log_ and _/usr/local/cpanel/logs/access_log_ </span> - are real, these are cPanel control panel logs.
+
+The first file is errors log; the second is appeal log, is refreshed during common work with panel (e.g. if user email address is changed).
+
+Errors log tracking is more important, but appeal log monitoring allows to illustrate plugins work more in details, because it is refreshed more often.
+
+Note that plugin can monitor one file only.
+
+#### **Analyzer**
+
+
+<span class="notranslate"> Analyzer </span> decides if the file's size has changed and gives a command to persistor to refresh log.
+
+<div class="notranslate">
+
+```
+# FSize_watcher_analyzer.py
+# Example plugin for monitoring file size.
+# Part 2. Analyzer 
+
+from lvestats.core.plugin import LveStatsPlugin 
+
+# Key name from collector plugin
+COLLECTOR_KEY = 'FSizeWatcher_fsize' 
+
+# Key name 1 for saver plugin
+SAVER_KEY = 'FSizeWatcher_fsize_to_store'
+# Key name 2 for saver plugin
+SAVER_DATA_PRESENCE = 'FSizeWatcher_fsize_present'  
+
+class FSize_watcher_analyzer (LveStatsPlugin):
+	# this plugin should be second in chain
+	order = 1
+	# Last file size
+	file_last_size = 0
+	# Plugin run period in secondsperiod = 60 
+	
+	def __init__(self):
+		pass 
+		
+	# work method
+	def execute(self, lve_data):
+		# Default setting for saver
+		lve_data[SAVER_DATA_PRESENCE] = 0
+		# Check presence data
+		if COLLECTOR_KEY not in lve_data:
+		return 
+		
+		# Get file size from server data dictionary
+		fsize = lve_data[COLLECTOR_KEY] 
+		
+		# Check, if file size changed, store it for saver plugin
+		if fsize == self.file_last_size:
+			return 
+			
+		# Put new size for saver plugin
+		lve_data[SAVER_KEY] = fsize
+		self.file_last_size = fsize
+		lve_data[SAVER_DATA_PRESENCE] = 1
+```
+</div>
+
+This plugin is extremely simple as well. It starts after <span class="notranslate"> collector (order=1) </span> , searches for file size in the dictionary and compares it with the previous index. If it has changed, then it writes a sign of presence of a new size into the dictionary. If no changes seen, then sign resets. The previous file size is stored in the plugin itself in <span class="notranslate"> _file_last_size_ </span> variable. Note that they are stored during the whole server <span class="notranslate"> lve-stats </span> lifetime.
+
+If file size is not found in data dictionary, then plugin just ends.
+
+All the errors are completely ignored.
+
+<span class="notranslate"> Analyzer </span> is unconfigurable, that is why it doesn’t require any configuration file and it doesn’t contain <span class="notranslate"> _set_config_ </span> method.
+
+Plugin starts every 60 seconds (1 minute), because we need data fixation to be performed one time in a minute.
+
+
+#### **Persistor**
+
+
+<span class="notranslate"> Persistor </span> saves information from the common dictionary into files, databases, etc.
+
+<div class="notranslate">
+
+```
+# FSize_watcher_saver.py
+# Example plugin for monitoring file size and last modification date-time.
+# Part 3. Data saver 
+
+import signal
+import sys
+import time
+from lvestats.core.plugin import LveStatsPlugin 
+
+# Key name 1 for saver plugin
+SAVER_KEY = 'FSizeWatcher_fsize_to_store'
+# Key name 2 for saver plugin
+SAVER_DATA_PRESENCE = 'FSizeWatcher_fsize_present'
+# Monitoring file name
+COLLECTOR_KEY_FILENAME = 'FSizeWatcher_fname'  
+
+class FSize_watcher_saver (LveStatsPlugin):
+	# this plugin should be third in chain
+	order = 2
+	# Plugin run period in seconds
+	period = 60
+	# Log filename
+	log_file_name = None
+	# First run flag
+	is_first_run = True 
+	
+	def __init__(self):
+		signal.signal(signal.SIGTERM, self.sigterm_handler) 
+		
+	# Sets configuration to plugin
+	def set_config(self, config):
+		# Get log filename
+		self.log_file_name = config.get('log_filename', None) 
+		
+	# work method
+	def execute(self, lve_data):
+		# do nothing, if log file not defined
+		if not self.log_file_name:
+			return
+		try:
+			# Check presence data
+			if SAVER_DATA_PRESENCE not in lve_data or lve_data[SAVER_DATA_PRESENCE] == 0:
+				# No data
+				return
+			# Get file size from server data dictionary
+			fsize = lve_data[SAVER_KEY]
+			
+			# Store data to log
+			f = open(self.log_file_name, 'a')
+			if self.is_first_run:
+				f.write('%s - FSize_watcher started. Monitoring file: %s, saving data period=%d sec\n' % (time.asctime(time.localtime()), lve_data[COLLECTOR_KEY_FILENAME], self.period))
+				self.is_first_run = False
+			f.write('%s - FSize_watcher: file size is %d bytes\n' % (time.asctime(time.localtime()), fsize))
+			f.close()
+		except:
+			# Ignore all errors
+			pass 
+			
+	# Terminate handler
+	def sigterm_handler(self, signum, frame):
+		if self.log_file_name:
+			try:
+				# Store data to log file
+				f = open(self.log_file_name, 'a')
+				f.write('%s - File watcher saver plugin: TERMINATE\n' % time.asctime(time.localtime()))
+				f.close()
+				pass
+			except:
+				# Ignore all errors
+				pass
+		# Terminate process
+		sys.exit(0)
+```
+</div>
+
+Configuration file <span class="notranslate">`/etc/sysconfig/lvestats.config/FSize_watcher_saver.cfg`</span>:
+<div class="notranslate">
+
+```
+# Config file for FSize_watcher_saver.py plugin
+# Please define log filename here
+log_filename = /var/log/FSize_watcher.log
+```
+</div>
+
+This plugin starts after <span class="notranslate"> analyzer (order=2) </span> , checks new file size <span class="notranslate"> `presence` </span> flag, and if positive – writes it into log. If the flag is cleared (which means the size hasn't changed), then plugin simply ends.
+
+Starts once in a minute (period=60).
+
+Also this plugin shows the work of signal handler.
+
+Plugin constructor registers handler-function of a  proper signal: <span class="notranslate"> _signal.signal(signal.SIGTERM, self.sigterm_handler)_ .  </span> This means, that when the server finishes its work, then <span class="notranslate"> _sigterm_handler_ </span> method of plugin class will be invoked. In the actual example the function just writes a notification into log, tracing the fact of it's invocation.
+
+Pay attention on <span class="notranslate"> _sys.exit(0)_ </span> command in the end of the handler. Find the information on it in <span class="notranslate"> [Server Plugin Arrangement](./#server-plugin-arrangement) </span> section.
+
+In addition see into examples of file log <span class="notranslate"> _/var/log/FSize_watcher.log_ </span> formed by the plugins above:
+<div class="notranslate">
+
+```
+Tue Feb  3 13:06:24 2015 - FSize_watcher started. Monitoring file: /usr/local/cpanel/logs/access_log, saving data period=60 sec
+Tue Feb  3 13:06:24 2015 - FSize_watcher: file size is 122972890 bytes
+Tue Feb  3 13:07:25 2015 - FSize_watcher: file size is 122975507 bytes
+Tue Feb  3 13:08:25 2015 - FSize_watcher: file size is 122978124 bytes
+Tue Feb  3 13:09:25 2015 - FSize_watcher: file size is 122978997 bytes
+Tue Feb  3 13:10:25 2015 - FSize_watcher: file size is 122981033 bytes
+Tue Feb  3 13:11:25 2015 - FSize_watcher: file size is 122982052 bytes
+Tue Feb  3 13:13:25 2015 - FSize_watcher: file size is 122983798 bytes
+Tue Feb  3 13:20:15 2015 - File watcher saver plugin: TERMINATE
+```
+</div>
+
+and
+<div class="notranslate">
+
+```
+Thu Feb  5 13:07:27 2015 - FSize_watcher started. Monitoring file: /usr/local/cpanel/logs/error_log, saving data period=60 sec
+Thu Feb  5 13:07:27 2015 - FSize_watcher: file size is 14771849 bytes
+Thu Feb  5 14:03:32 2015 - FSize_watcher: file size is 14771995 bytes
+Thu Feb  5 15:01:36 2015 - FSize_watcher: file size is 14772434 bytes
+Thu Feb  5 17:15:47 2015 - FSize_watcher: file size is 14772873 bytes
+Thu Feb  5 18:47:54 2015 - FSize_watcher: file size is 14775213 bytes
+Thu Feb  5 19:11:56 2015 - FSize_watcher: file size is 14775652 bytes
+Thu Feb  5 21:09:05 2015 - FSize_watcher: file size is 14776091 bytes
+Thu Feb  5 23:06:14 2015 - FSize_watcher: file size is 14776530 bytes
+Fri Feb  6 00:47:23 2015 - FSize_watcher: file size is 14778870 bytes
+Fri Feb  6 01:02:24 2015 - FSize_watcher: file size is 14779309 bytes
+Fri Feb  6 02:00:28 2015 - FSize_watcher: file size is 14779434 bytes
+Fri Feb  6 03:16:34 2015 - FSize_watcher: file size is 14779873 bytes
+Fri Feb  6 05:04:42 2015 - FSize_watcher: file size is 14779998 bytes
+Fri Feb  6 05:12:43 2015 - FSize_watcher: file size is 14780437 bytes
+Fri Feb  6 05:56:50 2015 - FSize_watcher: file size is 14780551 bytes
+Fri Feb  6 06:01:50 2015 - FSize_watcher: file size is 14780975 bytes
+Fri Feb  6 06:03:51 2015 - FSize_watcher: file size is 14782183 bytes
+Fri Feb  6 06:04:51 2015 - FSize_watcher: file size is 14782575 bytes
+Fri Feb  6 06:18:52 2015 - FSize_watcher: file size is 14782647 bytes
+Fri Feb  6 06:21:52 2015 - FSize_watcher: file size is 14782898 bytes
+Fri Feb  6 06:48:54 2015 - FSize_watcher: file size is 14785238 bytes
+Fri Feb  6 07:09:56 2015 - FSize_watcher: file size is 14785677 bytes
+Tue Feb  6 08:03:15 2015 - File watcher saver plugin: TERMINATE
+```
+</div>
+
+You can see that log record is being held once a minute (what we actually need), new file size is written.
+
+Also we can notice that handler <span class="notranslate"> SIG_TERM </span> was executed, signaling that plugin received the notification about server shut-down.
+
+
+#### **Notifier**
+
+
+<span class="notranslate">Notifier</span> informs system users about any events.
+<div class="notranslate">
+
+```
+# FSize_watcher_saver.py
+# Example plugin for monitoring file size and last modification date-time.
+# Part 4. Notifier 
+
+import time
+import smtplib 
+
+from lvestats.lib.commons import dateutil
+from lvestats.core.plugin import LveStatsPlugin  
+
+
+# Key name
+COLLECTOR_KEY_FSIZE = 'FSizeWatcher_fsize'
+COLLECTOR_KEY_FILENAME = 'FSizeWatcher_fname' 
+
+# email message pattern
+EMAIL_MESSAGE_PATTERN = """Hello, administrator!
+Size of the file '%s' is %d bytes.
+"""  
+
+
+class FSize_watcher_notifier (LveStatsPlugin):
+	# Default period
+	DEFAULT_PERIOD_STR = '12h'
+	# this plugin should be third in chainorder = 3
+	# Timeout
+	timeout = 20
+	# Notifier Log filename
+	log_file_name = '/var/log/FSize_watcher_notifier.log'
+	# Email from address
+	email_from = None
+	# Email to address
+	email_to = None
+	# Email subject
+	email_subject = None
+	# Sets configuration to plugin
+	def set_config(self, config):
+		# Email settings
+		self.email_from = config.get('notify_from_email', None)
+		self.email_to = config.get('notify_to_email', None)
+		self.email_subject = config.get('notify_from_subject', 'Message from FSize_watcher_notifier plugin')
+		# Notify period
+		s_period = config.get('notify_period', None)
+		if s_period:
+			self.period = dateutil.parse_period2(s_period)
+		else:
+			self.period = dateutil.parse_period2(FSize_watcher_notifier.DEFAULT_PERIOD_STR)
+		f = open(self.log_file_name, 'a')
+		f.write('%s - FSize_watcher_notifier plugin: configure\n' % time.asctime(time.localtime()))
+		f.write('       - Period: %s\n' % self.period)
+		f.write('       - From: %s\n' % self.email_from)
+		f.write('       - To: %s\n' % self.email_to)
+		f.write('       - Subject: \'%s\'\n' % self.email_subject)
+		f.close() 
+		
+	# work method
+	def execute(self, lve_data):
+		if COLLECTOR_KEY_FSIZE not in lve_data or COLLECTOR_KEY_FILENAME not in lve_data:
+			return
+		if not self.email_from or not self.email_to:
+			f = open(self.log_file_name, 'a')
+			f.write('%s - FSize_watcher_notifier plugin error: email_from or email_to not set\n')
+			f.close()
+			return
+		try:
+			from email.mime.text import MIMEText
+			# Send email
+			msg = MIMEText(EMAIL_MESSAGE_PATTERN % (lve_data[COLLECTOR_KEY_FILENAME], lve_data[COLLECTOR_KEY_FSIZE]))
+		msg['Subject'] = self.email_subject
+		msg['From'] = self.email_from
+		msg['To'] = self.email_to 
+		
+		s = smtplib.SMTP('localhost')
+		s.sendmail(self.email_from, [self.email_to], msg.as_string())
+			s.quit() 
+			
+		f = open(self.log_file_name, 'a')
+			f.write('%s - FSize_watcher_notifier plugin: email message was successfully sent\n' % time.asctime(time.localtime()))
+			f.close()
+			except Exception as e:
+			f = open(self.log_file_name, 'a')
+			f.write('%s - FSize_watcher_notifier plugin error:\n%s\n' % (time.asctime(time.localtime()), str(e)))
+			f.close()
+```
+</div>
+
+Configuration file <span class="notranslate"> _/etc/sysconfig/lvestats.config/FSize_watcher_notifier.cfg_ : </span>
+<div class="notranslate">
+
+```
+# Config file for FSize_watcher_notifier.py plugin
+# Please define email options here 
+
+NOTIFY_FROM_EMAIL=user@hostname
+NOTIFY_FROM_SUBJECT=Message from FSize_watcher_notifier
+NOTIFY_TO_EMAIL=admin@hostname
+NOTIFY_PERIOD=12h
+```
+</div>
+
+Plugin’s index number equals 3 ( <span class="notranslate"> order=3 </span> ), that is why <span class="notranslate"> notifier </span> starts after the rest. But since it uses only data formed by <span class="notranslate"> collector </span> , then its order may equal any number bigger that <span class="notranslate"> collectors </span> order (>0).
+
+<span class="notranslate"> Notifier </span> reads the necessary parameters from the configuration (email address, topic, period) and writes them into its own log as reference.
+
+Plugin’s <span class="notranslate"> _execute_ </span> method checks the availability of all the necessary data (email parameters, collectors data) and sends the message. All the notifications are written into the <span class="notranslate"> notifier's </span> own log.
+
+If any data is missing,  the message is not sent.
+
+Log example:
+<div class="notranslate">
+
+```
+Thu Feb  5 11:51:34 2015 - FSize_watcher_notifier plugin: configure
+       - Period: 60.0
+       - From: user@hostname
+       - To: admin@hostname
+       - Subject: 'Message from FSize_watcher_notifier'
+Thu Feb  5 11:51:35 2015 - FSize_watcher_notifier plugin: email message was successfully sent
+Thu Feb  5 11:52:35 2015 - FSize_watcher_notifier plugin: email message was successfully sent
+Thu Feb  5 11:53:35 2015 - FSize_watcher_notifier plugin: email message was successfully sent
+Thu Feb  5 11:54:35 2015 - FSize_watcher_notifier plugin: email message was successfully sent
+Thu Feb  5 11:57:00 2015 - FSize_watcher_notifier plugin: configure
+       - Period: 43200.0
+       - From: user@hostname
+       - To: admin@hostname
+       - Subject: 'Message from FSize_watcher_notifier'
+Thu Feb  5 11:57:00 2015 - FSize_watcher_notifier plugin: email message was successfully sent
+```
+</div>
+
+#### File info and format for /var/lve/info file
+
+
+This file is used by control panels to display to user their 'current' usage. The file is updated every 5 seconds by lve-stats.
+
+When writing to this file we make sure that: average <span class="notranslate"> CPU/IOPS/MEM </span> is never greater then <span class="notranslate"> LIMIT </span> for that resource.
+
+Example:
+
+0,0,20,0,2500,0,262144,0,0,262144,0,0,100,0,0,0,0,1024,1024,0,0,0,0
+600,1,20,2492,2500,70,262144,0,0,262144,33,0,100,1,0,0,0,1024,1024,0,5,0,0
+200,0,20,0,2500,0,262144,0,0,262144,0,0,100,0,0,0,0,1024,1024,0,0,0,0
+500,0,20,0,2500,0,262144,0,0,262144,0,0,100,0,0,0,0,1024,1024,0,0,0,0
+
+First line of the file is ' <span class="notranslate"> default limits </span> '.
+
+Fields:
+<div class="notranslate">
+
+```
+# 0 - id
+# 1 - mep (average entry processes)
+# 2 - lep  (limit ...)
+# 3 - cpu_usage (average speed)
+# 4 - lcpu (limit spped)
+# 5 - mem_usage (average virtual memory)
+# 6 - lmem (limit ...)
+# 7 - mem_fault (number of virtual memory faults)
+# 8 - mep_fault (number of entry processes faults)
+LVE_VERSION >=6
+# 9 - lmemphy (limit physical memory)
+# 10 - memphy (average ...)
+# 11 - memphy_fault (faults ...)
+# 12 - lnproc (limit number of processes)
+# 13 - nproc (average ...)
+# 14 - nproc_fault (faults ...)
+# 15 - lcpuw (CPU weight -- deprecated not used)
+# 16 - io_usage (average IO usage)
+# 17 - io_limit (limit ...)
+LVE_VERSION >=8
+#18 - liops  (limit IOPS)
+#19 - iops (average IOPS)
+```
+</div>
+
+:::tip Note
+You can also use [LVE-stats 2 CLI](/cloudlinuxos/command-line_tools/#lve-stats-2)
+:::
+
+### Troubleshooting
+
+<span class="notranslate"> lvestats </span> service and utilities write fatal errors to system log.
+
+There is <span class="notranslate">`/var/log/lve-stats.log`</span> file with additional information (warnings, tracebacks for errors).
+
+To see which letters were sent via lves-tats notifier in the logs, do the following:
+
+1. In the `/etc/sysconfig/lvestats2`, specify `logging_level=debug`;
+2. Execute the `service lvestats restart` command.
+
+## CageFS
+
+### General Information and Requirements
+
+* [Minimum Requirements](./#minimum-requirements)
+* [CageFS Quirks](./#cagefs-quirks)
+
+CageFS is a virtualized file system and a set of tools designed to isolate each user in their own 'cage.' Each customer gets their own fully functional CageFS environment, complete with system files, tools, and more.
+
+Benefits of CageFS:
+
+* Only safe binaries are available to the user.
+* Users cannot see or detect other users or their usernames on the server.
+* Users cannot access server configuration files, such as Apache configuration files.
+* Users have a restricted view of the _/proc_ file system and cannot see other users' processes.
+
+Despite these restrictions, the user's environment remains fully functional, and users should not feel limited in any way. No changes to user scripts are required. CageFS will isolate any script execution performed via:
+* <span class="notranslate"> Apache (suexec, suPHP, mod_fcgid, mod_fastcgi) </span>
+* <span class="notranslate"> LiteSpeed Web Server </span>
+* <span class="notranslate"> Cron Jobs </span>
+* SSH
+* Any other <span class="notranslate"> PAM </span>-enabled service
+
+::: tip Note
+mod_php is not supported, and MPM ITK requires a custom patch.
+:::
+
+::: tip Note
+CageFS is not supported for H-Sphere.
+:::
+
+See also [Compatibility Matrix](/cloudlinuxos/limits/#compatibility-matrix).
+
+#### Minimum Requirements:
+
+* Kernel: CL6 with lve1.2.17.1 or later, CL7.
+* 7GB of disk space.
+
+Depending on your setup and the number of users, you might also need:
+* Up to 8MB per customer in the `/var` directory (to store custom `/etc` directories).
+* 5GB to 20GB in the `/usr/share` directory (to store a safe skeleton of a filesystem).
+
+::: danger Warning
+If you decide to uninstall CageFS, ensure you follow the [uninstall instructions](./#uninstalling).
+:::
+
+#### CageFS Quirks
+
+Due to its design, some features may not work as expected or may require adjustments:
+
+* The `lastlog` command will not work (<span class="notranslate">`/var/log/lastlog`</span>).
+* PHP will load `php.ini` from <span class="notranslate">`/usr/selector/php.ini`</span>. This file is a link to the actual `php.ini` file on your system, ensuring the same `php.ini` is ultimately loaded.
+* You must run <span class="notranslate">`cagefsctl --update`</span> whenever you modify `php.ini` or need new/updated software inside CageFS.
+* CageFS installation changes <span class="notranslate">`jailshell`</span> to regular bash on cPanel. [Learn why](https://cloudlinux.zendesk.com/hc/articles/115004517685-Why-CageFS-installation-changes-jailshell-to-regular-bash-on-cPanel-).
+
+### Installation and Update
+
+To install CageFS:
+<div class="notranslate">
+
+```
+yum install cagefs
+/usr/sbin/cagefsctl --init
+```
+</div>
+
+The last command creates a skeleton directory, which may require around 7GB of disk space. If you lack sufficient space in _/usr/share_, use the following commands to place the <span class="notranslate"> `cagefs-skeleton` </span> in a different location:
+<div class="notranslate">
+
+```
+mkdir /home/cagefs-skeleton
+ln -s /home/cagefs-skeleton /usr/share/cagefs-skeleton
+```
+</div>
+
+Execute these commands before running <span class="notranslate">`cagefsctl --init`</span>.
+
+Additionally, approximately 4KB of disk space per user is required for the <span class="notranslate">`/var/cagefs`</span> directory. Ensure this directory is located on a partition with sufficient space and disk quota enabled.
+
+For example, to create the <span class="notranslate">`/var/cagefs`</span> directory on the <span class="notranslate">`/home`</span> partition, execute the following commands before running <span class="notranslate">`cagefsctl --init`</span>:
+
+<div class="notranslate">
+
+```
+mkdir /home/cagefs
+ln -s /home/cagefs /var/cagefs
+```
+</div>
+
+:::danger IMPORTANT
+Ensure disk quota is enabled for the partition where the <span class="notranslate">`/var/cagefs`</span> directory is located, or move it to a partition with disk quota enabled. This prevents users from abusing disk quota inside CageFS.
+:::
+
+If the `/var/cagefs` directory already exists, you can move it. Learn how to move the `/var/cagefs` directory:
+[https://docs.cloudlinux.com./#moving-var-cagefs-directory](https://docs.cloudlinux.com./#moving-var-cagefs-directory)
+
+::: danger IMPORTANT
+If you place the skeleton in the <span class="notranslate">`/home`</span> directory on cPanel servers, configure the following option in cPanel WHM: <span class="notranslate"> **WHM -> Server Configuration -> Basic cPanel/WHM Setup -> Basic Config -> Additional home directories** </span>.  
+Set the value to blank (not the default <span class="notranslate"> Home </span>). Without this change, cPanel will create new accounts in incorrect locations.
+:::
+
+CageFS automatically detects and configures all necessary files for:
+* cPanel
+* Plesk
+* DirectAdmin
+* ISPmanager
+* Interworx
+* MySQL
+* PostgreSQL
+* LiteSpeed
+
+A web interface for managing CageFS is available for cPanel, Plesk 10+, DirectAdmin, ISPmanager, and Interworx. For other control panels, use the command-line tool.
+
+Once the template is initialized, you can start enabling users. By default, CageFS is disabled for all users.
+
+Starting from **cagefs-6.1-27**, the <span class="notranslate">`fs.proc_can_see_other_uid`</span> setting is migrated (one time) from _/etc/sysctl.conf_ to _/etc/sysctl.d/90-cloudlinux.conf_. If this variable is not set in either file, it defaults to 0.
+
+It is strongly recommended not to set this variable in `90-cloudlinux.conf`. Instead, define it in `/etc/sysctl.conf` or another config file with an index number greater than `90-cloudlinux.conf`, such as `/etc/sysctl.d/95-custom.conf`.
+
+For more information on the automatic migration of <span class="notranslate">`fs.proc_can_see_other_uid`</span>, see [Kernel Config Variables](/cloudlinuxos/cloudlinux_os_kernel/#kernel-config-variables).
+
+:::tip Note
+You can also use [CageFS CLI](/cloudlinuxos/command-line_tools/#cagefs).
+:::
+
+### Uninstalling
+
+To uninstall CageFS, start by disabling and removing all directories:
+
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --remove-all
+```
+</div>
+
+This command disables CageFS for all customers, unmounts CageFS for all users, and removes the <span class="notranslate"> _/usr/share/cagefs-skeleton_ & _/var/cagefs_ </span> directories. It does not remove the _/etc/cagefs_ directory.
+
+To remove the CageFS RPM:
+
+<div class="notranslate">
+
+```
+yum remove cagefs
+```
+</div>
+
+
+### Managing users
+
+CageFS provides for two modes of operations:
+
+1. Enabled for all, except those that are disabled.
+2. Disabled for all, except those that are enabled.
+
+Mode #1 is convenient for production operation, where you want all new users to automatically be added to CageFS.
+Mode #2 is convenient while you test CageFS, as it allows you to enable it on one by one for your customers.
+
+To start using CageFS you have to select one of the mode of operations:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --enable-all
+```
+</div>
+or
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --disable-all
+```
+</div>
+or
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --toggle-mode
+```
+</div>
+That will switch the operation mode, preserving current disabled/enabled users.
+
+To enable individual user do:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --enable [username]
+```
+</div>
+To disable individual user:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --disable [username]
+```
+</div>
+To  list all enabled users:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --list-enabled
+```
+</div>
+To list all disabled users:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --list-disabled
+```
+</div>
+To see current mode of operation:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --display-user-mode
+```
+</div>
+
+
+:::tip Note
+You can also use [CageFS CLI](/cloudlinuxos/command-line_tools/#cagefs)
+:::
+
+### Configuration
+
+* [File system templates](./#file-system-templates)
+
+* [Excluding files](./#excluding-files)
+
+* [Excluding users](./#excluding-users)
+
+* [Mount points](./#mount-points)
+
+  * [Per user virtual mount points](./#per-user-virtual-mount-points)
+
+  * [Split by username](./#split-by-username)
+
+  * [Splitted by user’s UID mounts](./#splitted-by-user-s-uid-mounts)
+  
+  * [Mounting user’s home directory inside CageFS](./#mounting-users-home-directory-inside-cagefs)  
+
+  * [How to hide directory inside mount point](./#how-to-hide-directory-inside-mount-point)
+  
+  * [Example](./#example)
+
+* [Base home directory](./#base-home-directory)
+
+* [PostgreSQL support](./#postgresql-support)
+
+* [PAM configuration](./#pam-configuration)
+
+* [Filtering options for commands executed by proxyexec](./#filtering-options-for-commands-executed-by-proxyexec)
+
+* [Executing by proxy](./#executing-by-proxy)
+
+* [Users with duplicate UIDs](./#users-with-duplicate-uids)
+
+* [Examples](./#examples)
+
+  * [Example 1. Make users in CageFS be able to execute a script which must work outside CageFS](./#example-1-make-users-in-cagefs-be-able-to-execute-a-script-which-must-work-outside-cagefs)
+
+  * [Example 2. Permissions escalation](./#example-2-permissions-escalation)
+
+  * [Example 3. Custom proxyexec wrapper](./#example-3-custom-proxyexec-wrapper)
+
+* [Custom /etc files per customer](./#custom-etc-files-per-customer)
+
+* [Moving <span class="notranslate"> cagefs-skeleton </span> directory](./#moving-cagefs-skeleton-directory)
+
+* [Moving /var/cagefs directory](./#moving-var-cagefs-directory)
+
+* [TMP directories](./#tmp-directories)
+
+* [Syslog](./#syslog)
+
+* [Excluding mount points](./#excluding-mount-points)
+
+* [Shared memory (/dev/shm) isolation in CageFS](./#shared-memory-dev-shm-isolation-in-cagefs)
+
+* [Preventing process from entering CageFS on error](./#preventing-process-from-entering-cagefs-on-error)
+
+
+#### File system templates
+
+:::warning Warning
+Please do not modify any existing files in the <span class="notranslate">`/etc/cagefs/conf.d`</span> directory because they may be overwritten while updating CageFS package. You should create a new file with a unique name instead.
+:::
+
+CageFS creates a filesystem template in <span class="notranslate">`/usr/share/cagefs-skeleton`</span> directory. CageFS template will be mounted for each customer. The template is created by running:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --init
+```
+</div>
+
+To update the template, you should run:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --update
+```
+</div>
+
+The behavior of the commands (and the files copied into <span class="notranslate"> _/usr/share/cagefs-skeleton_ </span> directory) depends on the configuration files in _/etc/cagefs/conf.d_  
+You can add additional files, users, groups and devices into CageFS template by adding .cfg file, and running:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --update
+```
+</div>
+
+To delete files from CageFS template, remove corresponding .cfg file, and run:
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --update
+```
+</div>
+
+Here is an example <span class="notranslate"> _openssh-clients.cfg_ </span> file:
+<div class="notranslate">
+
+```
+[openssh-clients]
+
+comment=OpenSSH Clients
+
+paths=/etc/ssh/ssh_config, /bin/hostname, /usr/bin/scp, /usr/bin/sftp, /usr/bin/slogin, /usr/bin/ssh, /usr/bin/ssh-add, /usr/bin/ssh-agent, /usr/bin/ssh-copy-id, /usr/bin/.ssh.hmac, /usr/bin/ssh-keyscan, /usr/libexec/openssh/sftp-server, /etc/environment, /etc/security/pam_env.conf
+
+devices=/dev/ptmx
+```
+</div>
+
+Example <span class="notranslate"> _mail.cfg_ </span> file:
+<div class="notranslate">
+
+```
+[mail]
+
+comment=Mail tools
+
+paths=/bin/mail, /etc/aliases.db, /etc/mail, /etc/mailcap, /etc/mail.rc, /etc/mime.types, /etc/pam.d/smtp.sendmail, /etc/rc.d/init.d/sendmail, /etc/smrsh, /etc/sysconfig/sendmail, /usr/bin/hoststat, /usr/bin/Mail, /usr/bin/mailq.sendmail, /usr/bin/makemap, /usr/bin/newaliases.sendmail, /usr/bin/purgestat, /usr/bin/rmail.sendmail, /usr/lib64/sasl2/Sendmail.conf, /usr/lib/mail.help, /usr/lib/mail.tildehelp, /usr/lib/sendmail.sendmail, /usr/sbin/mailstats, /usr/sbin/makemap, /usr/sbin/praliases, /usr/sbin/sendmail.sendmail, /usr/sbin/smrsh, /var/log/mail, /var/spool/clientmqueue, /var/spool/mqueue
+
+users=smmsp
+
+groups=smmsp
+```
+</div>
+
+There is an easy way to add/delete files from particular <span class="notranslate"> RPMs </span> into CageFS. That can be done by using <span class="notranslate"> `--addrpm` and `--delrpm` </span> options in <span class="notranslate"> `cagefsctl` </span> . Like:
+<div class="notranslate">
+
+```
+cagefsctl --addrpm ffmpeg
+cagefsctl --update
+```
+</div>
+
+::: tip Note
+ffmpeg RPM should be installed on the system already.
+:::
+
+
+#### Excluding Files
+
+To exclude files and directories from CageFS, create a file with the <span class="notranslate">`.black.list`</span> extension inside the <span class="notranslate">`/etc/cagefs/`</span> directory. 
+List the files or directories to exclude, one per line.
+
+Run the following command to apply the changes:
+<div class="notranslate">
+
+```
+cagefsctl --force-update
+```
+</div>
+
+:::warning Important
+Do not edit the <span class="notranslate">`/etc/cagefs/black.list`</span> file directly, as it will be overwritten during CageFS package updates.
+:::
+
+#### Excluding users
+
+
+To exclude users from CageFS, create a file (any name would work) inside <span class="notranslate">`/etc/cagefs/exclude`</span> folder, and list users that you would like to exclude from CageFS in that file (each user in separate line).
+
+Then execute the following command to apply changes: 
+<div class="notranslate">
+
+```
+cagefsctl --user-status USER
+```
+</div>
+
+And check that the command shows <span class="notranslate">`Disabled`</span>.
+
+
+#### Mount points
+
+:::tip Note
+Please do not mount the entire `/var` directory into CageFS (i.e. do not add the `/var` to the `cagefs.mp`). This will break CageFS.
+:::
+
+
+
+CageFS creates individual namespace for each user, making it impossible for users to see each other's files and creating high level of isolation. The way namespace is organized:
+
+1. <span class="notranslate"> /usr/share/cagefs-skeleton </span> with safe files is created
+2. Any directory from the server that needs to be shared across all users is mounted into <span class="notranslate">`/usr/share/cagefs-skeleton`</span>
+(a list of such directories is defined in /etc/cagefs/cagefs.mp)
+3. <span class="notranslate"> /var/cagefs/[prefix]/username </span> directory for each user. Prefix is defined as last two digits of user id. User id is taken from <span class="notranslate"> /etc/passwd </span> file.
+4. Separate /etc directory is created and populated for each user inside <span class="notranslate"> /var/cagefs/[prefix]/username </span>
+5. /tmp directory is mounted for each user separately into <span class="notranslate"> ~username/.cagefs/tmp directory </span>
+6. Additional custom directories can be mounted for each user by defining them in /etc/cagefs/cagefs.mp
+7. You can define custom directories per user using [virt.mp](./#per-user-virtual-mount-points) files _[CageFS 5.1 and higher]_
+
+To define individual custom directories in /etc/cagefs/cagefs.mp following format is used:
+
+<span class="notranslate">`@/full/path/to/directory,permission notation`</span>
+
+
+This is useful when you need to give each user its own copy of a particular system directory, like:
+
+<span class="notranslate"> `@/var/run/screen,777` </span>
+
+
+Such entry would create separate <span class="notranslate"> /var/run/screen </span> for each user, with permissions set to 777
+
+To modify mount points, edit /etc/cagefs/cagefs.mp. Here is an example of cagefs.mp:
+<div class="notranslate">
+
+```
+/var/lib/mysql
+/var/lib/dav
+/var/www/cgi-bin
+/var/spool
+/dev/pts
+/usr/local/apache/domlogs
+/proc
+/opt
+@/var/spool/cron,700
+@/var/run/screen,777
+```
+</div>
+
+If you want to change mount points, make sure you re-initialize mount points for all customers:
+<div class="notranslate">
+
+```
+cagefsctl --remount-all
+```
+</div>
+This command will kill all current processes and reset mount points.
+
+
+
+#### **Per user virtual mount points**
+
+_[CageFS 5.1 and higher]_
+
+* _Please, see [Split by username](./#split-by-username) feature, as it might be simpler to implement in some cases._ 
+
+Starting with CageFS 5.1 you can specify additional directories to be mounted inside user's CageFS. This can be specified for each user.
+To specify virtual mount points for a user, create a file:
+
+<span class="notranslate"> `/var/cagefs/[prefix]/[user]/virt.mp` </span>
+
+
+Inside that file, you can specify mount points in the following format:
+<div class="notranslate">
+
+```
+virtdir1,mask
+@subdir1,mask
+@subdir2,mask
+virdir2,mask
+@subdir3,mask
+@subdir4,mask
+>virtdir3,mask
+@subdir5,mask
+@subdir6,mask
+# comments
+```
+</div>
+
+* <span class="notranslate"> _mask_ </span> is always optional, if missing 0755 is used
+* Create virtual directory <span class="notranslate"> _subdir/virtdir_ </span> , mount it to:
+  * <span class="notranslate"> skeleton _jaildir/virtdir_ </span>
+  * inside virtual directory, create directories <span class="notranslate"> _subdir1, subdir2_ </span>
+  * mount <span class="notranslate"> _virtdir1/subdir1_ </span> to <span class="notranslate"> _subdir/virtdir/subdir1_ </span>
+  * if <span class="notranslate"> _virtdir_ </span> is started with >, create directory <span class="notranslate"> _subdir/virtdir_ </span> , but don't mount it into <span class="notranslate"> _jaildir_ </span> . This is needed for cases when <span class="notranslate"> _virtdir_ </span> is inside home base dir.
+* if file _/var/cagefs/[prefix]/[user]/virt.mp_ is missing -- no virt directories are loaded for that user.
+
+Note that CageFS will automatically create those files for Plesk 10 & higher.
+
+For example if we have Plesk 11.5 with two users <span class="notranslate">_cltest1_</span>, and <span class="notranslate">_cltest2_</span>:
+<div class="notranslate">
+
+```
+cltest1 uid 10000 has domains: cltest1.com, cltest1-addon.com and sub1.cltest1.com
+cltest2 uid 10001 has domains: cltest2.com, cltest2-addon.com
+```
+</div>
+
+In such case we would have file _/var/cagefs/00/cltest1/virt.mp_ :
+<div class="notranslate">
+
+```
+>/var/www/vhosts/system,0755
+@cltest1-addon.com,0755
+@cltest1.com,0755
+@sub1.cltest1.com,0755
+```
+</div>
+
+and file: _/var/cagefs/01/cltest2/virt.mp:_
+<div class="notranslate">
+
+```
+>/var/www/vhosts/system
+@cltest2-addon.com
+@cltest2.com
+```
+</div>
+
+
+#### **Split by username**
+
+_[CageFS 5.3.1+]_
+
+Sometimes you might need to make sure that directory containing all users would show up as containing just that user inside CageFS. For example, if you have directory structure like:
+<div class="notranslate">
+
+```
+/home/httpd/fcgi-bin/user1
+/home/httpd/fcgi-bin/user2
+```
+</div>
+
+Then we can add the following line to /etc/cagefs/cagefs.mp file:
+<div class="notranslate">
+
+```
+%/home/httpd/fcgi-bin
+```
+</div>
+
+and execute:
+<div class="notranslate">
+
+```
+cagefsctl --remount-all
+```
+</div>
+
+After that each subdirectory of <span class="notranslate"> _/home/httpd/fcgi-bin_ </span> will be mounted for appropriate user in CageFS: <span class="notranslate"> _/home/httpd/fcgi-bin/user1_ </span> will be mounted for <span class="notranslate"> user1 </span> and <span class="notranslate"> _/home/httpd/fcgi-bin/user2_ </span> will be mounted for <span class="notranslate"> user2 </span> .
+
+#### Splitted by user’s UID mounts
+
+:::tip Note
+Requires CageFS v.7.4.2-1 and later
+:::
+
+In addition to [splitted by username mounts](./#split-by-username), there is an ability to “split” mounts by user’s UID. This feature is useful for systems with non-unique UIDs, i.e. when multiple users have the same UID.
+
+Using splitted by UID mounts is more preferable over splitted by username mounts, because you can mount the same directory for all users with the same UID. Also, splitted by UID mounts work fine with renaming of the users (when username changes but UID remains the same).
+
+For example if you have a directory structure like the following:
+
+```
+/data/uids/1000/data.db
+/data/uids/1001/data.db
+```
+
+Then you can add the following line to the `/etc/cagefs/cagefs.mp` file:
+
+```
+*/data/uids
+and execute
+cagefsctl --remount-all
+```
+
+After that each subdirectory of the `/data/uids` will be mounted for the appropriate user in CageFS. The `/data/uids/1000` directory will be mounted for the user with UID 1000 and the `/data/uids/1001` directory will be mounted for the user with UID 1001.
+
+
+
+#### **Mounting users home directory inside CageFS**
+
+
+CageFS 6.1-1 (and later) has improved mounting user’s home directory that is applied for users with home directories like <span class="notranslate"> _/home/user_ or _/homeN/user_ </span> (where <span class="notranslate"> N </span> = 0,1,..9).
+
+In such case, earlier versions of CageFS always mount user’s home directory to <span class="notranslate"> _/home/user_ </span> and create symlink <span class="notranslate"> _/homeN -> /home_ </span> when needed, so user’s home directory can be accessed both via <span class="notranslate"> _/home/user_ </span> and <span class="notranslate"> _/homeN/user_ </span> . This quirk leads to some rare incompatibilities between CageFS and other software (for example OpenCart), because real path of user’s home directory in CageFS and in real file system can differ.
+
+New CageFS mounts user’s home directory in a way that its real path in CageFS is always the same as in real file system. Additionally, CageFS searches for symlinks like
+<span class="notranslate"> _/homeX -> /homeY_ </span> and <span class="notranslate"> _/homeX/user -> /homeY/user_ </span> in real system and creates such symlinks in user’s CageFS when found.
+
+This new mounting mode is enabled by default. You can switch to old mounting mode by executing the following commands:
+<div class="notranslate">
+
+```
+touch /etc/cagefs/disable.home.dirs.search
+cagefsctl --force-update
+cagefsctl --remount-all
+```
+</div>
+
+:::tip Note
+New mounting mode will be disabled automatically when "mounting base home directory" mode is enabled <span class="notranslate"> (`mount_basedir=1` setting in _/etc/cagefs/cagefs.base.home.dirs_ </span> file).
+:::
+
+#### How to hide directory inside mount point <Badge type="warning" text="CageFS 6.4.7-1 +"/>
+:::tip Note
+For files outside a mount point, use blacklisting, see: [Excluding files](./#excluding-files)
+:::
+
+To hide directories inside a mount point, create a file in the <span class="notranslate">`/etc/cagefs/empty.dirs`</span> directory (you can use any name) with a list of directories to be hidden (these directories will look like empty for users in CageFS).
+:::tip Note
+Please do not edit the supplied config file (<span class="notranslate">`/etc/cagefs/empty.dirs/emptied_dirs.default`</span>).
+:::
+
+#### Example
+
+Let’s take a <span class="notranslate">`/var/www`</span> directory which contains the following folders: <span class="notranslate">`icons`</span> and <span class="notranslate">`html`</span>.
+To hide the <span class="notranslate">`/var/www`</span> directory content from users inside CageFS, we will do the following:
+
+* Create the <span class="notranslate">`custom.empty`</span> file with a single record: <span class="notranslate">`/var/www`</span>
+* Place the <span class="notranslate">`custom.empty`</span> file to the <span class="notranslate">`/etc/cagefs/empty.dirs`</span> directory
+* Run the <span class="notranslate">`cagefsctl --remount-all`</span> command
+
+Now, all users inside CageFS will see the <span class="notranslate">`/var/www`</span> directory as an empty directory even if there is <span class="notranslate">`/var/www/html`</span> in the <span class="notranslate">`/etc/cagefs/cagefs.mp`</span>.
+
+
+
+#### Base home directory
+
+
+If you have a custom setup where home directories are in a special format, like: <span class="notranslate"> _/home/$USERNAME/data_ </span> , you can specify it using regular expressions. This is needed by CageFS to create safe home space for end user, where no other users are visible.
+
+We will create empty: <span class="notranslate"> _/var/cagefs/[prefix]/$USERNAME/home_ </span> , and then mount <span class="notranslate"> _/home/$USERNAME_ </span> in that directory
+
+To do that, create a file: <span class="notranslate"> _/etc/cagefs/cagefs.base.home.dirs_ </span>
+
+With content like:
+<div class="notranslate">
+
+```
+^/home/
+^/var/www/users/
+```
+</div>
+
+If there is no such file, the home directory without last component will be considered as a base dir, like with
+<span class="notranslate"> _/home/$USERNAME_ </span> we would create <span class="notranslate"> _/var/cagefs/[prefix]/$USERNAME/home_ </span> , and then mount
+<span class="notranslate"> _/home/$USERNAME_ </span> in there
+
+With <span class="notranslate"> _/home/$USERNAME/data_ </span> as a home dir, we would assume that <span class="notranslate"> _/home/$USERNAME_ </span> is the base directory, and we would create <span class="notranslate"> _/var/cagefs/[prefix]/$USERNAME/home/$USERNAME/data_ </span> and then we would mount <span class="notranslate"> _/home/$USERNAME/data_ </span> -- which would cause each user to see empty base directories for other users, exposing user names.
+
+**Sharing home directory structure among users**
+
+When you want to share directory structure among multiple users, you can add following line at the top of the <span class="notranslate"> _/etc/cagefs/cagefs.base.home.dirs_ </span> file. This is useful on the systems that support sites with multiple users, with different home directories inside the main 'site' directory.
+<div class="notranslate">
+
+```
+mount_basedir=1
+```
+</div>
+
+For example:
+
+<span class="notranslate"> user1 </span> has home directory <span class="notranslate"> _/var/www/vhosts/sitename.com/web_users/user1_ </span>
+<span class="notranslate"> user2 </span> has home directory <span class="notranslate"> _/var/www/vhosts/sitename.com/web_users/user2_ </span>
+site admin has home directory <span class="notranslate"> _/var/www/vhosts/sitename.com_ </span>
+
+So, content of <span class="notranslate"> _/etc/cagefs/cagefs.base.home.dirs_ </span> should be the following:
+
+<div class="notranslate">
+
+```
+mount_basedir=1
+^/var/www/vhosts/[^/]+
+```
+</div>
+
+Directory structure in <span class="notranslate"> _/var/www/vhosts/sitename.com_ </span> will be mounted in CageFS for appropriate users.  
+Each user will have access to whole directory structure in <span class="notranslate"> _/var/www/vhosts/sitename.com_ </span> (according to their permissions).
+
+::: tip Note
+You should execute <span class="notranslate"> `cagefsctl --remount-all` </span> in order to apply changes to CageFS (i.e. remount home directories).
+:::
+
+#### PostgreSQL support
+
+
+CloudLinux OS 7:
+
+CageFS works with any PostgreSQL version installed from CloudLinux OS or CentOS repositories. PostgreSQL packages for CloudLinux OS 7 come from the upstream (CentOS) unmodified. PostgreSQL’s socket is located in <span class="notranslate"> _/var/run/postgresql_ </span> directory. This directory is mounted to CageFS by default (in cagefs-5.5-6.34 or later).
+
+When PostgreSQL has been installed after CageFS install, please add line:
+<div class="notranslate">
+
+```
+/var/run/postgresql
+```
+</div>
+
+tо _/etc/cagefs/cagefs.mp_ file and then execute:
+<div class="notranslate">
+
+```
+cagefsctl --remount-all 
+```
+</div>
+
+The steps above are enough to configure CageFS to work with PostgreSQL.
+
+CloudLinux OS 6:
+
+CageFS provides separate _/tmp_ directory for each end user. Yet, PostgreSQL keeps its Unix domain socket inside server's main _/tmp_ directory. In addition to that, the location is hard coded inside PostgreSQL libraries.
+
+To resolve the issue, CloudLinux OS provides a version of PostgreSQL with modified start up script that can store PostgreSQL's socket in <span class="notranslate"> _/var/run/postgres._ </span> The script automatically creates link from _/tmp_ to that socket to prevent PostgreSQL dependent applications from breaking.
+
+In addition to that, CageFS knows how to correctly link this socket inside end user's _/tmp_ directory.
+
+To enable PostgreSQL support in CageFS:
+
+1. Make sure you have updated to latest version of PostgreSQL.
+
+2. Edit file _/etc/sysconfig/postgres_, and uncomment <span class="notranslate"> _SOCK_DIR_ </span> line.
+
+3. Update CageFS configuration by running:
+
+<div class="notranslate">
+
+```
+cagefsctl  --reconfigure-cagefs
+```
+</div>
+
+4. Restart PostgreSQL by running:
+
+<div class="notranslate">
+
+```
+service postgresql restart 
+```
+</div>
+
+If you are using cPanel, you would also need to modify file: <span class="notranslate"> _/etc/cron.daily/tmpwatch_ </span>
+
+And update line:
+<div class="notranslate">
+
+```
+flags=-umc 
+```
+</div>
+
+to:
+<div class="notranslate">
+
+```
+flags=-umcl
+```
+</div>
+
+to prevent symlink from being removed.
+
+#### PAM configuration
+
+
+CageFS depends on <span class="notranslate"> **pam_lve** </span> module for PAM enabled services. When installed, the module is automatically installed for following services:
+
+* sshd
+* crond
+* su
+
+The following line is added to corresponding file in `/etc/pam.d/`:
+<div class="notranslate">
+```
+session    required     pam_lve.so      100     1
+```
+</div>
+
+Where 100 stands for minimum <span class="notranslate"> UID </span> to put into <span class="notranslate">CageFS & LVE</span> , and 1 stands for CageFS enabled.
+
+
+#### Filtering options for commands executed by proxyexec
+
+You can disallow a user in CageFS to execute specific commands with some specific *dangerous* options via proxyexec.
+
+To do so, you should create <span class="notranslate">`<command>.json`</span> file in the <span class="notranslate">`/etc/cagefs/filters`</span> directory and specify the names of options you want to disable.
+
+For example, to disable some options of <span class="notranslate">`sendmail`</span> command, <span class="notranslate">`/etc/cagefs/filters/sendmail.json`</span> is created with the following content:
+
+<div class="notranslate">
+
+```
+{
+  "default": {
+    "deny": [
+      "-be",
+      "-bem"
+    ],
+    "restrict_path": [
+      "-C",
+      "-D"
+    ]
+  },
+  "/usr/sbin/sendmail": {
+    "deny": [
+      "-be",
+      "-bem"
+    ],
+    "restrict_path": [
+      "-C",
+      "-D"
+    ]
+  },
+  "/var/qmail/bin/sendmail": {
+    "deny": [
+      "-be",
+      "-bem"
+    ],
+    "restrict_path": [
+      "-C",
+      "-D"
+    ]
+  },
+  "/usr/sbin/sendmail.sendmail": {
+    "deny": [
+      "-be",
+      "-bem"
+    ],
+    "restrict_path": [
+      "-C",
+      "-D"
+    ]
+  },
+  "/usr/local/cpanel/bin/sendmail": {
+    "deny": [
+      "-be",
+      "-bem"
+    ],
+    "restrict_path": [
+      "-C",
+      "-D"
+    ]
+  }
+}
+```
+</div>
+
+You can specify options for different paths separately (for example, <span class="notranslate">`/usr/sbin/sendmail`</span> or <span class="notranslate">`/var/qmail/bin/sendmail`</span>).
+
+If the path to the program being executed does not match any path specified in the config file, then default parameters are used.
+
+* <span class="notranslate">`deny`</span> list should contain options that should be disallowed for use by users (the black list of options, all other options will be allowed).
+* You can specify the white list of options in the <span class="notranslate">`allow`</span> list (all other options will be denied).
+* You cannot specify both white and black list (<span class="notranslate">`allow`</span> and <span class="notranslate">`deny`</span>).
+
+It is possible to verify that a path specified as a parameter for an option does not refer outside of the user’s home directory. This check is performed for options specified in the <span class="notranslate">`restrict_path`</span> list. All issues are reported in <span class="notranslate">`/var/log/secure`</span> log file.
+	
+> NOTE: By default, option filters only compare the starting parts of arguments with entries specified by lists.
+For instance, if option "-f" is forbidden, "-f /etc/list" will be forbidden, but "-vf /etc/list" will not.
+
+Starting from cagefs v. #7.4.12-1, specifying a `"strict_options": true` switch inside a filter file entry enables an extended parsing mechanism where each short option from a cluster is parsed separately.
+
+It is recommended to enable this option, unless it causes issues with the restricted command's functionality.
+	
+<div class="notranslate">
+
+```
+{
+  "default": {
+    "deny": [
+      "-be",
+      "-bem"
+    ],
+    "restrict_path": [
+      "-C",
+      "-D"
+    ],
+    "strict_options": true
+  }
+}
+```
+</div>
+
+#### Executing by proxy
+
+
+Some software has to run outside CageFS to be able to complete its job. It includes such programs as passwd, sendmail, etc. CageFS provides proxyexec technology to accomplish this goal: you can define any program to run outside CageFS by specifying it in any file located in the <span class="notranslate">`/etc/cagefs/`</span> which ends with <span class="notranslate">`.proxy.commands`</span>. In the examples below we use <span class="notranslate">`custom.proxy.commands`</span>, but you can use any other name, e.g. <span class="notranslate">`mysuperfile.proxy.commands`</span>.
+
+::: tip Warning
+Do not edit the existing <span class="notranslate">`/etc/cagefs/proxy.commands`</span> file as it will be overwritten with the next CageFS update.
+:::
+
+Also you should create a [config file](./#file-system-templates) in <span class="notranslate">`/etc/cagefs/conf.d/`</span> and define there a path to the binary or to one of it's parent directories.
+
+::: tip Warning
+Binary shouldn't be located in one of the directories specified in <span class="notranslate">/etc/cagefs/cagefs.mp</span>. Binaries from directories in <span class="notranslate">/etc/cagefs/cagefs.mp</span> are always executed inside cagefs.
+:::
+
+The syntax of the <span class="notranslate">`/etc/cagefs/[*.]proxy.commands`</span> file is as follows:
+
+<div class="notranslate">
+
+```
+ALIAS[:wrapper_name]=[username:]path_to_executable
+```
+
+</div>
+
+| Parameter          | Description |
+| ------------------ | ----------- |
+| <span class="notranslate">`ALIAS`</span>              | Any name unique within all <span class="notranslate">`/etc/cagefs/\[*.\]proxy.commands`</span> files. Used as an identifier.|
+| <span class="notranslate">`wrapper_name`</span>       | Optional field. The name of the wrapper file which is used as a replacement for an executable file (set by <span class="notranslate">`path_to_executable`</span>) inside CageFS. <br><br>Possible values:<br>- a name of a wrapper you place into the <span class="notranslate">`/usr/share/cagefs/safeprograms`</span> directory;<br>- <span class="notranslate">`noproceed`</span> - a reserved word which means that the wrapper is not needed, e.g. when it is already installed by other ALIAS. Often used for the commands with several ALIAS as in the example below.<br>- omit this field - default wrapper <span class="notranslate">`cagefs.proxy.program`</span> will be used.<br><br>Used in cases when you'd like to give access only to the part of binary functions but it is not possible to do that using [options filtering](./#filtering-options-for-commands-executed-by-proxyexec).<br>**Note**: wrapper works inside CageFS with user rights and executes “real” scripts using proxy daemon. |
+| <span class="notranslate">`path_to_executable`</span> | A path to an executable file that will run via proxyexec.|
+| <span class="notranslate">`username`</span>           | Optional field. A name of a user on whose behalf <span class="notranslate">`path_to_executable`</span> will run in the real system. If <span class="notranslate">`username`</span> is not specified, then <span class="notranslate">`path_to_executable`</span> will run on behalf of the same user who is inside CageFS. |
+
+
+Once the program is defined, run this command to populate the skeleton:
+
+<div class="notranslate">
+
+```
+cagefsctl --force-update
+```
+
+</div>
+
+#### Users with duplicate UIDs
+
+Sometimes hosters may have users with non-unique <span class="notranslate">UIDs</span>. Thus, <span class="notranslate">`proxyexec`</span> may traverse users' directories to find a specific one. That behavior turns into inappropriate if the user's directory is not cached locally (for example LDAP is used).
+
+To turn this feature off, run:
+
+<div class="notranslate">
+
+```
+touch /etc/cagefs/proxy.disable.duid
+```
+</div>
+
+Or to activate it back, run:
+
+<div class="notranslate">
+
+```
+rm /etc/cagefs/proxy.disable.duid
+```
+</div>
+
+
+#### Examples
+
+Let's have a script that must do some stuff outside CageFS and return a result to a user. Let's name it <span class="notranslate">`superbinary`</span> and place it into the <span class="notranslate">`/my/scripts/`</span> directory.
+
+In the examples below, we will use a small script that:
+
+* checks if it works inside or outside of CageFS
+* prints a number of users in the <span class="notranslate">`/etc/passwd`</span> file
+
+We use the <span class="notranslate">`/etc/passwd`</span> file because it is truncated inside the cage by default and we can easily see the difference between CageFS and the “real” system by just counting lines in it.
+
+<div class="notranslate">
+
+```
+cat /opt/scripts/superbinary  
+............ 
+
+#!/usr/bin/env bash
+if [[ -e /var/cagefs ]]; then
+  echo "I am running without CageFS"
+else
+  echo "I am running in CageFS"
+fi;
+echo "I am running as: `whoami`"
+echo "Number or records in /etc/passwd: `cat /etc/passwd | wc -l`"
+```
+</div>
+
+First, let’s check that CageFS works: create a user and disable the cage:
+
+<div class="notranslate">
+
+```
+useradd test
+cagefsctl --disable test
+```
+</div>
+
+Then, run the following command as <span class="notranslate">`root`</span> and you will see the following output:
+
+<div class="notranslate">
+
+```
+[root ~]# su - test -c "/my/scripts/superbinary"
+I am running without CageFS
+I am running as: test
+Number or records in /etc/passwd: 49
+```
+</div>
+
+Now, enable CageFS for the <span class="notrabslate">`test`</span> user and run the command again:
+
+<div class="notranslate">
+
+```
+[root ~]# cagefsctl --enable test
+[root ~]# su - test -c "/my/scripts/superbinary"
+-bash: /my/scripts/superbinary: No such file or directory
+```
+</div>
+
+As you can see the access to the file is restricted by CageFS.
+
+#### Example 1. Make users in CageFS be able to execute a script which must work outside CageFS
+
+Add the following line into the <span class="notranslate">`/etc/cagefs/custom.proxy.commands`</span>:
+
+<div class="notranslate">
+
+```
+MYSUPERBINARY=/my/scripts/superbinary
+```
+</div>
+
+Then run the <span class="notranslate">`cagefsctl --force-update`</span>, which will place a special wrapper instead of your script inside CageFS. And run your script again:
+
+<div class="notranslate">
+
+```
+[root ~]# su - test -c "/my/scripts/superbinary"
+I am running without CageFS
+I am running as: test
+Number or records in /etc/passwd: 49
+```
+</div>
+
+To compare, let’s count a number of users in the <span class="notranslate">`/etc/passwd`</span> directly:
+
+<div class="notranslate">
+
+```
+[root ~]# su - test -c "cat /etc/passwd | wc -l"
+25
+```
+</div>
+
+**Result**: the script escapes from CageFS and has access to all files which a user with disabled CageFS has.
+
+#### Example 2. Permissions escalation
+
+Let's imagine that you need to give the users the ability to run a script which gets information about their domains from the <span class="notranslate">`apache.conf`</span>. To do that, you need root permissions. You can achieve that with proxyexec.
+
+First, run the following:
+
+<div class="notranslate">
+
+```
+echo "MYSUPERBINARY=root:/my/scripts/superbinary" > /etc/cagefs/custom.proxy.commands
+```
+</div>
+
+And then, run the example script again:
+
+<div class="notranslate">
+
+```
+[root ~]# su - test -c "/my/scripts/superbinary"
+I am running without cagefs
+I am running as: root
+Number or records in /etc/passwd: 49
+```
+</div>
+
+As you can see, the script now works with root permissions, as set in the <span class="notranslate">`custom.proxy.commands`</span> file. In order to get information about a user who runs the script, use the following environment variables:
+
+<div class="notranslate">
+
+```
+PROXYEXEC_UID
+PROXYEXEC_GID
+```
+</div>
+
+**Example**:
+
+<div class="notranslate">
+
+```
+[root ~]# id test
+uid=1226(test) gid=1227(test) groups=1227(test)
+[root ~]# su - test -c "/my/scripts/superbinary"                                                
+I am running without CageFS                                                                          
+I am running as: root
+Number or records in /etc/passwd: 49
+PROXYEXEC_UID=1226
+PROXYEXEC_GID=1227
+```
+</div>
+
+**Result**: users can run the script that gains the root permissions and work outside CageFS. Of course, you can set any other user instead of root in the <span class="notranslate">`custom.proxy.commands`</span>.
+
+#### Example 3. Custom proxyexec wrapper
+
+Let’s modify the test binary in a next way:
+
+
+<div class="notranslate">
+
+```
+
+[root ~]# cat /my/scripts/superbinary
+#!/usr/bin/env bash
+FILE="$1"
+if [[ -e /var/cagefs ]]; then
+  echo "I am running without CageFS"
+else
+  echo "I am running in CageFS"
+fi;
+echo "I am running as: `whoami`"
+echo "Number or records in ${FILE}: `cat ${FILE} | wc -l`"
+echo "PROXYEXEC_UID=${PROXYEXEC_UID}"
+echo "PROXYEXEC_GID=${PROXYEXEC_GID}"
+```
+</div>
+
+Now users can pass any path to the file as an argument. In order to restrict possible parameters (file paths) that users can pass, you can use the custom proxyexec wrapper.
+
+First, duplicate the default wrapper and give it a name, e.g. <span class="notranslate">`cagefs.proxy.mysuperbinary`</span>.
+
+<div class="notranslate">
+
+```
+[root ~]# cp /usr/share/cagefs/safeprograms/cagefs.proxy.program /usr/share/cagefs/safeprograms/cagefs.proxy.mysuperbinary
+```
+</div>
+
+The default wrapper already contains a check that does not allow to run it by the root user:
+
+<div class="notranslate">
+
+```
+#!/bin/bash
+##CageFS proxyexec wrapper - ver 15
+    
+if [[ $EUID -eq 0 ]]; then
+    echo 'Cannot be run as root'
+    exit 1
+fi
+...
+```
+</div>
+
+Add the new check below:
+
+<div class="notranslate">
+
+```
+if [[ $1 == "/etc/passwd" ]]; then                                                    
+    echo "it is not allowed for user to view this file!"                  
+    exit 1      
+fi
+```
+</div>
+
+Now, set a custom binary name in the <span class="notranslate">`custom.proxy.commands`</span>:
+
+<div class="notranslate">
+
+```
+[root ~]# cat /etc/cagefs/custom.proxy.commands
+MYSUPERBINARY:cagefs.proxy.mysuperbinary=root:/my/scripts/superbinary
+```
+</div>
+
+Run skeleton update and check that everything works as expected:
+
+<div class="notranslate">
+
+```
+[root ~]# cagefsctl --force-update
+[root ~]# su - test -c "/my/scripts/superbinary /etc/passwd"
+it is not allowed for user to view this file!
+[root ~]# su - test -c "/my/scripts/superbinary /etc/group"
+I am running without CageFS
+I am running as: root
+Number or records in /etc/group: 76
+PROXYEXEC_UID=1226
+PROXYEXEC_GID=1227
+```
+</div>
+
+::: tip Notes and warnings
+1. Make sure that a directory with your script is not listed in the <span class="notranslate">`/etc/cagefs/cagefs.mp`</span> (is not mounted inside the cage). Otherwise, the proxyexec will not work because CageFS will not be able to replace your script with a special wrapper inside the cage.
+2. Use this feature with caution because it gives users the ability to execute specified commands outside CageFS. SUID commands are extremely dangerous because they are executed not as a user, but as an owner of the file (typically root). You should give users the ability to execute safe commands only. These commands should not have known vulnerabilities. You should check that users cannot use these commands to get sensitive information on a server. You can disable specific dangerous options of programs executed via proxyexec using [filtering options](./#filtering-options-for-commands-executed-by-proxyexec).
+3. In cPanel, all the scripts located in the <span class="notranslate">`/usr/local/cpanel/cgi-sys/`</span>, that user might need to execute, should be added to the custom <span class="notranslate">`*.proxy.commands`</span> file.
+:::
+
+#### Custom /etc files per customer
+
+
+_[4.0-5 and later]_
+
+To create a custom file in /etc directory for end user, create a directory:  
+<span class="notranslate"> _/etc/cagefs/custom.etc/[username]_ </span>
+
+Put all custom files, and sub-directories into that direcotry.
+
+For example, if you want to create custom <span class="notranslate"> _/etc/hosts_ file for USER1 </span> , create a directory:  
+<span class="notranslate"> _/etc/cagefs/custom.etc/USER1_ </span>
+
+Inside that directory, create a <span class="notranslate"> _hosts_ </span> file, with the content for that user.
+
+After that execute:
+<div class="notranslate">
+
+```
+cagefsctl --update-etc USER1
+```
+</div>
+
+If you are making changes for multiple users, you can run:
+
+<div class="notranslate">
+
+```
+cagefsctl --update-etc
+```
+</div>
+
+To remove a custom file, remove it from <span class="notranslate"> _/etc/cagefs/custom.etc/[USER]_ </span> directory, and re-run:
+<div class="notranslate">
+
+```
+cagefsctl --update-etc
+```
+</div>
+
+
+#### Moving cagefs-skeleton directory
+
+
+Sometimes you might need to move <span class="notranslate"> cagefs-skeleton </span> from <span class="notranslate"> _/usr/share_ </span> to another partition.
+
+There are two ways:
+
+1. If <span class="notranslate">`/usr/share/cagefs-skeleton`</span> is not created yet ( <span class="notranslate"> cagefsctl --init </span> wasn't executed), then execute:
+
+<div class="notranslate">
+
+```
+mkdir /home/cagefs-skeleton 
+ln -s /home/cagefs-skeleton /usr/share/cagefs-skeleton 
+cagefsctl --init
+```
+</div>
+
+2. If <span class="notranslate"> _/usr/share/cagefs-skeleton_ </span> already exists, see [this article](https://cloudlinux.zendesk.com/hc/en-us/articles/115004560129-How-do-I-move-usr-share-cagefs-skeleton-to-other-place-because-of-low-disk-space)
+
+#### Moving /var/cagefs directory
+
+
+To move <span class="notranslate">`/var/cagefs`</span> to another location:
+
+<div class="notranslate">
+ 
+```
+cagefsctl --disable-cagefs
+cagefsctl --unmount-all
+```
+</div>
+
+Verify that <span class="notranslate">`/var/cagefs.bak`</span> directory does not exist (if it exists - change name "cagefs.bak" to something else)
+
+<div class="notranslate">
+
+```
+cp -rp /var/cagefs /new/path/cagefs
+mv /var/cagefs /var/cagefs.bak
+ln -s /new/path/cagefs /var/cagefs
+cagefsctl --enable-cagefs
+cagefsctl --remount-all
+```
+</div>
+
+Verify that the following command gives empty output:
+<div class="notranslate">
+
+```
+cat /proc/mounts | grep cagefs.bak
+```
+</div>
+
+Then you can safely remove /var/cagefs.bak:
+<div class="notranslate">
+
+```
+rm -rf /var/cagefs.bak
+```
+</div>
+
+#### TMP directories
+
+
+CageFS makes sure that each user has his own <span class="notranslate"> _/tmp_ </span> directory, and that directory is the part of end-user's quota.
+
+The actual location of the directory is <span class="notranslate"> _$USER_HOME/.cagefs/tmp_ </span>
+
+Once a day, using cron job, <span class="notranslate"> CageFS </span> will clean up user's <span class="notranslate"> _/tmp_ </span> directory from all the files that haven't been accessed during 30 days.
+
+This can be changed by running:
+<div class="notranslate">
+
+```
+cagefsctl --set-tmpwatch='/usr/sbin/tmpwatch -umclq 720'
+```
+</div>
+
+Where 720 is the number of hours that the file had to be inaccessible to be removed.
+
+By default this is done at 03:37 AM, but you can also force the clean up outdated files that match 'chosen period' of all user's <span class="notranslate"> _/tmp_ </span> directories without waiting for a job to be launched by <span class="notranslate"> cronjob </span> . Just run:
+
+<div class="notranslate">
+
+```
+cagefsctl --tmpwatch
+```
+</div>
+
+The following paths will be cleaned as well:
+
+* <span class="notranslate">`/var/cache/php-eaccelerator`</span> (actual location <span class="notranslate">`$USER_HOME/.cagefs/var/cache/php-eaccelerator`</span>)
+* <span class="notranslate">`/opt/alt/phpNN/var/lib/php/session`</span> (actual location <span class="notranslate">`$USER_HOME/.cagefs/opt/alt/phpNN/var/lib/php/session`</span>), where NN corresponds to Alt-PHP version.
+
+
+You can configure <span class="notranslate">`tmpwatch`</span> to clean custom directories inside <span class="notranslate"> CageFS</span>.
+
+Create <span class="notranslate">`/etc/cagefs/cagefs.ini`</span> configuration file and specify <span class="notranslate">`tmpwatch_dirs`</span> directive as follows:
+
+<span class="notranslate">`tmpwatch_dirs=/dir1,/dir2`</span>
+
+After that directories <span class="notranslate">`/dir1`</span> and <span class="notranslate">`/dir2`</span> inside CageFS  will be cleaned automatically.
+
+Note that actual location of those directories in real file system is <span class="notranslate">`$USER_HOME/.cagefs/dir1`</span> and <span class="notranslate">`$USER_HOME/.cagefs/dir2`</span>.
+
+**Cleanup PHP sessions in cPanel**
+
+For cPanel servers, CageFS version 6.0-42 or higher performs cleaning of PHP sessions based on <span class="notranslate">`session.gc_maxlifetime`</span> and <span class="notranslate">`session.save_path`</span> directives specified in proper <span class="notranslate">`php.ini`</span> files.
+
+<span class="notranslate">`session.gc_maxlifetime`</span> directive default value is 1440 seconds. Those session files will be deleted, that were created or had metadata (ctime) changes more time ago than it is specified in <span class="notranslate">`session.gc_maxlifetime`</span>.
+
+For <span class="notranslate"> Alt-PHP </span> versions <span class="notranslate">`session.save_path`</span> value is normally <span class="notranslate">`/tmp`</span>.
+
+::: tip Note
+For new installations of Alt-PHP packages, <span class="notranslate">`session.save_path`</span> will be changed from `/tmp` to <span class="notranslate">`/opt/alt/phpNN/var/lib/php/session`</span>, where NN corresponds to Alt-PHP version.
+:::
+
+This applies to the following <span class="notranslate"> Alt-PHP </span> versions (or later):
+* alt-php44-4.4.9-71;
+* alt-php51-5.1.6-81;
+* alt-php52-5.2.17-107;
+* alt-php53-5.3.29-59;
+* alt-php54-5.4.45-42;
+* alt-php55-5.5.38-24;
+* alt-php56-5.6.31-7;
+* alt-php70-7.0.23-5;
+* alt-php71-7.1.9-5;
+* alt-php72-7.2.0-0.rc.2.2.
+
+When using EasyApache 3, <span class="notranslate"> _session.save_path_ </span> value is normally <span class="notranslate"> _/var/cpanel/php/sessions/ea3_ </span> or <span class="notranslate"> _/tmp_ </span> . Settings for EasyApache 3 are usualy taken from the file <span class="notranslate"> _/usr/local/lib/php.ini_ . </span>
+
+When using EasyApache 4, <span class="notranslate"> _session.save_path_ </span> value is normally <span class="notranslate"> _/var/cpanel/php/sessions/ea-phpXX_ ,  </span> where <span class="notranslate"> _XX_ </span> corresponds to PHP version.
+
+Cleaning is started by cron <span class="notranslate"> _/etc/cron.d/cpanel_php_sessions_cron_ </span> , which starts the script <span class="notranslate"> _/usr/share/cagefs/clean_user_php_sessions_ </span> twice within one hour.
+
+::: tip Note
+Script <span class="notranslate"> _clean_user_php_sessions_ </span> deletes only files which names match mask <span class="notranslate">`sess_[a-z0-9]*`</span>. If php was configured to use non-standart session file prefix in some custom save_handler, these session files wouldn't be managed by <span class="notranslate"> _clean_user_php_sessions_ </span>.
+:::
+
+The settings for ea-php are located in <span class="notranslate"> _/opt/cpanel/ea-phpXX/root/etc/php.d/local.ini_ </span> or in <span class="notranslate"> _/opt/cpanel/ea-phpXX/root/etc/php.ini_ </span> , where <span class="notranslate"> _XX_ </span> corresponds to the PHP version.
+
+The settings for alt-php are located in <span class="notranslate"> _/opt/alt/phpXX/etc/php.ini_ </span> files, where <span class="notranslate"> _XX_ </span> corresponds to PHP version.
+
+The cleaning script cleans php sessions for all PHP versions ( <span class="notranslate"> _ea-php_ </span> and <span class="notranslate"> _alt-php_ </span> ) regardless of whether a version is used or selected via <span class="notranslate"> MultiPHP Manager </span> or <span class="notranslate"> PHP Selector </span> . When different <span class="notranslate"> _session.gc_maxlifetime_ </span> values are specified for the same <span class="notranslate"> _session.save_path_ </span> (for different php versions), the cleaning script will use the least value for cleaning <span class="notranslate"> _session.save_path_ </span> . So, it is recommended to specify different <span class="notranslate"> _session.save_path_ </span> for each PHP version.
+
+Users can define custom value of <span class="notranslate"> _session.gc_maxlifetime_ via PHP Selector </span> in order to configure PHP's garbage collector, but that will not affect the script for cleaning PHP sessions. The script cleans PHP sessions based on global values of <span class="notranslate"> _session.gc_maxlifetime_ </span> and <span class="notranslate"> _session.save_path_ </span> directives taken from files mentioned above. Settings in custom users’ <span class="notranslate"> php.ini </span> files are ignored.
+
+**Cleanup PHP session files in Plesk**
+
+For Plesk servers, <span class="notranslate"> CageFS </span> version 6.0-52 or higher is provided with a special cron job for removing obsolete PHP session files. Cleanup script runs once an hour (similar to how it is done in Plesk).
+
+Each time the script runs, it performs the cleanup of the paths:
+
+1. set by <span class="notranslate"> `session.save_path` </span> directive in <span class="notranslate"> _/opt/alt/phpXX/etc/php.ini_ </span> files. If <span class="notranslate"> session.save_path </span> is missing, then <span class="notranslate"> /tmp </span> is used. Session files lifetime is set by <span class="notranslate"> session.gc_maxlifetime </span> directive. If it is not found, then 1440 seconds value is used (24 minutes, as in Plesk). Lifetime set in the file is only taken into consideration if it is longer than 1440 seconds, otherwise 1440 seconds is used. All the installed <span class="notranslate"> Alt-PHP </span> versions are processed.
+
+2. <span class="notranslate"> _/var/lib/php/session_ </span> . Files lifetime is only defined by Plesk script <span class="notranslate"> _/usr/lib64/plesk-9.0/maxlifetime_ </span> . If the script is missing or returns errors, then this directory is not processed.
+
+The following features are applied during the cleanup:
+
+* all the users with <span class="notranslate"> UID </span> higher than specified in <span class="notranslate"> _/etc/login.defs_ </span> are processed. Each user is processed independently from one another.
+* only directories inside <span class="notranslate"> CageFS </span> are being cleaned. The paths of the same name in the physical  file system are not processed.
+* in all the detected directories, all the files with the names that correspond to <span class="notranslate"> `sess_ ` search </span> mask are removed, the rest of the files are ignored.
+* the files older than specified lifetime are removed.
+* all non-fatal errors (lack of rights, missing directory) are ignored and do not affect the further work of the script.
+
+**Disable PHP sessions cleanup on cPanel and Plesk**
+
+Here is a possible workaround for PHP session expiration problem (session lives longer than it is possible in a control panel). To use your own custom PHP sessions cleanup scripts - you can turn off built-in sessions cleanup implementation in the following way: 
+add <span class="notranslate"> `clean_user_php_sessions=false` line to _/etc/sysconfig/cloudlinux_ </span> .
+
+
+
+#### Syslog
+
+
+By default, <span class="notranslate"> _/dev/log_ </span> should be available inside end user's <span class="notranslate"> CageFS </span> . This is needed so that user's cronjobs and other things that user <span class="notranslate"> _dev/log_ </span> would get recorded in the system log files.
+
+This is controlled using file <span class="notranslate"> _/etc/rsyslog.d/schroot.conf_ </span> with the following content:
+<div class="notranslate">
+
+```
+$AddUnixListenSocket /usr/share/cagefs-skeleton/dev/log
+```
+</div>
+
+To remove presence of <span class="notranslate"> _dev/log_ </span> inside CageFS, remove that file, and restart rsyslog service.
+
+
+#### Excluding mount points
+
+**How to exclude mounts from namespaces for all LVEs**
+
+
+By default, all mounts from the real file system is inherited by namespaces of all <span class="notranslate"> LVEs </span> . So, destroying all <span class="notranslate"> LVEs </span> may be required in order to unmount some mount in real file system completely. Otherwise, mount point remains busy after unmounting it in the real file system because this mount exists in namespaces of <span class="notranslate"> LVEs </span> .
+
+<span class="notranslate"> `lvectl start` </span> command saves all mounts from real file system as “default namespace” for later use in all <span class="notranslate"> LVEs </span> . <span class="notranslate"> **lve_namespaces** </span> service executes <span class="notranslate"> `lvectl start` </span> command during startup.
+
+In <span class="notranslate"> **lve-utils-2.0-26** </span> (and later) there is an ability to exclude specific mounts from namespaces for all <span class="notranslate"> LVEs </span> .
+In order to do so, please create a file <span class="notranslate"> _/etc/container/exclude_mounts.conf_ </span> with list of mounts to exclude (one mount per line) as regular expressions, and then execute <span class="notranslate"> `lvectl start` </span> :
+<div class="notranslate">
+
+```
+cat /etc/container/exclude_mounts.conf     
+............ 
+
+^/dir1/
+^/dir2$ 
+```
+```
+lvectl start
+```
+</div>
+
+After that, all new created <span class="notranslate"> LVEs </span> will be without <span class="notranslate"> _/dir2_ </span> mount and without mounts that start with <span class="notranslate"> _/dir1/_ </span> (like <span class="notranslate"> _/dir1/x_ ,  _/dir1/x/y_ </span> , etc). To apply changes to existing <span class="notranslate"> LVEs </span> you should recreate <span class="notranslate"> LVEs </span> :
+<div class="notranslate">
+
+```
+lvectl destroy all   
+lvectl apply all
+```
+</div>
+
+::: tip Note
+You should recreate all LVEs only once after creating <span class="notranslate"> _/etc/container/exclude_mounts.conf_ </span> file. After that the configuration changes will be applied to all new LVEs automatically.
+:::
+
+#### Shared memory (/dev/shm) isolation in CageFS
+
+:::tip Note
+Requires `cagefs-6.2.1-1` or later
+:::
+
+The `/dev/shm` in a real file system directory is “world-writable”. This directory from the real file system is mounted to CageFS by default, so `/dev/shm` directory is common for all users by default. However, it is possible to improve security and isolate `/dev/shm` (shared memory) for each user in CageFS.
+
+To enable `/dev/shm` isolation, do the following steps:
+
+1. Delete `/dev/shm` line from the `/etc/cagefs/cagefs.mp` file
+
+  <div class="notranslate">
+
+  ```
+  sed -i -e '/^\/dev\/shm/d' /etc/cagefs/cagefs.mp
+  ```
+  </div>
+
+2. Create a configuration file with mount options for shared memory
+   
+  <div class="notranslate">
+
+  ```
+  echo 'mode=0777' > /etc/cagefs/dev.shm.options
+  ```
+  </div>
+
+3. Remount CageFS to apply changes
+   
+  <div class="notranslate">
+
+  ```
+  cagefsctl --remount-all
+  ```
+  </div>
+
+You can also specify additional mount options.
+
+For example, you can specify the size of shared memory in megabytes:
+
+<div class="notranslate">
+
+```
+echo 'mode=0777,size=1m' > /etc/cagefs/dev.shm.options
+cagefsctl --remount-all
+```
+</div>
+
+Or you can specify the size of user’s physical memory limit (PMEM) in percentage:
+
+<div class="notranslate">
+
+```
+echo 'mode=0777,size=50%' > /etc/cagefs/dev.shm.options
+cagefsctl --remount-all
+```
+</div>
+
+To disable `/dev/shm` isolation, do the following steps:
+
+1. Delete configuration file
+
+  <div class="notranslate">
+
+  ```
+  rm -f /etc/cagefs/dev.shm.options
+  ```
+  </div>
+
+2. Validate `/etc/cagefs/cagefs.mp` file
+
+  <div class="notranslate">
+
+  ```
+  cagefsctl --check-mp
+  ```
+  </div>
+
+3. Add `/dev/shm` line to `/etc/cagefs/cagefs.mp` file
+
+  <div class="notranslate">
+
+  ```
+  echo '/dev/shm' >> /etc/cagefs/cagefs.mp
+  ```
+  </div>
+
+4. Remount CageFS to apply changes
+
+  <div class="notranslate">
+
+  ```
+  cagefsctl --remount-all
+  ```
+  </div>
+
+:::tip Note
+you should specify `mode=0777`. It is required for the proper operation of shared memory inside CageFS. This is not a security issue because the `/dev/shm` directory is isolated for each user and visible inside a user’s CageFS only.
+:::
+
+:::tip Note
+`/dev/shm` is mounted with `nosuid,nodev,noexec` mount options always (both in “isolated `/dev/shm`” mode and not). You cannot change this behavior.
+:::
+
+:::tip Note
+“isolated `/dev/shm`” mode will become the default in the future CageFS releases.
+:::
+
+:::tip Note
+when the size of the `/dev/shm` is specified in percentage of user’s physical memory limit (PMEM), you should remount CageFS after changing PMEM limit in order to change the size of shared memory allocated for the `/dev/shm` in user’s CageFS. To do so, execute `cagefsctl --remount-all`
+:::
+
+#### Preventing process from entering CageFS on error
+
+Starting from CageFS v.7.2.0-1, you can prevent a process from work if it can't enter to CageFS. The option is disabled by default.
+
+To enable it, run the following commands: 
+
+```
+touch /etc/cagefs/fail.on.error
+cagefsctl --remount-all (cagefsctl --remount <user>)
+```
+
+To disable it, run the following commands: 
+
+```
+rm -f /etc/cagefs/fail.on.error
+cagefsctl --remount-all (cagefsctl --remount <user>)
+```
+
+The message “Act like CageFS is disabled” in the `/var/log/messages` will be displayed regardless the file `/etc/cagefs/fail.on.error` is available or not.
+
+
+### Integration with control panels
+
+* [cPanel](./#cpanel)
+* [Plesk](./#plesk)
+* [ISPManager](./#ispmanager)
+
+CageFS comes with a plugin for various control panels.
+
+The plugin allows to:
+
+* Initialize CageFS;
+* Select [mode of operation](./#managing-users);
+* See and modify the list of enabled/disabled users;
+* Update CageFS skeleton.
+
+#### cPanel
+
+##### CageFS Plugin
+
+CageFS plugin for cPanel is located in <span class="notranslate"> Plugins </span> section of WHM and called <span class="notranslate"> CageFS User Manager </span>.
+
+::: tip Note
+Take a note that the configuration of CageFS for users is located at the Users tab in the main menu of LVE Manager and the global CageFS settings (Toggle, update skeleton and others) are located at the Options tab in the main menu of LVE Manager inside the section "CageFS".
+:::
+
+It allows to initialize CageFS, select users CageFS will be enabled for, as well as update CageFS skeleton.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/img1-zoom73.webp)
+
+To enable CageFS for a proper user (users), in <span class="notranslate"> CageFS User Manager </span> choose a user from the list on the right ( <span class="notranslate"> Disabled </span> users) and click <span class="notranslate"> Toggle </span> . The user will move to the list on the left ( <span class="notranslate"> Enabled </span> users).
+
+To disable a user (users), choose a user from the list on the left ( <span class="notranslate"> Enabled </span> users) and click <span class="notranslate"> Disable CageFS </span> . The user will move to the list on the right ( <span class="notranslate"> Disabled </span> users).
+
+![](/images/cloudlinuxos/cloudlinux_os_components/cpanel-enable-disable-cagefs.webp)
+
+To update CageFS skeleton, click <span class="notranslate"> Update CageFS Skeleton </span> .
+
+![](/images/cloudlinuxos/cloudlinux_os_components/cpanel-update-cagefs-skeleton.webp)
+
+##### CageFS inbuilt in Cloudlinux Manager
+
+To enable or disable CageFS for a proper user (users), in <span class="notranslate"> Cloudlinux Manager </span>, go to the Users tab and use the Toggle next to the chosen user(s) from the list under the <span class="notranslate"> CageFS </span> column. 
+
+![](/images/cloudlinuxos/cloudlinux_os_components/cpanel-enable-disable-cagefs2.webp)
+
+To update CageFS skeleton, go to <span class="notranslate"> Cloudlinux Manager > Options > CageFS </span> and click on the Update button next to <span class="notranslate"> CageFS </span> Skeleton:
+
+![](/images/cloudlinuxos/cloudlinux_os_components/cpanel-cagefs-options.webp)
+
+#### Plesk
+
+CageFS is an option inbuilt in Cloudlinux Manager that allows initializing and updating CageFS template, as well as managing users and mode of operation for CageFS.
+
+To enable or disable CageFS for a proper user (users), in <span class="notranslate"> Cloudlinux Manager </span>, go to the Users tab and use the Toggle next to the chosen user(s) from the list under the <span class="notranslate"> CageFS </span> column. 
+
+![](/images/cloudlinuxos/cloudlinux_os_components/enable-disable-cagefs-for-user.webp)
+
+To update CageFS skeleton, go to <span class="notranslate"> Cloudlinux Manager > Options > CageFS </span> and click on the Update button next to <span class="notranslate"> CageFS </span> Skeleton:
+
+![](/images/cloudlinuxos/cloudlinux_os_components/plesk-update-cagefs-skeleton.webp)
+
+#### ISPManager
+
+CageFS comes with plugin for <span class="notranslate"> ISP Manager </span> to enable/disable CageFS on per user base. In edit user section chose <span class="notranslate"> Permission </span> tab. Mark <span class="notranslate"> CageFS User Mode </span> checkbox and click <span class="notranslate"> OK </span> to apply.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/ispmanager_cagefs_user_zoom98.webp)
+
+Or you can manage global CageFS settings via CageFS menu
+![](/images/cloudlinuxos/cloudlinux_os_components/img3.webp)
+
+
+See also [CageFS CLI tools](/cloudlinuxos/command-line_tools/#cagefs).
+
+## MySQL Governor
+
+### General information and requirements
+
+:::warning Warning
+The "All" mode will be deprecated starting from September 1, 2021. You can read more [here.](https://blog.cloudlinux.com/mysql-governor-moving-from-all-to-abusers)
+:::
+
+<span class="notranslate"> MySQL Governor </span> is software to monitor and restrict MySQL usage in shared hosting environment. The monitoring is done via resource usage statistics per each MySQL thread.
+
+<span class="notranslate"> MySQL Governor </span> has two active modes of operations:
+* **off** - In this mode MySQL Governor will not throttle customer's queries, instead it will let you monitor the MySQL usage.
+* **abusers** - In this mode, once user goes over the limits specified in the MySQL Governor, all customer's queries will execute inside that user's LVE. 
+
+More details of the governor operation modes are described in the [Modes of operation](./#modes-of-operation) section
+
+<span class="notranslate"> MySQL Governor </span> allows to restrict customers who use too much resources. It supports following limits:
+
+| |  | |
+|-|--|-|
+|<span class="notranslate"> CPU </span> | % | <span class="notranslate"> CPU </span> speed relative to one core. 150% would mean one and a half cores|
+|<span class="notranslate"> READ </span> | bytes | bytes read. Cached reads are not counted, only those that were actually read from disk will be counted|
+|<span class="notranslate"> WRITE </span> | bytes | bytes written. Cached writes are not counted, only once data is written to disk, it is counted|
+
+You can set different limits for different periods: current, short, med, long. By default those periods are defined as 1 second, 5 seconds, 1 minute and 5 minutes. They can be re-defined using [configuration file](./#configuration-and-operation). The idea is to use larger acceptable values for shorter periods. Like you could allow a customer to use two cores (200%) for one second, but only 1 core (on average) for 1 minute, and only 70% within 5 minutes. That would make sure that customer can burst for short periods of time.
+
+Customers will also be limited to a finite number of concurrent connections, this number is 30 by default and can be changed. This is done so they wouldn't use up all the MySQL connections to the server. <span class="notranslate"> MySQL Governor </span> can also kill off slow <span class="notranslate"> SELECT </span> queries.
+
+### MySQL Governor limits interaction with LVE limits
+
+#### How is interaction between MySQL Governor and LVE organized?
+
+The main purpose of MySQL Governor is to monitor how many common resources are used by each user for working with MySQL/MariaDB and to manage usage restrictions for such resources by LVE containers.
+
+Before any SQL request, MySQL Governor determines which user sent the request and if this user exceed limits, the MySQL Governor pushes the request to appropriate LVE container.
+
+This is how common server resources can be managed. 
+
+#### Why the СPU/IO charts are different for database and LVE usage?
+
+SQL requests are not limited inside LVE, so there are not any calculations for IO usage there. It can be clearly viewed via the lve-stats charts:
+
+![](/images/cloudlinuxos/cloudlinux_os_components/Chart1.webp)
+
+**Blue chart (database)**:
+
+This is the user’s real IO Database usage which was calculated by MySQL Governor. 
+
+**Green chart (LVE)**:
+
+This is the user’s IO Database usage which was calculated by lve-stats.
+
+Also, for different types of database load (for example in case, there is a huge amount of short requests), CPU usage charts for LVE and database can be different.
+
+Take a look on this chart:
+
+![](/images/cloudlinuxos/cloudlinux_os_components/Chart2.webp)
+
+**Blue (database) CPU usage**:
+
+It is calculated by MYSQL Governor and the value is identical with top/htop values.
+
+**Green (LVE) CPU usage**:
+
+It is calculated by lve-stats. The values are less on the LVE CPU usage chart because user requests are placed in the LVE only for part of the time.
+
+#### For what purpose are the IO limits of MySQL Governor used?
+
+MySQL Governor uses its limits as triggers to place user’s requests to the LVE. If user’s requests exceed MySQL Governor limits they are placed to the LVE, which already limits resource usage. After some timeout (which can be configured in the MySQL Governor config file requests will not be placed to the LVE. The next placing of the SQL requests to the LVE will occur after the next limits are exceeded.
+
+#### How exactly does IO limiting work for MySQL/MariaDB requests?
+
+There is no direct IO limitation for database treads. But in case of exceeding governor IO user limits, their requests will be placed into the LVE and CPU LVE limitation will be applied to the requests. And it’s clear that any IO load causes CPU load. So by CPU limits IO usage will be limited indirectly.
+
+Take a look at the next chart. The I/O load is synchronous with the CPU load.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/Chart3.webp)
+
+### Installation and update
+
+* [Installation](./#installation)
+* [Upgrading database server](./#upgrading-database-server)
+
+#### Installation
+
+:::danger IMPORTANT
+Please note that MariaDB 10.4 release isn’t supported by cPanel, thus you can’t install this version with MySQL Governor + cPanel. More details are available here: [https://features.cpanel.net/topic/maria-10-4-support](https://features.cpanel.net/topic/maria-10-4-support).
+:::
+
+::: danger IMPORTANT
+Please make full database backup (including system tables) before you upgrade MySQL or switch to MariaDB. This action will prevent data loss in case if something goes wrong.
+:::
+
+**_MySQL Governor is compatible only with MySQL 5.x, 8.x, MariaDB and Percona Server 5.6._**
+
+To install <span class="notranslate"> MySQL Governor </span> on your server install <span class="notranslate"> governor-mysql </span> package at first:
+
+<div class="notranslate">
+
+```
+yum remove db-governor db-governor-mysql  # you can ignore errors if you don't have those packages installed
+yum install governor-mysql
+```
+</div>
+
+Then configure <span class="notranslate"> MySQL Governor </span> properly.
+
+The installation is currently supported only on <span class="notranslate"> cPanel, Plesk, DirectAdmin, ISPmanager, InterWorx </span> , as well as on servers without control panel.
+
+If you are installing <span class="notranslate"> CloudLinux OS </span> on a server running MySQL already, set your current MySQL version before calling installation script:
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mysqlXX
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install
+```
+</div>
+
+Please make sure to specify your current MySQL version instead of XX as follows:
+
+* 55 — MySQL v5.5
+* 56 — MySQL v5.6
+* 57 — MySQL v5.7
+* 80 — MySQL v8.0 (requires MySQL Governor 1.2-37+)
+* 84 — MySQL v8.4 (requires MySQL Governor 1.2-129+)
+
+If you are installing <span class="notranslate"> CloudLinux OS </span> on a server running <span class="notranslate"> MariaDB </span> already, do instead:
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mariadbXX
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install
+```
+</div>
+
+Please make sure to specify your current <span class="notranslate"> MariaDB </span> version instead of <span class="notranslate"> XX </span> as follows:
+
+* 55 — MariaDB v5.5
+* 100 — MariaDB v10.0
+* 101 — MariaDB v10.1
+* 102 — MariaDB v10.2
+* 103 — MariaDB v10.3 [requires <span class="notranslate"> MySQL Governor 1.2-36+; for cPanel - MySQL Governor 1.2-41+] </span>
+* 104 – MariaDB v10.4 [requires <span class="notranslate">MySQL Governor</span> 1.2-53+]
+* 105 - MariaDB v10.5 [requires <span class="notranslate">MySQL Governor</span> 1.2-62+]
+* 106 - MariaDB v10.6 [requires <span class="notranslate">MySQL Governor</span> 1.2-76+]
+* 1011 - MariaDB v10.11 [requires <span class="notranslate">MySQL Governor</span>  1.2-103+]
+* 1104 - MariaDB v11.4 [requires <span class="notranslate">MySQL Governor</span>  1.2-122+] 
+
+:::tip Updated note
+MariaDB version 10.4 is available for CloudLinux OS 6.
+:::
+
+Installation for <span class="notranslate"> Percona Server 5.6 </span> [requires <span class="notranslate"> MySQL Governor </span> 1.1-22+ or 1.2-21+]:
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=percona56
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install
+```
+</div>
+
+
+Please note that <span class="notranslate"> MySQL/MariaDB/Percona </span> will be updated from <span class="notranslate">CloudLinux OS</span> repositories.
+
+If you are installing <span class="notranslate"> MySQL Governor </span> on a server without MySQL at all, you have an opportunity to choose desired MySQL version to be installed with <span class="notranslate"> MySQL Governor </span> installation script. Use <span class="notranslate"> --mysql-version </span> flag before calling the installation script:
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=MYSQL_VERSION
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install
+```
+</div>
+
+<span class="notranslate"> MYSQL_VERSION </span> could be chosen from the list of versions currently supported by <span class="notranslate"> MySQL Governor </span> :
+
+| | |
+|-|-|
+|mysql51 |MySQL v5.1 |  
+|mysql55 |MySQL v5.5 | 
+|mysql56 |MySQL v5.6 | 
+|mysql57 |MySQL v5.7 | 
+|mysql80 |MySQL v8.0 (requires MySQL Governor 1.2-37+)| 
+|mysql84 |MySQL v8.4 (requires MySQL Governor 1.2-129+)| 
+|mariadb55 |MariaDB v5.5 |
+|mariadb100 |MariaDB v10.0 |
+|mariadb101 |MariaDB v10.1 |
+|mariadb102 |MariaDB v 10.2 |
+|mariadb103 |MariaDB v 10.3 [requires <span class="notranslate"> MySQL Governor 1.2-36+; for cPanel - MySQL Governor 1.2-41+] </span> |
+|mariadb104 |MariaDB v 10.4 [requires <span class="notranslate">MySQL Governor</span> 1.2-53+]|
+|mariadb105 |MariaDB v 10.5 [requires <span class="notranslate">MySQL Governor</span> 1.2-62+]|
+|mariadb106 |MariaDB v 10.6 [requires <span class="notranslate">MySQL Governor</span> 1.2-76+]|
+|mariadb1011 |MariaDB v 10.11 [requires <span class="notranslate">MySQL Governor</span> 1.2-103+]| 
+|mariadb1104 |MariaDB v 11.4 [requires <span class="notranslate">MySQL Governor</span> 1.2-122+]|
+|percona56 | <span class="notranslate"> Percona Server v 5.6 </span> |
+
+Generally, <span class="notranslate"> stable </span> and <span class="notranslate"> beta </span> channels contain different version of MySQL packages - <span class="notranslate"> beta </span> contains newer version than <span class="notranslate"> stable </span> or the same one. If you would like to install  <span class="notranslate"> beta </span>  packages, use  <span class="notranslate"> --install-beta </span>  flag instead of  <span class="notranslate"> --install </span>  when calling installation script:
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install-beta
+```
+</div>
+
+
+Starting with <span class="notranslate"> MySQL Governor </span> version 1.2 when installing <span class="notranslate"> MySQL/MariaDB MySQL Governor </span> asks for a confirmation of a database version to be installed. To avoid such behavior for the automatic installations, please use <span class="notranslate"> --yes </span> flag.
+
+For example:
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install --yes
+```
+</div>
+
+
+Please note that restore of previous packages in case of failed installation would also be confirmed with <span class="notranslate">`--yes`</span> flag.
+
+::: danger IMPORTANT
+Use <span class="notranslate"> --yes </span> flag on your own risk, because it confirms installation in any case - even in case if there are troubles during installation (for example, network problems causing incomplete download of packages), everything would be confirmed.
+:::
+
+:::tip Note
+See also [MySQL Governor CLI](/cloudlinuxos/command-line_tools/#mysql-governor)
+:::
+
+#### Upgrading database server
+
+::: danger Important
+Upgrade from MySQL 8 to MariaDB 10.x isn't supported due to compatibility issues between these database server versions and will break your database server completely. You can find more information about the compatibility issues [here](https://mariadb.com/kb/en/upgrading-from-mysql-to-mariadb/)
+:::
+
+:::warning Warning
+Please note that DB Governor is capable of upgrading your database to a newer version, including sequential upgrades, but we make no guarantee that such upgrades do not affect the operation of the database, its components, control panel operation and other functions of database. Always create a backup copy of your data.
+:::
+
+In order to change MySQL version you should run the following commands:
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=MYSQL_VERSION
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install
+```
+</div>
+
+where `MYSQL_VERSION` is the target database server version that should be replaced with the value from the table above.
+
+::: danger IMPORTANT
+Make sure you have full database backup (including system tables) before you switch. This action will prevent data loss in case if something goes wrong.
+:::
+
+### Uninstalling
+
+To remove <span class="notranslate">MySQL Governor</span>:
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --delete
+```
+</div>
+
+The script will install original MySQL server, and remove <span class="notranslate">MySQL Governor</span>.
+
+### Configuration and operation
+
+* [Configuration](./#configuration-2)
+* [Modes of operation](./#modes-of-operation)
+* [MySQL Governor limits](./#mysql-governor-limits)
+* [Starting and stopping](./#starting-and-stopping)
+* [Mapping a user to a database](./#mapping-a-user-to-a-database)
+* [Log files](./#log-files)
+* [Change MySQL version](./#change-mysql-version)
+* [PrivateDevices mode support](./#privatedevices-mode-support)
+
+#### Configuration
+
+
+:::warning Warning
+The "All" mode will be deprecated starting from September 1, 2021. You can read more [here.](https://blog.cloudlinux.com/mysql-governor-moving-from-all-to-abusers)
+:::
+
+<span class="notranslate"> MySQL Governor </span> configuration is located in <span class="notranslate"> /etc/container/mysql-governor.xml </span> 
+
+It is best to modify it using <span class="notranslate"> [dbctl](/cloudlinuxos/command-line_tools/#dbctl) </span> tool.
+
+Once configuration file is updated, please, restart the <span class="notranslate"> MySQL Governor </span> using:
+
+<div class="notranslate">
+
+```
+service db_governor restart
+```
+</div>
+Example configuration:
+<div class="notranslate">
+
+```
+<governor> 
+
+<!--  'off' - do not throttle anything, monitoring only -->
+<!--  'abusers' - when user reaches the limit, put user's queries into LVE for that user -->
+<!--  'all' - user's queries always run inside LVE for that user -->
+<!--  'single' - single LVE=3 for all abusers. -->
+<!-- 'on' - deprecated (old restriction type) -->
+<!-- To change resource usage of restricted user in LVE mode use command /usr/sbin/lvectl set 3 --cpu=<new value> --ncpu=<new value> --io=<new value> --save-all-parameters -->
+<lve use="on|single|off|abusers|all"/> 
+
+<!-- connection information -->
+<!-- If host, login and password are not present, this information is taken from /etc/my.cnf and ~root/.my.cnf -->
+<!-- Use symbol specified in prefix to figure out hosting accounts (mysql username will be split using prefix_separator, and first part will be used as account name). If prefix is not set, or empty -- don’t use prefixes/accounts --> 
+
+<!-- db governor will try to split MySQL user names using prefix separator (if present)and statistics will be aggregated for the prefix (account name) -->
+<connector host="..." login="..." password=".." prefix_separator="_"/> 
+
+<!-- Intervals define historical intervals for burstable limits. In seconds -->
+<intervals short="5" mid="60" long="300"/> 
+
+<!-- log all errors/debug info into this log -->
+<log file=”/var/log/dbgovernor-error.log” mode=”DEBUG|ERROR”/> 
+
+<!-- s -- seconds, m -- minutes, h -- hours, d -- days -->
+<!-- on restart, restrict will disappear -->
+<!-- log file will contain information about all restrictions that were take -->
+<!-- timeout - penalty period when user not restricted, but if he hit his limit during this period he will be restricted with higher level of restrict (for more long time) -->
+<!- level1, level2, level3, level4 - period of restriction user for different level of restriction. During this period all user's requests will be placed into LVE container -->
+
+<!-- if user hits any of the limits during period of time specified in timeout, higher level of restrict will be used to restrict user. If user was already on level4, level4 will be applied again -->
+<!-- attribute format set an restrict log format:
+SHORT -  restrict info only
+MEDIUM - restrict info, _all_tracked_values_
+LONG - restrict info, _all_tracked_values_, load average and vmstat info
+VERYLONG - restrict info, _all_tracked_values_, load average and vmstat info, slow query info -->
+<!-- script -- path to script to be triggered when account is restricted -->
+<!-- user_max_connections - The number of simultaneous connections of blocked user (in LVE mode) --> 
+
+<!-- restriction levels/format/script are deprecated -->
+<restrict level1="60s" level2="15m" level3="1h" level4="1d" timeout="1h"
+log="/var/log/dbgovernor-restrict.log" format="SHORT|MEDIUM|LONG|VERYLONG"
+script="/path/to/script"
+user_max_connections="30"/> 
+
+<!-- period (deprecated) - period based restriction that has multiple levels (see above) -->
+<!-- limit (by default) - when user hits limits, the account will be marked as restricted and if user does not hit  limit again during "unlimit=1m" account will be unrestricted. This mode doesn't have any additional levels/penalties. -->
+<restrict_mode use="period|limit" unlimit="1m"/>
+
+<!-- killing slow SELECT queries (no other queries will be killed) -->
+<!-- if "log" attribute was set all killed queries will be saved in log file -->
+<!-- slow parameter in the <limit name="slow" current="30"/> will no be applied without enabling slow_queries --> 
+<slow_queries run="on|off" log="/var/log/dbgovernor-kill.log"/> 
+<!-- Enable or disable saving of statistics for lve-stats - On - enabled, Off-disabled -->
+<statistic mode="on|off"></statistic>
+<!-- Enable logging user queries on restrict, can be On or Off -->
+<!-- Files are saved in /var/lve/dbgovernor-store and being kept here during 10 days -->
+<logqueries use="on|off"></logqueries>
+<default>
+<!-- -1 not use limit(by default, current - required) -->
+<limit name="cpu" current="150" short="100" mid="90" long="65"/>
+<limit name="read" current="100000000" short="90000000" mid="80000000" long="70000000"/>
+<limit name="write" current="100000000" short="90000000" mid="80000000" long="70000000"/>
+<!-- Time to kill slow SELECT queries for account, can be different for accounts in seconds(but unit can be specified) -->
+<!-- enabled only when slow_queries run="on" -->
+<!-- s -- seconds, m -- minutes, h -- hours, d -- days -->
+<!-- Requests are checked at 15 second intervals, so a request will be canceled after a timeout + 15 seconds maximum -->
+<limit name="slow" current="30"/>
+</default>
+<!-- name will matched account name, as extracted via prefix extraction --> 
+
+<!-- mysql_name will match exact MySQL user name. If both name and mysql_name are present, system will produce error -->
+<!-- mode restrict -- default mode, enforcing restrictions -->
+<!-- mode norestrict -- track usage, but don’t restrict user --> 
+<!-- mode ignore -- don’t track and don’t restrict user -->
+<user name=”xxx” mysql_name=”xxx” mode=”restrict|norestrict|ignore”>
+<limit...>
+</user> 
+
+<!-- debug mode for particular user. The information logged to restrict log. -->
+<debug_user name="xxx"/> 
+
+</governor>
+```
+</div>
+
+These values can also be set using [cloudlinux-config](/cloudlinuxos/command-line_tools/#cloudlinux-config) CLI utility
+
+
+#### Modes of operation
+
+
+:::warning Warning
+The "All" mode will be deprecated starting from September 1, 2021. You can read more [here.](https://blog.cloudlinux.com/mysql-governor-moving-from-all-to-abusers)
+:::
+
+:::tip Note
+<span class="notranslate">MySQL Governor</span> 1.0+
+:::
+
+**Active modes**
+
+* **abusers - Use LVE for a user to restrict queries (default mode)**: In that mode, once user goes over the limits specified in the MySQL Governor , all customer's queries will execute inside that user's LVE. We believe this mode will help with the condition when the site is still fast, but MySQL is slow (restricted) for that user. If someone abuses MySQL, it will cause queries to share LVE with PHP processes, and PHP processes will also be throttled, causing fewer new queries being sent to MySQL. _Requires [`dbuser-map` file](./#mapping-a-user-to-a-database)_.
+* **off - Monitor Only**: In that mode MySQL Governor will not throttle customer's queries, instead it will let you monitor the MySQL usage to see the abusers at any given moment in time (and historically). This mode is good when you are just starting and want to see what is going on.
+
+---
+
+**Deprecated modes**
+
+* **all - Always run queries inside user's LVE (will be deprecated on September 1, 2021)**: This way there is no need for separate limits for MySQL. Depending on overhead we see in the future, we might decide to use it as a primary way of operating MySQL Governor . The benefit of this approach is that limits are applied to both PHP & MySQL at the same time, all the time, preventing any spikes whatsoever. _Requires [`dbuser-map` file](./#mapping-a-user-to-a-database)_.
+* **single - Single restricted's LVE for all restricted customers (deprecated)**: In that mode once customer reaches the limits specified in the MySQL Governor , all customer's queries will be running inside LVE with id 3. This means that when you have 5 customers restricted at the same time, all queries for all those 5 customers will be sharing the same LVE. The larger the number of restricted customers - the less resources per restricted customer will be available.
+* **on** - Synonym for **single** mode
+
+:::warning Note
+After the `all` mode will be deprecated on September 1, 2021:
+* the users, having it, will continue to work with this mode;
+* all new installation will not have the `all` mode;
+* moving to the `all` mode will be forbidden.
+:::
+
+If the `dbuser-map` file is absent on the server, the `abusers` mode emulates the `single`.
+
+With the `single` and `abusers` mode, once user is restricted, the queries for that user will be limited as long as user is using more than limits specified. After a minute that user is using less, we will unrestricted that user.
+
+You can specify modes of operation using [dbctl](/cloudlinuxos/command-line_tools/#dbctl) or by changing [configuration file](./#configuration-3).
+
+#### MySQL Governor limits
+
+**MySQL Governor limit setting recommendations**
+
+:::tip Note
+Please note that these recommendations on setting limits for MySQL Governor are general. The exact values of the limits for the effective work of MySQL and the site as a whole depend on many factors.
+:::
+
+Here they are:
+
+* the load of the virtual server with incoming requests
+* the database size
+* SQL queries efficiency
+* absolute values of the LVE limits
+
+
+MySQL Governor allows setting the burstable limits for accounts. To provide that possibility, four levels of limits are defined: `current`, `short`, `middle`, and `long`. Correctly set limits can give users more CPU without having a bottleneck on MySQL. 
+
+**General principles of choosing the limits**:
+
+* `current` and `short` can be more than the LVE limit and should not be less
+* setting the `current` and `short` limits more than the LVE limit prevents bottlenecks in SQL request processing
+* `middle` limit can be more or less that the LVE limit
+* `long` on the contrary, should not be more than the LVE limit
+* setting the `middle` and `long` limits less than the LVE limit prevents abuse of other processes in the account (Apache, PHP) by MySQL
+
+**Example of choosing MySQL Governor limits**
+
+* With the default LVE SPEED limit is `100`, the possible values of the MySQL Governor CPU limits can be 100/95/87/75. I.e., we admit the short-term exceeding of the limits for processing SQL requests.
+* If you face spike CPU consumption with these limits, it is recommended to reduce the excess of the `current` and `short` limits over the LVE limit. For example, to the values 150/110/100/90.
+* If the average level of CPU consumption is too high, then it is recommended to reduce the `middle` and `long` limits, too. For example, to the values 150/100/80/50.
+* Then MySQL processes will fall into LVE and be limited by LVE limits more often.
+* The same clues are applicable to the IO limits – the `current` and `short` IO limits for MySQL Governor can exceed IO LVE limits, but the `middle` and `long` cannot.
+
+
+#### Starting and stopping
+
+To start:
+<div class="notranslate">
+
+```
+service db_governor start
+```
+</div>
+
+To stop:
+<div class="notranslate">
+
+```
+service db_governor stop
+```
+</div>
+
+#### Mapping a user to a database 
+
+
+**[** <span class="notranslate"> **MySQL Governor** </span> **1.x]**
+
+Traditionally <span class="notranslate"> MySQL Governor </span> used prefixes to map user to database. With the latest version, we automatically generate <span class="notranslate"> user -> database user </span> mapping for <span class="notranslate"> cPanel </span>, <span class="notranslate"> Plesk </span> and <span class="notranslate"> DirectAdmin </span> control panels.
+	
+The mapping file is recreated daily by cron.
+
+Mapping recreation is also triggered by the following events on cPanel servers:
+
+* creation of user
+* modification of user
+* removal of user
+	
+You can also rebuild the mapping file manually on cPanel, Plesk and DirectAdmin control panels by running the following command:
+	
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --dbupdate
+```
+
+The mapping file is located in: <span class="notranslate"> `/etc/container/dbuser-map` </span>
+
+The format of the file:
+<div class="notranslate">
+
+```
+[dbuser_name1] [account_name1] [UID1]
+...
+[dbuser_nameN] [account_nameN] [UIDN]
+```
+</div>
+For example:
+
+<div class="notranslate">
+
+```
+pupkinas_u2 pupkinas 502
+pupkinas_u1 pupkinas 502
+pupkinas_u3 pupkinas 502
+pupkin2a_uuu1 pupkin2a 505
+pupkin10_p10 pupkin10 513
+pupkin5a_u1 pupkin5a 508
+pupkin3a_qq1 pupkin3a 506
+pupkin3a_test22 pupkin3a 506
+pupkin3a_12 pupkin3a 506
+```
+</div>
+
+This would specify that db users: <span class="notranslate"> pupkinas_u2, pupkinas_u1, pupkinas_u3 </span> belong to user <span class="notranslate"> pupkinas </span> with uid (lve id) 502
+db user <span class="notranslate"> pupkin2a_uuu1 </span> belongs to user <span class="notranslate"> pupkin2a </span> with uid 505, etc...
+	
+`db_governor` service checks this file for modifications every 5 minutes.
+
+If you need to force reload the mapping file, run:
+<div class="notranslate">
+
+```
+service db_governor restart
+```
+</div>
+
+#### Log files
+
+
+<span class="notranslate"> **Error_log** </span>
+
+<span class="notranslate"> MySQL Governor </span> error log is used to track any problems that <span class="notranslate"> MySQL Governor </span> might encounter.
+Error log is located in <span class="notranslate"> /var/log/dbgovernor-error.log </span>
+
+<span class="notranslate"> **Restrict_log** </span>
+
+Restrict log is located in <span class="notranslate"> /var/log/dbgovernor-restrict.log </span>
+
+Restrictions:
+<div class="notranslate">
+
+```
+_timestamp_ _username_ LIMIT_ENFORCED _limit_setting_ __current_value_                         _restrict_level__ SERVER_LOAD TRACKED_VALUES_DUMP
+ ... 
+```
+</div>
+
+* <span class="notranslate"> TRACKED_VALUES_DUMP=busy_time:xx,cpu_time:xx,... </span>
+* <span class="notranslate"> SERVER_LOAD </span> = load averages followed by output of <span class="notranslate"> vmstat </span>
+* <span class="notranslate"> TRACKED_VALUES_DUMP </span> is available with <span class="notranslate"> MEDIUM & LONG </span> format
+* <span class="notranslate"> SERVER_LOAD </span> is available with <span class="notranslate"> LONG </span> format
+
+<span class="notranslate"> **Kill_log** </span>
+
+<span class="notranslate"> MySQL Governor </span> kill log is optional log located in the <span class="notranslate">/var/log/dbgovernor-kill.log</span>. Kill log is used to track all killed queries
+
+#### Change MySQL version
+
+
+If you would like to change to a different MySQL version, or switch to <span class="notranslate"> MariaDB </span> you have to start by backing up existing databases.
+
+::: tip Note
+For experienced users only. Changing MySQL version is a quite complicated procedure, it causes system table structural changes which can lead to unexpected results. Think twice before proceeding.
+:::
+
+::: danger IMPORTANT
+Please make full database backup (including system tables) before you will do upgrade of MySQL or switch to MariaDB. This action will prevent data losing in case if something goes wrong.
+:::
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=MYSQL_VERSION
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install
+```
+</div>
+
+* If you are using <span class="notranslate"> cPanel </span> or <span class="notranslate"> DirectAdmin </span> - recompile <span class="notranslate"> Apache </span> .
+
+To install beta version of MySQL:
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install-beta
+```
+</div>
+
+<span class="notranslate"> MYSQL_VERSION </span> can be one of the following:
+
+| | |
+|-|-|
+|<span class="notranslate"> auto </span> | default version of MySQL for given OS release (or cPanel settings)|
+|mysql51 | MySQL v5.1|
+|mysql55 | MySQL v5.5|
+|mysql56 | MySQL v5.6|
+|mysql57 | MySQL v5.7|
+|mysql80 | MySQL v8.0 (requires MySQL Governor 1.2-37+)|
+|mysql84 | MySQL v8.4 (requires MySQL Governor 1.2-129+)| 
+|mariadb55 | MariaDB v5.5|
+|mariadb100 | MariaDB v10.0|
+|mariadb101 | MariaDB v10.1|
+|mariadb102 | MariaDB v 10.2|
+|mariadb103 | MariaDB v 10.3 [requires <span class="notranslate"> MySQL Governor 1.2-36+; for cPanel - MySQL Governor 1.2-41+ </span> ]|
+|mariadb104 | MariaDB v 10.4 [requires <span class="notranslate">MySQL Governor</span> 1.2-53+]||
+|mariadb105 | MariaDB v 10.5 [requires <span class="notranslate">MySQL Governor</span> 1.2-62+]|
+|mariadb106 | MariaDB v 10.6 [requires <span class="notranslate">MySQL Governor</span> 1.2-76+]|
+|mariadb1011 | MariaDB v 10.11 [requires <span class="notranslate">MySQL Governor</span> 1.2-103+]| 
+|mariadb1104 | MariaDB v 11.4 [requires <span class="notranslate">MySQL Governor</span> 1.2-122+]|
+|percona56 | Percona v 5.6|
+
+* We don't recommend to downgrade from MySQL v5.6, MariaDB 10.x
+
+
+:::tip Note
+cPanel does not officially support MariaDB 10.4, that is why we don’t recommend to use it on cPanel servers. Use on your own risk for Plesk servers, because downgrade can corrupt your databases.
+:::
+
+:::tip Note
+MariaDB version 10.4 is not available for CloudLinux OS 6 yet.
+:::
+
+:::tip Note
+See also MySQL Governor [CLI](/cloudlinuxos/command-line_tools/#mysql-governor)
+:::
+
+#### PrivateDevices mode support
+
+MySQL Governor v. 1.2-66 and later on Cloudlinux OS 7 and 8 supports the PrivateDevices mode for the mysqld service.
+
+To switch on the PrivateDevices mode, follow these steps.
+
+**On Cloudlinux OS 7**
+
+* Make sure that the systemd version is at least **219-78.2.cloudlinux.1**
+* Add the following instruction into the _Service_ section of the _mysqld_ service file:
+  ```
+  PrivateDevices=true
+  ```
+* Invoke `systemctl daemon-reload`
+* Restart _mysqld_ service
+
+
+**On Cloudlinux OS 8**
+
+* Add the following instructions into the _Service_ section of the _mysqld_ service file:
+  ```
+  PrivateDevices=true
+  DeviceAllow=/dev/lve
+  BindPaths=/dev/lve 
+  ```
+* Invoke `systemctl daemon-reload`
+* Restart _mysqld_ service
+
+### Backing up MySQL
+
+On <span class="notranslate"> cPanel </span> server disable MySQL service monitoring before doing the job:
+<div class="notranslate">
+
+```
+whmapi1 configureservice service=mysql enabled=1 monitored=0
+```
+</div>
+
+The following script could be used before installing MySQL-governor and MySQL/MariaDB packages to create the backup:
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/scripts/mysql_backup.sh
+```
+</div> 
+
+:::tip 
+The script `mysql_backup.sh` is provided starting from the Governor version 1.2-115.
+:::
+
+On <span class="notranslate"> cPanel </span> server enable monitoring back:
+<div class="notranslate">
+
+```
+whmapi1 configureservice service=mysql enabled=1 monitored=1
+```
+</div>
+
+::: tip Note
+This operation may take some time.
+:::
+
+See also [MySQL Governor CLI tools](/cloudlinuxos/command-line_tools/#mysql-governor).
+
+### MySQL Governor improvements  for  CPU calculation
+
+In MySQL Governor version 1.2-81, we provide improvements in the algorithm of calculation user CPU usage. New behavior helps to increase precision of resource distribution between server users. By default the new type of CPU usage calculation is tuned on.
+
+Server administrator can turn on/off the new type of CPU usage calculation by using the following command:
+
+```
+dbctl --lve-improved-accuracy off
+```
+
+#### What is the impact of improvements?
+
+The calculation of CPU usage has become more accurate, so the `dbtop` utility provides more correct information to the MySQL Governor and it places user’s requests to the LVE in a proper moment. And as a result, such improvements reduce the possibility of absorbing whole server resources by one user.
+
+One mpre possible outcome of calculation improvements is that some server users will become in need of MySQL Governor limits reconfiguration.
+
+#### How to view the impact of improvements?
+
+Let’s check the CPU usage charts from CloudLinux statistics (lve-stats).
+
+**The new type of  CPU usage calculation is turned off**.
+
+In this case, CPU usage by database could be less than LVE average CPU usage (blue chart is lower than green chart):
+
+![](/images/cloudlinuxos/cloudlinux_os_components/NewTurnedOff.webp)
+
+**The new type of  CPU usage calculation is turned on**.
+
+In this case, CPU usage by database become more similar to LVE average CPU usage (blue chart and green chart on the sceen):
+
+![](/images/cloudlinuxos/cloudlinux_os_components/NewTurnedOn.webp)
+
+### FAQ
+
+#### How is interaction between MySQL Governor and LVE organized?
+
+The main purpose of MySQL Governor is to monitor how many common resources are used by each user for working with MySQL/MariaDB and to manage usage restrictions for such resources by LVE containers.
+
+Before any SQL request, MySQL Governor determines which user sent the request and if this user exceed limits, the MySQL Governor pushes the request to appropriate LVE container.
+
+This is how common server resources can be managed. 
+
+#### Why the СPU/IO charts are different for database and LVE usage?
+
+SQL requests are not limited inside LVE, so there are not any calculations for IO usage there. It can be clearly viewed via the lve-stats charts:
+
+![](/images/cloudlinuxos/cloudlinux_os_components/Chart1.webp)
+
+**Blue chart (database)**:
+
+This is the user’s real IO Database usage which was calculated by MySQL Governor. 
+
+**Green chart (LVE)**:
+
+This is the user’s IO Database usage which was calculated by lve-stats.
+
+Also for different types of database load (for example in case, there is a huge amount of shot requests), CPU usage charts for LVE and database can be different.
+
+Take a look on this chart:
+
+![](/images/cloudlinuxos/cloudlinux_os_components/Chart2.webp)
+
+**Blue (database) CPU usage**:
+
+It is calculated by MYSQL Governor and the value is identical with top/htop values.
+
+**Green (LVE) CPU usage**:
+
+It is calculated by lve-stats. The values are less on the LVE CPU usage chart because user requests are placed in the LVE only for part of the time.
+
+#### For what purpose are the IO limits of MySQL Governor used?
+
+MySQL Governor uses its limits as triggers to place user’s requests to the LVE. If user’s requests exceed MySQL Governor limits they are placed to the LVE, which already limits resource usage. After some timeout (which can be configured in the MySQL Governor config file requests will not be placed to the LVE. The next placing of the SQL requests to the LVE will occur after the next limits are exceeded.
+
+#### How exactly does IO limiting work for MySQL/MariaDB requests?
+
+There is no direct IO limitation for database treads. But in case of exceeding governor IO user limits, their requests will be placed into the LVE and CPU LVE limitation will be applied to the requests. And it’s clear that any IO load causes CPU load. So by CPU limits IO usage will be limited indirectly.
+
+Take a look at the next chart. The I/O load is synchronous with the CPU load.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/Chart3.webp)
+
+
+
+### Troubleshooting
+
+**MariaDB 5.5 and MariaDB 10.0: How to set LimitNOFILE correctly for systemd.**
+
+<span class="notranslate"> MariaDB 5.5 </span> and <span class="notranslate"> MariaDB 10.0 </span> have only file for managing the service, but the file has <span class="notranslate"> LSB </span> functions, so it is supported by <span class="notranslate"> `systemd` </span> .
+
+For adding extra limits, do the following:
+
+1. Run:
+
+<div class="notranslate">
+
+```
+mkdir /etc/systemd/system/mariadb.service.d/
+```
+</div>
+
+2. Run:
+
+<div class="notranslate">
+
+```
+touch /etc/systemd/system/mariadb.service.d/limits.conf
+```
+</div>
+
+3. Add the following content to the the file <span class="notranslate"> `/etc/systemd/system/mariadb.service.d/limits.conf` </span> :
+
+<div class="notranslate">
+
+```
+[Service] 
+LimitNOFILE=99999
+```
+</div>
+
+**MySQL Governor lost connection to MySQL - “Can't connect to mysql” messages in /var/log/dbgovernor-error.log (Plesk and DirectAdmin)**
+
+This may be caused by changing root/administrator credentials without updating MySQL <span class="notranslate"> Governor </span> configuration file.
+
+When you change root or administrator credentials in <span class="notranslate"> Plesk or DirectAdmin, </span> you also need to update MySQL <span class="notranslate"> Governor </span> configuration file. This could be done with the following command (available since <span class="notranslate"> governor-mysql 1.2-38): </span>
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --update-config-auth
+```
+</div>
+
+The command updates credentials in MySQL <span class="notranslate">Governor</span> configuration file and restarts <span class="notranslate">`db_governor`</span> service afterwards.
+
+After applying the command MySQL <span class="notranslate">Governor</span> successfully connects to MySQL.
+
+
+**Handling Missing Libraries in cl-MariaDB-libs for MySQL Governor (libgovernor_stubs.so)**
+
+During the update of latest `cl-MariaDB-libs`, issues related to the addition or removal of certain shared libraries in cl-MySQL/cl-MariaDB packages may arise. The presence or absence of these libraries can disrupt the functioning of clients' systems.
+
+When you encounter errors pointing towards missing or newly added libraries after updating the cl-MySQL/cl-MariaDB packages, it's crucial to adjust and address the configurations to restore normalcy.
+
+For instance, the error might resemble the following message:
+
+```
+ImportError: libexample_stubs.so: cannot open shared object file: No such file or directory
+```
+
+The recommended approach to resolving such issues involves three primary steps:
+
+1) Verify the Presence of the Library.
+
+Use the command to ascertain the library's presence in the current version:
+
+```bash
+yum provides '*/libexample_stubs.so'
+```
+
+2) Recompiling the Affected Package.
+
+Recompile the affected package for each user, especially if using Python's mysql package (`mysqlclient`):
+
+```bash
+pip install mysqlclient --force --no-cache-dir
+```
+However, this is not the ideal solution since sites that are functional may break after a system update.
+
+3) Using Utilities to Modify Binary.
+
+If recompilation isn't feasible, `patchelf` utility can help remove references to the missing library in the binary:
+
+```bash
+patchelf --remove-needed libexample_stubs.so path/to/affected/binary.so
+```
+
+Applying the aforementioned steps should rectify the issues, allowing MySQL <span class="notranslate">Governor</span> to function correctly with the updated libraries in cl-MySQL/cl-MariaDB packages.
+
+Always remember to back up your data and configurations before making any changes to ensure a safety net in case of any inadvertent errors. If you continue to face challenges, please reach out to our support team for assistance.
+
+
+### Known limitations
+
+#### I/O LVE limits don't work for user’s SQL queries
+
+In the MySQL Governor default mode, once users go over the limits, all their SQL queries will execute inside that user's LVE.
+
+This technique was provided with the early 1.1.5 version of MySQL Governor.
+
+It turned out that memory limitation for MySQLrequests causes the OOM (Out Of Memory) issues and as a result database corruptions. So, it was decided not to apply LVE memory limits for SQL queries supplied by MySQL Governor. But the internal implementation of LVE is such that I/O and memory limits work together. That’s why the I/O LVE limits do not apply for user’s SQL queries now.
+
+Nevertheless, SQL queries inside LVE are restricted by CPU limit which indirectly limits I/O usage, too.
+
+
+## PHP Selector
+
+### General information and requirements
+
+The main requirements:
+
+* CageFS is installed
+* Alt-PHP packages are installed
+* Mod_suexec is installed. You can find installation instruction [here](./#apache-suexec-module)
+* CageFS is initialized without errors
+* CageFS is enabled for a domain user-owner
+* An appropriate PHP handler is selected for PHP version which is system version. <span class="notranslate"> PHP Selector </span> is **compatible** with the following technologies: <span class="notranslate">_suPHP, mod_fcgid, CGI (suexec), LiteSpeed_</span>. See also [Compatibility Matrix](/cloudlinuxos/limits/#compatibility-matrix).
+* PHP version in the CloudLinux OS PHP selector does not equal to the Native PHP version
+
+::: tip Note
+PHP Selector is not supported for H-Sphere.
+:::
+
+::: tip Note
+PHP Selector requires native PHP to be installed, otherwise you will get an error message with a proposal to install PHP package.
+Here are some instructions for different control panels:
+1. [for cPanel](https://documentation.cpanel.net/display/EA4/EasyApache+4+and+the+ea-php-cli+Package)
+2. [for Plesk](https://support.plesk.com/hc/en-us/articles/115004177974-How-to-install-PHP-by-OS-vendor-in-Plesk-for-Linux)
+3. [for DirectAdmin](https://help.directadmin.com/item.php?id=345)
+
+After installing native PHP, please run the `cloudlinux-selector setup --interpreter=php --json` command in order to reconfigure CageFS and LVE Manager.
+:::
+
+### Supported versions
+
+::: tip 
+The mark `x` stands for a supported version.
+:::
+
+|             | Cloudlinux 6 | Cloudlinux 7 | Cloudlinux 8 | Cloudlinux 9 |
+|:-----------:|:------------:|:------------:|:------------:|:------------:|
+| alt-php 5.1 |       x      |       x      |       x      |       –      |
+| alt-php 5.2 |       x      |       x      |       x      |       x      |
+| alt-php 5.3 |       x      |       x      |       x      |       x      |
+| alt-php 5.4 |       x      |       x      |       x      |       x      |
+| alt-php 5.5 |       x      |       x      |       x      |       x      |
+| alt-php 5.6 |       x      |       x      |       x      |       x      |
+| alt-php 7.0 |       x      |       x      |       x      |       x      |
+| alt-php 7.1 |       x      |       x      |       x      |       x      |
+| alt-php 7.2 |       x      |       x      |       x      |       x      |
+| alt-php 7.3 |       x      |       x      |       x      |       x      |
+| alt-php 7.4 |       x      |       x      |       x      |       x      |
+| alt-php 8.0 |       x      |       x      |       x      |       x      |
+| alt-php 8.1 |       x      |       x      |       x      |       x      |
+| alt-php 8.2 |       x      |       x      |       x      |       x      |
+| alt-php 8.3 |       x      |       x      |       x      |       x      | 
+| alt-php 8.4 |       –      |       x      |       x      |       x      |
+
+### Installation and update
+
+* [Update](./#update)
+
+The installation of <span class="notranslate"> PHP Selector </span> presumes that you already have  [CageFS](./#cagefs) & <span class="notranslate">[LVE Manager](/lve_manager/) installed.</span>
+
+Use [compatibility matrix](/cloudlinuxos/limits/#compatibility-matrix) to check if your Web Server/PHP mode is supporting <span class="notranslate"> PHP Selector. </span> If not, you need a change to one of the supported models.
+
+Installation of different versions of PHP & modules:
+<div class="notranslate">
+
+```
+yum groupinstall alt-php
+```
+</div>
+
+Update CageFS & <span class="notranslate"> LVE Manager with support for PHP Alternatives: </span> 
+<div class="notranslate">
+
+```
+$ yum update cagefs lvemanager
+```
+</div>
+
+<span class="notranslate">**cPanel/WHM**: Make sure 'Select PHP version' </span> is enabled in <span class="notranslate"> Feature Manager </span>.
+
+:::warning IMPORTANT
+Please, do not use settings like <span class="notranslate">`SuPHP_ConfigPath`, `PHPRC`, `PHP_INI_SCAN_DIR`</span>. Do not redefine path to <span class="notranslate">`php.ini`</span> and ini-files for PHP modules. Doing that can break <span class="notranslate">PHP Selector</span> functionality.
+:::
+
+For example, alternative php5.2 versions should load <span class="notranslate">`/opt/alt/php52/etc/php.ini`</span> file and scan <span class="notranslate">`/opt/alt/php52/etc/php.d`</span> directory for modules:
+<div class="notranslate">
+
+```
+Configuration File (php.ini) Path         /opt/alt/php52/etc
+Loaded Configuration File                 /opt/alt/php52/etc/php.ini
+Scan this dir for additional .ini files   /opt/alt/php52/etc/php.d
+additional .ini files parsed              /opt/alt/php52/etc/php.d/alt_php.ini
+```
+</div>
+
+Those are default locations for <span class="notranslate">alt-php</span>.
+
+If you need custom PHP settings per user, please change them via <span class="notranslate">"Edit PHP settings"</span> feature of <span class="notranslate"> PHP Selector </span> .
+
+If a list of default modules is absent on the server in the <span class="notranslate">`/etc/cl.selector/defaults.cfg`</span> file for some alt-PHP version and there is `nd_mysqli` extension in this version, then on installation/update of the LVE Manager the `mysqli` extension will be disabled and `nd_mysqli` extension will be enabled automatically.
+
+* If _nd_mysqli_ module is absent or a list of enabled modules is available, then they won't be changed automatically.
+* If alt-PHP is not installed on LVE Manager installation/update, then they won’t be changed automatically.
+
+To change the modules status (enabled/disabled) manually, run the following command in a console:
+<div class="notranslate">
+
+```
+/usr/sbin/cloudlinux-selector make-defaults-config --json --interpreter=php
+```
+</div>
+
+#### Update
+
+To update PHP Selector, run the following command:
+<div class="notranslate">
+
+```
+yum groupupdate alt-php
+```
+</div>
+
+This command allows to install newly released versions in <span class="notranslate"> PHP Selector. </span>
+
+:::tip Note
+See also PHP Selector [CLI](/cloudlinuxos/command-line_tools/#php-selector)
+:::
+
+### Installation instructions for cPanel users
+
+1. Install CageFS as root via SSH:
+
+<div class="notranslate">
+
+```
+yum install cagefs
+```
+</div>
+
+2. Install `alt-php` packages as root:
+
+<div class="notranslate">
+
+```
+yum groupinstall alt-php
+```
+</div>
+
+3. Install `mod_suexec` package as root. See installation instructions [here](./#installation-5).
+4. Verify that CageFS is initialized successfully.
+
+  * via SSH by running the following command:
+
+  <div class="notranslate">
+
+  ```
+  cagefsctl --check-cagefs-initialized
+  ```
+  </div>
+
+  * via cPanel admin interface
+  
+  Go to <span class="notranslate">cPanel → Admin interface → LVE Manager → Dashboard</span> → click <span class="notranslate">_Refresh_</span>
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/cageFS-verify.webp)
+
+  If there is a problem you can see _Not initialized_
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/not-initialized.webp)
+
+5. Initilize CageF (if it is not initialized)
+
+  * Via SSH
+
+  <div clas="code">
+
+  ```
+  cagefsctl --init
+  ```
+  </div>
+
+  * Via cPanel admin interface
+
+    Go to cPanel → <span class="notranslate">Admin interface → LVE manager → Options → CageFS INIT</span>
+
+    ![](/images/cloudlinuxos/cloudlinux_os_components/CageFS-init.webp)
+
+  If CageFS was initialized after refreshing Dashboard you will see that CageFS is enabled:
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/CageFS-enabled.webp)
+
+6. Enable CageFS to a user
+
+  Go to <span class="notranslate">cPanel → Admin interface → LVE manager → Users</span>
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/enable-CageFS-to-user.webp)
+
+  * For one user by individual slider (for LVE 1001 in the picture above)
+  * For a group of user by the _CageFS_ button (for LVE 1002 and 1003 in the picture above)
+
+7. Check that system PHP version is not `alt-php` (it should be `ea-php`)
+
+  Go to <span class="notranslate">cPanel → Admin interface → MultiPHP Manager → PHP versions</span>
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/check-ea-php.webp)
+
+8. Check that an appropriate PHP handler is selected for PHP version which is system version
+
+  Go to <span class="notranslate">cPanel Admin interface → MultiPHP Manager → PHP Handlers</span>
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/php-handlers.webp)
+
+9. Check version for domain in MultiPHP Selector. It should be equal to the system default version
+
+Go to <span class="notranslate">cPanel Admin interface → MultiPhp Manager → PHP versions</span> → scroll to <span class="notranslate">_Set PHP Version per Domain_</span>
+
+10. Version for domain in User’s interface in PHP Selector should not be equal to the <span class="notranslate">Native</span> version.
+
+
+### LiteSpeed support
+
+::: tip Note
+LiteSpeed detects CloudLinux OS and applies all settings out-of-the-box.
+:::
+
+:::tip Note
+If your LiteSpeed is installed to a non-standard, custom location path, create a symlink: `ln -s /path/to/custom/lsws /usr/local/lsws` then run `cagefsctl --setup-cl-selector`.
+:::
+
+If the settings were not applied, you can use the following steps to set up LiteSpeed to use <span class="notranslate"> PHP Selector. </span>
+
+1. Follow PHP Selector [installation guide](./#installation-and-update-4).
+2. Make sure the following settings are set in the LSWS Web Admin console:
+  * Configuration ➞ Server ➞ General ➞ CloudLinux OS: `CageFS` or `CageFS without suEXEC`
+  * Configuration ➞ Server ➞ General ➞ PHP suEXEC: `Yes`
+
+**How to set up LiteSpeed version 5.3+ to use PHP Selector**
+
+**For Plesk**
+
+![](/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedForPlesk.webp)
+
+**For other control panels**
+
+![](/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedForOtherCP.webp)
+
+Additionally, we recommend setting up the following parameters:
+
+* Configuration ➞ Server ➞ PHP:
+* Click _Edit_ in the PHP Handler Defaults section
+* Set _Yes_ in the _Run On Startup_
+* Make sure to set _Max Idle Time_ (for example to 140)
+
+![](/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedAdditionSettings.webp)
+
+**How to set up LiteSpeed version lower than 5.3 to use PHP Selector**
+
+Go to the _External App_ tab, _External Application_ ➞ Add.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedExternalAppTab.webp)
+
+* The _Command line_ should be `/var/www/cgi-bin/cgi_wrapper/cloudlinux_wrapper` on Plesk. 
+* For other control panels, the _Command line_ should be `/usr/local/bin/lsphp`.
+* The _Run On Start Up_ line must contain `Yes` or `No`.
+
+**For Plesk**
+
+![](/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedPlesk.webp)
+
+**For other control panels**
+
+![](/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedOtherCP.webp)
+
+
+Settings in text format:
+
+| | |
+|-|-|
+|<span class="notranslate">Name</span>|<span class="notranslate">`lsphp_selector`</span>|
+|<span class="notranslate">Address</span>|<span class="notranslate">`uds://tmp/lshttpd/lsphp_selector.sock`</span>|
+|<span class="notranslate">Notes</span>|<span class="notranslate">Not Set</span>|
+|<span class="notranslate">Max Connections</span>|`35`|
+|<span class="notranslate">Environment</span>|<span class="notranslate">`PHP_LSAPI_MAX_REQUESTS=5000`</span><br><span class="notranslate">`PHP_LSAPI_CHILDREN=35`</span>|
+|<span class="notranslate">Initial Request Timeout (secs)</span>|`60`|
+|<span class="notranslate">Retry Timeout (secs)</span>|`0`|
+|<span class="notranslate">Persistent Connection</span>|<span class="notranslate">`Yes`</span>|
+|<span class="notranslate">Connection Keepalive Timeout</span>|<span class="notranslate">Not Set</span>|
+|<span class="notranslate">Response Buffering</span>|<span class="notranslate">`No`</span>|
+|<span class="notranslate">Auto Start</span>|<span class="notranslate">`Through CGI Daemon (Async)`</span>|
+|<span class="notranslate">Command</span>|* For Plesk <span class="notranslate">`/var/www/cgi-bin/cgi_wrapper/cloudlinux_wrapper`</span><br>* For other control panels <span class="notranslate">`/usr/local/bin/lsphp`</span>|
+|<span class="notranslate">Back Log</span>|`100`|
+|<span class="notranslate">Instances</span>|`1`|
+|<span class="notranslate">suEXEC User</span>|<span class="notranslate">Not Set</span>|
+|<span class="notranslate">suEXEC Group</span>|<span class="notranslate">Not Set</span>|
+|<span class="notranslate">umask</span>|<span class="notranslate">Not Set</span>|
+|<span class="notranslate">Run On Start Up</span>|<span class="notranslate">`Yes`</span>|
+|<span class="notranslate">Max Idle Time</span>|`70`|
+|<span class="notranslate">Priority</span>|`0`|
+|<span class="notranslate">Memory Soft Limit (bytes)</span>|`2047M`|
+|<span class="notranslate">Memory Hard Limit (bytes)</span>|`2047M`|
+|<span class="notranslate">Process Soft Limit</span>|`400`|
+|<span class="notranslate">Process Hard Limit</span>|`500`|
+
+Go to the _Script Handler_ tab. For required suffixes, change the _Handler Name_ to `lsphp_selector`.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedHandlerName.webp)
+
+
+![](/images/cloudlinuxos/cloudlinux_os_components/LiteSpeedScriptHandler.webp)
+
+:::tip Note
+In order to use PHP Selector and custom php.ini, lsphp5 needs to be in SuEXEC non-daemon mode.
+:::
+
+:::tip Note
+Some PHP configurations require more memory for SuExec to work properly. If you are getting error 500 after switching suEXEC to non-daemon mode, try to increase Memory Soft Limit and Memory Hard Limit for external App to at least 650/800M.
+:::
+
+
+### ISPmanager support
+
+
+As of July 2013, <span class="notranslate"> PHP Selector </span> support for <span class="notranslate"> ISPmanager </span> is limited to command line utilities. You should still be able to use it.
+
+As always, <span class="notranslate"> PHP Selector </span> requires <span class="notranslate">  CGI, FCGI </span> or <span class="notranslate"> suPHP </span> to work.
+
+You will need to do following modifications:
+
+Create new file <span class="notranslate"> /usr/local/bin/php-cgi-etc: </span>
+<div class="notranslate">
+
+```
+#!/bin/bash
+/usr/bin/php-cgi -c /etc/php.ini "$@"
+```
+</div>
+Make that file executable:
+<div class="notranslate">
+
+```
+chmod +x /usr/local/bin/php-cgi-etc
+```
+</div>
+Edit file <span class="notranslate"> /usr/local/ispmgr/etc/ispmgr.conf </span>
+
+Add a line:
+<div class="notranslate">
+
+```
+path phpcgibinary /usr/local/bin/php-cgi-etc
+```
+</div>
+
+Make sure there is no other lines with <span class="notranslate">`path phpcgibinary`</span> defined in the file.
+
+Restart <span class="notranslate"> ISPmanager </span> :
+<div class="notranslate">
+
+```
+killall ispmgr
+```
+</div>
+
+After that <span class="notranslate"> FCGID </span> wrappers <span class="notranslate">(`/var/www/[USER]/data/php-bin/php`)</span> for new users will be like this:
+
+<span class="notranslate"> #!/usr/local/bin/php-cgi-etc </span>
+
+You might need to edit/modify wrappers for existing users if you want them to be able to use <span class="notranslate">PHP Selector</span>. You can leave them as is for users that don't need such functionality.
+
+### Uninstalling
+
+* [Disabling PHP extension globally](./#disabling-php-extension-globally)
+
+It is not possible to remove <span class="notranslate"> PHP Selector </span> from the system completely as it is an essential part of <span class="notranslate"> LVE Manager </span> and CageFS packages. However, you can make PHP Selector unavailable for cPanel and Plesk users.
+
+To do so, go to <span class="notranslate"> _LVE Manager → PHP Selector_ </span> and check <span class="notranslate"> _Disabled_ as PHP Selector </span> status. Doing so allows you to disable web-interface of the <span class="notranslate"> PHP Selector </span> in the user interface but does not reset custom settings (choosing a version of PHP and modules).
+
+To disable <span class="notranslate"> PHP Selector </span> and make it has no effect on a PHP version on the sites, run the following command:
+
+* this command resets PHP versions to Native:
+
+<div class="notranslate">
+
+```
+cagefsctl --cl-selector-reset-versions
+```
+</div>
+
+* this command resets PHP modules to Default:
+
+<div class="notranslate">
+
+```
+cagefsctl --cl-selector-reset-modules
+```
+</div>
+
+::: danger
+These commands can affect PHP version of your clients’ web sites. Use them with caution as improper usage might cause your clients’ web sites down.
+:::
+
+:::tip Note
+It is possible to manually uninstall the integral parts of PHP Selector - **alt-php** packages. However, since CloudLinux OS components heavily rely on them, we do not recommend doing so. Proceed with caution and keep an eye on yum dependencies if you decide to uninstall the packages.
+:::
+
+#### Disabling PHP extension globally
+
+If you want to disable PHP extension globally, you don't need to remove file <span class="notranslate"> /opt/alt/phpXX/etc/php.d.all/$EXTENSION.ini </span> . You should just comment out <span class="notranslate"> "extension=" </span> directives in it.
+
+The extension will be visible in <span class="notranslate">PHP Selector</span> interface, but selecting it in users's interface will take no effect - extension will be disabled in fact.
+
+Reinstalling of <span class="notranslate">`alt-php`</span> packages will not reset settings (will not enable extension again).
+
+### Configuration and using
+
+* [Setting default version and modules](./#setting-default-version-and-modules)
+* [Individual PHP.ini files](./#individual-php-ini-files)
+* [How to add additional php.ini file for a user inside CageFS](./#how-to-add-additional-php-ini-file-for-a-user-inside-cagefs)
+* [Substitute global php.ini for individual customer](./#substitute-global-php-ini-for-individual-customer)
+* [How to substitute global php.ini for individual customer on cPanel server with EasyApache4](./#how-to-substitute-global-php-ini-for-individual-customer-on-cpanel-server-with-easyapache4)
+* [Managing interpreter version](./#managing-interpreter-version)
+* [Including PHP Selector only with some packages - cPanel](./#including-php-selector-only-with-some-packages-cpanel)
+* [PHP extensions](./#php-extensions)
+* [FFmpeg](./#ffmpeg)
+* [Native PHP configuration](./#native-php-configuration)
+* [How to configure alt-php72-zts to use with PHP Selector](./#how-to-configure-alt-php72-zts-to-use-with-php-selector)
+* [Using](./#using)
+* [Custom PHP.ini options](./#custom-php-ini-options)
+* [End user files and directories](./#end-user-files-and-directories)
+* [Compiling your own extensions](./#compiling-your-own-extensions)
+* [Roll your own PHP](./#roll-your-own-php)
+* [Detect user's PHP version](./#detect-user-s-php-version)
+* [PHP Selector without CageFS](./#php-selector-without-cagefs)
+* [Configuring "global” php.ini options for all Alt-PHP versions](./#configuring-global%E2%80%9D-php-ini-options-for-all-alt-php-versions)
+
+#### Setting default version and modules
+
+Administrator can set default interpreter version and extensions for all users. All file operations are actually done by CageFS. CageFS takes settings from <span class="notranslate">  /etc/cl.selector/defaults.cfg. </span> Currently the <span class="notranslate"> /etc/cl.selector/defaults.cfg </span> is created and handled by <span class="notranslate"> CloudLinux OS PHP Selector </span> scripts. It has the following format:
+<div class="notranslate">
+
+```
+[global]
+selector=enabled
+
+[versions]
+php=5.4
+
+[php5.4]
+modules=json,phar
+
+[php5.3]
+modules=json,zip,fileinfo
+```
+</div>
+
+To reset the extensions for end users to the default list of extensions as defined in the `defaults.cfg` file, you can run the following command:
+```
+cagefsctl --list-enabled | grep -v enabled | grep -v '^$' | while read -r line; do \
+    id "$line" &>/dev/null && selectorctl --reset-user-extensions --version=8.4 --user="$line" || echo "User $line does not exist, skipping"; \
+done
+```
+
+This command will reset the extensions for all users on PHP version 8.4 to the default list. You can specify a different PHP version by modifying the `--version` argument in the command above.
+ 
+To reset the extensions for a specific user, you can use the following command:
+```
+selectorctl --reset-user-extensions --version=8.4 --user=user1
+```
+
+#### Individual PHP.ini files
+
+For each customer, inside CageFS, file <span class="notranslate"> alt_php.ini is located in /etc/cl.php.d/alt-phpXX (XX </span> - version of PHP, like 52 or 53). The file contains PHP extension settings and extension directives selected by customer. This file exists for each customer, for each PHP version.
+
+Note, that this is <span class="notranslate"> 'local' to CageFS, </span> and different users will have different files. The file is not visible in <span class="notranslate"> /etc/cl.php.d </span> outside CageFS. If you would like to view that file, use:
+<div class="notranslate">
+
+```
+# cagefsctl -e USERNAME 
+```
+</div>
+
+to enter into CageFS for that user. Then type: <span class="notranslate"> `exit` </span> ; to exit from CageFS
+
+This file has to be updated using <span class="notranslate"> `cagefsctl --rebuild-alt-php-ini` </span> after updating <span class="notranslate"> alt-php </span> RPMs
+
+Admin can change individual settings for PHP extensions by changing that extension's ini file, like editing <span class="notranslate"> /opt/alt/php54/etc/php.d.all/eaccelerator.ini </span> and then running:
+<div class="notranslate">
+
+```
+cagefsctl --rebuild-alt-php-ini
+```
+</div>
+to propagate the change.
+
+#### How to add additional php.ini file for a user inside CageFS
+
+If you want to create additional `php.ini` file for a user inside CageFS in order to change some specific PHP options for that user, you can execute the following:
+
+<div class="notranslate">
+
+```
+su -s /bin/bash - USER
+cd /etc/cl.php.d/alt-php72/
+echo "upload_tmp_dir=/tmp" >> custom.ini
+```
+</div>
+
+The commands above create `custom.ini` file that will be used for `alt-php72`. By default this approach is valid only for alt-php version selected via <span class="notranslate">PHP Selector</span>. When <span class="notranslate">`/etc/cl.selector/symlinks.rules`</span> file contains <span class="notranslate">`php.d.location = selector`</span> line, then the approach is valid for all alt-php versions regardless whether it is selected in PHP Selector or not.
+
+You can find more details [here](./#bundled-php-extensions).
+
+But the recommended way is to modify PHP options via PHP Selector web or CLI interfaces, as described [here](./#custom-php-ini-options).
+
+
+
+#### Substitute global php.ini for individual customer
+
+
+Sometimes you might want to have a single customer with a different php.ini, than the rest of your customers.
+
+To do that, you will use <span class="notranslate"> [custom.etc directory functionality](./#custom-etc-files-per-customer) </span>
+
+1. Move default php.ini into <span class="notranslate"> _/etc_ </span> directory and create a symlink to it:
+
+<div class="notranslate">
+
+```
+mv /usr/local/lib/php.ini /etc/php.ini
+ln -fs /etc/php.ini /usr/local/lib/php.ini
+```
+</div>
+
+2. Change path to php.ini in <span class="notranslate"> _/etc/cl.selector/native.conf_ </span> file to:
+
+<div class="notranslate">
+
+```
+php.ini=/etc/php.ini
+```
+</div>
+
+3. For each user that needs custom file, create directory <span class="notranslate"> _/etc/cagefs/custom.etc/USER_NAME/php.ini_ </span> .
+
+For example if you want to create custom for <span class="notranslate"> USER1 </span> and <span class="notranslate"> USER2 </span> you would create files:  
+<span class="notranslate"> _/etc/cagefs/custom.etc/USER1/php.ini_ </span>  
+<span class="notranslate"> _/etc/cagefs/custom.etc/USER2/php.ini_ </span>
+
+Create such files for each user that should have custom file.
+
+4. Execute:
+
+<div class="notranslate">
+
+```
+cagefsctl --force-update 
+```
+</div>
+
+::: tip Notes
+
+1. Make sure that `php.ini` load path is set to <span class="notranslate">`/etc/php.ini`</span>
+
+2. Users will be able to override settings of those php.ini files (global or custom) via <span class="notranslate">PHP Selector</span>. If you want to prevent that, you should disable <span class="notranslate">PHP Selector</span> feature.
+
+3. Even if <span class="notranslate">PHP Selector</span> is disabled, user can override PHP settings by using <span class="notranslate">`ini_set() php`</span> function in PHP script, or by <span class="notranslate">`php -c`</span> command line option.
+
+4. If you modify anything in <span class="notranslate">`/etc/cagefs/custom.etc`</span> directory, you should execute:
+
+<div class="notranslate">
+
+```
+cagefsctl --update-etc
+```
+</div>
+
+in order to apply changes to CageFS for all users.
+
+OR 
+
+<div class="notranslate">
+
+```
+cagefsctl --update-etc user1 user2
+```
+</div>
+
+to apply changes to CageFS for specific users.
+
+:::
+
+#### How to substitute global php.ini for individual customer on cPanel server with EasyApache4
+
+:::tip Note
+It is enough to put `php.ini` in the directory where PHP script is located in order to run the PHP script with a custom `php.ini` when using SuPHP. Also, you can use <span class="notranslate">cPanel MultiPHP Manager</span> to create user’s custom `php.ini` file, and this approach should work for CGI, FCGI, and LSAPI. Recommended ways to manage `php.ini` settings per user are to use <span class="notranslate">cPanel MultiPHP</span> or <span class="notranslate">CloudLinux OS PHP Selector</span> interfaces.
+:::
+
+1. For each user that needs custom file, create directory <span class="notranslate">`/etc/cagefs/custom.etc/USER_NAME/php.ini`</span>.
+    
+    For example, if you want to create a custom file for USER1 and USER2 you would create files:
+
+    <div class="notranslate">
+
+    ```
+    /etc/cagefs/custom.etc/USER1/php.ini
+    /etc/cagefs/custom.etc/USER2/php.ini
+    ```
+    </div>
+
+    Create such files for each user that should have a custom file.
+
+2. Execute the following command:
+
+    <div class="notranslate">
+
+    ```
+    $ cagefsctl --force-update
+    ```
+    </div>
+
+3. Configure `php.ini` load path for user’s domains.
+   
+* When using **suphp** handler, you should use `SuPHP_ConfigPath` directive in virtual host configuration for these domains, or use this directive in `.htaccess` files: `suPHP_ConfigPath/etc`.
+
+* When using **mod_lsapi**, you should use `lsapi_phprc` directive in virtual host configuration: `lsapi_phprc/etc/`.
+    You can find the detailed description of `mod_lsapi` directives [here](./#configuration-references).
+
+* When using **FCGI** or **CGI**, you should implement custom PHP wrapper and redefine the path to `php.ini` via `-c` command line option, like below:
+    <div class="notranslate">
+
+    ```
+    #!/bin/bash
+    [ -f /etc/php.ini ] && exec /usr/bin/php -c /etc/php.ini
+    exec /usr/bin/php
+    ```
+    </div>
+
+**Notes:**
+
+1. You should restart Apache web server after modifying virtual host configuration for the domains.
+2. Custom `php.ini` may break switching PHP version via <span class="notranslate">CloudLinux OS PHP Selector</span> or <span class="notranslate">cPanel MultiPHP Manager</span> for the appropriate users or domains.
+3. When using cPanel ea-php for the domains, additional `php.ini` files may not be loaded, so you should load all needed PHP extensions in custom `/etc/php.ini` file:
+![](/images/cloudlinuxos/cloudlinux_os_components/custom_file_cPanel1.webp)
+4. When using CloudLinux OS alt-php, additional `php.ini` files will be loaded:
+![](/images/cloudlinuxos/cloudlinux_os_components/custom_file_cPanel2.webp)
+5. If you have modified anything in `/etc/cagefs/custom.etc` directory, you should execute one of the following:
+
+    * to apply changes to CageFS for all users, run:
+  
+    <div class="notranslate">
+
+    ```
+    cagefsctl --update-etc
+    ```
+    </div>
+
+    * to apply changes to CageFS for specific users, run:
+  
+    <div class="notranslate">
+
+    ```
+    cagefsctl --update-etc user1 user2
+    ```
+    </div>
+
+
+#### Managing interpreter version
+
+
+Managing interpreter versions is done by means of manipulating a set of symbolic links that point to different versions of interpreter binaries. For example, if default PHP binary is <span class="notranslate"> `/usr/local/bin/php` </span> :
+
+* First we move the default binary inside CageFS to <span class="notranslate"> `/usr/share/cagefs-skeleton/usr/selector` </span> , and make <span class="notranslate"> /usr/local/bin/php </span> a symlink pointing to <span class="notranslate"> /etc/cl.selector/php </span> . This operation is done as part of CageFS deployment.
+* Next suppose we have additional PHP version, say 7.2.5. The information about all additional interpreter binaries and paths for them is kept in <span class="notranslate"> /etc/cl.selector/selector.conf </span> . This config file is updated by RPM package manager each time alternative PHP package is added, removed or updated
+* <span class="notranslate"> `/usr/bin/selectorctl --list --interpreter=php` </span> will get us list of all available PHP interpreter versions out of <span class="notranslate"> /etc/cl.selector/selector.conf file </span> .
+Next we want to know which PHP version is active for a given user (to supply a selected option in options list). We type:
+* <span class="notranslate"> `/usr/bin/selectorctl --user USERNAME --interpreter=php --user-current` </span> will retrieve PHP version set for a particular user. The script gets the path from <span class="notranslate"> `/var/cagefs/LAST_TWO_DIGITS_OF_UID/USERNAME/etc/cl.selector/php` </span> symlink, compares it with contents of <span class="notranslate"> /etc/cl.selector/selector.conf </span> file and if path is valid, prints out the current interpreter version.
+* <span class="notranslate"> `/usr/bin/selectorctl --user USERNAME --interpreter=php --set-user-current=7.2` </span> sets the current PHP version for particular user by creating symlink in <span class="notranslate"> `/var/cagefs/LAST_TWO_DIGITS_OF_UID/USERNAME/etc/cl.selector` </span> directory. All old symlinks are removed, and new symlinks are set.
+
+
+#### Including PHP Selector only with some packages (cPanel)
+
+
+<span class="notranslate"> cPanel </span> has a ' <span class="notranslate"> Feature Manager </span> ' in WHM that allows you to disable <span class="notranslate"> PHP Selector </span> for some of the packages that you offer.
+
+In reality it only disables the icon in <span class="notranslate"> cPanel </span> interface. Yet, in most cases it should be enough in shared hosting settings.
+
+You can find more info on ' <span class="notranslate"> Feature Manager </span> ' here: [http://docs.cpanel.net/twiki/bin/view/11_30/WHMDocs/FeatureManager](http://docs.cpanel.net/twiki/bin/view/11_30/WHMDocs/FeatureManager)
+
+
+Once <span class="notranslate"> PHP Selector </span> is enabled, you can find it in the <span class="notranslate"> Feature Manager </span> . Disabling it in <span class="notranslate"> Feature Manager </span> , will remove the icon for users that are using that particular <span class="notranslate"> 'Feature List' </span>
+
+<img src="/images/cloudlinuxos/cloudlinux_os_components/screen1-phpselector-featuremanager.webp" width="478" height="575" />
+
+
+#### PHP extensions
+
+**Configuring Alt-PHP modules loading**
+
+
+<span class="notranslate"> CloudLinux OS PHP Selector </span> and Alt-PHP can be used in conjunction with <span class="notranslate"> Plesk PHP Selector </span> and <span class="notranslate"> cPanel MultiPHP </span> . To be compatible, <span class="notranslate"> CloudLinux OS PHP Selector </span> works as follows: modules that are selected in <span class="notranslate"> CloudLinux OS PHP Selector </span> are loaded for Alt-PHP version selected in <span class="notranslate"> CloudLinux OS PHP Selector </span> only. For the rest Alt-PHP versions default module set is loaded <span class="notranslate"> ( _/opt/alt/phpXX/etc/php.d/default.ini_ ) </span> . Described above is default behavior.
+
+::: tip Note
+If system default PHP version selected in <span class="notranslate"> cPanel MultiPHP Manager is not ea-php, then default module set is loaded for all Alt-PHP versions by default (/opt/alt/phpXX/etc/php.d/default.ini). </span>
+
+When <span class="notranslate"> "php.d.location = selector" option is in effect, modules selected via PHP Selector </span> will be loaded for all alt-php versions.
+:::
+
+
+This behavior is implemented in CageFS-6.1-10 and later.
+
+In <span class="notranslate"> LVE Manager </span> 1.0-9.40+ this behavior can be modified so that modules selected in <span class="notranslate"> CloudLinux OS PHP Selector </span> would be loaded for all Alt-PHP versions (with CageFS enabled), which can be quite useful if you use  ‘ <span class="notranslate"> per directory </span> ’ or ‘ <span class="notranslate"> per domain </span> ’ Alt-PHP configuration and want to select modules using <span class="notranslate"> CloudLinux OS PHP Selector </span> .
+
+To modify it, create a file <span class="notranslate"> _/etc/cl.selector/symlinks.rules_ </span> (read-only for regular users) with the following content: <span class="notranslate"> _php.d.location = selector_ </span>
+
+And run the command to apply changes:
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --apply-symlinks-rules
+```
+</div>
+To revert to the default behavior:
+
+* Delete <span class="notranslate"> _/etc/cl.selector/symlinks.rules_ </span> file.
+* Alternatively remove <span class="notranslate"> _php.d.location_ </span> option from the file.
+* Alternatively set <span class="notranslate"> _default_ </span> value for <span class="notranslate"> _php.d.location_ </span> option.
+
+And run the command to apply changes:
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --apply-symlinks-rules
+```
+</div>
+
+#### FFmpeg
+
+:::tip Note
+The PHP-FFmpeg project has not been renewed for the last few years and is not compatible with the RHEL 8 based systems. Since code for alt-PHP-FFmpeg is outdated and FFmpeg has a lot of third-party dependencies, this module is not available for CloudLinux OS 8.
+:::
+
+Due to possible patent issues CloudLinux OS does not provide <span class="notranslate"> FFmpeg </span> libraries ( [https://ffmpeg.org/legal.html](https://ffmpeg.org/legal.html) ). We highly recommend researching if you can legally install <span class="notranslate"> FFmpeg </span> extension on your server. This might differ based on where you and your servers are located. More information can be found on the link: [https://ffmpeg.org/legal.html](https://ffmpeg.org/legal.html)
+
+For your convenience we provide <span class="notranslate"> FFMPEG PHP </span> binding. For them to work, you need to install <span class="notranslate"> FFmpeg </span> package from the “<span class="notranslate">Nux Dextop</span>” repository following the [instructions](http://li.nux.ro/repos.html).
+
+Once <span class="notranslate"> FFmpeg </span> is installed you can install PHP bindings, by running:
+<div class="notranslate">
+
+```
+yum install alt-php*ffmpeg 
+```
+</div>
+
+Enable <span class="notranslate"> PHP-FFmpeg </span> extension via <span class="notranslate"> PHP Selector </span> :
+<div class="notranslate">
+
+```
+selectorctl --enable-extensions=ffmpeg --user USERNAME --version X.Y
+```
+</div>
+
+#### Native PHP configuration
+
+<span class="notranslate">PHP Selector</span> requires access to the <span class="notranslate">native PHP</span> version for proper work. It is specified in the file <span class="notranslate">`/etc/cl.selector/native.conf`</span> of the following content (example):
+<div class="notranslate">
+
+```
+php=/usr/bin/php-cgi
+php-cli=/usr/bin/php
+php.ini=/etc/php.ini
+lsphp=/usr/local/bin/lsphp
+php-fpm=/usr/local/sbin/php-fpm
+```
+</div>
+
+
+Then execute the following command to apply changes.
+<div class="notranslate">
+
+```
+cagefsctl --setup-cl-selector
+```
+</div>
+
+The file is created when installing CageFS on the servers with <span class="notranslate"> cPanel, Plesk, DA, Interworx and ISP Manager </span> , if it is missing. On all other servers the file is not being created at all.
+
+That is why, if the file is not created automatically, then it must be created manually and correct paths must be written to its directives.
+
+Access permission 644 must be set:
+<div class="notranslate">
+
+```
+chmod 0644 /etc/cl.selector/native.conf
+```
+</div>
+
+
+#### How to configure alt-php72-zts to use with PHP Selector
+
+**Requirements**
+
+To use `alt-php72-zts` with PHP Selector you need the following:
+
+* `cagefs-6.1.8-1` or later
+* `alt-php72-zts-7.2.21-4` or later
+
+**Using zts PHP**
+
+1. Install `alt-php72-zts` with the following command:
+  
+  <div class="notranslate">
+
+  ```
+  yum install alt-php72-zts
+  ```
+  </div>
+
+2. Make sure that <span class="notranslate">`/etc/cl.selector/selector.conf`</span> file contains correct paths to the PHP `zts` binaries.
+
+  You should remove the old lines:
+
+  <div class="notranslate">
+
+  ```
+  php 7.2 7.2.20 /opt/alt/php72/usr/bin/php-cgi
+  php-cli 7.2 7.2.20 /opt/alt/php72/usr/bin/php
+  ```
+  </div>
+
+  And replace them with the lines with the new paths:
+
+  <div class="notranslate">
+
+  ```
+  php 7.2 7.2.20 /opt/alt/php72/usr/bin/zts-php-cgi
+  php-cli 7.2 7.2.20 /opt/alt/php72/usr/bin/zts-php
+  ```
+  </div>
+
+3. Make sure that <span class="notranslate">`/opt/alt/php72/etc/php.d.all`</span> path refers to the directory containing `ini` files for `zts` PHP extensions:
+
+  <div class="notranslate">
+
+  ```
+  cd /opt/alt/php72/etc
+  ln -fsn php.d.all.zts php.d.all
+  ```
+  </div>
+
+4. Execute the following command:
+
+  <div class="notranslate">
+
+  ```
+  cagefsctl --setup-cl-selector
+  ```
+  </div>
+
+
+**Using non-zts PHP**
+
+1. Make sure that <span class="notranslate">`/etc/cl.selector/selector.conf`</span> file contains correct paths to the `non-zts` PHP binaries.
+   
+  You should remove the old lines:
+  
+  <div class="notranslate">
+
+  ```
+  php 7.2 7.2.20 /opt/alt/php72/usr/bin/zts-php-cgi
+  php-cli 7.2 7.2.20 /opt/alt/php72/usr/bin/zts-php
+  ```
+  </div>
+
+And replace them with the lines with the new paths:
+
+  <div class="notranslate">
+
+  ```
+  php 7.2 7.2.20 /opt/alt/php72/usr/bin/php-cgi
+  php-cli 7.2 7.2.20 /opt/alt/php72/usr/bin/php
+  ```
+  </div>
+  
+2. Make sure that <span class="notranslate">`/opt/alt/php72/etc/php.d.all`</span> path refers to the directory containing `ini` files for `non-zts` PHP extensions:
+
+  <div class="notranslate">
+
+  ```
+  cd /opt/alt/php72/etc
+  ln -fsn php.d.all.def php.d.all
+  ```
+  </div>
+
+3. Execute the following command:
+
+  <div class="notranslate">
+
+  ```
+  cagefsctl --setup-cl-selector
+  ```
+  </div>
+
+#### Using
+
+Once <span class="notranslate">PHP Selector</span> is installed, you will see the <span class="notranslate">[**Selector**](/cloudlinuxos/lve_manager/#selector-tab)</span> tab in the <span class="notranslate">**LVE Manager**</span>.
+
+Customers can use [PHP Selector client plugin](/cloudlinuxos/lve_manager/#php-selector-client-plugin) to change their PHP Selctor related settings.
+
+#### Custom PHP.ini options
+
+<span class="notranslate">PHP Selector</span> allows customer to edit php.ini settings. Admin has a full control over which settings can be modified.
+
+To allow settings to be modifiable, it has to be whitelisted in <span class="notranslate">`/etc/cl.selector/php.conf`</span>.
+
+Here are some of the examples of allowed directives:
+<div class="notranslate">
+
+```
+Directive = safe_mode
+Type      = bool
+Remark    = <5.4.0
+Comment   = Enables PHP safe mode. This mode puts a number of restrictions on scripts (say, access to file system) mainly for security reasons.
+```
+</div>
+
+<div class="notranslate">
+
+```
+Directive = safe_mode_include_dir
+Type      = value
+Remark    = <5.4.0
+Comment   = If PHP is in the safe mode and a script tries to access some files, files from this directory will bypass security (UID/GID) checks. The directory must also be in include_path. For example: /dir/inc
+```
+</div>
+
+| | |
+|-|-|
+|Directive | php.ini setting|
+|Type | bool, value (any text), list|
+|Range | list of values for list Type|
+|Comment | explanation of the setting to display in UI|
+
+Default values, that are shown in <span class="notranslate"> PHP Selector </span> web interface, are taken from <span class="notranslate"> '/opt/alt/phpXX/usr/bin/php -i' </span> runtime values, if
+directive is not there, it will use the output of phpinfo() function. So, if you wish to change default value of any option for
+"alternative" php version, please modify <span class="notranslate"> /opt/alt/phpXX/etc/php.ini </span> files (where XX = 55, 54, 53, etc according to php version).
+
+Admin can modify the settings using <span class="notranslate"> [selectorctl](/cloudlinuxos/command-line_tools/#selectorctl) </span> command.
+
+Users can use web interface to modify php.ini settings:
+
+![](/images/cloudlinuxos/cloudlinux_os_components/php_selector_options.webp)
+
+
+#### End user files and directories
+
+The following files and directories are created inside CageFS for each customer:
+
+<span class="notranslate"> /etc/cl.selector </span> - PHP binaries symbolic links.
+
+<span class="notranslate"> /usr/selector/php - Native PHP </span> binaries.
+
+<span class="notranslate"> /etc/cl.php.d/alt-php* </span> - Links to enabled modules.
+
+<span class="notranslate"> /home/user/.cl.selector/alt_phpXX.cfg </span> - Config file for custom PHP options.
+
+like:
+
+<span class="notranslate"> /etc/cl.php.d/alt-php54/fileinfo.ini - /opt/alt/php54/etc/php.d.all/fileinfo.ini </span>
+
+
+#### Compiling your own extensions
+
+Sometimes you might want to compile your own PHP extension for your users to use. In most cases, it is better to contact our support by sending us a support [ticket](https://cloudlinux.zendesk.com/hc/requests/new) . We will try to provide such extension for you via regular updates within 5-7 days.
+
+If you have decided that you want to build it on your own, you would need to build it for each and every supported version of PHP that you have installed. The module installation process is a bit different from standard - you would need to use the version of phpize and php-config binaries that come with particular <span class="notranslate"> Alt-PHP </span> version.
+
+The full process for PHP 5.X and 7.X looks as follows:
+
+1. Download and unpack extension, cd into it's directory.
+
+2. Execute our version of phpize if necessary:
+
+<div class="notranslate">
+
+```
+/opt/alt/phpXX/usr/bin/phpize
+```
+</div>
+
+3. Execute configure with our binary:
+
+<div class="notranslate">
+
+```
+./configure --with-php-config=/opt/alt/phpXX/usr/bin/php-config
+```
+</div>
+
+4. Make the <span class="notranslate"> .so </span> file:
+
+<div class="notranslate">
+
+```
+make
+```
+</div>
+
+5. Copy it to the modules directory (on 32-bit server, use <span class="notranslate"> usr/lib/php/modules </span> ).
+
+<div class="notranslate">
+
+```
+cp -rp modules/*.so /opt/alt/phpXX/usr/lib64/php/modules/
+```
+</div>
+
+6. Add ini file for module to <span class="notranslate"> `/opt/alt/phpXX/etc/php.d.all` . </span>
+
+7. Register new <span class="notranslate"> Alt-PHP </span> version with:
+
+<div class="notranslate">
+
+```
+cagefsctl --setup-cl-selector
+```
+</div>
+
+#### Roll your own PHP
+
+To add your own PHP version in <span class="notranslate"> PHP Selector </span> :
+
+* Create directory in (like:  /opt/alt/php51), and mimic directory structure inside to be similar to the one of PHP versions bundled by <span class="notranslate"> CloudLinux OS </span>.
+* Put all the ini files for all the modules into <span class="notranslate"> /opt/alt/php51/etc/php.d.all </span>
+* Create a symbolic link <span class="notranslate"> /opt/alt/php51/etc/php.d -> /etc/cl.php.d/alt-php51 </span>
+
+Place all such files into <span class="notranslate"> /opt/alt/php51/usr/lib/php/modules </span>
+
+Add an absolute path to PHP binaries into <span class="notranslate"> /etc/cl.selector/selector.conf </span> using the following format:
+
+<div class="notranslate">
+
+```
+php     5.1 5.1.2 /opt/alt/php51/usr/bin/php-cgi 
+php-cli 5.1 5.1.2 /opt/alt/php51/usr/bin/php 
+php-fpm 5.1 5.1.2 /opt/alt/php51/usr/sbin/php-fpm
+   ^     ^    ^                ^----- absolute path
+   |     |    |---------------------- real version
+   |     | -------------------------- version to display
+   |--------------------------------- binary to 'substitute'
+```
+</div>
+
+Execute:
+<div class="notranslate">
+
+```
+cagefsctl --setup-cl-selector
+```
+</div>
+
+The new PHP version must be available now for selection in <span class="notranslate">PHP Selector</span>.
+
+#### Detect user's PHP version
+
+
+:::tip Note
+<span class="notranslate">LVE Manager</span> 0.5-63 or higher
+:::
+
+<span class="notranslate"> PHP Selector </span> provides an easy way to figure out which versions are available and selected for end user from the command line. You can get this information by running:
+
+<div class="notranslate">
+
+```
+selectorctl --interpreter=php --user-summary --user=USERNAME
+```
+</div>
+
+<div class="notranslate">
+
+```
+The output:
+5.2 e - -
+5.3 e - s
+5.4 e - -
+5.5 e - -
+native e d -
+```
+</div>
+
+The first column defines the PHP version. <span class="notranslate"> _Native_ </span> means native PHP version, like the one installed by cPanel with EasyApache.
+
+The second column will contain either <span class="notranslate"> **e** </span> or **-.** If <span class="notranslate"> **e**  </span> is present, it means that given version is enabled, and can be selected by the end user.
+
+The third column can have values <span class="notranslate"> **d**   </span> or **-.** If <span class="notranslate"> **d** </span> is present, that version is considered a 'default' version. Only one PHP version will have **d** indicator.
+
+The fourth column can have values <span class="notranslate"> **s**   </span> or **-.** If <span class="notranslate"> **s** is present, that is the selected version, currently being used by the end user. Only one PHP version will have  <span class="notranslate"> **s** </span>  indicator. </span>
+
+In case a user is not inside CageFS, and as such doesn't use <span class="notranslate"> PHP Selector </span> , you will see the following error message:
+
+<div class="notranslate">
+
+```
+ERROR:User USERNAME not in CageFS
+```
+</div>
+
+#### PHP Selector without CageFS
+
+
+**[LVE Manager 2.0-11.1 or higher]**
+
+<span class="notranslate"> PHP Selector </span> can now be used with CageFS turned off (in case when there is only one user account on the server).
+
+To install run:
+<div class="notranslate">
+
+```
+yum groupinstall alt-php
+yum install cagefs lvemanager
+```
+</div>
+
+(no need to initialize or turn on CageFS)
+
+<div class="notranslate">
+
+```
+selectorctl --setup-without-cagefs USER
+```
+</div>
+
+( <span class="notranslate"> USER </span> - the name of a user who is using selector. If not specified, the first available cPanel account username will be used).
+
+When executing <span class="notranslate">`--setup-without-cagefs`</span>, the following actions are performed:
+
+* Creating symlinks to the user modules and options for each <span class="notranslate"> Alt-PHP </span> version:  
+<span class="notranslate"> _/opt/alt/php55/link/conf/alt_php.ini -> /home/USER/.cl.selector/alt_php55.ini_ </span>
+
+* In user home directory creating:  
+<span class="notranslate"> _.cl.selector/_ </span>
+
+“Backup” settings files (selected version, modules, options):  
+<span class="notranslate"> _.cl.selector/defaults.cfg_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php44.cfg_ </span>
+
+Symlinks to the selected version:  
+<span class="notranslate"> _.cl.selector/lsphp -> /opt/alt/php44/usr/bin/lsphp_ </span>  
+<span class="notranslate"> _.cl.selector/php.ini -> /opt/alt/php44/etc/php.ini_ </span>  
+<span class="notranslate"> _.cl.selector/php-cli -> /opt/alt/php44/usr/bin/php_ </span>  
+<span class="notranslate"> _.cl.selector/php -> /opt/alt/php44/usr/bin/php-cgi_ </span>  
+
+Additional symlinks for environment variable <span class="notranslate"> $PATH </span> (search path) in the file <span class="notranslate"> ~/.bashrc </span> :  
+<span class="notranslate"> _.cl.selector/selector.path/_ </span>  
+<span class="notranslate"> _.cl.selector/selector.path/php-cgi -> ../php_ </span>  
+<span class="notranslate"> _.cl.selector/selector.path/php -> ../php-cli_ </span>  
+
+Generated ini files with selected modules and options for each version:
+<span class="notranslate"> _.cl.selector/alt_php44.ini_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php51.ini_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php52.ini_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php53.ini_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php54.ini_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php55.ini_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php56.ini_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php70.ini_ </span>  
+<span class="notranslate"> _.cl.selector/alt_php71.ini_ </span>  
+
+Symlinks above are being created according to the settings in <span class="notranslate"> ~/.cl.selector/defaults.cfg </span> and <span class="notranslate"> ~/.cl.selector/alt_php44.cfg </span> files (44 - corresponding PHP version), which are storing <span class="notranslate"> PHP Selector </span> settings for the user. These files are usually taken from user home directory backup or when migrating account from another server. Thus, when migrating account from server to server, <span class="notranslate"> PHP Selector </span> settings are saved.
+
+If no <span class="notranslate"> PHP Selector </span> settings backup files are found when running <span class="notranslate">`selectorctl --setup-without-cagefs`</span>, then default settings from <span class="notranslate">`/etc/cl.selector/defaults.cfg`</span> global file are applied (as in selector normal mode). If the file is absent, then native PHP version will be selected for the user.
+
+* The following line: <span class="notranslate"> _PATH=$HOME/.cl.selector/selector.path:$HOME/.cl.selector:$PATH_ </span>
+
+is being added to the user file <span class="notranslate">`~/.bashrc` </span>
+
+<span class="notranslate"> Apache </span> PHP handlers settings are not changed.
+
+* Also <span class="notranslate">`selectorctl --setup-without-cagefs`</span> command does the following: 
+
+  * Turns off link traversal protection (linksafe);
+  * Turns off cagefs service.
+
+To get back to the selector normal mode (“with CageFS”) run:
+<div class="notranslate">
+
+```
+selectorctl --revert-to-cagefs
+```
+</div>
+
+(CageFS should be initialized by using <span class="notranslate">`cagefsctl --init`</span> command before running the command above)
+
+This command removes symlinks:  
+<span class="notranslate">`/opt/alt/php55/link/conf/alt_php.ini` -> `/home/USER/.cl.selector/alt_php55.ini`</span>
+turns on link traversal protection (linksafe) and cagefs service.
+
+:::tip Note
+See also PHP Selector [CLI](/cloudlinuxos/command-line_tools/#php-selector)
+:::
+
+#### Configuring "global” php.ini options for all Alt-PHP versions
+
+:::tip Note
+CageFS 6.0-33 or higher, <span class="notranslate">LVE Manager</span> 2.0-11.2 or higher
+:::
+
+There is <span class="notranslate">`/etc/cl.selector/global_php.ini`</span> file, where you can specify values of PHP options that should be applied for all <span class="notranslate"> Alt-PHP </span> versions that are installed on a server. These settings will also be automatically applied to the new <span class="notranslate"> Alt-PHP </span> versions that will be installed later.
+
+Example:  
+<span class="notranslate"> _# cat /etc/cl.selector/global_php.ini_ </span>  
+<span class="notranslate"> _[Global PHP Settings]_ </span>  
+<span class="notranslate"> _date.timezone = Europe/Warsaw_ </span>  
+<span class="notranslate"> _error_log = error_log_ </span>  
+<span class="notranslate"> _memory_limit = 192M_ </span>  
+Sections are ignored. Only name of an option and a value have meaning.
+
+When an option is absent in <span class="notranslate"> _/etc/cl.selector/global_php.ini_ </span> file, than it is not changed (applied) to php.ini for <span class="notranslate"> Alt-PHP </span> versions.
+
+<span class="notranslate"> date.timezone </span> and <span class="notranslate"> error_log </span> options are handled differently than the others. When these options are not in <span class="notranslate"> _/etc/cl.selector/global_php.ini_ </span> file, than values for the options will be taken from <span class="notranslate"> "native" </span> php.ini file. And when the option is in php.ini for some <span class="notranslate"> Alt-PHP </span> version already (and its value is not empty), than value from <span class="notranslate"> _/etc/cl.selector/global_php.ini_ </span> will be NOT applied.
+
+:::tip Note
+CageFS version 6.1.5-1 or later
+:::
+
+The behavior above is changed for cPanel servers with EasyApache 4. The <span class="notranslate">`/usr/local/lib/php.ini`</span> file is removed for new installations of cPanel v80 and later.
+
+* When <span class="notranslate">`/usr/local/lib/php.ini`</span> file exists, <span class="notranslate">`error_log`</span> and <span class="notranslate">`date.timezone`</span> options will be taken from that <span class="notranslate">`php.ini`</span> file.
+* When <span class="notranslate">`/usr/local/lib/php.ini`</span> file does not exist, <span class="notranslate">`error_log`</span> and <span class="notranslate">`date.timezone`</span> options will be taken from the <span class="notranslate">`php.ini`</span> file for system default PHP version selected in MultiPHP Manager.
+  
+This functionality works when the system default PHP version is <span class="notranslate">`ea-php`</span> only. When the system default PHP version is <span class="notranslate">`alt-php`, `error_log`</span> and <span class="notranslate">`date.timezone`</span> directives will be NOT taken from that <span class="notranslate">`php.ini`</span> file.
+
+
+To confirm changes (not affecting <span class="notranslate"> "date.timezone" </span> and <span class="notranslate"> "error_log" </span> options) please run:
+
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --setup-cl-selector
+```
+</div>
+
+To confirm changes (including <span class="notranslate">`date.timezone`</span> and <span class="notranslate">`error_log`</span> options) please run:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --apply-global-php-ini
+```
+</div>
+or
+
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --apply-global-php-ini
+```
+</div>
+(two commands above work the same way).
+
+If you don't want to change <span class="notranslate">`error_log`</span>, but want to change <span class="notranslate">`date.timezone`</span>, you can execute:
+
+<div class="notranslate">
+
+```
+selectorctl --apply-global-php-ini date.timezone
+```
+</div>
+
+Similarly, command <span class="notranslate"> `selectorctl --apply-global-php-ini error_log` </span> applies <span class="notranslate"> error_log </span> and all other options specified in <span class="notranslate"> _/etc/cl.selector/global_php.ini_ </span> file, except <span class="notranslate"> date.timezone </span> .
+
+So, you can specify 0, 1 or 2 parameters from the list: <span class="notranslate"> error_log, date.timezone </span> .
+
+Using <span class="notranslate"> `--apply-global-php-ini` </span> without arguments applies all global PHP options including two above.
+
+Example:
+
+<div class="notranslate">
+
+```
+selectorctl --apply-global-php-ini error_log
+selectorctl --apply-global-php-ini date.timezone
+selectorctl --apply-global-php-ini date.timezone error_log
+```
+</div>
+
+The latter command has the same effect as <span class="notranslate">`/usr/bin/selectorctl --apply-global-php-ini`</span>.
+
+:::tip Note
+See also PHP Selector [CLI](/cloudlinuxos/command-line_tools/#php-selector)
+:::
+
+
+### Integration with control panels
+
+* [PHP Selector integration with cPanel/WHM](https://cloudlinux.zendesk.com/hc/en-us/articles/360014084800-PHP-Selector-Integration-with-cPanel)
+* [PHP Selector integration with Plesk](https://cloudlinux.zendesk.com/hc/en-us/articles/115004582105-PHP-Selector-Integration-with-Plesk-Panel)
+* [PHP Selector integration with DirectAdmin](https://cloudlinux.zendesk.com/hc/en-us/articles/360010322460-PHP-Selector-Integration-with-DirectAdmin)
+
+This is the list of commands that we use to integrate <span class="notranslate">PHP Selector</span> with control panels.
+
+**PHP summary:**
+
+Command:
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --summary
+```
+</div>
+Result:
+<div class="notranslate">
+
+```
+4.4 e -
+5.1 e -
+5.2 e -
+5.3 e -
+5.4 e -
+5.5 e -
+5.6 e -
+7.0 e -
+7.1 e -
+native e d
+```
+</div>
+When native PHP version needs to be displayed:
+
+Command:
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --summary --show-native-version
+```
+</div>
+
+Result:
+<div class="notranslate">
+
+```
+4.4 e -
+5.1 e -
+5.2 e -
+5.3 e -
+5.4 e -
+5.5 e -
+5.6 e -
+7.0 e -
+7.1 e -
+native(5.6) e d
+```
+</div>
+
+The first column: PHP version  
+The second column: enabled or not ( <span class="notranslate"> e </span> - enabled)  
+The third column: if selected as default  ( <span class="notranslate"> d </span> - default)
+
+**Set default version:**
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --set-current=_VERSION_
+```
+</div>
+
+**Disable version:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --disable-alternative=_VERSION_
+```
+</div>
+
+**Enable version:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --enable-alternative=_VERSION_
+```
+</div>
+
+**List extensions for a version:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --list-extensions --version=5.6
+```
+</div>
+
+Result:
+<div class="notranslate">
+
+```
+- apc
+- bcmath
+- big_int
+- bitset
+- bloomy
+~ bz2
+- bz2_filter
+~ calendar
+- coin_acceptor
+- crack
+~ ctype
++ curl
+```
+</div>
+
++: enabled  
+~: included in php binary (cannot be disabled) or enabled in php global config file <span class="notranslate">_/opt/alt/phpXX/etc/php.ini_</span>  
+-: disabled
+
+**Select default extensions (enable comma-separated list of extensions globally for a version):**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --version=5.6 --enable-extensions=pdo,json,mysql
+```
+</div>
+
+**Deselect default extensions (disable comma-separated list of extensions globally for a version):**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --version=5.6 --disable-extensions=pdo,json,mysql
+```
+</div>
+
+**Replace extensions with comma-separated list of extensions for a version globally:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --version=5.6 --replace-extensions=pdo,json,mysql
+```
+</div>
+
+**Select PHP version for a user:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --set-user-current=_VERSION_ --user=_USER_
+```
+</div>
+
+**List enabled extensions for a user:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --list-user-extensions --user=_USER_ --version=_VERSION_
+```
+</div>
+
+**Enable comma-separated list of extensions for a user:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --enable-user-extensions=pdo,json,mysql --user=_USER_ --version=_VERSION_
+```
+</div>
+
+**Reset user’s extensions to defaults:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --reset-user-extensions --user=_USER_ --version=_VERSION_
+```
+</div>
+
+**Replace user extensions with comma-separated list of extensions:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --replace-user-extensions=EXT_LIST --user=_USER_ --version=_VERSION_
+```
+</div>
+
+<span class="notranslate"> _EXT_LIST_ </span> _a is comma separated list of PHP extensions (for example:_  <span class="notranslate"> _pdo,json,mysql_ </span> )
+
+**List available options for php.ini editing:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --print-options --user=_USER_ --version=_VERSION_ [--json]
+```
+</div>
+
+**List available options for php.ini editing (print safe strings):**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --print-options-safe --user=_USER_ --version=_VERSION_ [--json]
+```
+</div>
+
+**Set php.ini options for end user:**
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --user=_USER_ --version=_VERSION_ --replace-options=_OPTIONS_ --base64 [--json]
+```
+</div>
+
+Here is an example of how you can generate <span class="notranslate"> _OPTIONS_ in base64 </span> format:
+
+<div class="notranslate">
+
+```
+OPTIONS=`echo disable_functions:exec,syslog|base64 -w 0`,`echo display_errors:off|base64 -w 0`,`echo post_max_size:128M|base64 -w 0`
+echo $OPTIONS
+```
+</div>
+
+See also [PHP Selector CLI tools](/command-line_tools/#php-selector).
+
+### Bundled PHP extensions
+
+You can find this information in the section [List of extensions supported by the alt&ea team for each version of PHP](https://docs.cloudlinux.com/cloudlinuxos/alt-ea_packages/#bundled-php-extensions)
+
+
+## Python Selector
+
+### General information
+
+<span class="notranslate">Python Selector</span> is a CloudLinux OS component that allows each user to easily deploy and manage Python applications. Users can manage applications at the control panel interface level or from the command line (CLI).
+
+### Requirements
+
+* cPanel or DirectAdmin control panel. Plesk isn't supported.
+* Apache or LiteSpeed webserver. Apache + Nginx (as a reverse proxy) combination is also supported.
+* Python Selector uses <span class="notranslate">`mod_passenger`</span> to host Python. For more details about <span class="notranslate">`mod_passenger`</span>, please read [documentation](https://www.phusionpassenger.com/). The needed version will be installed along with Python Selector.
+
+:::tip Note!
+OpenLiteSpeed is not compatible with Python Selector due to lack of `.htaccess` support.
+:::
+
+### Supported versions
+
+| CloudLinux 6  | CloudLinux 7  | CloudLinux 8  | CloudLinux 9  |
+|---------------|---------------|---------------|---------------|
+| alt-python 2.7 | alt-python 2.7 | alt-python 2.7 | alt-python 2.7 |
+| alt-python 3.3 | alt-python 3.3 | alt-python 3.3 | alt-python 3.3 |
+| alt-python 3.4 | alt-python 3.4 | alt-python 3.4 | alt-python 3.4 |
+| alt-python 3.5 | alt-python 3.5 | alt-python 3.5 | alt-python 3.5 |
+| alt-python 3.6 | alt-python 3.6 | alt-python 3.6 | alt-python 3.6 |
+| alt-python 3.7 | alt-python 3.7 | alt-python 3.7 | alt-python 3.7 |
+| alt-python 3.8 | alt-python 3.8 | alt-python 3.8 | alt-python 3.8 |
+| alt-python 3.9 | alt-python 3.9 | alt-python 3.9 | alt-python 3.9 |
+| alt-python 3.11| alt-python 3.10| alt-python 3.10| alt-python 3.10|
+|               | alt-python 3.11| alt-python 3.11| alt-python 3.11|
+|               | alt-python 3.12| alt-python 3.12| alt-python 3.12|
+  
+### Installation
+
+You can install Python Selector using the [CloudLinux OS Installation Wizard](/cloudlinuxos/lve_manager/#cloudlinux-os-shared-installation-wizard).
+
+After installation, please make sure that you have set appropriate checkboxes in CloudLinux Manager Options tab to show Python App in the web-interface.
+
+#### Manual installation
+
+Here you can find the installation steps for supported control panels:
+
+* [cPanel](./#cpanel-1)
+* [DirectAdmin](./#directadmin)
+
+#### cPanel
+
+To use Python Selector, it is required to install the following:
+
+* alternative Python packages by running the following command:
+  
+<div class="notranslate">
+
+```
+yum groupinstall alt-python
+```
+</div>
+
+* CloudLinux Manager, LVE Utils and Phusion Passenger to create isolated Python environments by running the following command:
+
+<div class="notranslate">
+
+```
+yum install lvemanager lve-utils alt-python-virtualenv
+```
+</div>
+    
+Phusion Passenger could be installed by using **either** ```ea-ruby24-mod_passenger``` **or** ```ea-ruby27-mod_passenger```. ```ea-ruby27-mod_passenger``` is **not** compatible with systems running CloudLinux OS 6. CloudLinux OS 7 supports **both** ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```. If your system runs CloudLinux OS 8, you can **only** use ```ea-ruby27-mod_passenger```.
+
+Adding Python module requires executing permissions to <span class="notranslate">`gcc/make`</span> binaries.
+Please enable compilers in Compiler Access section of WHM, then run:
+
+<div class="notranslate">
+
+```
+cagefsctl --force-update
+```
+</div>
+
+* We recommend use CageFS for better security. See [CageFS documentation for details](./#cagefs).
+
+#### DirectAdmin
+ 
+To use Python Selector, it is required to install the following:
+
+* alternative Python packages by running the following command:
+
+<div class="notranslate">
+
+```
+yum groupinstall alt-python
+```
+</div>
+ 
+* CloudLinux Manager, LVE Utils and Phusion Passenger to create isolated Python environments by running the following command:
+
+<div class="notranslate">
+
+```
+yum install lve-utils lvemanager alt-python-virtualenv alt-mod-passenger
+```
+</div>
+
+* We recommend use CageFS for better security. See [CageFS documentation for details](./#cagefs).
+
+
+* See also [Python Selector UI](/cloudlinuxos/lve_manager/#python-selector).
+* See also [Python Selector CLI](/cloudlinuxos/command-line_tools/#python-selector).
+
+## Ruby Selector
+
+### General information and requirements
+
+We have the ability to deploy <span class="notranslate">Ruby</span> applications via an application server. <span class="notranslate">Ruby Selector</span> uses <span class="notranslate">`mod_passenger`</span> to host <span class="notranslate"> Ruby</span> applications.
+
+Ruby Selector works only on cPanel/WHM servers.
+
+### Supported versions
+
+![](/images/cloudlinuxos/cloudlinux_os_components/Ruby_supported_versions.webp)
+
+
+### Installation and update
+
+::: tip Note
+The instructions below are suitable only for EasyApache 3 and EasyApache 4. You should follow [this instruction](https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:enable_ruby_python_selector) if you use LiteSpeed.
+:::
+
+To use <span class="notranslate">Ruby Selector</span> install alternative <span class="notranslate">Ruby</span> packages:
+
+<div class="notranslate">
+
+```
+yum groupinstall alt-ruby 
+```
+</div>
+
+::: tip Note
+After installation, please make sure that you have unmarked appropriate checkboxes in <span class="notranslate"> VE Manager Options</span> tab to show <span class="notranslate">Ruby App</span> in web-interface. Find the instructions on the [link](./#hide-ruby-selector-icon).
+:::
+
+::: tip Note
+Adding Ruby modules requires executing permissions to <span class="notranslate">`gcc/make`</span> binaries. Please enable compilers in Compiler Access section of WHM, then run: <span class="notranslate">`cagefsctl --force-update`</span>
+:::
+
+### Configuration and using
+
+* [End user access](/cloudlinuxos/lve_manager/#ruby-selector-client-plugin)
+* [Hide Ruby Selector icon](./#hide-ruby-selector-icon)
+* [Deploying Redmine using Ruby Selector](./#deploying-redmine-using-ruby-selector)
+* [EasyApache 4](./#easyapache-4-2)
+
+#### End user access
+
+You can find an example of Ruby application setup [here](https://cloudlinux.zendesk.com/hc/en-us/articles/115004495049-How-to-run-Redmine-with-Ruby-Selector)
+
+:::tip Note
+See also Ruby Selector [CLI](/cloudlinuxos/command-line_tools/#ruby-selector) section.
+:::
+
+#### Hide Ruby Selector icon
+
+It is possible to hide or show <span class="notranslate">Ruby Selector</span> icon by marking or unmarking proper checkboxes in <span class="notranslate"> LVE Manager Options</span> tab.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/CL-hide-ruby.webp)
+
+The same result can be accomplished in CLI by running:
+
+<div class="notranslate">
+
+```
+cloudlinux-config set --json --data '{"options":{"uiSettings":{"hideRubyApp":false}}}'
+```
+</div>
+ 
+:::tip Note
+If you are using cPanel/WHM, you can also configure hide/show <span class="notranslate">CloudLinux OS Ruby Selectors</span> in <span class="notranslate">WHM | Feature Manager</span>.
+For that, you’d need to first uncheck <span class="notranslate">`Hide Ruby App in web-interface`</span> in the <span class="notranslate">LVE Manager</span>. This will make the menu appear for all accounts. After that, you are free to disable this app in <span class="notranslate">WHM | Feature Manager</span> for the required feature lists.
+:::
+
+#### Deploying Redmine using Ruby Selector
+
+::: tip Note
+You can find <span class="notranslate"> Redmine </span> version 2.6.0 and newer deployment guide [here](https://cloudlinux.zendesk.com/hc/en-us/articles/115004495049-How-to-run-Redmine-with-Ruby-Selector)
+:::
+
+#### EasyApache 4
+
+:::tip Note
+```ea-apache24-mod-alt-passenger``` is deprecated in favor of ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```
+:::
+
+Starting with cPanel/WHM version 66 provides <span class="notranslate">```ea-ruby24-mod_passenger```</span> (more information on the [link](https://documentation.cpanel.net/display/66Docs/Application+Manager)), this allows creating <span class="notranslate"> Ruby </span> applications with cPanel application manager.
+
+CloudLinux OS features its own <span class="notranslate">Python and  Ruby Selectors</span>, which allow creating applications with one of <span class="notranslate">```mod_passenger```</span> Apache modules:
+
+* ```ea-ruby24-mod_passenger```
+* ```ea-ruby27-mod_passenger```
+
+```ea-ruby27-mod_passenger``` is **not** compatible with systems running CloudLinux OS 6. CloudLinux OS 7 supports **both** ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```. If your system runs CloudLinux OS 8, you can **only** use ```ea-ruby27-mod_passenger```.
+
+The <span class="notranslate"> ```ea-ruby2X-mod_passenger``` </span> allows you to run applications via <span class="notranslate"> cPanel application manager </span> and <span class="notranslate"> Ruby Selector</span>.
+
+To install, run:
+<div class="notranslate">
+
+```
+yum install lvemanager alt-python-virtualenv
+yum install ea-ruby24-mod_passenger
+```
+</div>
+
+or:
+
+<div class="notranslate">
+
+```
+yum install lvemanager alt-python-virtualenv
+yum install ea-ruby27-mod_passenger
+```
+</div>
+
+See also [Ruby Selector CLI tools](/cloudlinuxos/command-line_tools/#ruby-selector).
+
+
+## Node.js Selector
+
+### General information and requirements
+
+* [Requirements](./#requirements-3)
+* [Limitation](./#limitations)
+
+<span class="notranslate"> Node.js Selector </span>  is a CloudLinux OS component that allows each user to easily create Node.js applications, choose Node.js version and other parameters for applications based on their needs.
+
+### Supported versions
+
+| CloudLinux 6     | CloudLinux 7     | CloudLinux 8     | CloudLinux 9     |
+| ---------------- | ---------------- | ---------------- | ---------------- |
+| alt‑nodejs 6.x   | alt‑nodejs 6.x   | alt‑nodejs 6.x   | alt‑nodejs 6.x   |
+| alt‑nodejs 8.x   | alt‑nodejs 8.x   | alt‑nodejs 8.x   | alt‑nodejs 8.x   |
+| alt‑nodejs 9.x   | alt‑nodejs 9.x   | alt‑nodejs 9.x   | alt‑nodejs 9.x   |
+| alt‑nodejs 10.x  | alt‑nodejs 10.x  | alt‑nodejs 10.x  | alt‑nodejs 10.x  |
+| alt‑nodejs 11.x  | alt‑nodejs 11.x  | alt‑nodejs 11.x  | alt‑nodejs 11.x  |
+| alt‑nodejs 12.x  | alt‑nodejs 12.x  | alt‑nodejs 12.x  | alt‑nodejs 12.x  |
+| alt‑nodejs 14.x  | alt‑nodejs 14.x  | alt‑nodejs 14.x  | alt‑nodejs 14.x  |
+| —                | alt‑nodejs 16.x  | alt‑nodejs 16.x  | alt‑nodejs 16.x  |
+| —                | alt‑nodejs 18.x  | alt‑nodejs 18.x  | alt‑nodejs 18.x  |
+| —                | alt‑nodejs 19.x  | alt‑nodejs 19.x  | alt‑nodejs 19.x  |
+| —                | alt‑nodejs 20.x  | alt‑nodejs 20.x  | alt‑nodejs 20.x  | 
+| —                | -                | alt‑nodejs 22.x  | alt‑nodejs 22.x  |
+| —                | -                | alt‑nodejs 24.x  | alt‑nodejs 24.x  |
+
+#### **Requirements**
+
+* <span class="notranslate"> Node.js Selector requires LVE Manager 4.0 </span> or later.
+* It supports cPanel and DirectAdmin servers as well as non-panel installations (Plesk is not supported as it already has Node.js support.) For more details, please go to Plesk & Node.js documentation [here](https://www.plesk.com/blog/product-technology/node-js-plesk-onyx/) and [here](https://docs.plesk.com/en-US/onyx/administrator-guide/website-management/nodejs-support.76652/) .
+* Node.js Selector uses <span class="notranslate">`mod_passenger`</span> to host Node.js. For more details about <span class="notranslate"> mod_passenger </span>  and Node.js, please read documentation  [here](https://www.phusionpassenger.com/library/walkthroughs/deploy/nodejs/)  and  [here](https://www.phusionpassenger.com/library/walkthroughs/deploy/nodejs/ownserver/apache/oss/el7/deploy_app.html) .
+* <span class="notranslate"> Node.js Selector </span> supports both EasyApache 3 and EasyApache 4.
+
+:::tip Note!
+OpenLiteSpeed is not compatible with Node.js Selector due to lack of `.htaccess` support.
+:::
+
+#### **Limitations**
+
+Since Node.js Selector uses <span class="notranslate">`mod_passenger`</span> to host Node.js, then Node.js Selector has the same limitations as Phusion Passenger. Phusion Passenger cannot load ECMAScript modules and can only load Common js modules.
+If you get an ERR_REQUIRE_ESM error when starting an application app.js.
+
+```
+Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: app.js
+```
+
+In this case you can use the following cjs wrapper app_wrapper.cjs to load esm script app.js:
+
+```
+cat app_wrapper.cjs
+(() => import('app.js'))();
+```
+
+### Installation and update
+
+:::tip Note
+Node.js Selector support is added to LiteSpeed Web Server starting from the 5.3RC1 release. See details [here](https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:node.js_selector).
+:::
+
+**cPanel**
+
+To use <span class="notranslate">Node.js Selector</span>, install <span class="notranslate">Node.js</span> packages by running the following command:
+<div class="notranslate">
+
+```
+yum groupinstall alt-nodejs
+```
+</div>
+Also, please install <span class="notranslate"> LVE Manager, LVE Utils and Phusion Passenger </span> by running the following command:
+<div class="notranslate">
+
+```
+yum install lvemanager lve-utils
+```
+</div>
+
+Phusion Passenger could be installed by using **either** ```ea-ruby24-mod_passenger``` **or** ```ea-ruby27-mod_passenger```. ```ea-ruby27-mod_passenger``` is **not** compatible with systems running CloudLinux OS 6. CloudLinux OS 7 supports **both** ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```. If your system runs CloudLinux OS 8, you can **only** use ```ea-ruby27-mod_passenger```.
+    
+:::tip Note
+```ea-apache24-mod-alt-passenger``` is deprecated in favor of ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```
+:::
+
+For EasyApache 3:
+<div class="notranslate">
+
+```
+yum install lvemanager lve-utils alt-mod-passenger
+```
+</div>
+And we recommend to install CageFS for better security (not mandatory) by running the following command:
+<div class="notranslate">
+
+```
+yum install cagefs
+```
+</div>
+
+::: tip Note
+If during Node.js Selector usage on cPanel servers you get "ENOMEM npm ERR! errno-12" error, try to increase Memory limit in <span class="notranslate"> cPanel WHM → Server Configuration → Tweak Settings → System → Max cPanel process memory, </span> then restart cPanel service with the following command to apply changes.
+:::
+
+
+CloudLinux OS 7:
+<div class="notranslate">
+
+```
+systemctl restart cpanel.service
+```
+</div>
+
+CloudLinux OS 6:
+<div class="notranslate">
+```
+service cpanel restart
+```
+</div>
+
+**DirectAdmin**
+
+To use <span class="notranslate"> Node.js Selector, please install Node.js </span> packages by running the following command:
+<div class="notranslate">
+
+```
+yum groupinstall alt-nodejs6 alt-nodejs8 alt-nodejs9
+```
+</div>
+Also, please install <span class="notranslate"> LVE Manager, LVE Utils and Fusion Passenger </span> by running the following command:
+<div class="notranslate">
+
+```
+yum install lvemanager lve-utils alt-mod-passenger
+```
+</div>
+And we recommend to install CageFS for better security (not mandatory) by running the following command:
+<div class="notranslate">
+
+```
+yum install cagefs
+```
+</div>
+
+
+
+### Node.js deployment
+
+
+* The first approach - remote usage of Node.js Interpreters of different versions
+* The second approach - remote usage of the cloudlinux-selector utility.
+
+* [Remote usage of Node.js interpreters](./#remote-usage-of-node-js-interpreters)
+* [Remote usage of the cloudlinux-selector utility](./#remote-usage-of-the-cloudlinux-selector-utility)
+
+#### Remote usage of Node.js interpreters
+
+1. Create a Node.js project in <span class="notranslate"> IntelliJ IDEA/WebStorm </span> . You can download [this archive](https://docs.cloudlinux.com/nodejs_example.zip) and use it as a basis.
+2. Install <span class="notranslate"> alt-nodejs </span> packages on the server in use. See [installation instructions](./#installation-and-update-7).
+3. Create an application on the server. You can do it by three ways:
+  * Via UI of the Node.js plugin.
+  * Using the following command to create an application:
+
+<div class="notranslate">
+
+```
+cloudlinux-selector create --interprete=nodejs --json --app-root=<USER_NAME> --app-uri=<APP_NAME> --app-mode=develompent --version=<VERSION> --domain=<DOMAIN>
+```
+</div>  
+
+::: tip Note
+In the <span class="notranslate"> IntelliJ IDEA </span> you can create and run any remote script <span class="notranslate"> (Preferences — Remote SSH External Tools — Add).</span>
+:::
+
+![](/images/cloudlinuxos/cloudlinux_os_components/createapp_zoom70.webp)
+
+  * Choose a location of the application on the server and synchronize the files with the <span class="notranslate"> IntelliJ IDEA </span> project.
+4. Set up <span class="notranslate"> Run/Debug Configurations </span> in the project created.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/setconfiguration_zoom70.webp)
+
+  * Specify a path to the remote Node.js interpreter. To be able to specify the remote interpreter, you should install the <span class="notranslate"> _Node.js Remote Interpreter_ </span> plugin first. Please find more information [here](https://www.jetbrains.com/help/idea/configure-node-js-remote-interpreter.html) , using server access credentials for a user <span class="notranslate"> _(Main menu → Run → Edit configurations...)_ </span> .
+  * Specify initial _JavaScript file_ that will be run with the <span class="notranslate"> _node_ </span> command (it is the _app.js_ file from the archive).
+  * Specify <span class="notranslate"> _Path Mappings_ </span> between a local and a remote project <span class="notranslate"> _(Preferences → Deployments → Add)_ </span> . If you have created your application with the <span class="notranslate"> _cloudlinux-selector utility_ </span> or via plugin UI the <span class="notranslate"> _Path Mappings_ </span> should be as follows:
+
+<div class="notranslate">
+
+```
+/home/<USER_NAME>/<APP_NAME>
+```
+</div>
+
+5. Synchronize the project directories on the local and the remote machine as per <span class="notranslate"> _Path Mappings_ </span> specified.
+6. Deploy the modules on the remote and the local machine with the <span class="notranslate"> **_npm install_** </span> command (if there are dependent modules). In the UI you can click the <span class="notranslate"> _Run NPM Install_ </span> button.
+7. Run Node.js application with the configuration set at the 4th step <span class="notranslate"> _(Main menu → Run → Run… → Select configuration)_ </span> .
+
+![](/images/cloudlinuxos/cloudlinux_os_components/runapp_zoom60.webp)
+
+8. If you are using the application from the archive attached, you can see the running application on port 3003 — <span class="notranslate"> _http://DOMAIN:3003_ . </span>
+
+::: tip Note
+The port should be available to a server user.
+:::
+
+![](/images/cloudlinuxos/cloudlinux_os_components/runningappdomain_zoom70.webp)
+
+The following information should be displayed on this page:
+* A version of the running Node.js interpreter;
+* Current environment variables;
+* The current time.
+
+So that, you can be sure that deployed modules are used properly.
+
+If you’d like to use a different version of Node.js to run an application, change a path to the interpreter in the configuration settings of the running.  
+To apply all changes to the project, synchronize all changes with the server and restart the running application.
+
+9. To debug a script, set breakpoints in the code and run the configuration via Main Menu <span class="notranslate"> _(Main menu → Run → Debug… → Select configuration)_ </span> .
+
+Useful links:
+* <span class="notranslate"> IntelliJ IDEA </span> : [https://www.jetbrains.com/help/idea/configure-node-js-remote-interpreter.html](https://www.jetbrains.com/help/idea/configure-node-js-remote-interpreter.html)
+* Plugin <span class="notranslate"> _Node.js Remote Interpreter_ </span> : [https://plugins.jetbrains.com/plugin/8116-node-js-remote-interpreter](https://plugins.jetbrains.com/plugin/8116-node-js-remote-interpreter)
+* <span class="notranslate"> WebStorm </span> : [https://www.jetbrains.com/help/webstorm/configure-node-js-remote-interpreter.html](https://www.jetbrains.com/help/webstorm/configure-node-js-remote-interpreter.html)
+
+::: tip Note
+It is not required to install <span class="notranslate"> _Passenger_ </span> while working in <span class="notranslate"> IDE </span> if you are using this approach.
+:::
+
+#### Remote usage of the cloudlinux-selector utility
+
+
+1. Create an application via UI or with the command as described in the Remote Usage of Node.js Interpreters approach, step 3 (a,b).
+2. Set up project mapping on the local machine with the created remote application <span class="notranslate"> _/home/<USER_NAME>/<APP_NAME> (Preferences → Deployments → Add)_ </span>.
+3. Set up the remote commands of <span class="notranslate"> cloudlinux-selector _(Preferences → Remote SSH External Tools → Add)_ </span> for the following actions:
+  * Restart application;
+  * Install packages;
+  * Run script;
+  * Change Node.js version for the application.
+You can see the running app at <span class="notranslate"> http://DOMAIN/APPLICATION_URL </span>
+To apply all changes, restart the application.
+
+* See also [Node.js Selector CLI tools](/cloudlinuxos/command-line_tools/#node-js-selector).
+* See also [Node.js Selector UI](/cloudlinuxos/lve_manager/#node-js-selector-2).
+
+### Troubleshooting
+
+* [Debugging errors](./#debugging-errors)
+
+#### Debugging errors
+
+Since <span class="notranslate"> alt-mod-passenger-5.3.7-2,</span> directives such as PassengerFriendlyErrorPages and PassengerAppEnv are available for use from htaccess file. This allows end users to see errors from their application during the development process. For example, if you add one of the following lines to the htaccess file on the application page, you will see the information (if there was an error) similar to one on the picture.
+<div class="notranslate">
+
+```
+PassengerAppEnv development
+```
+</div>
+or
+<div class="notranslate">
+
+```
+PassengerFriendlyErrorPages on
+```
+</div>
+
+![](/images/cloudlinuxos/cloudlinux_os_components/errorapplog.webp)
+
+This is a much more convenient approach to developing an application and debugging errors. On the other hand, if these directives are turned off you will see:
+
+![](/images/cloudlinuxos/cloudlinux_os_components/errorapplogsorry.webp)
+
+In this case, there is no useful information for debugging errors and this is suitable for production mode. More information about [PassengerFriendlyErrorPages](https://www.phusionpassenger.com/library/config/apache/reference/#passengerfriendlyerrorpages) and [PassengerAppEnv](https://www.phusionpassenger.com/library/config/apache/reference/#passengerappenv).
+
+#### Known Restrictions and Issues
+1. In some cases running commands e.g. `npm build` can produce an Out Of Memory error.
+
+   When the error is encountered in Nodejs Selector UI or in the web browser terminal, check the physical and virtual memory LVE limits. Also check the process limits through `ulimit -v -m` command in Terminal UI or "Max data size", "Max address space" or "Max resident set" values inside the `/proc/<process_id>/limits` file. Increase the limits if necessary.
+
+   On cPanel, increase the default process memory limit:
+   ```
+   whmapi1 set_tweaksetting key=maxmem value=8192
+   /usr/local/cpanel/scripts/restartsrv_cpsrvd
+   ```
+   Due to bug CPANEL-43590 a server reload might be required for the new maxmem value to become applied.
+
+   In some cases, due to bugs in underlying Node.js frameworks (e.g. [Out of memory: wasm memory](https://github.com/nodejs/node/issues/41319#issuecomment-1001025128)) it could be necessary to increase `maxmem` up to 50 Gb (`value=51200`) or even to `unlimited`.
+
+2. Sometimes an Out Of Memory error appears in the web browser terminal in cPanel. Because of CPANEL-39397 bug terminal inherences limits of `cpsrvd` process. As a workaround, you could increase `maxmem` value as described above.
+
+   Alternetive workaround: override soft and hard virtual memory limit only for the user encountering the problem. Override hard limit by adding the following line to the `/etc/security/limits.conf` file:
+   ```
+   username	hard	as	unlimited
+   ```
+   Override soft limit by adding into `$USER_HOME/.bashrc`:
+   ```
+   ulimit -S -v unlimited
+   ```
+
+## Apache mod_lsapi PRO
+
+### General information and requirements
+
+mod_lsapi PRO is an [Apache HTTP Server](https://httpd.apache.org/) module based on [LiteSpeed Technologies API](https://www.litespeedtech.com/open-source/litespeed-sapi) . It serves to execute PHP scripts on a web-server by analogy with other modules like mod_suphp, php-fpm, mod_php. However, mod_lsapi PRO usage offers excellent PHP performance, low memory footprint coupled with great security and support for opcode caching.
+
+**How does it work?**
+
+1. Apache passes handling for PHP request to mod_lsapi PRO;
+2. mod_lsapi PRO use liblsapi to transfer request to lsphp parent process;
+3. lsphp is forking child process which executes the request and returns data to mod_lsapi PRO;
+![](/images/cloudlinuxos/cloudlinux_os_components/mod_lsapidiagrammnew.webp)  
+_mod_lsapi PRO integrates with Apache, allows to handle concurrent requests and manages the lsphp processes_
+
+* If there are no requests for lsapi_backend_pgrp_max_idle seconds, lsphp parent process will be  terminated;
+* If there are no lsphp child processes available when a new request comes, the new lsphp child process will be created;
+* lsphp child processes handle concurrent requests simultaneously.;
+* The maximum number of simultaneously running lsphp child processes can be set by the lsapi_backend_children directive.
+
+**What is lsphp?**
+
+lsphp - PHP + LSAPI. What is PHP LSAPI? [LiteSpeed Server Application Programming Interface](https://www.litespeedtech.com/open-source/litespeed-sapi/php) (LSAPI) is designed specifically for seamless, optimized communication between LiteSpeed Web Server and third-party web applications. Now with mod_lsapi PRO this protocol is available for Apache 2.2/2.4.
+
+Using mod_lsapi PRO, we have seen the higher performance than Apache with mod_php, easier installation than php-fpm and easier integration with any control panel. mod_lsapi PRO means faster and more stable dynamic web pages.
+
+**Requirements**
+
+Currently, the mod_lsapi is not compatible with:
+
+* Apache mod_ruid2 - should be disabled;
+* Apache mod_itk - should be disabled;
+* PHP-FPM - should be disabled because PHP-FPM is also a PHP Handler just as mod_lsapi.
+
+**Optional requirements**
+
+* Configured LVE containers for end-users ( **recommended - higher security level** );
+* Installed and configured mod_hostinglimitsfor Apache ( **recommended - higher security level** );
+* Installed mod_suexec for Apache and configured [SuExecUserGroup](https://httpd.apache.org/docs/2.4/mod/mod_suexec.html#page-header) directive for each virtual host ( **recommended - higher security level** );
+* Enabled CageFS for end-users ( **recommended - higher security level** );
+* PHP Selector with alt-php - an easy way to select different PHP versions for each end-user provided by CloudLinux OS;
+* ea-php - alternative to alt-php provided by cPanel (for cPanel only).
+
+### Installation
+
+mod_lsapi PRO can be installed through YUM package manager, however, the installation process varies depending on the control panel.
+
+Select the control panel you are using:
+* [cPanel](./#installing-on-cpanel-servers-with-easyapache-4)
+* [Plesk](./#installing-on-plesk-servers)
+* [DirectAdmin](./#installing-on-directadmin-servers)
+* [No control panel](./#installing-on-servers-with-no-control-panel)
+
+
+:::tip Note
+See also [mod_lsapi PRO](/cloudlinuxos/command-line_tools/#apache-mod-lsapi-pro).
+:::
+
+#### Installing on cPanel servers with EasyApache 4
+
+Install mod_lsapi PRO and related packages through YUM package manager as follows:
+<div class="notranslate">
+
+```
+yum install liblsapi liblsapi-devel
+yum install ea-apache24-mod_lsapi
+```
+</div>
+After installing mod_lsapi PRO packages run the next command to setup mod_lsapi to cPanel:
+<div class="notranslate">
+
+```
+/usr/bin/switch_mod_lsapi --setup
+```
+</div>
+Now, when the module is installed, restart Apache to ensure that the mod_lsapi PRO is enabled:
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+Now the lsapi handler is available for managing through cPanel MultiPHP Manager.
+
+For more details about switch_mod_lsapi, please visit [switch_mod_lsapi tool](/cloudlinuxos/command-line_tools/#apache-mod-lsapi-pro).
+
+
+#### Installing on Plesk servers
+
+Install mod_lsapi PRO and related packages through YUM package manager as follows:
+<div class="notranslate">
+
+```
+yum install liblsapi liblsapi-devel
+yum install mod_lsapi
+```
+</div>
+Once completed, run the command to setup mod_lsapi PRO and register LSPHP handlers to Plesk Panel:
+<div class="notranslate">
+
+```
+/usr/bin/switch_mod_lsapi --setup
+```
+</div>
+
+Now, when the module is installed, restart Apache to ensure that mod_lsapi PRO is enabled:
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+
+Now LSPHPXY alt-php PHP handlers are available for managing through Plesk PHP Settings.
+
+![](/images/cloudlinuxos/cloudlinux_os_components/plesk-php-settings.webp)
+
+For more details about switch_mod_lsapi, please visit [switch_mod_lsapi tool](/cloudlinuxos/command-line_tools/#apache-mod-lsapi-pro).
+
+
+#### Installing on DirectAdmin servers
+
+Installation process is done with custombuild script:
+<div class="notranslate">
+
+```
+yum install liblsapi liblsapi-devel
+cd /usr/local/directadmin/custombuild
+./build update
+./build set php1_mode lsphp
+./build php n
+./build apache
+```
+</div>
+Restart Apache afterwards:
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+Now all domains under php1_mode are using lsphp handler and no further actions are required to enable mod_lsapi PRO on DirectAdmin.
+
+#### Installing on servers with no control panel
+
+:::tip Note 
+If there is a php.conf file in Apache's conf.d, which is usually brought by the php or php-fpm packages, then it should be deleted or renamed.
+
+For example, `php.conf` can be renamed into `php.conf.NO`.
+:::
+
+Install mod_lsapi PRO and related packages through YUM package manager as follows:
+<div class="notranslate">
+
+```
+yum install liblsapi liblsapi-devel
+yum install mod_lsapi
+```
+</div>
+Once completed, run a command to setup mod_lsapi PRO:
+<div class="notranslate">
+
+```
+/usr/bin/switch_mod_lsapi --setup
+```
+</div>
+Now, when the module is installed, restart Apache to ensure that mod_lsapi PRO is enabled:
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+
+If you are using an alternative Apache - [httpd24](https://www.cloudlinux.com/cloudlinux-os-blog/entry/httpd24-updated-for-cloudlinux-6) , then install mod_lsapi as follows:
+
+<div class="notranslate">
+
+```
+yum install liblsapi liblsapi-devel
+yum install httpd24-mod_lsapi
+```
+</div>
+Once completed, run a command to setup mod_lsapi PRO:
+<div class="notranslate">
+
+```
+/opt/rh/httpd24/root/usr/bin/switch_mod_lsapi --setup
+```
+</div>
+Now, when the module is installed, restart Apache to ensure that mod_lsapi PRO is enabled:
+<div class="notranslate">
+
+```
+service httpd24-httpd restart
+```
+</div>
+
+For more details about switch_mod_lsapi, please visit [switch_mod_lsapi tool](/cloudlinuxos/command-line_tools/#apache-mod-lsapi-pro).
+
+
+### Uninstalling
+
+
+Uninstall mod_lsapi PRO is performed depending on your control panel.
+
+Select the control panel you are using:
+* [cPanel](./#uninstall-procedure-for-cpanel-servers-with-easyapache-4)
+* [Plesk](./#uninstall-procedure-for-plesk-servers)
+* [DirectAdmin](./#uninstall-procedure-for-directadmin-servers)
+* [No control panel](./#uninstall-procedure-for-servers-with-no-control-panel)
+
+
+#### Uninstall procedure for cPanel servers with EasyApache 4
+
+:::tip Note 
+If there is a php.conf file in Apache's conf.d, which is usually brought by the php or php-fpm packages, then it should be deleted or renamed.
+
+For example, `php.conf` can be renamed into `php.conf.NO`. 
+:::
+  
+ To remove lsapi handler from cPanel MultiPHP Manager and uninstall mod_lsapi PRO, run a command:
+<div class="notranslate">
+
+```
+/usr/bin/switch_mod_lsapi --uninstall
+```
+</div>
+Then remove packages with YUM package manager:
+<div class="notranslate">
+
+```
+yum erase liblsapi liblsapi-devel ea-apache24-mod_lsapi
+```
+</div>
+Restart Apache afterwards:
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+Now mod_lsapi PRO is fully uninstalled.
+
+
+#### Uninstall procedure for Plesk servers
+
+To unregister LSPHP handlers and uninstall mod_lsapi PRO, run the command:
+<div class="notranslate">
+
+```
+/usr/bin/switch_mod_lsapi --uninstall
+```
+</div>
+Then remove packages with YUM package manager:
+<div class="notranslate">
+
+```
+yum erase liblsapi liblsapi-devel mod_lsapi
+```
+</div>
+Restart Apache afterwards:
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+Now LSPHPXY alt-php PHP handlers and mod_lsapi PRO are fully uninstalled.
+
+
+#### Uninstall procedure for DirectAdmin servers
+
+Uninstall is done with custombuild script:
+<div class="notranslate">
+
+```
+cd /usr/local/directadmin/custombuild
+./build update
+./build set php1_release [any other php mode]
+./build php n
+./build apache
+```
+</div>
+The following PHP modes are available for DirectAdmin:
+
+* mod_php
+* fastcgi
+* php-fpm
+* suphp
+
+Restart Apache afterwards:
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+Now all domains under php1_mode are using the chosen handler and mod_lsapi PRO is fully uninstalled.
+
+#### Uninstall procedure for servers with no control panel
+
+To uninstall mod_lsapi PRO, run the command:
+<div class="notranslate">
+
+```
+/usr/bin/switch_mod_lsapi --uninstall
+```
+</div>
+Then remove packages with YUM package manager:
+<div class="notranslate">
+
+```
+yum erase liblsapi liblsapi-devel mod_lsapi
+rm [path to mod_lsapi.conf]
+```
+</div>
+Restart Apache to restore the standard PHP handler:
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+
+If you are using an alternative Apache: - [httpd24](https://www.cloudlinux.com/cloudlinux-os-blog/entry/httpd24-updated-for-cloudlinux-6), then uninstall mod_lsapi PRO as follows:
+
+<div class="notranslate">
+
+```
+/usr/bin/switch_mod_lsapi --uninstall
+```
+</div>
+Then remove packages with YUM package manager:
+<div class="notranslate">
+
+```
+yum erase liblsapi liblsapi-devel httpd24-mod_lsapi
+rm [path to mod_lsapi.conf]
+```
+</div>
+Restart Apache afterwards:
+<div class="notranslate">
+
+```
+service httpd24 restart
+```
+</div>
+Now mod_lsapi PRO is fully uninstalled.
+
+
+### Configuration
+
+* [Configuration references](./#configuration-references)
+
+
+In order to get mod_lsapi PRO work properly, you'll need to configure Apache. To do this, we use a separate _lsapi.conf_ file.
+
+First of all, for the mod_lsapi PRO work, you need to ensure that the module is loaded. In your lsapi.conf you need to make sure the [LoadModule](http://httpd.apache.org/docs/current/mod/mod_so.html#loadmodule) directive has not been commented out. A correctly configured directive may look like this:
+<div class="notranslate">
+
+```
+LoadModule lsapi_module modules/mod_lsapi.so
+```
+</div>
+
+In order to enable the module to process requests, you need to add the lsapi_engine directive to your _lsapi.conf_ file as follows:
+<div class="notranslate">
+
+```
+lsapi_engine On
+```
+</div>
+
+The mod_lsapi PRO handler can be enabled using the [AddType](https://httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype) directive. The AddType directive tells Apache that a given filename extension should be handled by mod_lsapi PRO. Apache will assume that and will attempt to execute it when that particular resource is requested by a client.
+<div class="notranslate">
+
+```
+AddType application/x-httpd-lsphp .php
+```
+</div>
+
+If no handler is explicitly set for a request, the specified content type will be used as the handler name, therefore, please disable php.conf or any other PHP handler for using mod_lsapi PRO. In this example application/x-httpd-lsphp is a default handler by which mod_lsapi PRO process requests with lsphp binary from _/usr/local/bin/_ directory.
+
+The final lsapi.conf configuration might look like this:
+<div class="notranslate">
+
+```
+LoadModule lsapi_module modules/mod_lsapi.so
+
+
+<IfModule lsapi_module>      
+	lsapi_engine On      
+	AddType application/x-httpd-lsphp .php      
+	lsapi_backend_connect_timeout 100000
+	lsapi_backend_connect_tries 10
+	lsapi_backend_children 20
+	lsapi_backend_pgrp_max_idle 30
+	lsapi_backend_max_process_time 300
+	lsapi_debug Off
+</IfModule>
+```
+</div>
+
+In order to mod_lsapi PRO work lsapi.conf should be loaded to Apache through [Include](https://httpd.apache.org/docs/2.4/mod/core.html#include) directive.
+
+For more detailed description of the module directives please visit [Configuration reference](./#configuration-references).  
+For installation guide mod_lsapi PRO please visit [Installation](./#installation-2).
+
+#### Using alternative LVE id for Virtual Hosts
+Starting from 1.1-79 version mod_lsapi supports possibility to use alternative LVE id for different Virtual Hosts.
+While the main LVE for user account is created automatically on account creation, alternative LVEs must be created manually using lvectl CLI utility. For example, if we already created user1 user account, LVE with the same LVE id as account uid is already created:
+```
+[root@ ~]# id user1
+uid=1001(user1) gid=1004(user1) groups=1004(user1)
+[root ~]# lvectl list
+      ID   SPEED    PMEM    VMEM      EP   NPROC      IO    IOPS
+ default     100   1024M      0K      20     100    1024    1024
+    1001      50   1024M      0K      40      90    1024    1024
+   limit       0      0K      0K       0       0       0       0
+
+[root@ ~]#
+```
+
+Let's use 11001 LVE id for alternative LVE for this account, create this LVE and set LVE limits for it:
+```
+[root ~]# lvectl set 11001 --speed=50% --pmem=512M --io=2048 --ep=10 --nproc=50
+[root ~]# lvectl limits 11001
+      ID   SPEED    PMEM    VMEM      EP   NPROC      IO    IOPS
+   11001      50    512M      0K      10      50    2048    1024
+
+[root ~]#
+```
+
+Now we can use different LVEs for different Virtual Hosts bound to the same user account user1 by setting different [LVEid](./#lveid) values:
+```
+<VirtualHost 10.193.208.48:80>
+    ServerName user1.example.com
+    DocumentRoot /home/user1/public_html
+        <IfModule hostinglimits_module>
+            <Directory "/home/user1/public_html">
+                LVEId 11001
+            </Directory>
+        </IfModule>
+        <IfModule lsapi_module>
+            lsapi_user_group user1 user1
+            lsapi_per_user Off
+        </IfModule>
+ </VirtualHost>
+
+ <VirtualHost 10.193.208.48:80>
+    ServerName sub.user1.example.com
+    DocumentRoot /home/user1/sub.user1.example.com
+        <IfModule hostinglimits_module>
+            <Directory "/home/user1/sub.user1.example.com">
+                LVEId 1001
+            </Directory>
+        </IfModule>
+        <IfModule lsapi_module>
+            lsapi_user_group user1 user1
+            lsapi_per_user Off
+        </IfModule>
+ </VirtualHost>
+```
+
+Please note that in the example above 2 different Virtual Hosts use different LVEs but the same account user1. Also [lsapi_per_user](./#lsapi-per-user) config directive must be set to Off in order to allow using of dedicated lsphp backend for every Virtual Host.
+
+#### Configuration references
+
+
+[mod_lsapi customization](./#mod-lsapi-customization):
+* [lsapi_engine](./#lsapi-engine)  
+* [lsapi_socket_path](./#lsapi-socket-path)  
+* [lsapi_poll_timeout](./#lsapi-poll-timeout)  
+* [lsapi_per_user](./#lsapi-per-user)  
+* [lsapi_output_buffering](./#lsapi-output-buffering)  
+* [lsapi_disable_reject_mode](./#lsapi-disable-reject-mode)  
+* [lsapi_terminate_backends_on_exit](./#lsapi-terminate-backends-on-exit)  
+* [lsapi_avoid_zombies](./#lsapi-avoid-zombies)  
+* [lsapi_use_req_hostname](./#lsapi-use-req-hostname)  
+* [lsapi_debug](./#lsapi-debug)
+
+[Tuning LSPHP backend](./#tuning-lsphp-backend):
+* [lsapi_set_env](./#lsapi-set-env)
+* [lsapi_set_env_path](./#lsapi-set-env-path)
+* [lsapi_backend_children](./#lsapi-backend-children)
+* [lsapi_backend_connect_tries](./#lsapi-backend-connect-tries)
+* [lsapi_backend_connect_timeout](./#lsapi-backend-connect-timeout)
+* [lsapi_backend_max_process_time](./#lsapi-backend-max-process-time)
+* [lsapi_backend_pgrp_max_idle](./#lsapi-backend-pgrp-max-idle)
+* [lsapi_backend_use_own_log](./#lsapi-backend-use-own-log)
+* [lsapi_backend_common_own_log](./#lsapi-backend-common-own-log)
+* [lsapi_backend_coredump](./#lsapi-backend-coredump)
+* [lsapi_backend_accept_notify](./#lsapi-backend-accept-notify)
+* [lsapi_backend_pgrp_max_reqs](./#lsapi-backend-pgrp-max-reqs)
+* [lsapi_backend_pgrp_max_crashes](./#lsapi-backend-pgrp-max-crashes)
+* [lsapi_backend_loglevel_info](./#lsapi-backend-loglevel-info)
+* [lsapi_backend_oom_score_adj](./#lsapi-backend-oom-score-adj)
+* [lsapi-server-tweak](./#lsapi-server-tweak) Beta
+ 
+[Connection pool mode](./#connection-pool-mode):
+* [lsapi_with_connection_pool](./#lsapi-with-connection-pool)
+* [lsapi_backend_max_idle](./#lsapi-backend-max-idle)
+* [lsapi_backend_max_reqs](./#lsapi-backend-max-reqs)
+
+[CRIU support](./#criu-support-cloudlinux7-only):
+* [lsapi_criu](./#lsapi-criu)
+* [lsapi_criu_socket_path](./#lsapi-criu-socket-path)
+* [lsapi_criu_imgs_dir_path](./#lsapi-criu-imgs-dir-path)
+* [lsapi_backend_initial_start](./#lsapi-backend-initial-start)
+* [lsapi_criu_use_shm](./#lsapi-criu-use-shm)
+* [lsapi_backend_semtimedwait](./#lsapi-backend-semtimedwait)
+* [lsapi_reset_criu_on_apache_restart](./#lsapi-reset-criu-on-apache-restart)
+* [lsapi_criu_debug](./#lsapi-criu-debug)
+
+[PHP configuration management](./#php-configuration-management):
+* [lsapi_process_phpini](./#lsapi-process-phpini)
+* [lsapi_phpini](./#lsapi-phpini)
+* [lsapi_phprc](./#lsapi-phprc)
+* [lsapi_tmpdir](./#lsapi-tmpdir)
+* [lsapi_enable_user_ini](./#lsapi-enable-user-ini)
+* [lsapi_user_ini_homedir](./#lsapi-user-ini-homedir)
+* [lsapi_keep_http200](./#lsapi-keep-http200)
+* [lsapi_mod_php_behaviour](./#lsapi-mod-php-behaviour)
+* [php_value, php_admin_value, php_flag, php_admin_flag](./#php-valuephp-admin-valuephp-flagphp-admin-flag)
+
+[Security](./#security):
+* [lsapi_use_suexec](./#lsapi-use-suexec)
+* [lsapi_user_group](./#lsapi-user-group)
+* [lsapi_uid_gid](./#lsapi-uid-gid)
+* [lsapi_use_default_uid](./#lsapi-use-default-uid)
+* [lsapi_target_perm](./#lsapi-target-perm)
+* [lsapi_paranoid](./#lsapi-paranoid)
+* [lsapi_check_document_root](./#lsapi-check-document-root)
+* [lsapi_disable_forced_pwd_var](./#lsapi-disable-forced-pwd-var)
+* [lsapi_max_resend_buffer](./#lsapi-max-resend-buffer)
+
+#### **mod_lsapi customization**
+
+#### **lsapi_engine**
+
+**Syntax** : lsapi_engine on/off  
+**Default** : lsapi_engine off  
+**Context** : httpd.conf, htaccess  
+
+**Description** :  
+Switching mod_lsapi handler on or off.
+
+---
+
+#### **lsapi_socket_path**
+
+**Syntax** : lsapi_socket_path [path]
+**Default** : lsapi_socket_path `/var/mod_lsapi`  
+**Context** : httpd.conf  
+
+**Description:**  
+Path to backend lsphp sockets. By default `/var/mod_lsapi`
+
+---
+
+#### **lsapi_poll_timeout**
+
+**Syntax** : lsapi_poll_timeout [number]  
+**Default** : lsapi_poll_timeout 300  
+**Context** : httpd.conf, htaccess  
+
+**Description** :  
+Time to wait for response from the lsphp daemon, in seconds. 0 stands for infinity. For preventing long running processes which can use EP (limit number of entry processes). Default value is 300. Should be more or equal to 0. In the case of wrong format, the default value will be used.
+
+---
+
+#### **lsapi_per_user**
+
+**Syntax** : lsapi_per_user On/Off  
+**Default** : lsapi_per_user Off  
+**Context** : httpd.conf  
+
+**Description** :  
+Invoke master lsPHP process not per VirtualHost but per account.
+When On, invoke backend not per VirtualHost but per account.
+Default value is Off.
+It is possible, for example, to set it to On in global config file and to Off in config files of some particular Virtual Hosts.
+Then these Virtual Hosts will have a dedicated backend process, while others will have backend processes shared on account basis.
+
+---
+
+#### **lsapi_output_buffering**
+
+**Syntax** : lsapi_output_buffering On/Off  
+**Default** : lsapi_output_buffering On  
+**Context** : httpd.conf, virtualhost, htaccess  
+
+**Description** :  
+Enable or disable output buffering on Apache level. Default value is On.
+
+---
+
+#### **lsapi_disable_reject_mode**
+
+**Syntax** : lsapi_disable_reject_mode On/Off  
+**Default** : lsapi_disable_reject_mode Off  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+If a new HTTP request is coming to LSPHP daemon when all LSPHP workers are still busy, it can process this situation in two different ways. In REJECT mode LSPHP daemon will reject such request immediately. Otherwise, in legacy mode, LSPHP daemon will put this request into infinite queue, until one or more LSPHP daemon becomes free. When HTTP request is rejected in REJECT mode, mod_lsapi will write into Apache error_log the following message: Connect to backend rejected, and the client will receive 507 HTTP response.
+By default LSPHP daemon in CloudLinux OS uses REJECT mode. It can be switched off with this option.
+
+---
+
+#### **lsapi_terminate_backends_on_exit**
+
+**Syntax** : lsapi_terminate_backends_on_exit On/Off  
+**Default** : lsapi_terminate_backends_on_exit On  
+**Context** : httpd.conf  
+
+**Description** :  
+httpd.conf, On - stop lsphp services on apache restart, Off - leave live started lsphp services on apache restart (for php+opcache). The lsphp will not restart, even if Apache gets restarted.
+
+---
+
+#### **lsapi_avoid_zombies**
+
+**Syntax** : lsapi_avoid_zombies On/Off  
+**Default** : lsapi_avoid_zombies Off  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+Enable or disable a mechanism to avoid creation of zombie processes by lsphp. Default value is Off.
+
+---
+
+#### **lsapi_use_req_hostname**
+
+**Syntax** : lsapi_use_req_hostname On/Off  
+**Default** : lsapi_use_req_hostname Off  
+**Context** : httpd.conf, virtualhosts  
+
+**Description** :  
+By default, we are using hostname from the server_rec structure (off), it means that mod_lsapi takes hostname from the VirtualHost section of the configuration file. Using hostname from the request_rec structure (On) means that mod_lsapi takes hostname from the HOST section of the request. It could be useful for those who use dynamically generated configs for virtual hosts for example with mod_lua.
+
+---
+
+#### **lsapi_sentry**
+
+**Syntax** : lsapi_sentry On/Off  
+**Default** : lsapi_sentry On  
+**Context** : httpd.conf  
+
+**Description** :  
+When this option is enabled, errors that occur in the operation of the mod_lsapi will be sent to the remote sentry server. You can see the error messages that were sent to the sentry server in the directory /var/log/mod_lsapi. If you do not want to send error notifications from your server, you can disable this directive in lsapi.conf.
+
+---
+
+#### **lsapi_debug**
+
+**Syntax** : lsapi_debug On/Off  
+**Default** : lsapi_debug Off  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+Extended debug logging.
+
+---
+
+#### **Tuning LSPHP backend**
+
+#### **lsapi_set_env**
+
+**Syntax** : lsapi_set_env VAR_NAME [VAR_VALUE]  
+**Default** : -  
+**Context** : httpd.conf  
+
+**Description** :  
+Pass env variable to lsphp. By default lsphp environment have only TEMP, TMP and PATH variables set.  
+Example: lsapi_set_env TMP "/var/lsphp-tmp"  
+Note: PATH env var default "/usr/local/bin:/usr/bin:/bin" cannot be changed because of security reasons.  
+To change it, use explicitly lsapi_set_env_path option.
+
+:::tip Beta
+When the `lsapi_server_tweak` option is switched `On`, this option can be used in the virtualhost context.
+:::
+
+---
+
+#### **lsapi_set_env_path**
+
+**Syntax** : lsapi_set_env_path [path(s)]  
+**Default** : lsapi_set_env_path /usr/local/bin:/usr/bin:/bin  
+**Context** : httpd.conf  
+
+**Description** :  
+Change PATH variable in the environment of lsPHP processes. Default path /usr/local/bin:/usr/bin:/bin will be used if not set.
+
+:::tip Beta
+When the `lsapi_server_tweak` option is switched `On`, this option can be used in the virtualhost context.
+:::
+
+---
+
+#### **lsapi_backend_children**
+
+**Syntax** : lsapi_backend_children [number]  
+**Default** : lsapi_backend_children [EP]  
+**Context** : httpd.conf  
+
+**Description** :  
+Sets maximum number of simultaneously running child backend processes. Optional, a default directive value is equal to 120.   LSAPI_CHILDREN environment variable is set according to the following rules:
+* If NPROC and EP are unlimited, the directive value is used.
+* If NPROC is set to any limited value and the directive value is set to a number less than NPROC-1, the directive value is used.
+* If the value is bigger than NPROC-1 and EP is set to unlimited, NPROC-1 is used.
+* If the value is bigger than NPROC-1 and EP is set to any limited value, EP+1 is used.
+
+For example, with the default lve settings NPROC=100 and EP=20, the effective LSAPI_CHILDREN will be EP+1, that is LSAPI_CHILDREN=21.
+
+---
+
+#### **lsapi_backend_connect_tries**
+
+**Syntax** : lsapi_backend_connect_tries [number]  
+**Default** : lsapi_backend_connect_tries 20  
+**Context** : httpd.conf  
+
+**Description** :  
+Number of retries to connects to lsPHP daemon.
+
+---
+
+#### **lsapi_backend_connect_timeout**
+
+**Syntax** : lsapi_backend_connect_timeout [number]  
+**Default** : lsapi_backend_connect_timeout 500000  
+**Context** : httpd.conf  
+
+**Description** :  
+Number of usec to wait while lsPHP starts (if not started on request).
+
+---
+
+#### **lsapi_backend_max_process_time**
+
+**Syntax** : lsapi_backend_max_process_time [number]  
+**Default** : lsapi_backend_max_process_time 300  
+**Context** : httpd.conf, virtualhost 
+
+**Description** :  
+Sets env variable LSAPI_MAX_PROCESS_TIME  
+Optional. Default value is 300.  
+Timeout to kill runaway processes.
+
+---
+
+#### **lsapi_backend_pgrp_max_idle**
+
+**Syntax** : lsapi_backend_pgrp_max_idle [number]  
+**Default** : lsapi_backend_pgrp_max_idle 30  
+**Context** : httpd.conf  
+
+**Description** :  
+Sets env variable LSAPI_PGRP_MAX_IDLE, in seconds.    
+Controls how long a control process will wait for a new request before it exits. # 0 stands for infinite.  
+Optional, default value is 30.  
+Should be more or equal to 0.  
+
+---
+
+#### **lsapi_backend_use_own_log**
+
+**Syntax** : lsapi_backend_use_own_log On/Off  
+**Default** : lsapi_backend_use_own_log Off  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+Redirecting log output of backend processes from Apache error_log to dedicated log file or files, depending on value of lsapi_backend_common_own_log option. If Off, use Apache error log file for backend output, or separate file otherwise.
+
+---
+
+#### **lsapi_backend_common_own_log**
+
+**Syntax** : lsapi_backend_common_own_log On/Off  
+**Default** : lsapi_backend_common_own_log Off  
+**Context** : httpd.conf, virtualhost 
+
+**Description** :  
+It will be used only when lsapi_backend_use_own_log set to On. On - backend processes of the all virtual hosts will share the common log file. Off - every virtual host will have its own backend log file.
+
+---
+
+#### **lsapi_backend_coredump**
+
+**Syntax** : lsapi_backend_coredump On/Off  
+**Default** : lsapi_backend_coredump Off  
+**Context** : httpd.conf, htaccess  
+
+**Description** :  
+env variable LSAPI_ALLOW_CORE_DUMP (On or Off). Pass LSAPI_ALLOW_CORE_DUMP to lsphp or not. If it will be passed - core dump on lsphp crash will be created.  
+Off by default.  
+By default LSAPI application will not leave a core dump file when crashed. If you want to have LSAPI PHP dump a core file, you should set this environment variable. If set, regardless the value has been set to, core files will be created under the directory that the PHP script in.
+
+---
+
+#### **lsapi_backend_accept_notify**
+
+**Syntax** : lsapi_backend_accept_notify On/Off  
+**Default** : lsapi_backend_accept_notify On  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+Switch LSAPI_ACCEPT_NOTIFY mode for lsphp. This option can be used both in Global and VirtualHost scopes.This mode is incompatible with PHP 4.4.
+
+---
+
+#### **lsapi_backend_pgrp_max_reqs**
+
+**Syntax** : lsapi_backend_prgrp_max_reqs [number]  
+**Default** : lsapi_backend_max_reqs 0  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+Controls how many requests a control process will process before it exits. Should be more or equal to 0. In the case of wrong format, a default value will be used. Optional, the default value is 0, which means an unlimited number of requests.
+
+---
+
+#### **lsapi_backend_pgrp_max_crashes**
+
+**Syntax** : lsapi_backend_prgrp_max_crashes [number]  
+**Default** : lsapi_backend_max_crashes 0  
+**Context** : httpd.conf, virtualhost
+
+**Description** :  
+Controls how many crashes of its worker processes a control process will detect before it exits. Should be more or equal to 0. In the case of wrong format, a default value will be used. Optional, the default value is 0, which means an unlimited number of crashes.
+
+---
+
+#### **lsapi_backend_loglevel_info**
+
+**Syntax**: lsapi_backend_loglevel_info [On/Off]
+
+**Default**: lsapi_backend_loglevel_info Off
+
+**Context**: httpd.conf, virtualhost
+
+**Description**:  Controls which log level will be used to write PHP warnings and notices into Apache’s error_log. Optional, the default value is `Off`. In that case `LOG_WARNING` log level will be used. Otherwise, with `On` value, `LOG_INFO` log level will be used.
+
+---
+
+#### **lsapi_backend_oom_score_adj**
+
+**Syntax**: lsapi_backend_oom_score_adj [number]
+
+**Default**: lsapi_backend_oom_score_adj 0
+
+**Context**: httpd.conf, virtualhost
+
+**Description**:  This option can be used to apply **oom_score_adj** values for PHP processes created by mod_lsapi. Value is an integer in the -1000 to 1000 range. The lower the value, the lower the chance that the process will be killed.
+When your server becomes low on free memory and an OOM killer is invoked then desirable that lsphp processes are sacrificed to free up memory. To do this, you need to set oom_score_adj to a large value.
+For more information on setting value **oom_score_adj**, see the page [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html)
+
+---
+
+#### **lsapi_server_tweak** <Badge type="info" text="beta" />
+
+**Syntax**: lsapi_server_tweak [On/Off]
+
+**Default**: lsapi_server_tweak Off
+
+**Context**: httpd.conf
+
+**Description**: This option, when switched on, allows the use of `lsapi_set_env` and `lsapi_set_env_path` config options in the virtualhost context.
+
+---
+
+#### **Connection pool mode**
+
+#### **lsapi_with_connection_pool**
+
+**Syntax** : lsapi_with_connection_pool On/Off  
+**Default** : lsapi_with_connection_pool Off  
+**Context** : httpd.conf  
+
+**Description** :  
+On/Off - disable enable connect pool, default is Off.
+
+---
+
+#### **lsapi_backend_max_idle**
+
+**Syntax** : lsapi_backend_max_idle [number]  
+**Default** : lsapi_backend_max_idle 300  
+**Context** : httpd.conf  
+
+**Description** :  
+It is relevant only with lsapi_with_connection_pool option switched on. Controls how long a worker process will wait for a new request before it exits. 0 stands for infinite. Should be more or equal to 0. In the case of wrong format default value will be used. Optional, default value is 300.
+
+---
+
+#### **lsapi_backend_max_reqs**
+
+**Syntax** : lsapi_backend_max_reqs [number]  
+**Default** : lsapi_backend_max_reqs 10000  
+**Context** : httpd.conf  
+
+**Description** :  
+It is relevant only with lsapi_with_connection_pool option switched on. Controls how many requests a worker process will process before it exits. Should be more than 0. In the case of wrong format default value will be used. Optional, default value is 10000.
+
+---
+
+#### **CRIU support**
+
+#### **lsapi_criu**
+
+**Syntax** : lsapi_criu On/Off  
+**Default** : lsapi_criu Off  
+**Context** : httpd.conf  
+
+**Description** :  
+Enable/disable CRIU for lsphp freezing. Default: Off.
+
+---
+
+#### **lsapi_criu_socket_path**
+
+**Syntax** : lsapi_criu_socket_path [path]  
+**Default** : lsapi_criu_socket_path /var/run/criu/criu_service.socket  
+**Context** : httpd.conf  
+
+**Description** :  
+Set path to socket for communication with criu service. Default: /var/run/criu/criu_service.socket.
+
+---
+
+#### **lsapi_criu_imgs_dir_path**
+
+**Syntax** : lsapi_criu_imgs_dir_path [path]  
+**Default** : lsapi_criu_imgs_dir_path /var/mod_lsapi/  
+**Context** : httpd.conf  
+
+**Description** :  
+Path to folder where images of freezed PHP will be stored. Should be path. Default: /var/mod_lsapi/
+
+---
+
+#### **lsapi_backend_initial_start**
+
+**Syntax** : lsapi_backend_initial_start [number]  
+**Default** : lsapi_backend_initial_start 0  
+**Context** : httpd.conf  
+
+**Description** :  
+Number of requests to virtualhost, when lsphp will be freezed.  Default: 0 - means disable freezing.
+
+---
+
+#### **lsapi_criu_use_shm**
+
+**Syntax** : lsapi_criu_use_shm Off/Signals  
+**Default** : lsapi_criu_use_shm Off  
+**Context** : httpd.conf  
+
+**Description** :  
+Method of requests counting. Off - use shared memory. Signals - use signals from child processes to parent. Default: Off
+
+---
+
+#### **lsapi_backend_semtimedwait**
+
+**Syntax** : lsapi_backend_semtimedwait On/Off  
+**Default** : lsapi_backend_semtimedwait On  
+**Context** : httpd.conf  
+
+**Description** :  
+Use semaphore for checking when lsphp process will be started. Speed of start lsphp increased with semaphore using. This method avoid cycles of waiting for lsphp start. Default: On.
+
+----
+
+#### **lsapi_reset_criu_on_apache_restart**
+
+**Syntax** : lsapi_reset_criu_on_apache_restart On/Off  
+**Default** : lsapi_reset_criu_on_apache_restart Off  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+This option allows cleaning all CRIU images on Apache restart.  
+Setting lsapi_reset_criu_on_apache_restart to On means that on each Apache restart the CRIU images which are stored in directory specified by lsapi_criu_imgs_dir_path directive will be recreated on new request to domain(only after restart).  
+If this option set to Off then CRIU images won’t be recreated on Apache restart.
+
+----
+
+#### **lsapi_criu_debug**
+
+**Syntax**: lsapi_criu_debug On/Off  
+**Default**: lsapi_criu_debug Off  
+**Context**: httpd.conf, virtualhost  
+
+**Description** :  
+Enable/disable CRIU related debug logging.
+
+----
+
+#### **PHP configuration management**
+
+#### **lsapi_process_phpini**
+
+**Syntax** : lsapi_process_phpini On/Off  
+**Default** : lsapi_process_phpini Off  
+**Context** : httpd.conf, virtualhost, directory  
+
+**Description** :  
+Enable or disable phpini_* directive processing. Default value is Off.
+
+---
+
+#### **lsapi_phpini**
+
+**Syntax** : lsapi_phpini [path]  
+**Default** : lsapi_phpini -  
+**Context** : httpd.conf, virtualhost, htaccess  
+
+**Description** :  
+When lsapi_process_phpini option switched to Off, these values will be silently ignored. lsapi_phpini values with absolute filename of php.ini file can be inserted into .htaccess files in order to set custom php.ini which will override/complement settings from system default php.ini.
+
+---
+
+#### **lsapi_phprc**
+
+**Syntax** : lsapi_phprc [No | Env | Auto | DocRoot]  
+**Default** : lsapi_phprc No  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :
+The value of PHPRC env variable.  
+Special values are "No", "Env", "Auto" and "DocRoot".  
+Default value is "No" - without PHPRC at all.  
+"Auto" value stands for php.ini from DocumentRoot of the corresponding VirtualHost if it is present, or from user's home directory otherwise "DocRoot" value stands for php.ini from DocumentRoot of the corresponding VirtualHost.  
+"Env" value for using PHPRC from the environment, to set it with SetEnv config option, for example  
+lsapi_phprc No  
+lsapi_phprc Auto  
+lsapi_phprc DocRoot  
+lsapi_phprc Env  
+lsapi_phprc /etc/
+
+---
+
+#### **lsapi_tmpdir**
+
+**Syntax** : lsapi_tmpdir [path]  
+**Default** : lsapi_tmpdir /tmp  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+Set alternate request body temporary files directory.
+
+---
+
+#### **lsapi_enable_user_ini**
+
+**Syntax** : lsapi_enable_user_ini On/Off  
+**Default** : lsapi_enable_user_ini Off  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+Enable .user.ini files for backend. Same as suphp, php-fpm and fcgid mechanism of .user.ini. Default value is Off.
+
+---
+
+#### **lsapi_user_ini_homedir**
+
+**Syntax** : lsapi_user_ini_homedir On/Off  
+**Default** : lsapi_user_ini_homedir Off  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+If lsapi_enable_user_ini option is set to On, then enable/disable processing .user.ini file in home directory also. Default value is Off.
+
+---
+
+#### **lsapi_keep_http200**
+
+**Syntax** : lsapi_keep_http200 On/Off  
+**Default** : lsapi_keep_http200 Off  
+**Context** : httpd.conf, .htaccess  
+
+**Description** :  
+If set to On, always keep backend's response status as mod_php does. If set to Off, response status can be overridden by Apache as suphp does (in case of call via ErrorDocument directive).
+
+---
+
+#### **lsapi_mod_php_behaviour**
+
+**Syntax** : lsapi_mod_php_behaviour On/Off  
+**Default** : lsapi_mod_php_behaviour On  
+**Context** : httpd.conf, virtualhost, directory  
+
+**Description** :  
+On/Off - disable php_* directives, default On.
+
+---
+
+#### **php_value, php_admin_value, php_flag, php_admin_flag**
+
+**Syntax** : [php_value|php_admin_value|php_flag|php_admin_flag]  
+**Default** :  
+**Context** : httpd.conf, virtualhost, htaccess  
+
+**Description** :  
+mod_php emulation.
+
+---
+
+#### **Security**
+
+#### **lsapi_use_suexec**
+
+**Syntax** : lsapi_use_suexec On/Off  
+**Default** : lsapi_use_suexec On  
+**Context** : httpd.conf  
+
+**Description** :  
+Use or not suexec to a target user.
+
+---
+
+#### **lsapi_user_group**
+
+**Syntax** : lsapi_user_group [user_name] [group_name]  
+**Default** : -  
+**Context** : httpd.conf, virtualhost, directory  
+
+**Description** :  
+Set user & group for requests.  
+
+---
+
+#### **lsapi_uid_gid**
+
+**Syntax** : lsapi_uid_gid [uid] [gid]  
+**Default** : -  
+**Context** : httpd.conf, virtualhost, directory  
+
+**Description** :  
+Set user & group for request.
+
+---
+
+#### **lsapi_use_default_uid**
+
+**Syntax** : lsapi_use_default_uid On/Off  
+**Default** : lsapi_use_default_uid On  
+**Context** : httpd.conf  
+
+**Description** :  
+Use default Apache UID/GID if no uid/gid set. Values: On/Off. If Off, and no UID/GID set, error 503 will be returned.
+
+---
+
+#### **lsapi_target_perm**
+
+**Syntax** : lsapi_target_perm On/Off  
+**Default** : lsapi_target_perm Off  
+**Context** : httpd.conf  
+
+**Description** :  
+Check target PHP script permissions. If set to On, lsapi will check that script is owned by the same user, as user under which it is being executed. Return 503 error if they don't match. Default: Off.
+
+---
+
+#### **lsapi_paranoid**
+
+**Syntax** : lsapi_paranoid On/Off  
+**Default** : lsapi_paranoid Off  
+**Context** : httpd.conf  
+
+**Description** :  
+Check or not permissions of target php scripts. Optional, default value is Off.
+
+---
+
+#### **lsapi_check_document_root**
+
+**Syntax** : lsapi_check_document_root On/Off  
+**Default** : lsapi_check_document_root On  
+**Context** : httpd.conf  
+
+**Description** :  
+Check or not owner of DOCUMENT_ROOT. Optional, default value is On.
+
+---
+
+#### **lsapi_disable_forced_pwd_var**
+
+**Syntax** : lsapi_disable_forced_pwd_var On/Off  
+**Default** : lsapi_disable_forced_pwd_var Off  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+To disable addition of PWD variable. Default value is Off. If set to On, the PWD variable will not be added into a backend environment.
+
+---
+
+#### **lsapi_max_resend_buffer**
+
+**Syntax** : lsapi_max_resend_buffer [number]tmp  
+**Default** : lsapi_max_resend_buffer 200  
+**Context** : httpd.conf, virtualhost  
+
+**Description** :  
+Maximum buffer in KiB to resend for request that has a body (like POST request body).
+
+
+See also [Apache mod_lsapi PRO CLI tools](/cloudlinuxos/command-line_tools/#apache-mod-lsapi-pro).
+
+### Troubleshooting
+
+**Debugging mod_lsapi issues: error_log & sulsphp_log**
+
+
+mod_lsapi errors will be located in error_log and sulsphp_log.
+Note that errors can appear in both logs at the same time, and you might need to refer to both of them to solve the issue.
+
+See next table for more details:
+
+| |  | |
+|-|--|-|
+|**error_log** | **sulsphp_log** | **Solution**|
+|Could not connect to lsphp backend: connect to lsphp failed: 111 Connection refused. Increase memory limit for LVE ID |uid: (xxx/xxxxxxxx) gid: (xxx/xxxxxxxxxx) cmd: /usr/local/bin/lsphp  | Increase pmem or vmem limits for the user uid.|
+|Error sending request: ReceiveLSHeader: nothing to read from backend socket |No need to check this log.  | lsphp was killed. It can be due to apache restart or lfd. If you see this  message too often - change <span class="notranslate">  lsapi_terminate_backends_on_exit </span> to <span class="notranslate"> Off </span> in lsapi.conf or add to <span class="notranslate"> /etc/csf/csf.pignore </span> the following lines: <span class="notranslate"> exe:/usr/local/bin/lsphp </span> pexe:/opt/alt/php.*/usr/bin/lsphp|
+|Error sending request (lsphp is killed?): ReceiveLSHeader: nothing to read from backend socket, referer: http://XXXXXXX  Child process with pid: XXXXX was killed by signal: 11, core dump: 0 |No need to check this log.  | lsphp has crashed. Next slide will explain what to do (core dump creating). Also, check configuration options for apc and suhosin in php.ini. Once you have a core file generated at DocumentRoot contact [https://cloudlinux.zendesk.com/](https://cloudlinux.zendesk.com/hc/) so we can investigate the cause.|
+|Could not connect to lsphp backend: connect to lsphp failed: 111 Connection refused |file is writable by others: (///usr/local/bin/lsphp)  | Incorrect lsphp file permissions. For fixing: <span class="notranslate"> chmod 755 /usr/local/bin/lsphp </span> cagefsctl --force-update.|
+|Could not determine uid/gid for request |No need to check this log.  | UID/GID are not set in  virtualhost. Set <span class="notranslate"> lsapi_use_default_uid On </span> in lsapi.conf (it is <span class="notranslate"> On </span> by default since 0.1-98 version, this solution is for older versions).|
+|Own id for script file (/xxxx/xxx/xxxx) is xxx; should be xxxx |No need to check this log.  | File is not owned by the user PHP executed by. To overwrite (insecure), set <span class="notranslate"> lsapi_target_perm Off </span> in lsapi.conf. |
+|Could not connect to lsphp backend: connect to lsphp failed: 111 Connection refused |Entering jail error  | Check if СageFS enabled. Try running <span class="notranslate"> cagefsctl --remount-all. </span>|
+|Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: backend process reset connection: errno 104 (possibly memory limit for LVE ID XXXX too small) |uid: (xxx/xxxxxxxx)  gid: (xxx/xxxxxxxxxx)  cmd: /usr/local/bin/lsphp  | Increase PMEM limits for the user UID.|
+|Reached max children process limit: XX, extra: 0, current: XX, please increase LSAPI_CHILDREN.<br><br>Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: backend process reset connection: errno 104 (possibly memory limit for LVE ID XXXX too small) |uid: (xxx/xxxxxxxx)  gid: (xxx/xxxxxxxxxx)  cmd: /usr/local/bin/lsphp  | Increase value of <span class="notranslate"> lsapi_backend_children </span> for UID in vhost.conf or globally in lsapi.conf.|
+|fork() failed, please increase process limit: Cannot allocate memory<br><br>Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: backend process reset connection: errno 104 (possibly memory limit for LVE ID XXXX too small) |uid:(xxx); gid:(xxx); uid limit warning: EP should be < than NPROC, current EP: XX, NPROC: XX<br><br>uid: (xxx/xxxxxxxx) gid: (xxx/xxxxxxxxxx) cmd: /usr/local/bin/lsphp  | Increase NPROC limits for the UID. It should be greater than EP and <span class="notranslate"> lsapi_backend_children. </span>|
+|Child process with pid: XXXXXX was killed by signal: 9, core dump: 0<br><br>Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: nothing to read from backend socket (LVE ID XXXX |uid: (xxx/xxxxxxxx) gid: (xxx/xxxxxxxxxx) cmd: /usr/local/bin/lsphp  | These errors occurs when the amount of PMEM limits is incommensurable with the number of EP. Increase PMEM limits or decrease EP number for the user UID.|
+|totBytesRead (X) != bodyLen (X), referer: XXXX<br><br>Backend error on sending request(POST /XXXX HTTP/1.1); uri(/XXXX) content-length(X) (lsphp is killed?): ReceiveAckHdr: nothing to read from backend socket (LVE ID XXXX)<br><br>lsphp(XXXX): Child process with pid: XXXX was killed by signal: 15, core dump: 0 |No need to check this log.  | Increase LimitRequestBody (Apache) or/and SecRequestBodyNoFilesLimit (mod_security) configuration limits|
+|Connect to backend failed: connect to lsphp failed: 13 |No need to check this log.  | Check that `mod_ruid2` is disabled|
+|Connect to backend rejected on sending request(POST /XXXXX HTTP/1.1); uri(/XXXXX) |No need to check this log.|Set <span class="notranslate">`lsapi_disable_reject_mode On`</span> in your <span class="notranslate">`lsapi.conf`</span> and reload Apache. This way LSPHP daemon will put requests that cannot be served by LSPHP daemon right away into infinite queue, until one or more LSPHP daemon becomes free. Visit [Configuration Reference](./#configuration-references) for more info.|
+
+
+**Non-standard apache user**
+
+If apache runs under a username other than <span class="notranslate"> "apache" </span> or <span class="notranslate"> "nobody" </span> , you should rebuild sulsphp (where username is built in for security reasons) with corresponding username:
+<div class="notranslate">
+
+```
+yum install liblsapi liblsapi-devel   
+cd ~$ wget [https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz)  
+tar zxvf mod_lsapi.tar.gz  
+cd mod-lsapi-0.1-37  
+cmake -DHTTPD_USER=<new user name> .  
+make
+make install
+```
+</div>
+This will:<br>  
+- Install: <span class="notranslate"> /usr/lib/apache/mod_lsapi. </span> so (or to another correct httpd modules path)<br>
+- Install: <span class="notranslate"> /usr/sbin/sulsphp </span>
+
+:::tip Note
+Starting from 1.1-80 version mod_lsapi uses Apache user name specified in the Apache config file along with user name precompiled with HTTPD_USER definition. So there is no need to change HTTPD_USER definition anymore. 
+:::
+
+**lsphp started under user apache/nobody**
+
+Check if SuExecUserGroup specified for virtual hosts. This parameter is used by mod_lsapi for user identification.
+
+**Could not connect to lsphp backend: connect failed: 111 Connection refused**
+
+* Switch in lsapi.conf or <span class="notranslate"> mod_lsapi.conf </span> value to: <span class="notranslate"> lsapi_terminate_backends_on_exit Off </span>
+
+* Check if empty: <span class="notranslate"> cat /etc/cron.d/kill_orphaned_php-cron | grep lsphp </span> , then run:
+
+<div class="notranslate">
+
+```
+yum install lve-utils
+```
+</div>
+Then restart cron service.
+
+**Running PHP for users with UID < 99**
+
+If you need to run PHP using mod_lsapi using users with UID < 99, you would need to re-compile sulsphp:
+
+<div class="notranslate">
+
+```
+yum install liblsapi liblsapi-devel
+cd ~
+wget [https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz)
+tar zxvf mod_lsapi.tar.gz
+cd mod-lsapi-0.1-XX
+cmake -DUID_MIN=80 -DGID_MIN=80 .
+make
+make install
+```
+</div>
+will be installed<br>  
+- Installing: <span class="notranslate"> /usr/lib/apache/mod_lsapi.so </span> (or another httpd modules path)<br>
+- Installing: <span class="notranslate"> /usr/sbin/sulsphp </span>
+
+**Apache binary called not httpd (httpd.event, httpd.worker)**
+
+<div class="notranslate">
+
+```
+yum install liblsapi liblsapi-devel 
+cd ~
+wget https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz        
+tar zxvf mod_lsapi.tar.gz
+cd mod-lsapi-0.1-XX
+cmake -DPARENT_NAME="<apache binary name>".
+make
+make install
+```
+</div>
+Will be installed:<br>
+- Installing: <span class="notranslate"> /usr/lib/apache/mod_lsapi.so </span> (or another httpd modules path)<br>
+- Installing: <span class="notranslate"> /usr/sbin/sulsphp </span>
+
+**WHMCS Status page not accessible after installing CL and mod_lsapi (cPanel).**
+
+* add <span class="notranslate"> user: useradd </span> userstat
+* add to file (to the end of file before <span class="notranslate"> \</IfModule>) /usr/local/apache/conf/conf.d/lsapi.conf: <Directory /usr/local/apache/htdocs/>  </span>
+lsapi_user_group userstat userstat
+\</Directory>
+* service httpd restart
+
+This is safe solution for easyapache rebuilding and cpanel-mod-lsapi updating.
+
+**PHP page with Suhosin return 503 error**
+
+Make php.ini for suhosin as recommended below:
+<div class="notranslate">
+
+```
+[suhosin]
+suhosin.simulation = Off
+suhosin.mail.protect = 1
+suhosin.cookie.disallow_nul = Off
+suhosin.cookie.max_array_depth = 1000
+suhosin.cookie.max_array_index_length = 500
+suhosin.cookie.max_name_length = 500
+suhosin.cookie.max_totalname_length = 500
+suhosin.cookie.max_value_length = 200000
+suhosin.cookie.max_vars = 16384
+suhosin.get.disallow_nul = Off
+suhosin.get.max_array_depth = 1000
+suhosin.get.max_array_index_length = 500
+suhosin.get.max_name_length = 500
+suhosin.get.max_totalname_length = 500
+suhosin.get.max_value_length = 1000000
+suhosin.get.max_vars = 16384
+suhosin.post.disallow_nul = Off
+suhosin.post.max_array_depth = 1000
+suhosin.post.max_array_index_length = 500
+suhosin.post.max_name_length = 500
+suhosin.post.max_totalname_length = 500
+suhosin.post.max_value_length = 1000000
+suhosin.post.max_vars = 16384
+suhosin.request.disallow_nul = Off
+suhosin.request.max_array_depth = 1000
+suhosin.request.max_array_index_length = 500
+suhosin.request.max_totalname_length = 500
+suhosin.request.max_value_length = 1000000
+suhosin.request.max_vars = 16384
+suhosin.request.max_varname_length = 524288
+suhosin.upload.max_uploads = 300
+suhosin.upload.disallow_elf = Off
+suhosin.session.cryptua = Off
+suhosin.session.encrypt = Off
+suhosin.session.max_id_length = 1024
+suhosin.executor.allow_symlink = Off
+suhosin.executor.disable_eval = Off
+suhosin.executor.disable_emodifier = Off
+suhosin.executor.include.max_traversal = 8
+```
+</div>
+
+**PHP page with APC return 503 error**
+
+Make php.ini for APC as recommended below:
+<div class="notranslate">
+
+```
+[apc]...apc.shm_segments=1apc.shm_size=32...
+```
+</div>
+shared memory should be not less than 32MB
+
+**Messages appearing in error_log: Child process with pid: XXXXX was killed by signal: 11, core dump: 0**
+
+This means that lsphp was crashed. The solution is:
+
+* Check if apc for user enabled. Tune its options as described in previous slide.
+* Check if suhosin is enabled for user. Tune its options as described in this article.
+* If previous items do not help, contact us at [https://helpdesk.cloudlinux.com/](https://helpdesk.cloudlinux.com/)
+
+**How to get lsphp core dump on crash**
+
+* Configure mod_lsapi to allow lsphp to generate core dumps. In mod_lsapi.conf:
+
+<div class="notranslate">
+
+```
+lsapi_backend_coredump On
+```
+</div>
+
+* Enable core file generation in sysctl:
+
+<div class="notranslate">
+
+```
+sysctl -w ‘kernel.core_uses_pid=1’
+sysctl -w ‘kernel.core_pattern=core.%p’
+```
+</div>
+
+* Configure system to change max size of core files. In <span class="notranslate">/etc/security/limits.conf</span> add:
+
+<div class="notranslate">
+
+```
+user1 soft core unlimited
+user1 hard core unlimited
+```
+</div>
+where <span class="notranslate">user1</span> is the username for which lsphp crashes.
+
+* If <span class="notranslate">/etc/profile.d/limits.sh</span> exists, look up for the following lines:
+
+<div class="notranslate">
+
+```
+if [ "$LIMITUSER" != "root" ]; then
+ulimit -n 100 -u 35 -m 200000 -d 200000 -s 8192 -c 200000 -v unlimited 2>/dev/null
+```
+</div>
+Substring <span class="notranslate">“-c 200000”</span> must be replaced with <span class="notranslate">“-c unlimited”</span> .
+
+* Add line into <span class="notranslate">ulimit -c unlimited into apachectl</span> script just after another invokes of the <span class="notranslate">ulimit</span> command.
+
+* Do cold restart of Apache with the command like this:
+
+<div class="notranslate">
+
+```
+service httpd stop; sleep 2; killall lsphp; service httpd start
+```
+</div>
+
+* You can make sure that ulimit for lsphp is changed to unlimited successfully with the following command:
+
+<div class="notranslate">
+
+```
+cat /proc/PID/limits | grep ‘Max core file size’
+```
+</div>
+
+where PID is a pid of any lsphp process. <span class="notranslate">ps -u user1 | grep lsphp </span>
+
+* Core dump of lsphp will be created in the DocumentRoot of the corresponding virtual server.
+On cPanel server it should map to
+
+**mod_lsapi is not included in output of httpd -M after installation and setup command for cPanel EasyApache 3**
+
+1. Check if the file <span class="notranslate"> _/usr/local/apache/conf/conf.d/lsapi.conf_ </span> exists and not empty;
+
+2. Check if output of the command
+
+<div class="notranslate">
+
+```
+cat /usr/local/apache/conf/httpd.conf | grep "/usr/local/apache/conf/conf.d/\*\.conf"
+```
+</div>
+is not empty.
+
+If it is empty:
+
+1. Add to <span class="notranslate"> "include" </span> section of <span class="notranslate"> _/var/cpanel/conf/apache/main_ </span> string:
+
+<span class="notranslate"> </span>
+```
+"include": '"/usr/local/apache/conf/conf.d/*.conf"'
+ "include":
+ "directive": 'include'
+ "items":
+ ...
+ -
+ "include": '"/usr/local/apache/conf/conf.d/*.conf"' 
+ "listen":
+```
+
+2. Do:
+
+<div class="notranslate">
+
+```
+mkdir -p /usr/local/apache/conf/conf.d/;                                                                                 
+cp /usr/share/lve/modlscapi/confs/lsapi.conf /usr/local/apache/conf/conf.d/lsapi.conf
+```
+</div>
+
+3. Call:
+
+<div class="notranslate">
+
+```
+/scripts/rebuildhttpdconf/scripts/restartsrv_httpd
+```
+</div>
+
+See also mod_lsapi PRO FAQ [here](https://cloudlinux.zendesk.com/hc/articles/360025828414-Apache-mod-lsapi-PRO-FAQ).
+
+### CRIU Support
+
+
+:::tip Note
+<span class="notranslate"> CloudLinux OS </span> 7, <span class="notranslate"> CloudLinux OS </span> 7 Hybrid, and <span class="notranslate"> CloudLinux OS </span> 8 only
+:::
+
+CRIU is <span class="notranslate"> _Checkpoint/Restore In Userspace_ </span> , (pronounced <span class="notranslate"> kree-oo </span> ), is a software tool for Linux operating system. Using this tool, you can freeze a running application (or part of it) and checkpoint it as a collection of files on disk. You can then use the files to restore the application and run it exactly as it was during the time of freeze (more information on the link [https://criu.org/Main_Page](https://criu.org/Main_Page) ).
+
+mod_lsapi-1.1-1 is the first beta version with freezing PHP implemented. mod_lsapi now supports the following parameters:
+
+| |  |  | |
+|-|--|--|-|
+|**Option name** | **Description** | **Values** | **Default**|
+|lsapi_criu | Enable/disable CRIU for lsphp freezing. | <span class="notranslate"> On/Off </span> | <span class="notranslate"> Off </span>|
+|lsapi_criu_socket_path | Set path to socket for communication with criu service. | [path to socket] | <span class="notranslate"> /var/run/criu/criu_service.socket </span>|
+|lsapi_backend_semtimedwait | Enable/disable flag for notification about lsphp started. This method avoid cycles of waiting for lsphp start. | <span class="notranslate"> On/Off </span> | <span class="notranslate"> On </span>|
+|lsapi_backend_initial_start | Number of request when lsphp should be freezed. | [number] 0 - no freezing | 0|
+|lsapi_criu_use_shm | Method of requests counting. <span class="notranslate"> Off </span> - use shared memory. <span class="notranslate"> Signals </span> - use signals from child processes to parent. | <span class="notranslate"> Off/Signals </span> | <span class="notranslate"> Off </span>|
+|lsapi_criu_imgs_dir_path | Path to folder where imgs of freezed PHP will be stored. | [path] | <span class="notranslate"> /var/mod_lsapi/ </span>|
+|lsapi_criu_debug | Enable/Disable CRIU related debug logging. | <span class="notranslate"> On/Off </span> | <span class="notranslate"> Off </span>|
+
+Example:
+<div class="notranslate">
+
+```
+lsapi_criu On
+lsapi_criu_socket_path /var/run/criu/criu_service.socket
+lsapi_backend_semtimedwait On
+lsapi_backend_initial_start 15
+lsapi_criu_use_shm Off
+lsapi_criu_debug Off
+```
+</div>
+
+When Apache module mod_lsapi detects CRIU enabled (lsapi_criu On) it prepares a directory for images (on the first request of virtualhost) to store ( <span class="notranslate"> lsapi_criu_imgs_dir_path /var/mod_lsapi/[dir_name] </span> ), and starts lsphp process. Lsphp increases counter ( <span class="notranslate"> lsapi_criu_use_shm Off|Signals </span> ) via shared memory or signals, when counter reaches limit ( <span class="notranslate"> lsapi_backend_initial_start 15 </span> ), lsphp sends the request to CRIU for freezing. CRIU service makes images of requested processes. Lsphp will not be frozen if counter has not reached the limit. The next time when lsphp will be stopped, it will be unfrozen from the images.
+
+The images of the processes will be saved even if Apache is restarted. But all images will be deleted after server restart by default configuration. This can be modified by setting the new path <span class="notranslate"> lsapi_criu_imgs_dir_path </span> .
+
+:::warning Important!
+If php.ini or configuration file from php.d is changed, the images must be deleted manually.
+:::
+
+:::tip Note 
+CRIU (version lower than criu-lve-3.6-1) can't correctly freeze <span class="notranslate"> lsphp </span> with <span class="notranslate"> PrivateTmp </span> enabled. For correct work, <span class="notranslate"> PrivateTmp </span> must be disabled in <span class="notranslate"> httpd.service file </span> . 
+:::
+
+To disable it, copy <span class="notranslate"> _httpd.service_ </span> to <span class="notranslate"> _/etc/systemd/system_ </span> and change there <span class="notranslate"> PrivateTmp: 
+  </span>
+<div class="notranslate">
+
+```
+cat httpd.service  
+............ 
+
+[Unit]
+Description=Apache web server managed by cPanel Easy
+ApacheConditionPathExists=!/etc/httpddisable
+ConditionPathExists=!/etc/apachedisable
+ConditionPathExists=!/etc/httpdisable
+
+[Service]Type=forking
+ExecStart=/usr/local/cpanel/scripts/restartsrv_httpd --no-verbose
+PIDFile=/var/run/apache2/httpd.pid
+PrivateTmp=false 
+
+[Install]
+WantedBy=multi-user.target 
+```
+</div>
+Or it would be technically better to provide a small override of service file rather than copying the whole new version in <span class="notranslate"> /etc/systemd/system </span> 
+
+[http://www.freedesktop.org/software/systemd/man/systemd.unit.html](http://www.freedesktop.org/software/systemd/man/systemd.unit.html)
+
+<div class="notranslate">
+
+```
+mkdir /etc/systemd/system/httpd.service.d
+echo "[Service]" >  /etc/systemd/system/httpd.service.d/nopt.conf
+echo "PrivateTmp=false" >> /etc/systemd/system/httpd.service.d/nopt.conf
+```
+</div>
+
+and
+
+<div class="notranslate">
+
+```
+systemctl daemon-reload
+```
+</div>
+
+#### CRIU Installation
+
+Criu is installed with dependency to mod_lsapi package. To activate it:
+
+1. Enable service and start it:
+
+<div class="notranslate">
+
+```
+systemctl enable criu
+systemctl start criu
+```
+</div>
+
+2. Edit lsapi.conf file, turn CRIU On and set some defaults:
+
+<div class="notranslate">
+
+```
+lsapi_criu On
+lsapi_criu_socket_path /var/run/criu/criu_service.socket
+lsapi_backend_semtimedwait On
+lsapi_backend_initial_start 15
+lsapi_criu_use_shm Off
+```
+</div>
+
+3. Restart apache:
+
+<div class="notranslate">
+
+```
+service httpd restart
+```
+</div>
+
+#### CRIU Image Cleanup
+
+1. An option added to the Apache configuration for cleaning all the images earlier saved by CRIU.
+
+| |  |  | |
+|-|--|--|-|
+|**Option name** | **Description** | **Value** | **Default**|
+|<span class="notranslate">lsapi_reset_criu_on_apache_restart</span> | This option allows cleaning all CRIU images on Apache restart. | <span class="notranslate"> On/Off </span> | <span class="notranslate"> Off </span>|
+
+On the next restart of Apache all of the images will be cleaned.
+
+It can be enabled by writing <span class="notranslate">lsapi_reset_criu_on_apache_restart On </span> in _lsapi.conf_ (Virtual Host and .htaccess do not allow to use this option).
+
+Note that this option works only if <span class="notranslate">lsapi_terminate_backends_on_exit</span> is <span class="notranslate">  On  </span> (default value is <span class="notranslate"> On </span> , it is set in _lsapi.conf_ too).
+
+2. If you need to clean CRIU images for one user you can simply add file to the user's directory with CRIU images (default <span class="notranslate"> _/var/mod_lsapi/lsapi_ * _criu_imgs_ </span> ). On the next restart of lsphp the images will be cleaned.
+
+3. Global reset flag for cleaning all earlier saved images by CRIU.
+
+Current mod_lsapi allows cleaning all images only with one flag file.
+
+Create <span class="notranslate"> /usr/share/criu/mod_lsapi/lsphp.criu.reset </span> file. Also don't forget to set such permissions <span class="notranslate"> [nobody:nobody] </span> (or <span class="notranslate"> [apache:apache] </span> for non cPanel) and access mode [700] to the <span class="notranslate"> /usr/share/criu/mod_lsapi </span> directory.
+
+Steps to do :
+
+<div class="notranslate">
+
+```
+mkdir /usr/share/criumkdir /usr/share/criu/mod_lsapi
+chown nobody:nobody /usr/share/criu/mod_lsapi
+touch /usr/share/criu/mod_lsapi/lsphp.criu.reset
+```
+</div>
+
+On the next requests to all virtual hosts images will be recreated (deleted first and created again later - it depends on lsapi_backend_initial_start value).
+
+4. Аdded possibility to clean CRIU images from user space.
+
+If a user needs to clean CRIU images for lsphp, he should create a file: <span class="notranslate"> ~/mod_lsapi_reset_me_[vhost_name] </span>. Where <span class="notranslate"> [vhost_name] </span> is a ServerName from the VirtualHost block in the configuration file. On the next restart of lsphp, the images will be cleaned.
+
+_Example:_
+
+<div class="notranslate">
+
+```
+cd; touch mod_lsapi_reset_me_criu.test.com
+```
+</div>
+
+where _vhost.conf_ contains:  
+<span class="notranslate">`ServerName criu.test.com`</span>
+
+This mode is enabled by default and creates a separate lsphp process for each virtual host.
+
+<span class="notranslate">`mod_lsapi_reset_me[vhost_name]`</span> flag will not work for a user when lsapi_per_user option is <span class="notranslate">`On`</span>.
+
+5. There is (default <span class="notranslate">`off`</span>) option in mod_lsapi that creates only one lsphp process for a user, regardless of the number of his virtual hosts. We don't recommend to use this option with CRIU, but if you use it, make sure that your virtual hosts (under the same user) have the same environment configurations. If they are not the same, this may cause undesirable lsphp process operation.
+
+
+## NGINX LSAPI Module
+
+### General information and requirements
+
+The NGINX LSAPI Module is an extension for the [NGINX](https://www.nginx.com/) web server, designed to seamlessly integrate the lightweight, high-performance [LiteSpeed](https://www.litespeedtech.com/open-source/litespeed-sapi) PHP processing capability directly within the NGINX architecture. This module enables NGINX to efficiently handle PHP requests using the LiteSpeed SAPI, offering an alternative to traditional PHP-FPM or mod_php approaches. It aims to leverage the speed and flexibility of LiteSpeed's PHP processing in environments where the NGINX is the preferred web server.
+
+**How does it work?**
+
+1. NGINX passes handling for PHP request to NGINX LSAPI Module;
+2. NGINX LSAPI Module uses liblsapi to transfer request to the lsphp parent process;
+3. lsphp forks the child process, which executes the request and returns data to NGINX LSAPI Module;
+
+* If there are no requests for lsapi_backend_pgrp_max_idle seconds, lsphp parent process will be terminated;
+* If there are no lsphp child processes available when a new request comes, the new lsphp child process will be created;
+* lsphp children process concurrent requests simultaneously;
+* The maximum number of simultaneously running lsphp child processes can be set by the lsapi_backend_children directive.
+
+**What is lsphp?**
+
+lsphp - PHP + LSAPI. What is PHP LSAPI? [LiteSpeed Server Application Programming Interface](https://www.litespeedtech.com/open-source/litespeed-sapi/php) 
+(LSAPI) is designed specifically for seamless, optimized communication between the LiteSpeed Web Server and third-party web applications. 
+With NGINX LSAPI Module, this protocol is now available for NGINX.
+
+Using NGINX LSAPI Module, we have seen higher performance than NGINX with fastcgi+php-fpm, 
+easier installation than php-fpm and easier integration with any control panel. 
+NGINX LSAPI Module means faster and more stable dynamic web pages.
+
+**Optional requirements**
+
+* Configured LVE containers for end-users ( **recommended - control over resource consumption** );
+* Enabled CageFS for end-users ( **recommended - higher security level** );
+* PHP Selector with alt-php - an easy way to select different PHP versions for each end-user provided by CloudLinux OS;
+* ea-php - alternative to alt-php provided by cPanel (for cPanel only).
+
+### Installation
+
+NGINX LSAPI Module can be installed through YUM package manager. However, the installation process varies depending on the control panel.
+
+Select the control panel you are using:
+* [cPanel](./#installing-on-cpanel-servers-with-ea-nginx)
+* No control panel - In progress
+* Plesk - In progress
+* DirectAdmin - In progreess
+
+#### Installing on cPanel servers with ea-nginx
+
+Install NGINX LSAPI Module and related packages through YUM package manager as follows:
+<div class="notranslate">
+
+```
+yum install ea-nginx-mod-lsapi --enablerepo=cl-ea4-testing
+```
+</div>
+Now, when the module is installed, restart NGINX to ensure that NGINX LSAPI Module is enabled:
+<div class="notranslate">
+
+```
+service nginx restart
+```
+</div>
+
+Use Apache2MaxWebserver to set up NGINX hosting on the server and automatically convert .htaccess files into corresponding NGINX configuration.
+For more details, please visit [Apache2MaxWebserver](/cloudlinuxos/apache2max_webserver/#apache2nginx).
+
+
+### Uninstalling
+
+
+The uninstallation process of the NGINX LSAPI Module also varies depending on your control panel.
+
+Select the control panel you are using:
+* [cPanel](./#uninstallation-procedure-for-cpanel-servers-with-ea-nginx)
+* No control panel - In progress
+* Plesk - In progress
+* DirectAdmin - In progreess
+
+
+#### Uninstallation procedure for cPanel servers with ea-nginx
+
+Remove packages with YUM package manager:
+<div class="notranslate">
+
+```
+yum erase ea-nginx-mod-lsapi
+```
+</div>
+Restart NGINX afterwards:
+<div class="notranslate">
+
+```
+service nginx restart
+```
+</div>
+
+To remove NGINX from your system and restore Apache configuration, please visit [Apache2MaxWebserver](/cloudlinuxos/apache2max_webserver/#switch-back-to-apache-hosting).
+
+#### Uninstallation procedure for servers with no control panel
+
+Remove packages with YUM package manager:
+<div class="notranslate">
+
+```
+yum erase ea-nginx-mod-lsapi
+rm [path to nginx-mod-lsapi.conf]
+```
+</div>
+Restart NGINX to restore the standard PHP handler:
+<div class="notranslate">
+
+```
+service nginx restart
+```
+</div>
+
+### Configuration
+
+* [Configuration references](./#configuration-references-1)
+
+:::tip Note
+If using Apache2MaxWebserver, no configuration is required for NGINX LSAPI Module. The module is automatically configured to process PHP requests.
+:::
+
+In order to get NGINX LSAPI Module to work properly, you'll need to configure NGINX. To do this, we use a separate _lsapi.conf_ file.
+
+First of all, you need to make sure that the appropriate LSAPI module configuration exists and contains the correct content.
+<div class="notranslate">
+
+```
+[root@nginx]# cat /usr/share/nginx/modules/ngx-mod-lsapi.conf
+load_module "/usr/lib64/nginx/modules/ngx_http_lsapi_module.so";
+```
+</div>
+
+In case of ea-nginx the file can be: `/etc/nginx/conf.d/modules/ea-nginx-lsapi-module.conf`
+
+Then make sure that the loading of dynamic modules is not omitted in your main nginx configuration (_nginx.conf_).
+
+<div class="notranslate">
+
+```
+include /usr/share/nginx/modules/*.conf;
+```
+</div>
+In order to enable the module to process requests, you need to add the lsapi_engine directive to your _lsapi.conf_ file as follows:
+<div class="notranslate">
+
+```
+lsapi_engine on;
+```
+</div>
+
+The lsapi_engine parameter is supported in global, server, and local configurations. Therefore, it can be enabled/disabled globally, only for the server, and also only for a specific location.
+
+
+The LSPHP handler can be enabled using the lsapi_handler directive. The lsapi_handler directive tells NGINX that the files with .php extension should be handled by NGINX LSAPI Module with the selected handler.
+<div class="notranslate">
+
+```
+ lsapi_handler application/x-httpd-lsphp;
+```
+</div>
+
+If no handler is explicitly set for a request, the specified content type will be used as the handler name, therefore, please disable php.conf or any other PHP handler for using NGINX LSAPI Module. In this example application/x-httpd-lsphp is a default handler by which NGINX LSAPI Module processes requests with the lsphp binary from _/usr/local/bin/_ directory.
+
+The final lsapi.conf configuration might look like this:
+<div class="notranslate">
+
+```
+server {
+	listen          80;
+	server_name     testlsapi.com;
+	root            /home/testlsapi/public_html;
+
+	location ~ \.php$ {
+		lsapi_engine    on;
+		lsapi_handler    application/x-httpd-lsphp;
+		lsapi_user       testlsapi;
+	}
+
+	error_page  500 502 503 504  /50x.html;
+	location = /50x.html {
+		root   html;
+	}
+}
+```
+</div>
+
+In order for NGINX LSAPI Module to work lsapi.conf should be loaded to NGINX through [Include](https://nginx.org/en/docs/ngx_core_module.html#include) directive.
+
+For a more detailed description of the module directives please visit the [Configuration reference](./#configuration-references-2).  
+For the installation guide for NGINX LSAPI Module please visit [Installation](./#installation-3).
+
+#### Configuration references
+
+
+[NGINX LSAPI Module customization](./#nginx-lsapi-module-customization):
+* [lsapi_engine](./#lsapi-enabled)  
+* [lsapi_sock_path](./#lsapi-sock-path)  
+* [lsapi_per_user](./#lsapi-per-user-1)  
+* [lsapi_disable_reject_mode](./#lsapi-disable-reject-mode-1)  
+* [lsapi_terminate_backends_on_exit](./#lsapi-terminate-backends-on-exit)  
+* [lsapi_avoid_zombies](./#lsapi-avoid-zombies)  
+
+[Tuning LSPHP backend](./#tuning-lsphp-backend-1):
+* [lsapi_set_env](./#lsapi-set-env-1)
+* [lsapi_set_env_path](./#lsapi-set-env-path-1)
+* [lsapi_backend_children](./#lsapi-backend-children-1)
+* [lsapi_backend_connect_tries](./#lsapi-backend-connect-tries-1)
+* [lsapi_backend_max_process_time](./#lsapi-backend-max-process-time-1)
+* [lsapi_backend_pgrp_max_idle](./#lsapi-backend-pgrp-max-idle-1)
+* [lsapi_backend_use_own_log](./#lsapi-backend-use-own-log-1)
+* [lsapi_backend_common_own_log](./#lsapi-backend-common-own-log-1)
+* [lsapi_backend_coredump](./#lsapi-backend-coredump-1)
+* [lsapi_backend_accept_notify](./#lsapi-backend-accept-notify-1)
+* [lsapi_backend_pgrp_max_reqs](./#lsapi-backend-pgrp-max-reqs-1)
+* [lsapi_backend_pgrp_max_crashes](./#lsapi-backend-pgrp-max-crashes-1)
+* [lsapi_backend_loglevel_info](./#lsapi-backend-loglevel-info-1)
+* [lsapi_backend_oom_score_adj](./#lsapi-backend-oom-score-adj-1)
+ 
+[Connection pool mode](./#connection-pool-mode-1):
+* [lsapi_with_connection_pool](./#lsapi-with-connection-pool)
+* [lsapi_pool_size](./#lsapi-pool-size)
+* [lsapi_backend_max_idle](./#lsapi-backend-max-idle-1)
+* [lsapi_backend_max_reqs](./#lsapi-backend-max-reqs-1)
+
+[CRIU support](./#criu-support-2):
+* [lsapi_criu](./#lsapi-criu)
+* [lsapi_criu_socket_path](./#lsapi-criu-socket-path)
+* [lsapi_criu_imgs_dir_path](./#lsapi-criu-imgs-dir-path)
+* [lsapi_backend_initial_start](./#lsapi-backend-initial-start-1)
+* [lsapi_criu_use_shm](./#lsapi-criu-use-shm-1)
+* [lsapi_reset_criu_on_restart](./#lsapi-reset-criu-on-restart)
+* [lsapi_criu_debug](./#lsapi-criu-debug-1)
+
+[PHP configuration management](./#php-configuration-management-1):
+* [lsapi_process_phpini](./#lsapi-process-phpini-1)
+* [lsapi_phpini](./#lsapi-phpini-1)
+* [lsapi_phprc](./#lsapi-phprc-1)
+* [lsapi_tmpdir](./#lsapi-tmpdir-1)
+* [lsapi_enable_user_ini](./#lsapi-enable-user-ini-1)
+* [lsapi_user_ini_homedir](./#lsapi-user-ini-homedir-1)
+* [lsapi_mod_php_behaviour](./#lsapi-mod-php-behaviour-1)
+* [lsapi_param](./#lsapi-param)
+
+[Security](./#security-1):
+* [lsapi_use_suexec](./#lsapi-use-suexec-1)
+* [lsapi_user](./#lsapi-user)
+* [lsapi_uid_gid](./#lsapi-uid-gid-1)
+* [lsapi_paranoid](./#lsapi-paranoid-1)
+* [lsapi_check_document_root](./#lsapi-check-document-root-1)
+
+#### **NGINX LSAPI Module customization**
+
+#### **lsapi_engine**
+
+**Syntax** : lsapi_engine [on/off]  
+**Example** : lsapi_engine on;  
+**Default** : off  
+**Context** : main config, server config, local config.  
+**Type** : Mandatory  
+
+**Description** :  
+Enable/disable LSAPI module for nginx, server, or local directory.  
+
+---
+
+#### **lsapi_sock_path**
+
+**Syntax** : lsapi_sock_path [path]
+**Example** : lsapi_sock_path /var/ngx_lsapi;  
+**Default** : `/var/ngx_lsapi`  
+**Context** : main config
+**Type** : Optional  
+
+**Description:**  
+Path to backend lsphp sockets. By default `/var/ngx_lsapi`
+
+---
+
+#### **lsapi_per_user**
+
+**Syntax** : lsapi_per_user [on/off]  
+**Example** : lsapi_per_user off;  
+**Default** : off  
+**Context** : server config, location config
+**Type** : Optional  
+
+**Description** :  
+Invoke the master lsPHP process not per VirtualHost, but per account.
+When On, invoke backend not per VirtualHost but per account.
+Default value is off.
+It is possible, for example, to set it to On in global config file and to Off in config files of some particular Virtual Hosts.
+Then these Virtual Hosts will have a dedicated backend process, while others will have backend processes shared on account basis.
+
+---
+
+#### **lsapi_disable_reject_mode**  
+
+**Syntax** : lsapi_disable_reject_mode [on/off]  
+**Example** : lsapi_disable_reject_mode on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+If a new HTTP request is coming to LSPHP daemon when all LSPHP workers are still busy, it can process this situation in two different ways. In REJECT mode LSPHP daemon will reject such requests immediately. Otherwise, in legacy mode, LSPHP daemon will put this request into an infinite queue, until one of LSPHP daemons becomes free. When a HTTP request is rejected in REJECT mode, mod_lsapi will write the following message into the NGINX error.log: `Connect to backend rejected`, and the client will receive a 507 HTTP response. By default, the LSPHP daemon in CloudLinux OS uses the REJECT mode. It can be switched off with this option.
+
+---
+
+#### **lsapi_terminate_backends_on_exit**  
+
+**Syntax** : lsapi_terminate_backends_on_exit [on/off]  
+**Example** : lsapi_terminate_backends_on_exit on;  
+**Default** : on  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+nginx.conf, on - stop lsphp services on nginx restart, off - leave live started lsphp services on nginx restart (for php+opcache). The lsphp will not restart, even if NGINX gets restarted.
+
+---
+
+#### **lsapi_avoid_zombies**  
+
+**Syntax** : lsapi_avoid_zombies [on/off]  
+**Example** : lsapi_avoid_zombies on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Enable or disable a mechanism to avoid the creation of zombie processes by lsphp. The default value is Off.  
+
+---
+
+#### **lsapi_starter_sock**  
+
+**Syntax** : lsapi_starter_sock [path]  
+**Example** : lsapi_starter_sock /var/run/lsapi-starter.sock;  
+**Default** : /var/ngx_lsapi/starter.sock  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+This parameter configures the socket address for the lsphp backend spawner process.  
+
+---
+
+#### **lsapi_starter_log**  
+
+**Syntax** : lsapi_starter_log [path]  
+**Example** : lsapi_starter_log /var/log/lsapi-starter.log;  
+**Default** : -  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+This parameter configures the log file address for the lsphp backend spawner process.  
+
+---
+
+#### **lsapi_log**  
+
+**Syntax** : lsapi_log [path]  
+**Example** : lsapi_log /var/log/lsapi.log;  
+**Default** : -  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+This parameter configures the log file address for the NGINX LSAPI module context.  
+**Note** :  
+This parameter only works if the NGINX LSAPI module is built with the NGX_LSAPI_CUSTOM_LOGGER flag. Otherwise, the NGINX logger will be used for LSAPI module logging.
+
+---
+
+#### **Tuning LSPHP backend**
+
+#### **lsapi_set_env**  
+
+**Syntax** : lsapi_set_env [var] [value]  
+**Example**: lsapi_set_env TMP "/var/lsphp-tmp";  
+**Default** : -  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+Pass an environment variable to lsphp. By default the lsphp environment has only TEMP, TMP and PATH variables set.  
+Note: PATH env var default "/usr/local/bin:/usr/bin:/bin" cannot be changed because of security reasons.  
+
+---
+
+#### **lsapi_set_env_path**  
+
+**Syntax** : lsapi_set_env_path [path(s)]  
+**Default** : lsapi_set_env_path /usr/local/bin:/usr/bin:/bin  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+Change PATH variable in the environment of lsphp processes. Default path /usr/local/bin:/usr/bin:/bin will be used if not set.  
+
+---
+
+#### **lsapi_backend_children**  
+
+**Syntax** : lsapi_backend_children [number]  
+**Example** : lsapi_backend_children 300;  
+**Default** : 120  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Sets the maximum number of simultaneously running child backend processes. Optional - a default directive value is equal to 120.
+
+---
+
+#### **lsapi_backend_connect_tries**
+
+**Syntax** : lsapi_backend_connect_tries [number]  
+**Example** : lsapi_backend_connect_tries 20;  
+**Default** : 10  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Number of retries for connections to the lsPHP daemon.
+
+---
+
+#### **lsapi_backend_max_process_time**  
+
+**Syntax** : lsapi_backend_max_process_time [number]  
+**Example** : lsapi_backend_max_process_time 300;  
+**Default** : 300  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Sets the env variable LSAPI_MAX_PROCESS_TIME. Optional - default value is 300. Timeout to kill runaway processes.
+
+---
+
+#### **lsapi_backend_common_own_log**  
+
+**Syntax** : lsapi_backend_common_own_log [on/off]  
+**Example** : lsapi_backend_common_own_log on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+It will be used only when lsapi_backend_use_own_log is set to On. On-backend processes of the all virtual hosts will share the common log file. Off - every virtual host will have its own backend log file.
+
+---
+
+#### **lsapi_backend_use_own_log**  
+
+**Syntax** : lsapi_backend_use_own_log [on/off]  
+**Example** : lsapi_backend_use_own_log on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Redirecting log output of backend processes from NGINX error.log to dedicated log file or files, depending on the value of the lsapi_backend_common_own_log option. If off, use the NGINX error log file for backend output, or a separate file otherwise.
+
+---
+
+#### **lsapi_backend_pgrp_max_crashes**  
+
+**Syntax** : lsapi_backend_pgrp_max_crashes [number]  
+**Example** : lsapi_backend_pgrp_max_crashes 300;  
+**Default** : 300  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Controls how many crashes of its worker processes a control process will detect before it exits. Should be more or equal to 0. In the case of a wrong format, a default value will be used. Optional, the default value is 0, which means an unlimited number of crashes.
+
+---
+
+#### **lsapi_backend_pgrp_max_idle**  
+
+**Syntax** : lsapi_backend_pgrp_max_idle [number]  
+**Example** : lsapi_backend_pgrp_max_idle 30;  
+**Default** : 30  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Sets env variable LSAPI_PGRP_MAX_IDLE, in seconds. Controls how long a control process will wait for a new request before it exits. 0 stands for infinite. Optional, default value is 30. Should be more or equal to 0.
+
+---
+
+#### **lsapi_backend_pgrp_max_reqs**  
+
+**Syntax** : lsapi_backend_pgrp_max_reqs [number]  
+**Example** : lsapi_backend_pgrp_max_reqs 0;  
+**Default** : 0  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Controls how many requests a control process will process before it exits. Should be more or equal to 0. In the case of a wrong format, the default value will be used. Optional, the default value is 0, which means an unlimited number of requests.
+
+---
+
+#### **lsapi_backend_loglevel_info**  
+
+**Syntax**: lsapi_backend_loglevel_info [on/off]
+**Example**: lsapi_backend_loglevel_info on;
+**Example**: off
+**Context**: server config, location config
+**Type** : Optional  
+
+**Description**:  
+Controls which log level will be used to write PHP warnings and notices into NGINX’s error.log. Optional, the default value is `off`. In that case, the `warn` log level will be used. Otherwise, with `on` value, the `info` log level will be used.
+
+---
+
+#### **lsapi_backend_oom_score_adj**  
+
+**Syntax** : lsapi_backend_oom_score_adj [number]  
+**Example** : lsapi_backend_oom_score_adj 100;  
+**Default** : 0  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+This option can apply oom_score_adj values for PHP processes created by mod_lsapi. Value is an integer in the -1000 to 1000 range. The lower the value, the lower the chance that the process will be killed. When your server becomes low on free memory and an OOM killer is invoked, then it may be desirable for lsphp processes to be sacrificed to free up memory. To do this, you need to set oom_score_adj to a large value. For more information on setting a proper value for oom_score_adj, see the page https://man7.org/linux/man-pages/man5/proc.5.html
+
+---
+
+#### **lsapi_dump_debug_info**  
+
+**Syntax** : lsapi_dump_debug_info [on/off]  
+**Example** : lsapi_dump_debug_info on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Enable or not lsphp backend debug information dump.  
+
+---
+
+#### **lsapi_backend_accept_notify**  
+
+**Syntax** : lsapi_backend_accept_notify [on/off]  
+**Example** : lsapi_backend_accept_notify on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Switch LSAPI_ACCEPT_NOTIFY mode for lsphp. This option can be used both in Global and VirtualHost scopes. This mode is incompatible with PHP 4.4.  
+
+---
+
+#### **lsapi_backend_coredump**  
+
+**Syntax** : lsapi_backend_coredump [on/off]  
+**Example** : lsapi_backend_coredump on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+env variable LSAPI_ALLOW_CORE_DUMP (On or Off). Pass LSAPI_ALLOW_CORE_DUMP to lsphp or not. If it is passed - a core dump on lsphp crash will be created. Off by default. By default LSAPI application will not leave a core dump file when crashed. If you want to have LSAPI PHP dump a core dump file, you should set this environment variable. If set, regardless of the value is has been set to, core dump files will be created under the directory that the PHP script is in.
+
+---
+
+#### **lsapi_pwd_disabled**  
+
+**Syntax** : lsapi_pwd_disabled [on/off]  
+**Example** : lsapi_pwd_disabled on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+To disable the addition of the PWD variable. The default value is Off. If set to On, the PWD variable will not be added to a backend environment.  
+
+---
+
+#### **lsapi_handler**  
+
+**Syntax** : lsapi_handler [string]  
+**Example** : lsapi_handler application/x-httpd-lsphp;  
+**Default** : -  
+**Context** : server config  
+**Type** : Mandatory  
+
+**Description** :  
+Sets LSPHP handler for server (virtual host) configuration.  
+
+---
+
+#### **Connection pool mode**
+
+#### **lsapi_with_connection_pool**  
+
+**Syntax** : lsapi_with_connection_pool [on/off]  
+**Example** : lsapi_with_connection_pool off;  
+**Default** : on  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+Enable/disable LSAPI connection pool mode.  
+
+---
+
+#### **lsapi_backend_max_idle**
+
+**Syntax** : lsapi_backend_max_idle [number]  
+**Example** : lsapi_backend_max_idle 300;  
+**Default** : 300  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+It is relevant only with lsapi_with_connection_pool option switched on. Controls how long a worker process will wait for a new request before it exits. 0 stands for infinite. Should be more or equal to 0. In the case of a wrong format the default value will be used. Optional, default value is 300.
+
+---
+
+#### **lsapi_backend_max_reqs**
+
+**Synt-backendax**-1 : lsapi_backend_max_reqs [number] -backend 
+**-1Example** : lsapi_backend_max_reqs 20000;  
+-backend**Default-1** : 10000  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+It is relevant only with lsapi_with_connection_pool option switched on. Controls how many requests a worker process will process before it exits. Should be more than 0. In the case of a wrong format the default value will be used. Optional, default value is 10000.
+
+---
+
+#### **lsapi_pool_size**  
+
+**Syntax** : lsapi_pool_size [number]  
+**Example** : lsapi_pool_size 20;  
+**Default** : 50  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+The parameter sets the connection pool size for each virtual host.  
+
+---
+
+#### **CRIU support**
+
+#### **lsapi_criu**  
+
+**Syntax** : lsapi_criu [on/off]  
+**Example** : lsapi_criu on;  
+**Default** : off  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+Enable/disable CRIU for lsphp freezing. Default: Off.  
+
+---
+
+#### **lsapi_criu_socket_path**  
+
+**Syntax** : lsapi_criu_socket_path [path]  
+**Example** : lsapi_criu_socket_path /var/run/criu/criu_service.socket;  
+**Default** : /var/run/criu/criu_service.socket  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+Set path to socket for communication with criu service.  
+
+---
+
+#### **lsapi_criu_imgs_dir_path**  
+
+**Syntax** : lsapi_criu_imgs_dir_path [path]  
+**Example** : lsapi_criu_imgs_dir_path /var/ngx_lsapi/criu;  
+**Default** : /var/ngx_lsapi/criu  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+Path to the folder where images of frozen PHP will be stored. Should be a path.
+
+---
+
+#### **lsapi_criu_use_shm**  
+
+**Syntax** : lsapi_criu_use_shm [off/signals]  
+**Example** : lsapi_criu_use_shm signals;  
+**Default** : off  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+The method of request counting. Off - use shared memory. Signals - use signals from child processes to parents. Default: off
+
+---
+
+#### **lsapi_reset_criu_on_restart**
+
+**Syntax** : lsapi_reset_criu_on_restart [on/off]  
+**Example** : lsapi_reset_criu_on_restart off;  
+**Default** : off  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+This option allows cleaning all CRIU images on NGINX restart.  
+Setting lsapi_reset_criu_on_restart to on means that on each NGINX restart the CRIU images, which are stored in the directory specified by lsapi_criu_imgs_dir_path directive, will be recreated upon a new request to domain (only after restart).
+
+----
+
+#### **lsapi_criu_debug**
+
+**Syntax**: lsapi_criu_debug [on/off]  
+**Example**: lsapi_criu_debug off;  
+**Default** : off  
+**Context** : main config  
+**Type** : Optional   
+
+**Description** :  
+Enable/disable CRIU related debug logging.
+
+---
+
+#### **lsapi_backend_initial_start**  
+
+**Syntax** : lsapi_backend_initial_start [number]  
+**Example** : lsapi_backend_initial_start 15;    
+**Default** : 0  
+**Context** : main config  
+**Type** : Optional  
+
+**Description** :  
+Number of requests to virtualhost, when lsphp will be freezed. Default: 0 - means disable freezing.  
+
+---
+
+#### **PHP configuration management**
+
+#### **lsapi_process_phpini**
+
+**Syntax** : lsapi_process_phpini [on/off]  
+**Example** : lsapi_process_phpini on;  
+**Default** : off  
+**Context** : server config, location config
+**Type** : Optional  
+
+**Description** :  
+Enable or disable phpini_* directive processing. Default value is off.
+
+---
+
+#### **lsapi_phpini**  
+
+**Syntax** : lsapi_phpini [value]  
+**Example**: lsapi_phpini /usr/home/lsapiuser/public_html/php.ini;  
+**Default** : -  
+**Context** : server config, location  
+**Type** : Optional  
+
+**Description** :  
+Sets custom php.ini within server or location configuration. Absolute file path is required.  
+When lsapi_process_phpini configuration directive is switched to Off, the value for the lsapi_phpini will be silently ignored.
+
+---
+
+#### **lsapi_phprc**  
+
+**Syntax** : lsapi_phprc [No | Env | Auto | DocRoot]  
+**Example** : lsapi_phprc No;  
+**Default** : No  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+The value of PHPRC env variable.  
+Special values are "No", "Env", "Auto" and "DocRoot".  
+Default value is "No" - without PHPRC at all.    
+The "Auto" value stands for php.ini from DocumentRoot of the corresponding VirtualHost if it is present, or from the user's home directory otherwise "DocRoot" value stands for php.ini from DocumentRoot of the corresponding VirtualHost.  
+"Env" value for using PHPRC from the environment, to set it with SetEnv config option, for example:  
+lsapi_phprc No;  
+lsapi_phprc Auto;  
+lsapi_phprc DocRoot;  
+lsapi_phprc Env;  
+lsapi_phprc /etc/;  
+
+---
+
+#### **lsapi_tmpdir**  
+
+**Syntax** : lsapi_tmpdir [path]  
+**Example** : lsapi_tmpdir /usr/tmp;  
+**Default** : /tmp  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Set an alternate request body temporary files directory.  
+
+---
+
+#### **lsapi_enable_user_ini**
+
+**Syntax** : lsapi_enable_user_ini [on/off]  
+**Example** : lsapi_enable_user_ini off;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Enable .user.ini files for backend. Same as suphp, php-fpm and fcgid mechanism of .user.ini. Default value is off.
+
+---
+
+#### **lsapi_user_ini_homedir**  
+
+**Syntax** : lsapi_user_ini_homedir [on/off]  
+**Example** : lsapi_user_ini_homedir on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+If the lsapi_enable_user_ini option is set to On, then enable/disable processing .user.ini file in the home directory also. The default value is Off.
+
+---
+
+#### **lsapi_mod_php_behaviour**
+
+**Syntax** : lsapi_mod_php_behaviour [on/off]  
+**Example** : lsapi_mod_php_behaviour off;  
+**Default** : on  
+**Context** : server config, location config  
+**Type** : Optional  
+
+**Description** :  
+on/off - disable php_* directives, default On.
+
+---
+
+#### **lsapi_param**  
+
+**Syntax** : lsapi_param [var] [value]  
+**Example**: lsapi_param PHP_ADMIN_VALUE "memory_limit=1024M";  
+**Default** : -  
+**Context** : server config, location config  
+**Type** : Optional  
+
+**Description** :  
+Sets a parameter that should be passed to the LSPHP handler. The value can contain text, variables, and their combinations.  
+Supported directives:  
+PHP_ADMIN_VALUE  
+PHP_VALUE  
+PHP_ADMIN_FLAG  
+PHP_FLAG  
+Examples:  
+lsapi_param PHP_ADMIN_VALUE "memory_limit=1024M \n max_execution_time=600";  
+lsapi_param PHP_FLAG "display_startup_errors=on";  
+lsapi_param PHP_ADMIN_FLAG "html_errors=on";  
+lsapi_param PHP_VALUE "max_file_uploads=20";  
+lsapi_param QUERY_STRING $query_string;  
+lsapi_param REQUEST_METHOD $request_method;  
+lsapi_param CONTENT_TYPE $content_type;  
+lsapi_param CONTENT_LENGTH $content_length;  
+
+---
+
+#### **Security**
+
+#### **lsapi_use_suexec**  
+
+**Syntax** : lsapi_use_suexec [on/off]  
+**Example** : lsapi_use_suexec on;  
+**Default** : on  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Enable or disable suexec usage with a target user.  
+
+---
+
+#### **lsapi_user**  
+
+**Syntax** : lsapi_user [username] [group]  
+**Example** : lsapi_user testlsapi testlsapi;  
+**Default** : -  
+**Context** : server config, local config  
+**Type** : Mandatory  
+
+**Description** :  
+Set user & group for requests.  
+This parameter can take only one argument for username or two arguments for username and group.  
+
+---
+
+#### **lsapi_paranoid**  
+
+**Syntax** : lsapi_paranoid [on/off]  
+**Example** : lsapi_paranoid on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Enable or disable permission checking for the target php scripts.  
+
+---
+
+#### **lsapi_check_owner**  
+
+**Syntax** : lsapi_check_owner [on/off]  
+**Example** : lsapi_check_owner on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Enable or disable checking the owner of the target PHP scripts.  
+
+---
+
+#### **lsapi_check_document_root**  
+
+**Syntax** : lsapi_check_document_root [on/off]  
+**Example** : lsapi_check_document_root on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Enable or disable checking the owner of DOCUMENT_ROOT.  
+
+---
+
+#### **lsapi_check_script**  
+
+**Syntax** : lsapi_check_script [on/off]  
+**Example** : lsapi_check_script on;  
+**Default** : off  
+**Context** : server config  
+**Type** : Optional  
+
+**Description** :  
+Enable or disable checking the owner of target php scripts before sending the request to the lsphp backend. Optional, the default value is On.  
+
+---
+
+#### **lsapi_uid_gid**  
+
+**Syntax** : lsapi_uid_gid [uid] [gid]  
+**Example** : lsapi_uid_gid 1001 1001;  
+**Default** : -  
+**Context** : local config  
+**Type** : Optional  
+
+**Description** :  
+Set user & group for requests.  
+
+---
+
+### Troubleshooting
+
+**Debugging NGINX LSAPI Module issues: error.log & sulsphp.log**
+
+
+NGINX LSAPI Module errors will be located in error_log and sulsphp_log.
+Note that errors can appear in both logs at the same time, and you might need to refer to both of them to solve the issue.
+
+See the following table for more details:
+
+| |  | |
+|-|--|-|
+|**error_log** | **sulsphp_log** | **Solution**|
+|Could not connect to lsphp backend: connect to lsphp failed: 111 Connection refused. Increase memory limit for LVE ID |uid: (xxx/xxxxxxxx) gid: (xxx/xxxxxxxxxx) cmd: /usr/local/bin/lsphp  | Increase pmem or vmem limits for the user uid.|
+|Error sending request: ReceiveLSHeader: nothing to read from backend socket |No need to check this log.  | lsphp was killed. It can be due to nginx restart or lfd. If you see this  message too often - change <span class="notranslate">  lsapi_terminate_backends_on_exit </span> to <span class="notranslate"> off </span> in lsapi.conf or add to <span class="notranslate"> /etc/csf/csf.pignore </span> the following lines: <span class="notranslate"> exe:/usr/local/bin/lsphp </span> pexe:/opt/alt/php.*/usr/bin/lsphp|
+|Error sending request (lsphp is killed?): ReceiveLSHeader: nothing to read from backend socket, referer: http://XXXXXXX  Child process with pid: XXXXX was killed by signal: 11, core dump: 0 |No need to check this log.  | lsphp has crashed. Next slide will explain what to do (core dump creating). Also, check configuration options for apc and suhosin in php.ini. Once you have a core file generated at DocumentRoot contact [https://cloudlinux.zendesk.com/](https://cloudlinux.zendesk.com/hc/) so we can investigate the cause.|
+|Could not connect to lsphp backend: connect to lsphp failed: 111 Connection refused |file is writable by others: (///usr/local/bin/lsphp)  | Incorrect lsphp file permissions. For fixing: <span class="notranslate"> chmod 755 /usr/local/bin/lsphp </span> cagefsctl --force-update.|
+|Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: backend process reset connection: errno 104 (possibly memory limit for LVE ID XXXX too small) |uid: (xxx/xxxxxxxx)  gid: (xxx/xxxxxxxxxx)  cmd: /usr/local/bin/lsphp  | Increase PMEM limits for the user UID.|
+|Reached max children process limit: XX, extra: 0, current: XX, please increase LSAPI_CHILDREN.<br><br>Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: backend process reset connection: errno 104 (possibly memory limit for LVE ID XXXX too small) |uid: (xxx/xxxxxxxx)  gid: (xxx/xxxxxxxxxx)  cmd: /usr/local/bin/lsphp  | Increase value of <span class="notranslate"> lsapi_backend_children </span> for UID in vhost.conf or globally in lsapi.conf.|
+|Connect to backend rejected on sending request(POST /XXXXX HTTP/1.1); uri(/XXXXX) |No need to check this log.|Set <span class="notranslate">`lsapi_disable_reject_mode on`</span> in your <span class="notranslate">`lsapi.conf`</span> and reload NGINX. This way LSPHP daemon will put requests that cannot be served by LSPHP daemon right away into infinite queue, until one or more LSPHP daemon becomes free. Visit [Configuration Reference](./#configuration-references-2) for more info.|
+
+
+### CRIU Support
+
+
+:::tip Note
+<span class="notranslate"> CloudLinux OS </span> 7, <span class="notranslate"> CloudLinux OS </span> 7 Hybrid, and <span class="notranslate"> CloudLinux OS </span> 8 only
+:::
+
+CRIU is <span class="notranslate"> _Checkpoint/Restore In Userspace_ </span> , (pronounced <span class="notranslate"> kree-oo </span> ), is a software tool for the Linux operating system. Using this tool, you can freeze a running application (or part of it) and checkpoint it as a collection of files on disk. You can then use the files to restore the application and run it exactly as it was at the time of freeze (more information on the link [https://criu.org/Main_Page](https://criu.org/Main_Page) ).
+
+NGINX LSAPI Module now supports the following parameters:
+
+| |  |  | |
+|-|--|--|-|
+|**Option name** | **Description** | **Values** | **Default**|
+|lsapi_criu | Enable/disable CRIU for lsphp freezing. | <span class="notranslate"> on/off </span> | <span class="notranslate"> off </span>|
+|lsapi_criu_socket_path | Set path to socket for communication with criu service. | [path to socket] | <span class="notranslate"> /var/run/criu/criu_service.socket </span>|
+|lsapi_backend_initial_start | Number of request when lsphp should be freezed. | [number] 0 - no freezing | 0|
+|lsapi_criu_use_shm | Method of requests counting. <span class="notranslate"> off </span> - use shared memory. <span class="notranslate"> Signals </span> - use signals from child processes to parent. | <span class="notranslate"> off/signals </span> | <span class="notranslate"> off </span>|
+|lsapi_criu_imgs_dir_path | Path to folder where imgs of freezed PHP will be stored. | [path] | <span class="notranslate"> /var/nginx-mod-lsapi/ </span>|
+|lsapi_criu_debug | Enable/Disable CRIU related debug logging. | <span class="notranslate"> on/off </span> | <span class="notranslate"> off </span>|
+
+Example:
+<div class="notranslate">
+
+```
+lsapi_criu on;
+lsapi_criu_socket_path /var/run/criu/criu_service.socket;
+lsapi_backend_initial_start 15;
+lsapi_criu_use_shm off;
+lsapi_criu_debug off;
+```
+</div>
+
+When NGINX module NGINX LSAPI Module detects CRIU enabled (lsapi_criu On), it prepares a directory for images (on the first request of virtualhost) to store ( <span class="notranslate"> lsapi_criu_img_path /var/ngx_lsapi/criu/[dir_name] </span> ), and starts the lsphp process. Lsphp increases a counter ( <span class="notranslate"> lsapi_criu_use_shm off|Signals </span> ) via shared memory or signals, and when counter reaches the limit ( <span class="notranslate"> lsapi_backend_initial_start 15 </span> ), lsphp sends the freezing request to CRIU.
+The CRIU service makes images of requested processes. Lsphp will not be frozen if counter does not reach the limit. The next time when lsphp will be stopped, it will be unfrozen from the images.
+
+The images of the processes will be saved even if NGINX is restarted. However, all images will be deleted after a server restart by default. This can be modified by setting the new path <span class="notranslate"> lsapi_criu_imgs_dir_path </span> .
+
+:::warning Important!
+If php.ini or the configuration file from php.d is changed, the images must be deleted manually.
+:::
+
+:::tip Note 
+CRIU (version lower than criu-lve-3.6-1) can't correctly freeze <span class="notranslate"> lsphp </span> with <span class="notranslate"> PrivateTmp </span> enabled. For correct functionality, <span class="notranslate"> PrivateTmp </span> must be disabled in <span class="notranslate"> nginx.service file </span> . 
+:::
+
+To disable it, copy <span class="notranslate"> _nginx.service_ </span> to <span class="notranslate"> _/etc/systemd/system_ </span> and change there <span class="notranslate"> PrivateTmp: 
+  </span>
+<div class="notranslate">
+
+```
+cat nginx.service  
+............ 
+
+[Unit]
+Description=The nginx HTTP and reverse proxy server
+After=network-online.target remote-fs.target nss-lookup.target
+Wants=network-online.target
+
+[Service]
+Type=forking
+PIDFile=/run/nginx.pid
+ExecStartPre=/usr/bin/rm -f /run/nginx.pid
+ExecStartPre=/usr/sbin/nginx -t
+ExecStart=/usr/sbin/nginx
+ExecReload=/usr/sbin/nginx -s reload
+KillSignal=SIGQUIT
+TimeoutStopSec=5
+KillMode=mixed
+PrivateTmp=false
+
+[Install]
+WantedBy=multi-user.target
+```
+</div>
+Alternatively, it could be technically preferable to provide a small override of the service file, rather than copying the whole new version in <span class="notranslate"> /etc/systemd/system </span> 
+
+[http://www.freedesktop.org/software/systemd/man/systemd.unit.html](http://www.freedesktop.org/software/systemd/man/systemd.unit.html)
+
+<div class="notranslate">
+
+```
+mkdir /etc/systemd/system/nginx.service.d
+echo "[Service]" >  /etc/systemd/system/nginx.service.d/nopt.conf
+echo "PrivateTmp=false" >> /etc/systemd/system/nginx.service.d/nopt.conf
+```
+</div>
+
+and
+
+<div class="notranslate">
+
+```
+systemctl daemon-reload
+```
+</div>
+
+#### CRIU Installation
+
+CRIU is installed as a dependency to the NGINX LSAPI Module package. To activate it:
+
+1. Enable service and start it:
+
+<div class="notranslate">
+
+```
+systemctl enable criu
+systemctl start criu
+```
+</div>
+
+2. Edit lsapi.conf file, turn CRIU On and set some defaults:
+
+<div class="notranslate">
+
+```
+lsapi_criu on;
+lsapi_criu_socket_path /var/run/criu/criu_service.socket;
+lsapi_backend_initial_start 15;
+lsapi_criu_use_shm off;
+lsapi_criu_debug off;
+```
+</div>
+
+3. Restart NGINX:
+
+<div class="notranslate">
+
+```
+service nginx restart
+```
+</div>
+
+#### CRIU Image Cleanup
+
+1. An option added to the NGINX configuration for cleaning all the images earlier saved by CRIU.
+
+| |  |  | |
+|-|--|--|-|
+|**Option name** | **Description** | **Value** | **Default**|
+|<span class="notranslate">lsapi_reset_criu_on_restart</span> | This option allows cleaning all CRIU images on NGINX restart. | <span class="notranslate"> on/off </span> | <span class="notranslate"> Off </span>|
+
+On the next restart of NGINX all of the images will be cleaned.
+
+It can be enabled by writing <span class="notranslate">lsapi_reset_criu_on_restart on; </span> in _lsapi.conf_
+
+Note that this option works only if <span class="notranslate">lsapi_terminate_backends_on_exit</span> is <span class="notranslate">  on  </span> (default value is <span class="notranslate"> On </span> , it is set in _lsapi.conf_ too).
+
+2. If you need to clean CRIU images for one user you can simply add file to the user's directory with CRIU images (default <span class="notranslate"> _/var/ngx_lsapi/criu/lsapi_ * _criu_imgs_ </span> ). On the next restart of lsphp the images will be cleaned.
+
+3. Global reset flag for cleaning all earlier saved images by CRIU.
+
+The current NGINX LSAPI Module allows cleaning all images only with one flag file.
+
+Create <span class="notranslate"> /usr/share/criu/mod_lsapi/lsphp.criu.reset </span> file. Also don't forget to set permissions as follows: <span class="notranslate"> [nobody:nobody] </span> (or <span class="notranslate"> [nginx:nginx] </span> for non cPanel) and access mode [700] to the <span class="notranslate"> /usr/share/criu/mod_lsapi </span> directory.
+
+Steps to do :
+
+<div class="notranslate">
+
+```
+mkdir /usr/share/criumkdir /usr/share/criu/mod_lsapi
+chown nobody:nobody /usr/share/criu/mod_lsapi
+touch /usr/share/criu/mod_lsapi/lsphp.criu.reset
+```
+</div>
+
+Upon the next incoming request to all virtual hosts, images will be recreated (deleted first and created again later - it depends on lsapi_backend_initial_start value).
+
+4. Аdded possibility to clean CRIU images from user space.
+
+If a user needs to clean CRIU images for lsphp, he should create a file: <span class="notranslate"> ~/mod_lsapi_reset_me_[server_name] </span>. Where <span class="notranslate"> [server_name] </span> is a server_name from the server block in the configuration file. On the next restart of lsphp, the images will be cleaned.
+
+_Example:_
+
+<div class="notranslate">
+
+```
+cd; touch mod_lsapi_reset_me_criu.test.com
+```
+</div>
+
+where _vhost.conf_ contains:  
+<span class="notranslate">`server_name criu.test.com;`</span>
+
+This mode is enabled by default and creates a separate lsphp process for each virtual host.
+
+<span class="notranslate">`mod_lsapi_reset_me[server_name]`</span> flag will not work for a user when lsapi_per_user option is <span class="notranslate">`on`</span>.
+
+5. There is an (default <span class="notranslate">`off`</span>) option in NGINX LSAPI Module that creates only one lsphp process for a user, regardless of the number of his virtual hosts. We don't recommend to use this option with CRIU, but if you use it, make sure that your virtual hosts (under the same user) have the same environment configurations. If they are not the same, this may cause undesirable lsphp process operations.
+
+
+
+## Additional integration components
+
+CloudLinux OS uses various ways to integrate with existing system.
+
+### LVE PAM module
+
+pam_lve.so is a PAM module that sets up LVE environment. It provides easy way to setup LVE for SSH sessions, as well as other PAM enabled applications, such as crontab, su, etc.
+
+pam_lve.so is installed by default when you convert existing server.
+
+Installation:
+
+<div class="notranslate">
+
+```
+yum install pam_lve
+```
+</div>
+
+After you install <span class="notranslate"> RPM </span>, add the following line to the PAM config file for the required application:
+
+<div class="notranslate">
+
+```
+session    required     pam_lve.so 500 1 wheel,other
+```
+</div>
+
+In this line:
+* 500 stands for minimum UID for which LVE will be setup. For any user with UID < 500, LVE will not be setup. If <span class="notranslate">CageFS</span> is installed, use:
+<span class="notranslate">`cagefsctl --set-min-uid UID`</span> to setup minimum UID. The parameter in PAM files will be ignored in that case.
+* 1 stands for <span class="notranslate">CageFS</span> enabled (0 – <span class="notranslate">CageFS</span> disabled)
+* 3rd optional argument defines group of users that will not be placed into LVE or <span class="notranslate">CageFS</span>. Starting with **pam_lve 0.3-7** you can specify multiple groups, comma separated.
+
+:::tip Warning
+It is crucial to place all users that su or sudo to root into that group. Otherwise, once such user gains root, user will be inside LVE, and all applications restarted by that user will be inside that user LVE as well.
+:::
+
+:::tip Warning
+Please do not add the `pam_lve.so` in the PAM configuration for sudo. It can affect user’s work with the resource usage plugin, and Python/Node.js/PHP selector plugins.
+:::
+
+For example, to enable LVE for SSH access, add that line to the `/etc/pam.d/sshd`. To enable LVE for SU, add that line to the `/etc/pam.d/su`.
+
+By default, module will not place users with group wheel into lve. If you want to use different group to define users that will not be placed into LVE by pam_lve - pass it as the 3rd argument.
+
+:::tip Warning
+Be careful when you test it, as if you incorrectly add this line to the `/etc/pam.d/sshd`, it will lock you out ssh. Don't log out of your current SSH session, until you sure it works.
+:::
+
+For preventing cases when user enters under usual user (using ssh) and then tries to enter as super user (via sudo or su) - pam_sulve was created, which tries to enter to LVE=1 and leaves it right away. If action fails, user gets message:
+
+<div class="notranslate">
+
+```
+!!!!  WARNING: YOU ARE INSIDE LVE !!!!
+```
+</div>
+
+To check if pam_sulve is enabled on the server:
+
+<div class="notranslate">
+
+```
+grep pam_sulve.so /etc/pam.d/*
+```
+</div>
+
+should not be empty.
+
+### LVE wrappers
+
+* [Placing programs inside LVE](./#placing-programs-inside-lve)
+
+LVE wrappers are the set of tools that allow system administrator to run various users, programs & daemons within Lightweight Virtual Environment. This allows system administrator to have control over system resources such program can have. Additionally it prevents misbehaving programs running within LVE to drain system resources and slow down or take down the whole system. The tools are provided by lve-wrappers RPM.
+
+You can install them by running:
+
+<div class="notranslate">
+
+```
+yum install lve-wrappers
+```
+</div>
+
+#### Placing programs inside LVE
+
+LVE Wrappers provide two tools for placing programs inside LVE: <span class="notranslate">`lve_wrapper`</span> and `lve_suwrapper`.
+
+`/bin/lve_wrapper` can be used by any non-root user, as long as that user is in group lve (see `/etc/groups` file).
+
+**Syntax**
+
+<div class="notranslate">
+
+```
+lve_wrapper <command_to_run>
+```
+</div>
+
+**Example**
+
+<div class="notranslate">
+
+```
+lve_wrapper make install
+```
+</div>
+
+The program will be executed within LVE with ID matching user's id.
+
+`/bin/lve_suwrapper` can be used by root user or any user in group lve (see `/etc/groups` file) to execute command within specified LVE.
+
+**Syntax**
+
+<div class="notranslate">
+
+```
+lve_suwrapper LVE_ID <command_to_run>
+```
+</div>
+
+**Example**
+
+<div class="notranslate">
+
+```
+lve_suwrapper 10000 /etc/init.d/postgresql start
+```
+</div>
+
+**Switches**
+
+* `-f` - force namespace
+* `-n` - without namespace
+* `-c` - remove CPU limits (requires `lve_wrapper` >= 2.1.2)
+
+### MPM ITK
+
+CloudLinux OS <span class="notranslate">httpd RPM</span> comes with <span class="notranslate"> MPM ITK </span> built in. Yet, if you would like to build your own Apache, you need to apply our patch for <span class="notranslate"> MPM ITK </span>
+
+* Download file: [https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
+* Extract: <span class="notranslate">apache2.2-mpm-itk-seculrelve12.patch</span>
+* And apply this patch to your Apache source code.
+
+When running <span class="notranslate"> MPM ITK </span>, you should disable <span class="notranslate">mod_hostinglimits</span>. All the functionality needed by <span class="notranslate"> MPM ITK </span> is already built into the patch.
+
+Directives which can be used by Apache with <span class="notranslate"> ITK </span> patch:
+
+* <span class="notranslate">`AssignUserID`</span> - uses ID as LVE ID
+* <span class="notranslate">`LVEErrorCodeITK`</span> - error code to display on LVE error (508 by default)
+* <span class="notranslate">`LVERetryAfterITK`</span> - same as <span class="notranslate">`LVERetryAfter`</span> - respond with <span class="notranslate">`Retry-After`</span> header when LVE error 508 occurs
+* <span class="notranslate">`LVEId`</span> - ovverides id used for LVE ID instead of <span class="notranslate">`AssignUserID`</span>
+* <span class="notranslate">`LVEUser`</span> - overrides user to use to retrieve LVE ID, instead of AssignUserID
+
+### HostingLimits module for Apache
+
+* [Additional notes](./#additional-notes)
+* [Installation](./#installation-4)
+* [Directives](./#directives)
+  * [SecureLinks](./#securelinks)
+  * [SkipErrors](./#skiperrors)
+  * [AllowedHandlers](./#allowedhandlers)
+  * [DenyHandlers](./#denyhandlers)
+  * [LVEErrorCode](./#lveerrorcode)
+  * [LVEid](./#lveid)
+  * [LVEUser](./#lveuser)
+  * [LVEUserGroupID](./#lveusergroupid)
+  * [LVERetryAfter](./#lveretryafter)
+  * [LVESitesDebug](./#lvesitesdebug)
+  * [LVEParseMode](./#lveparsemode)
+  * [LVEPathRegexp](./#lvepathregexp)
+  * [LVELimitRecheckTimeout](./#lvelimitrechecktimeout)
+  * [LVEUse429](./#lveuse429)
+
+mod_hostinglimits works with existing <span class="notranslate"> CGI/PHP </span> modules, to put them into LVE context. In most cases the <span class="notranslate"> CGI/PHP </span> process will be placed into LVE with the ID of the user that sites belongs to. mod_hostinglimits detects the user from `SuexecUserGroup` (<span class="notranslate">suexec</span> module), <span class="notranslate">`SuPHP_UserGroup`</span> (from mod_suphp), `AssignUserID` (<span class="notranslate">MPM ITK</span>), <span class="notranslate">`RUidGid` (mod_ruid2 </span> ) directives.
+
+This can be overwritten via LVEId or LVEUser parameter on the Directory level.
+
+:::tip Note
+Those parameters will not work with mod_fcgid and mod_cgid.
+:::
+
+The order of detection looks as follows:
+
+* LVEId
+* LVEUser
+* SuexecUserGroup
+* suPHP_UserGroup
+* RUidGid
+* AssignUserID
+
+
+:::tip Note
+LVE doesn't work for mod_include #include due to its "filter" nature.
+:::
+
+Example:
+
+<div class="notranslate">
+
+```
+LoadModule hostinglimits_module modules/mod_hostinglimits.so
+<IfModule mod_hostinglimits.c>
+ AllowedHandlers cgi-script php5-script php4-script
+ SecureLinks On
+</IfModule>
+```
+</div>
+
+#### **Additional notes**
+
+**mod_hostinglimits** (since version 1.0-22) supports <span class="notranslate">`min-uid - cagefsctl --set-min-uid=600`</span>.
+
+Min UID is read on Apache start/restart and stored in the memory during apache runtime.
+
+If the min UID has changed, you should restart Apache for **mod_hostinglimits** applying new min UID value. Full min UID is supported only with APR.
+
+The following message should appear:
+
+<div class="notranslate">
+
+```
+[notice] mod_hostinglimits: found apr extention version 3.
+```
+</div>
+
+This means that the correct APR is installed with mod_hostinglimits.
+
+mod_hostinglimist has variable for Apache CustomLog format string <span class="notranslate">`%{LVE_ID}y`</span>.
+
+**How to use**:
+
+LogFormat 
+
+<div class="notranslate">
+
+```
+"%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" req for lve "%{LVE_ID}y"
+```
+</div>
+
+combined
+
+shows in access_log the following info:
+
+<div class="notranslate">
+
+```
+*.*.*.* - - [09/Apr/2015:07:17:06 -0400] "GET /1.php HTTP/1.1" 200 43435 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0" req for lve 500
+
+*.*.*.* - - [09/Apr/2015:07:17:06 -0400] "GET /1.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2524 "************/1.php""Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0" req for lve 500
+
+*.*.*.* - - [09/Apr/2015:07:17:06 -0400] "GET /1.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2146 "************/1.php""Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0" req for lve 500
+```
+</div>
+
+#### Installation
+
+**cPanel**
+
+Installed by default during EasyApache build. Requires <span class="notranslate">`lve-stats`</span> & <span class="notranslate">`lve-utils`</span> packages to be installed.
+
+**DirectAdmin**
+
+Can be built using <span class="notranslate"> custombuild</span>:
+
+<div class="notranslate">
+
+```
+yum install liblve-devel
+cd /usr/local/directadmin/custombuild
+./build update
+./build set cloudlinux yes
+./build apache
+./build rewrite_confs
+```
+</div>
+
+If you run `suphp`, then run the following:
+
+<div class="notranslate">
+
+```
+./build suphp
+```
+</div>
+
+**Plesk**
+
+<div class="notranslate">
+
+```
+yum install mod_hostinglimits
+```
+</div>
+
+**ISPmanager**
+
+<div class="notranslate">
+
+```
+yum install mod_hostinglimits
+```
+</div>
+
+**InterWorx**
+
+<div class="notranslate">
+
+```
+yum install mod_hostinglimits
+```
+</div>
+
+**H-Sphere**
+
+Included by default in H-Sphere 3.5+
+
+**Standard Apache from RPM**
+
+<div class="notranslate">
+
+```
+yum install mod_hostinglimits
+```
+</div>
+
+**Custom Apache installation**
+
+Compile from the source: [https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz)
+
+<div class="notranslate">
+
+```
+wget https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz
+yum install cmake
+tar -zxvf mod_hostinglimits*.tar.gz
+cd mod_hostinglimits*
+cmake .
+make
+make install
+```
+</div>
+
+* Apache Module Identifier: `hostinglimits_module`
+* Source Files: `mod_hostinglimits.c`
+* Compatibility: MPM prefork, worker, event, ITK
+
+#### Directives
+
+<div class="notranslate">
+
+#### **SecureLinks**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Makes sure that for any virtual hosts, only files owned by user specified via SuexecUserGroup or other ways as described above are served. For files owned by any other user apache will return <span class="notranslate">`Access Denied`</span> error. The directive will not affect VirtualHost without user id specified, or with uid < 100|
+|**Syntax**| <span class="notranslate">`SecureLinks On`</span>|
+|**Default**| <span class="notranslate">`SecureLinks Off`</span>|
+|**Context**| server config|
+
+Prevents apache from serving files not owned by user, stopping symlink attacks against php config files.
+
+**Example**
+
+<div class="notranslate">
+
+```
+SecureLinks On
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **SkipErrors**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Allow apache to continue if LVE is not available|
+|**Syntax**| <span class="notranslate">`SkipErrors On`</span>|
+|**Default**| <span class="notranslate">`SkipErrors On`</span>|
+|**Context**| server config|
+|**<font color="Red">Status</font>**| <font color="Red">deprecated</font>|
+
+Prevents Apache from exiting if LVE is not available.
+
+**Example**
+
+<div class="notranslate">
+
+```
+SkipErrors Off
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **AllowedHandlers**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| List of handlers that should be placed into LVE, support regexp|
+|**Syntax**|`AllowedHandlers cgi-script %^php%  my-script`|
+|**Default**| cgi-script %php% fcgid-script application/x-miva-compiled|
+|**Context**| server config|
+
+This directive allows to list handlers which will be intercepted and placed into LVE.
+
+**Examples**
+
+* Match requests handled by cgi-script handler:
+  
+  <div class="notranslate">
+  
+  ```
+  AllowedHandlers cgi-script 
+  ```
+  </div>
+
+* Match all requests:
+  
+  <div class="notranslate">
+  
+  ```
+  AllowedHandlers *
+  ```
+  </div>
+  
+* Match all requests that handled by handler that contains PHP:
+  
+  <div class="notranslate">
+  
+  ```
+  AllowedHandlers %php%
+  ```
+  </div>
+* Match all requests handled by handler that starts with PHP:
+  
+  <div class="notranslate">
+  
+  ```
+  AllowedHandlers %^php%
+  ```
+  </div>
+
+The default modhostinglimits module configuration only handles cgi scripts and ignores static content like html files and images.
+With the default configuration, an Apache server denial of service situation can occur when there are many requests for large html files and images. But on the other hand, processing all static files is unprofitable, since when processing many small files, the load average will increase significantly due to the overhead of entering/exiting lve. Therefore, it is better to enable processing only for a subset of static files based on criteria such as file location or file name extension using Apache directives as Location, Directory and Files.
+
+This functionality is available since version 1.0-40.
+
+In the following example, the module hostinglimits will process files for a URLs starting with weightcontent, for files with an .avi extension, and for files from the video subdirectory.
+
+  ```
+<IfModule mod_hostinglimits.c>
+
+   SkipErrors Off
+   AllowedHandlers cgi-script %php% fcgid-script application/x-miva-compiled
+
+  <LocationMatch "^/weigthcontent/">
+   AllowedHandlers *
+  </LocationMatch>
+
+  <Files "*.avi">
+   AllowedHandlers *
+  </Files>
+
+  <DirectoryMatch "/home/user[0-5]/public_html/video/">
+   AllowedHandlers *
+  </DirectoryMatch>
+
+</IfModule>
+  ```
+
+***
+
+<div class="notranslate">
+
+#### **DenyHandlers**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| List of handlers that should not be placed into LVE, support regexp|
+|**Syntax**| <span class="notranslate">`DenyHandlers text/html`</span>|
+|**Default**| none|
+|**Context**| server config|
+
+This directive works together with AllowHandlers, to exclude some handlers from being allowed in LVE.
+
+**Example**:
+
+Match all requests, but <span class="notranslate">`text/*`</span>
+
+<div class="notranslate">
+
+```
+AllowedHandlers *DenyHandlers %text/*%
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVEErrorCode**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Error code to display once entry is rejected due to maxEntryProcs|
+|**Syntax**| values from 500 to 510|
+|**Default**| 508|
+|**Context**| directory config|
+
+Specifies ErrorCode to use on LVE error (like too many concurrent processes running).
+
+The message that will be displayed by default is:
+<div class="notranslate">
+
+```
+Resource Limit Is Reached.
+
+The website is temporarily unable to serve your request as it exceeded resource limit. 
+
+Please try again later.
+```
+</div>
+
+You can redefine error message using `ErrorDocument` directive
+
+Example:
+<div class="notranslate">
+
+```
+LVEErrorCode 508ErrorDocument 508 508.html
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVEid**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Allows to setup separate LVE ID on per directory level. If not set, user ID of a corresponding user is used.|
+|**Syntax**|<span class="notranslate">`LVEId number`</span>|
+|**Default**| User Id is used|
+|**Context**| directory config|
+
+Specifies LVE id for particular directory
+
+**Example**:
+
+<div class="notranslate">
+
+```
+<Directory "/home/user1/domain.com/forums">
+ LVEId 10001
+</Directory>
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVEUser**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Allows to setup separate LVE ID on per directory level.|
+|**Syntax**|<span class="notranslate">`LVEUser username`</span>|
+|**Default**| none|
+|**Context**| directory config|
+
+Specifies LVE ID for particular directory.
+
+**Example**:
+
+<div class="notranslate">
+
+```
+<Directory "/home/user1/domain.com/forums">
+       LVEUser user1
+</Directory>
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVEUserGroupID**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Use group ID instead of user ID for LVE container number.|
+|**Syntax**| <span class="notranslate">`LVEUserGroupID On/Off`</span>|
+|**Default**| User Id is used|
+|**Context**| global config only|
+
+* If the option enabled, group ID will be used instead of a user ID. Apache will display the following string in error logs:
+
+<div class="notranslate">
+
+```
+mod_hostinglimits: use GroupID instead of UID 
+mod_hostinglimits: found apr extension version 2 
+mod_hostinglimits: apr_lve_environment_init_group check ok
+```
+</div>
+
+* If a compatible apr library is not found, the following error message will be display in error logs.
+
+<div class="notranslate">
+
+```
+mod_hostinglimits:  apr_lve_* not found!!!
+```
+</div>
+
+**Example**:
+
+<div class="notranslate">
+
+```
+<Directory "/home/user1/domain.com/forums">
+       LVEUserGroupID On
+</Directory>
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVERetryAfter**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Returns Retry-After header when LVE error 508 occurs.|
+|**Syntax**|`LERetryAfter MINUTES`|
+|**Default**| 240 minutes|
+|**Context**| directory config|
+
+Specifies interval for <span class="notranslate">`Retry-After`</span> header. The <span class="notranslate">`Retry-After`</span> response-header field can be used to indicate how long the service is expected to be unavailable to the requesting client.
+
+**Example**:
+
+<div class="notranslate">
+
+```
+LVERetryAfter 180
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVESitesDebug**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Provides extended debug info for listed sites.|
+|**Syntax**|<span class="notranslate">`LVESitesDebug test.com test2.com`</span>|
+|**Default**| <span class="notranslate"> none </span>|
+|**Context**| directory config|
+
+Specifies virtual hosts to provide extra debugging information.
+
+**Example**:
+
+<div class="notranslate">
+
+```
+<Directory "/home/user1/domain.com/forums">
+       LVESitesDebug abc.com yx.cnet
+</Directory>
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVEParseMode**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Determines the way LVE ID will be extraced. In Conf|
+|**Syntax**|`LVEParseMode CONF` `PATH` `OWNER` [`REDIS`](/cloudlinuxos/limits/#redis-support-for-hostinglimits)|
+|Default: | <span class="notranslate">`CONF`</span>|
+|Context: | directory config|
+
+* In `CONF` mode, standard way to extract LVE ID is used (SuexecUserGroup, LVEId, or similar directives).
+
+* In <span class="notranslate">`PATH`</span> mode, username is extracted from the home directory path. The default way to match username is via the following regexp: <span class="notranslate">`/home/([^/]*)/`</span> . Custom regexp can be specified in LVEPathRegexp.
+
+* In <span class="notranslate">`OWNER`</span> mode, the owner of the file is used as an LVE ID.
+
+* In <span class="notranslate">[`REDIS`](/cloudlinuxos/limits/#redis-support-for-hostinglimits)</span> mode, LVE ID is retrieved from Redis database.
+
+**Example**:
+
+<div class="notranslate">
+
+```
+LVEParseMode CONF
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVEPathRegexp**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Regexp used to extract username from the path. Used in conjuction with `LVEParseMode PATH`|
+|**Syntax**|`LVEPathRegexp regexp`|
+|**Default**| <span class="notranslate">`/home/([^/]*)/`</span>|
+|**Context**| directory config|
+
+Used to extract usersname via path.
+
+**Example**:
+
+<div class="notranslate">
+
+```
+LVEPathRegexp /home/([^/]*)/
+```
+</div>
+
+***
+
+<div class="notranslate">
+
+#### **LVELimitRecheckTimeout**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Timeout in milliseconds, a site will return EP without lve_enter for LA decreasing after this time|
+|**Syntax**|`LVELimitRecheckTimeout number`|
+|**Default**| 0|
+|**Context**| httpd.conf, virtualhost|
+
+Example:
+<span class="notranslate"> </span>
+```
+LVELimitRecheckTimeout 1000
+```
+
+<div class="notranslate">
+
+#### **LVEUse429**
+
+</div>
+
+| | |
+|-|-|
+|**Description**| Use 429 error code as code returned on max entry limits ( <span class="notranslate"> on/off </span> ).|
+|**Syntax**|`LVEUse429 on`|
+|**Default**|<span class="notranslate">`off`</span>|
+|**Context**| httpd.conf, virtualhost|
+
+**Example**:
+
+<div class="notranslate">
+
+```
+LVEUse429 on
+```
+</div>
+
+Available for RPM based panels, EasyApache 4 and DirectAdmin.
+
+### cPanel/WHM JSON API
+
+* [Parameters](./#parameters)
+* [Manage reseller limits/users/packages via cPanel/WHM JSON API - JSONHandler](/cloudlinuxos/cloudlinux_os_components/#manage-reseller-limits-users-packages-via-cpanel-whm-json-api-jsonhandler)
+* [Using a WHM API token](./#using-a-whm-api-token)
+
+CloudLinux OS offers JSON API for [lvectl](/cloudlinuxos/command-line_tools/#lvectl) and [cloudlinux-limits](/cloudlinuxos/command-line_tools/#cloudlinux-limits) via WHM. You can access it using the following URL:
+
+<div class="notranslate">
+
+```
+https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&command=lvectl&handler=list
+https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&command=cloudlinux-limits&handler=get
+```
+</div>
+
+The output will look as follows:
+
+<div class="notranslate">
+
+```
+{"data":[{"ID":"default","CPU":"30","NCPU":"1","PMEM":"1024M","VMEM":"1024M","EP":"28","NPROC":"0","IO":"2048"}]}
+```
+</div>
+
+#### **Parameters**
+
+|||
+|-|-|
+|<span class="notranslate">`cgiaction`</span>|always <span class="notranslate">`jsonhandler`</span>|
+|<span class="notranslate">`command`</span>|<span class="notranslate">`lvectl`</span> or <span class="notranslate">`cloudlinux-limits`</span> (default <span class="notranslate">`lvectl`</span>)|
+|<span class="notranslate">`handler`</span>|should match [lvectl](/cloudlinuxos/command-line_tools/#lvectl) or [cloudlinux-limits](/cloudlinuxos/command-line_tools/#cloudlinux-limits) command|
+
+For commands like <span class="notranslate">`set`, `destroy`</span> & <span class="notranslate">`delete`</span>, where you need to specify LVE (user) ID, like `lveid=500` (matches user ID 500).
+
+**Example**:
+
+<div class="notranslate">
+
+```
+https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&command=lvectl&handler=set&lveid=500&speed=30%&io=2048
+
+https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&command=lvectl&handler=set&lveid=500&speed=300Mhz&io=2048
+
+https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&command=lvectl&handler=set&lveid=500&speed=3Ghz&io=2048
+
+https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&command=cloudlinux-limits&handler=set&lveid=500&inodes=9090,8989
+```
+</div>
+
+:::tip Note
+**Speed** limit can be specified in several units of measure - <span class="notranslate"> %, MHz, GHz </span>. The figures will be different according to the unit of measure.
+:::
+
+**Output**:
+
+<div class="notranslate">
+
+```
+{"status":"OK"}
+```
+</div>
+
+To do `set default`, use `lveid=0`, like:
+
+<div class="notranslate">
+
+```
+https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set&lveid=0&speed=30%&io=2048
+```
+</div>
+
+For commands like <span class="notranslate">`apply all`, `destroy all`</span>, use:
+
+<div class="notranslate">
+
+```
+handler=apply-all
+
+handler=destroy-all
+```
+</div>
+
+You can use the following commands that allow to specify user name instead of user ID:
+
+| | |
+|-|-|
+|<span class="notranslate">`set-user`</span> | Set parameters for a LVE and/or create a LVE using username instead of ID.|
+|<span class="notranslate"> `list-user  ` </span> | List loaded LVEs, display username instead of user ID.|
+|<span class="notranslate"> `delete-user ` </span> | Delete LVE and set configuration for that user to defaults.|
+
+If the limits for users are set with <span class="notranslate"> cPanel LVE Extension</span>, then turnkey billing solutions can be applied (e.g. WHMCS).
+
+
+#### Manage reseller limits/users/packages via cPanel/WHM JSON API (JSONHandler)
+
+|  |  |  |
+|----|----|--|
+|**Action**|**lvectl command**|**JSONHandler**|
+|enable  reseller limits|<span class="notranslate">`lvectl set-reseller res1 --speed=35%`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set-reseller&lveid=res1&speed=30%&io=2048`|
+|disable reseller limits|<span class="notranslate">`lvectl remove-reseller res1`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=remove-reseller&lveid=res1`|
+|set default limits for reseller|<span class="notranslate">`lvectl set-reseller-default res1 --speed=91%`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set-reseller-default&lveid=res1&speed=30%`|
+|set limits for package, created by reseller|<span class="notranslate">`lvectl package-set res1_pack1 --reseller res1 --speed=88%`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=package-set&lveid=res1_pack1&reseller=res1&speed=30%`|
+|set limits for user, created by reseller|<span class="notranslate">`lvectl set-user r1user1 --reseller res1 --speed=77%`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set-user&lveid=r1user1&reseller=res1&speed=30%`|
+|set unlimited for user, created by reseller|<span class="notranslate">`lvectl set-user r1user1 --reseller res1 --unlimited`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set-user&lveid=r1user1&reseller=res1&unlimited`|
+|set inodes limit|<span class="notranslate">`cloudlinux-limits set --username=r1user1 --inodes=9090,8989`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&command=cloudlinux-limits&handler=set&username=r1user1&inodes=9090,8989`|
+
+#### Using a WHM API token
+
+You can use a WHM API token with curl as follows:
+
+<div clas="code">
+
+```
+curl -X POST -k -s -H "Authorization: whm root:WHM_TOKEN" "https://SERVER_IP:2087/cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=LVE_METHOD&PARAMETERS
+```
+</div>
+
+Where:
+
+* <span class="notranslate">`WHM_TOKEN`</span> – a generated WHM API token (see: [Creating an API token](https://documentation.cpanel.net/display/DD/Guide+to+API+Authentication+-+API+Tokens+in+WHM#0ac291c40e454694a8b981c45988c1cb))
+* <span class="notranslate">`LVE_METHOD`</span> – lvectl method (for example: <span class="notranslate">`list`</span>. See also: [lvectl](/command-line_tools/#lvectl))
+* <span class="notranslate">`PARAMETERS`</span> – all other parametrs and options for a method according to the [documentation](/command-line_tools/#lvectl)
+
+
+### mod_proctitle
+
+* [How to read mod_proctitle information](./#how-to-read-mod-proctitle-information)
+* [Tuning parameters](./#tuning-parameters)
+
+mod_proctitle is a module for gathering URL information per request. It is available only for Apache 2.4 now.
+
+
+**For installation:**
+
+cPanel EasyApache 3 and non cPanel ( _CloudLinux 7 only for non cPanel_ ):
+
+<div class="notranslate">
+
+```
+yum install mod_proctitle --enablerepo=cloudlinux-updates-testing
+service httpd restart
+```
+</div>
+
+cPanel EasyApache 4:
+
+<div class="notranslate">
+
+```
+yum install ea-apache24-mod_proctitle
+service httpd restart
+```
+</div>
+DirectAdmin:
+<div class="notranslate">
+ 
+```
+cd /usr/local/directadmin/custombuild
+./build update
+./build mod_procticle
+```
+</div>
+
+#### How to read mod_proctitle information
+
+**How to read information gathered by the module**
+
+
+For reading information saved by module use the following script (the script is not in the package):
+<div class="notranslate">
+
+```
+#!/bin/bash
+
+httpd=httpd 
+
+for pid in `/usr/bin/pgrep $httpd`; do
+    for tid in `ls /proc/$pid/task`; do
+		found=no
+		for shm in `ls /dev/shm/apache_title_shm_${pid}_${tid}_* 2>/dev/null`; do
+			found=yes
+			title=`/usr/bin/tr -d '\0' < $shm`
+			thread_id=`/bin/basename "${shm}" | sed "s/apache_title_shm_${pid}_${tid}_//"`
+			echo "$pid.$tid - $thread_id - $title"
+		break
+		done
+	if [ "$found" = "no" ]; then
+		echo "$pid.$tid not found"
+	fi
+    done
+done
+```
+</div>
+Here are the examples of saved by module:
+<div class="notranslate">
+
+```
+# sh proctitles_info.sh
+571258.571258 NOT FOUND
+571300.571300 NOT FOUND
+571303.571303 - 000000000000000 - 1466513333.6 test.cloudlinux.com GET /1.php HTTP/1.1
+571304.571304 - 000000000000000 - 1466513335.3 test.cloudlinux.com GET /1.php HTTP/1.1
+571305.571305 - 000000000000000 - httpd
+571306.571306 - 000000000000000 - httpd
+571307.571307 - 000000000000000 - httpd
+571372.571372 - 000000000000000 - httpd
+571374.571374 - 000000000000000 - httpd
+
+Item info:
+[pid].[tid] - [posix thread id] - [request info]
+```
+</div>
+
+Request information can contain:
+
+<span class="notranslate"> _NOT FOUND_ </span> - means that process of Apache doesn't handle requests.<br>
+<span class="notranslate"> _httpd_ </span> - request is active and waiting for new connection.<br>
+<span class="notranslate"> _[seconds].[tenths of second] [host] [METHOD] [URL] [PROTOCOL]_ </span>
+
+#### Tuning parameters
+
+**Module parameters for tuning**
+
+| | |
+|-|-|
+|WatchHandlers | List of handlers for monitoring (httpd.conf, virtualhost).|
+|ProctitleUseFilter On/Off | Use old method of cleaning information or new via filter (for prefork better to use <span class="notranslate"> Off </span> )|
+
+### alt-suexec
+
+**What is <span class="notranslate">alt-suexec</span> package needed for?**
+
+If you use standard httpd from our repository, but your users' sites do not match standard Apache location of <span class="notranslate">`/var/www`</span>, then you should use alt-suexec.
+alt-suexec package brings suEXEC binaries pre-compiled for specific locations, like <span class="notranslate"> /home </span> .
+
+**How to switch suEXEC with alt-suexec**
+
+Based on httpd 2.2.16 basic for Cloudlinux OS 6, httpd 2.4.6 basic for CloudLinux OS 7 and httpd 2.4.37 basic for CloudLinux OS 8, the package brings to a server a set of suEXECs with different <span class="notranslate">DOCUMENT ROOTs</span> and <span class="notranslate">MIN_UID/MIN_GID</span> parameters. The first set of suEXECs is listed by such modes:
+
+<div class="notranslate">
+
+```
+switch_suexec -h  
+............  
+
+USE_BIZ - DOCUMENT ROOT /biz/ MIN_UID 500 MIN_GID 100 CALLER apache
+USE_HOSTING - DOCUMENT ROOT /hosting/ MIN_UID 500 MIN_GID 100 CALLER apache
+USE_HSPHERE - DOCUMENT ROOT /hsphere/local MIN_UID 100 MIN_GID 100 CALLER httpd
+USE_HOME - DOCUMENT ROOT /home/ MIN_UID 500 MIN_GID 100 CALLER apache
+USE_WWW - DOCUMENT ROOT /var/www/ MIN_UID 500 MIN_GID 100 CALLER apache
+USE_FSROOT - DOCUMENT ROOT / MIN_UID 500 MIN_GID 100 CALLER apache
+USE_STORAGE - DOCUMENT ROOT /storage/content/ MIN_UID 500 MIN_GID 100 CALLER apache
+USE_DATAS - DOCUMENT ROOT /datas/ MIN_UID 500 MIN_GID 100 CALLER apache
+```
+</div>
+The package also brings its own utility for installing specific suEXEC:
+
+| | |
+|-|-|
+|-l | list of available suexec|
+|-u | update suexec according to <span class="notranslate"> /etc/sysconfig/alt-suexec </span>|
+|-s | set new suexec and install it|
+|-p | set new suexec path and install it|
+|-o | set new suexec owners and install it|
+|-r | restore native apache suexec|
+
+There are two ways to set up new suEXEC binary:
+
+1) via config file <span class="notranslate"> _/etc/sysconfig/alt-suexec_ </span>
+2) via utility _switch_suexec_
+
+Here are the examples of how to set up suEXEC with <span class="notranslate"> DOC_ROOT = "/home": </span>
+
+**1.**
+
+1) add string <span class="notranslate"> "USE_HOME" </span> to <span class="notranslate"> _/etc/sysconfig/alt-suexec_   </span>
+2) run the command <span class="notranslate"> switch_suexec -u </span>
+
+**2.**
+
+1) <span class="notranslate"> switch_suexec -sUSE_HOME </span>
+
+Result of both methods:
+<div class="notranslate">
+
+```
+cat /etc/sysconfig/alt-suexec  
+............  
+
+USE_HOME
+```
+</div>
+
+Here is standard suEXEC for CloudLinux OS 6 clean server:
+<div class="notranslate">
+
+``` 
+/usr/sbin/suexec -V  
+............  
+
+-D AP_DOC_ROOT="/var/www"
+-D AP_GID_MIN=100
+-D AP_HTTPD_USER="apache"
+-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
+-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
+-D AP_UID_MIN=500
+-D AP_USERDIR_SUFFIX="public_html"
+-D AP_SAFE_DIRECTORY="/usr/local/safe-bin"
+```
+</div>
+
+Here is output of new suEXEC after <span class="notranslate"> USE_HOME </span> installtion:
+<div class="notranslate">
+
+``` 
+/usr/sbin/suexec -V  
+............  
+
+-D AP_DOC_ROOT="/home/"
+-D AP_GID_MIN=100
+-D AP_HTTPD_USER="apache"
+-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
+-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
+-D AP_UID_MIN=500
+-D AP_USERDIR_SUFFIX="public_html"
+-D AP_SAFE_DIRECTORY="/usr/local/safe-bin"
+```
+</div>
+
+Description of other switch_suexec parameters:
+
+| | |
+|-|-|
+|-p | if suexec binary file will be placed not in standard way <span class="notranslate"> /usr/sbin </span> - specify this new path with p-option|
+|-o | if suexec binary file not owned by <span class="notranslate"> root:apache </span> - specify new owner with o-option|
+
+For most cases -p and -o options for standard Apache are useless.
+
+Correct suEXEC will be restored even after httpd update or reinstall.
+
+List of pre-built suEXEC binary files stored without suid bit and not executable.
+
+**How to install alt-suexec?**
+
+For installation run the command:
+<div class="notranslate">
+
+```
+yum install alt-suexec
+```
+</div>
+
+**New suexec with custom parameters**
+
+If you need suEXEC with custom parameters absent in current set of alt-suexec, please submit a ticket on [https://cloudlinux.zendesk.com](https://cloudlinux.zendesk.com/) and we will add new suEXEC with needed parameters.
+
+### cPanel Nginx and application selectors
+
+Recently, cPanel added support for the [Nginx](https://documentation.cpanel.net/display/CKB/Nginx) web server and for [Python](https://documentation.cpanel.net/display/CKB/How+to+Install+a+Python+WSGI+Application) and [Node.js](https://documentation.cpanel.net/display/CKB/How+to+Install+a+Node.js+Application) applications. 
+
+We have checked the compatibility of ea-nginx and cPanel application Selectors with CloudLinux OS LVE and CageFS.
+All tests passed successfully and all processes started by ea-nginx and cPanel selectors are launched inside LVE and CageFS.
+
+
+Don’t forget, you can use Ruby/Python/Node.js Selectors from CloudLinux OS. Here you can find a large number of supported versions for Ruby/Python/Node.js applications.
+
+* [CloudLinux OS Python Selector](./#python-selector)
+* [CloudLinux OS Ruby Selector](./#ruby-selector)
+* [CloudLinux OS NodeJS Selector](./#node-js-selector)
+
+:::tip Note
+Nginx support is currently experimental.
+:::
+
+### How to use Certbot with alt-python36
+
+To run Certbot with <span class="notranslate">`alt-python36`</span>, follow the next steps:
+
+1. Add a path to the <span class="notranslate">`alt-python36`</span> in the environment variable <span class="notranslate">`PATH`</span> as the first element: <span class="notranslate">`/opt/alt/python36/bin/`</span>.
+2. Run Certbot with the <span class="notranslate">`--no-bootstrap`</span> parameter.
+
+**Example:**
+
+The old command to run Certbot on CentOS 6/Cloudlinux OS 6:
+
+<div class="notranslate">
+
+```
+certbot-auto --nginx
+```
+</div>
+
+The new command to run Certbot on CentOS 6/CloudLinux OS 6:
+
+<div class="notranslate">
+
+```
+PATH="/opt/alt/python36/bin/:$PATH" certbot-auto --no-bootstrap --nginx
+```
+</div>
+
+## Apache suexec module
+
+### General information and requirements
+
+* [How does it work with CloudLinux OS?](./#how-does-it-work-with-cloudlinux-os)
+
+This module is used by the Apache HTTP Server to switch to another user before executing CGI programs. The suEXEC feature provides users of the Apache HTTP Server with the ability to run CGI and SSI programs under user IDs different from the user ID of the calling web server (<span class="notranslate">apache/nobody</span>). Normally, when a CGI or SSI program executes, it runs as the same user who is running the web server.
+
+If we are talking about shared hosting where different accounts are launched on the same server, the installation of this module is necessary to ensure security.
+
+#### How does it work with CloudLinux OS?
+
+The DirectAdmin and CloudLinux OS (for httpd, httpd24-httpd and cPanel EasyApache 4) both provide a patched version of suexec. For other distributions you can use patches available here:
+[https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
+
+1. Besides the ability to run CGI programs under user IDs, suexec with CloudLinux OS patch adds the ability to run that script under CageFS. 
+  :::tip NOTE
+  Therefore, this module is necessary for the proper work of PHP Selector.
+  :::
+2. This module is also necessary for the proper work of mod_hostinglimits. The <span class="notranslate">`SuexecUserGroup`</span> directive indicates for `mod_hostinglimits` in which LVE the user process should be put in.
+
+
+### Configuration
+
+**SuexecUserGroup Directive**
+
+**Syntax**: <span class="notranslate">SuexecUserGroup User Group</span>
+
+**Context**: `httpd.conf`, `virtualhost`
+
+**Description**: The SuexecUserGroup directive allows you to specify a user and a group for CGI programs to run as. Startup will fail if this directive is specified but the suEXEC feature is disabled.
+
+::: warning Note
+Control panels such as cPanel, Plesk, and DirectAdmin add this directive to the Apache configuration automatically when creating a domain. If you use the server without a control panel, make sure this directive is added for each virtual host.
+:::
+
+
+### Installation
+
+The <span class="notranslate">`mod_suexec`</span> installation process varies depending on the control panel and Apache.
+
+* [Installing on cPanel servers with EasyApache 4](./#installing-on-cpanel-servers-with-easyapache-4-2)
+  * [Via command line](./#via-command-line)
+  * [Via administrator interface](./#via-administrator-interface)
+* [Installing on Plesk servers](./#installing-on-plesk-servers-2)
+* [Installing on DirectAdmin servers](./#installing-on-directadmin-servers-2)
+* [Installing on servers with no control panel](./#installing-on-servers-with-no-control-panel-3)
+
+#### Installing on cPanel servers with EasyApache 4
+
+#### Via command line
+
+1. Install `mod_suexec` through YUM package manager as follows:
+
+  <div class="notranslate">
+  
+  ```
+  yum install ea-apache24-mod_suexec
+  ```
+  </div>
+
+  :::warning NOTE
+  `ea-apache24-mod_suexec` conflicts with the `mod_ruid2` therefore, before installing the module, remove `ea-apache24-mod_ruid2` as follows: <span class="notranslate">`$ yum remove ea-apache24-mod_ruid2`</span>
+  :::
+
+2. Now, when the module is installed, restart Apache:
+
+  <div class="notranslate">
+  
+  ``` 
+  service httpd restart
+  ```
+  </div>
+
+  :::tip Note
+  If you use CageFS + PHP Selector, you should run the <span class="notranslate">`cagefsctl --force-update`</span> command.
+  :::
+
+#### Via administrator interface
+
+1. Open EasyApache4 page.
+2. Click <span class="notranslate">_Customize_</span> for <span class="notranslate">_Currently installed Packages_</span>.
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_1.webp)
+
+3. Click <span class="notranslate">_Apache Modules_</span>. Find <span class="notranslate">`mod_suexec`</span> and click <span class="notranslate">_Yes_</span> to install it.
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_2.webp)
+
+4. Select <span class="notranslate">_Review_</span> and <span class="notranslate">_Provision_</span>.
+
+  ![](/images/cloudlinuxos/cloudlinux_os_components/mod_suexec_admin_ui_3.webp)
+
+5. Wait while <span class="notranslate">_Provision_</span> will be finished.
+   
+   :::tip Note
+   If you use CageFS + PHP Selector, you should run the <span class="notranslate">`cagefsctl --force-update`</span> command.
+   :::
+
+#### Installing on Plesk servers
+
+This module is integrated into Apache for Plesk control panel by default.
+
+#### Installing on DirectAdmin servers
+
+This module is integrated into Apache for DirectAdmin control panel by default.
+
+#### Installing on servers with no control panel
+
+This module is integrated into httpd Apache rpm provided by Cloudlinux OS by default.
+
+If you are using an alternative Apache - [httpd24](https://www.cloudlinux.com/cloudlinux-os-blog/entry/httpd24-updated-for-cloudlinux-6), nothing has to be done as this module is also integrated into httpd24-httpd Apache rpm provided by Cloudlinux by default.
diff --git a/docs/cloudlinuxos/cloudlinux_os_kernel/README.md b/docs/cloudlinuxos/cloudlinux_os_kernel/README.md
new file mode 100644
index 000000000..f78ce70f2
--- /dev/null
+++ b/docs/cloudlinuxos/cloudlinux_os_kernel/README.md
@@ -0,0 +1,1138 @@
+# CloudLinux OS kernel
+
+This documentation describes specific features of the CloudLinux kernel. In other cases the kernel has the same features and innovations as any similar RHEL kernel.
+More information about the actual kernel changes and releases can be obtained from our [changelog](https://changelog.cloudlinux.com/).
+
+* [CL9 LTS kernel](./#cl9-lts-kernel)
+* [Hybrid Kernels](./#hybrid-kernels)
+* [SecureLinks and Link Traversal Protection](./#securelinks-and-link-traversal-protection)
+* [File change API](./#file-change-api)
+* [Tuned-profiles-cloudlinux](./#tuned-profiles-cloudlinux)
+* [Kernel config variables](./#kernel-config-variables)
+* [Virtualized /proc filesystem](./#virtualized-proc-filesystem)
+* [Ptrace block](./#ptrace-block)
+* [Xen XVDA](./#xen-xvda)
+* [Umask behavior](./#umask-behavior)
+* [IO limits latency](./#io-limits-latency)
+* [Reading LVE usage](./#reading-lve-usage)
+* [Flashcache](./#flashcache)
+* [OOM killer for LVE processes](./#oom-killer-for-lve-processes)
+* [File system quotas](./#file-system-quotas)
+* [Enter LVE when using cPanel utilities](./#enter-lve-when-using-cpanel-utilities)
+* [Proactive reporting kernel crash events with Sentry and Kernel Panic Receiver](./#proactive-reporting-kernel-crash-events-with-sentry-and-kernel-panic-receiver)
+
+## CL9 LTS kernel 
+
+In CL9 we don’t have our own kernel, instead we use AlmaLinux’s one which gets regular upstream updates.  
+
+For stability purposes we have also prepared the LTS (Long Term Support) kernel which is older than AlmaLinux by upstream version but has all security fixes / high scored CVEs. 
+
+We recommend this kernel as it minimizes changes while maintaining comprehensive CVE coverage. 
+
+### How To Install
+
+Run the following commands:
+
+```
+dnf install -y --allowerasing kernel-lts kmod-lve-lts perf-lts bpftool-lts
+```
+In case you have dkms third-party modules that need devel package you should install them too: 
+```
+dnf install -y kernel-lts-devel kernel-lts-devel-matched 
+```
+
+After that, you should reboot:
+
+```
+reboot
+```
+
+After the reboot, you should delete regular kernels to prevent regular updates from overwriting default boot kernel: 
+```
+dnf remove kernel-core
+``` 
+
+You should see the similar dnf output:  
+
+![](/images/dnf-cl9-lts.png) 
+
+
+## Hybrid Kernels
+
+Hybrid kernels give you the ability to take advantage of the benefits and features available in newer kernels without having to completely upgrade to another version of the operating system. Example - for the CloudLinux 7 kernel, based on version 3.10, you can install a hybrid kernel (same as on CloudLinux 8), which is based on version 4.18. This provides more kernel options, memory and overall optimization, as well as a positive impact on system performance. 
+
+#### How to migrate from the normal kernel to hybrid one
+
+::: tip Note
+The system must have an active CloudLinux OS license
+:::
+
+:::warning Warning
+If you use `yum-plugin-protectbase`, please make sure it is disabled before stating the normal-to-hybrid script.
+:::
+
+You should perform the following commands:
+
+```
+yum update
+normal-to-hybrid
+```
+Then if the script execution is completed without errors - perform the server reboot.
+
+::: tip Note
+You can always migrate from the hybrid kernel to normal one with the following commands:
+```
+yum update
+hybrid-to-normal
+```
+:::
+
+#### Known limitations and issues of hybrid kernels
+
+**CloudLinux OS 6 Hybrid kernel**
+
+1. We do not remove Hybrid kernel after migration from Hybrid to the normal channel, but we remove <span class="notranslate"> linux-firmware </span> package which is needed to boot Hybrid kernel. This is because <span class="notranslate"> CloudLinux OS </span> 6 does not allow to remove the package of currently running kernel. Thus please don't reboot the server back to Hybrid kernel after you remove it.
+
+2. Kernel module signature isn't checking for now, as 3.10 kernel is using x509 certificates to generate keys and CloudLinux OS 6 cannot detect signatures created in such way.
+
+## SecureLinks and Link Traversal Protection
+
+::: tip Note
+Link Traversal Protection is disabled by default for the CloudLinux OS.
+:::
+
+CloudLinux OS provides comprehensive protection against 
+symbolic link attacks popular in shared hosting environment.
+
+The protection requires setting multiple kernel parameters to be enabled:
+
+**SecureLinks:**
+* [fs.enforce_symlinksifowner](./#fs-enforce-symlinksifowner)
+* [fs.symlinkown_gid](./#fs-symlinkown-gid)
+
+**Link Traversal Protection:**
+* [fs.protected_symlinks_create](./#fs-protected-symlinks-create)
+* [fs.process_symlinks_by_task](./#fs-process-symlinks-by-task)
+
+Please reffer to [this article](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/configuring-kernel-parameters-at-runtime_managing-monitoring-and-updating-the-kernel#doc-wrapper) in order to know how to setup these parameters.
+
+#### **fs.enforce_symlinksifowner**
+
+To protect against symlink attack where attacker tricks Apache web server to read some other user PHP config files, or other sensitive file, enable:
+
+```
+fs.enforce_symlinksifowner=1
+```
+
+Setting this parameter will deny any process running under gid _fs.symlinkown_gid_ to follow the symlink if owner of the link doesn’t match the owner of the target file.
+
+Defaults:
+
+```
+fs.enforce_symlinksifowner = 1
+fs.symlinkown_gid = 48
+```
+
+| | |
+|-|-|
+|<span class="notranslate"> _fs.enforce_symlinksifowner = 0_ </span> | do not check <span class="notranslate"> symlink </span> ownership|
+|<span class="notranslate"> _fs.enforce_symlinksifowner = 1_ </span> | deny if <span class="notranslate"> symlink </span> ownership doesn’t match target, and process <span class="notranslate"> gid </span> matches <span class="notranslate"> _symlinkown_gid</span>|
+|<span class="notranslate"> _fs.enforce_symlinksifowner = 2_ </span> | deny if a process is in <span class="notranslate"> LVE </span> or <span class="notranslate"> symlink </span> ownership doesn’t match target, and process gid matches <span class="notranslate"> _symlinkown_gid</span>|
+
+When <span class="notranslate"> _fs.enforce_symlinksifowner_ </span> set to 1, processes with <span class="notranslate"> GID </span> 48 will not be able to follow <span class="notranslate"> symlinks </span> if they are owned by <span class="notranslate"> user1 </span> , but point to file owned <span class="notranslate"> user2 </span> .
+
+##### **fs.symlinkown_gid**
+
+On standard Apache installation, this webserver is usually running under GID 48.
+On cPanel servers, Apache is running under user nobody, GID 99.
+
+To change GID of processes that cannot follow symlink, edit the file _/etc/sysctl.conf_ , add the line:
+
+```
+fs.symlinkown_gid = XX
+```
+
+And execute:
+
+```
+sysctl -p
+```
+
+To disable symlink owner match protection feature, set  _fs.enforce_symlinksifowner = 0_ in _/etc/sysctl.conf_ , and execute:
+
+```
+sysctl -p
+```
+
+::: tip Note
+_fs.symlinkown_gid_ parameter values for httpd service user and _fs.proc_super_gid_ for nagios service user is written to _/etc/sysctl.d/90-cloudlinux.conf_.
+:::
+
+#### **fs.protected_symlinks_create** <Badge type="info" text="cPanel"/>
+
+:::warning Warning
+When used outside CageFS (from cPanel tools for instance), <span class="notranslate">`fs.protected_symlinks_create`</span> isn't sufficient for symlink protection.
+To fully protect symlink access in this case, use <span class="notranslate">`fs.process_symlinks_by_task=1`</span> in addition to <span class="notranslate">`fs.protected_symlinks_create=1`</span>.
+:::
+
+<span class="notranslate"> [CageFS](/cloudlinuxos/cloudlinux_os_components/#cagefs) </span> is extremely powerful at stopping most information disclosure attacks, where a hacker could read sensitive files like <span class="notranslate">_/etc/passwd_</span> .
+
+Yet, <span class="notranslate"> CageFS </span> does not work in each and every situation. For example, on <span class="notranslate"> cPanel </span> servers, it is not enabled in <span class="notranslate"> WebDAV </span> server, <span class="notranslate"> cPanel </span> file manager and webmail, as well as some FTP servers don’t include proper change rooting.
+
+This allows an attacker to create symlink or hardlink to a sensitive file like <span class="notranslate"> _/etc/passwd_ </span> and then use <span class="notranslate"> WebDAV </span> , filemanager, or webmail to read the content of that file.
+
+You can prevent such attacks by preventing user from creating symlinks and hardlinks to files that they don’t own.
+
+This is done by set following kernel options to 1:
+<div class="notranslate">
+
+```
+fs.protected_symlinks_create = 1
+fs.protected_hardlinks_create = 1
+```
+</div>  
+
+::: danger
+We do not recommend to use protected_symlinks option for cPanel users as it might break some of the cPanel functionality.
+Please read the known issues section before enabling this feature.
+:::
+
+* [Known issues with fs.protected_symlinks_create=1 on cPanel servers](./#known-issues-with-fs-protected-symlinks-create-1-on-cpanel-servers)
+
+#### **fs.process_symlinks_by_task** <Badge type="info" text="cPanel"/>
+
+::: tip Note
+This option is available on CloudLinux 7 Hybrid, CloudLinux 8 or newer versions. Also please note that this feature is available for cPanel only.
+:::
+
+This parameter is needed to protect against symlink vulnerability where an attacker might get access to files out of the CageFS via cPanel tools: File Manager, WebDAV, Webmail, etc. When a symlink is accessed from cPanel tools (non-root user case) we check whether the current process UID matches the symlink target UID.
+
+To enable the protection for CloudLinux OS, set the <span class="notranslate">`fs.process_symlinks_by_task`</span> parameter to 1:
+<div class="notranslate">
+
+```
+fs.process_symlinks_by_task=1
+```
+</div>
+
+To disable the protection for CloudLinux OS 7 hybrid, set the <span class="notranslate">`fs.process_symlinks_by_task`</span> parameter to 0:
+<div class="notranslate">
+
+```
+fs.process_symlinks_by_task=0
+```
+</div>
+
+#### Known issues with fs.protected_symlinks_create=1 on cPanel servers
+
+Here are some examples of what may go wrong on cPanel servers. If <span class="notranslate">`fs.protected_symlinks_create=1`</span> is set on the server, it can cause the following issues:
+
+* `rsync` is failed
+
+If you use the `rsync` to copy/transfer files and they contain symlinks, you'll see the errors like these:
+
+<div class="notranslate">
+
+```
+"rsync error: some files could not be transferred (code 23)" and the transfer will be failed. 
+```
+</div> 
+
+ It affects `rsync` tasks as well as cPanel transfer tools.
+
+* backup extracting may not work. Errors during the restoration:
+  
+<div class="notranslate">
+
+```
+Error extracting /home/domain/backups/home.tar.gz : /bin/tar: .cagefs/tmp/mysql.sock: Cannot create symlink to `/var/lib/mysql/mysql.sock'.
+Permission denied. /bin/tar: .cagefs/tmp/.s.PGSQL.5432: Cannot create symlink to `/var/run/postgres/.s.PGSQL.5432': No such file or directory.
+```
+</div> 
+
+Any backup for accounts (including cPanel backup) cannot be extracted.
+
+* `dmesg` is flooded with the <span class="notranslate">`may_create_sym_link`</span> messages like:
+
+<div class="notranslate">
+
+```
+may_create_sym_link: can't find ea-phpXX in cron
+may_create_sym_link: can't find ea-phpXX in ea-php-cli
+```
+</div> 
+
+It's popping up each second and may increase the size of the <span class="notranslate">`/var/log/messages`</span> file.
+
+#### **fs.process_symlinks_proc**
+
+Setting this parameter will deny any process in LVE to resolve symlinks that is pointing to another mount namespace. This protection is crucial for CageFS.
+
+Default is true.
+
+
+## File change API
+
+### General
+
+**General description**
+
+One of the main problems on a shared hosting system for file backup operations is to figure out which files have changed. Using <span class="notranslate"> INOTIFY </span> on a 1T drive with a large number of small files and directories guarantees slow startup times, and a lot of context switching between kernel and userspace - generating additional load. On the other hand scanning disk for newly modified files is very <span class="notranslate"> IO </span> intensive, and can kill the performance of the fastest disks.
+
+**CloudLinux OS approach**
+
+<span class="notranslate"> CloudLinux File Change API </span> is a kernel level technology with the user space interface that buffers lists of modified files in the kernel and then off-loads that list to user space daemon.
+
+After that - any software (with enough permissions) can get a list of files that has been modified for the last 24 hours.
+
+The software is very simple to use and produces the  list of modified files. As such we expect file backup software, including integrated cPanel backup system to integrate with this <span class="notranslate"> API </span> soon.
+
+### Usage and integration
+
+**Userland utilities**
+
+<span class="notranslate">/usr/bin/cloudlinux-backup-helper </span> is a utility for getting the list of changed files.
+
+It is supposed to be run by a super user only.
+
+Command line parameters:
+<div class="notranslate">
+
+```
+-t | --timestamp retrieve file names for files modified after specified timestamp
+-u | --uid       retrieve file names for particular UID only
+```
+</div>
+If no UID specified, are retrieved for all users. If no timestamp specified, all database events are shown.
+
+**Output format**
+<div class="notranslate">
+
+```
+protocol version (1 right now), timestamp (in seconds) - up to which time data was collected
+UID:absolute path to file changed
+UID:absolute path to file changed
+…
+```
+</div>   
+
+:::tip Note
+The timestamp in output is needed so you can clearly identify from which timestamp to get list of changed files next.
+:::
+
+**_Examples:_**
+<div class="notranslate">
+
+```
+[root@localhost ~]# cloudlinux-backup-helper -t 1495533489 -u <UID>
+1,1495533925
+1001:/home/user2/public_html/output.txt
+1001:/home/user2/public_html/info.php
+[root@localhost ~]# cloudlinux-backup-helper -t 1495533489
+1,1495533925
+1000:/home/user1/.bashrc
+1001:/home/user2/public_html/output.txt
+1001:/home/user2/public_html/info.php
+1003:/home/user3/logs/data.log
+```
+</div>
+**Getting changed files by end user**
+
+<span class="notranslate">/usr/bin/cloudlinux-backup-helper-uid</span>  is a SUID wrapper for the  <span class="notranslate"> cloudlinux-backup-helper </span>  utility that enables an end user to get the list of files changed. It accepts timestamp argument only and retrieves data of the user who is running it only.
+
+**_Examples:_**
+<div class="notranslate">
+
+```
+[user@localhost ~]$ cloudlinux-backup-helper-uid               
+1,1495530576
+1000:/home/user/.bash_history 
+
+[user@localhost ~]$ cloudlinux-backup-helper-uid -t 1495547922
+1,1495548343
+1000:/home/user/file1.txt
+1000:/home/user/file2.txt
+```
+</div>
+This command is available within CageFS.
+
+### Installation and configuration
+
+
+<span class="notranslate"> **cloudlinux-fchange-0.1-5** </span>
+
+**Requirements**
+
+<span class="notranslate"> CloudLinux OS </span> 6 (requires Hybrid kernel) or 7
+Kernel Version: 3.10.0-427.36.1.lve1.4.47
+
+**Installation and configuration**
+
+To install <span class="notranslate"> cloudlinux-fchange </span> system run:
+
+_CloudLinux OS 7:_
+<div class="notranslate">
+
+```
+yum install cloudlinux-fchange --enablerepo=cloudlinux-updates-testing
+```
+</div>
+
+_CloudLinux OS 6 Hybrid:_
+
+<div class="notranslate">
+
+```
+yum install cloudlinux-fchange --enablerepo=cloudlinux-hybrid-testing
+```
+</div>
+Configuration file can be found in <span class="notranslate">/etc/sysconfig/cloudlinux-fchange </span>
+
+Database containing list of modified files is located at <span class="notranslate">/var/lve/cloudlinux-fchange.db </span> by default.
+
+**Starting and stopping**
+
+After successful installation the event collecting daemon starts automatically, providing all <span class="notranslate"> kernel-exposed </span> data are in place.
+
+To start daemon:
+<span class="notranslate">_CloudLinux OS 7:_ </span>
+
+<div class="notranslate">
+
+```
+systemctl start cloudlinux-file-change-collector
+```
+</div>
+
+_CloudLinux OS 6 Hybrid:_
+
+<div class="notranslate">
+
+```
+service cloudlinux-file-change-collector start
+```
+</div>
+To stop daemon:
+<span class="notranslate"> </span>
+_CloudLinux OS 7:_
+
+<div class="notranslate">
+
+```
+systemctl stop cloudlinux-file-change-collector
+```
+</div>
+
+_CloudLinux OS 6 Hybrid:_
+
+<div class="notranslate">
+
+```
+service cloudlinux-file-change-collector stop
+```
+</div>
+
+
+To uninstall <span class="notranslate"> cloudlinux-fchange </span> run:
+<div class="notranslate">
+
+```
+yum remove cloudlinux-fchange
+```
+</div>
+
+### Configuration details
+
+
+Configuration resides in <span class="notranslate">/etc/sysconfig/cloudlinux-fchange</span>. The following is the default configuration (see comments):
+<div class="notranslate">
+
+```
+# sqlite database file path. If commented out a default value is used
+#database_path=/var/lve/cloudlinux-fchange.db
+
+# If uncommented paths starting with 'include' one are processed only
+# Pay attention this parameter is a regular string, not a regex
+# To include more than one item just specify several lines to include:
+# include=/one
+# include=/two
+
+# If uncommented exclude paths which contain 'exclude'
+# Pay attention this parameter is a regular string, not a regex
+# To exclude more than one item just specify several lines to exclude:
+# exclude=var
+# exclude=tmp
+
+# Daemon polling interval in seconds
+polling_interval=5 
+
+# Time to keep entries in days. Does not clean if commented out or zero
+time_to_keep=1
+
+# User read-only mode minimal UID
+# If file change collector stopped, all users with UID >= user_ro_mode_min_uid
+# are restricted to write to their home directory. This prevents to miss
+# a file change event.
+# Value of -1 (default) allows to disable the feature
+user_ro_mode_min_uid=-1
+
+# Minimal UID of events to be processed.
+# Events of users with UID less then specified are not handled.
+# By default 500 (non-system users for redhat-based systems)
+#minimal_event_uid=500
+ 
+# SQLite shared lock prevents setting more restrictive locks. That is a
+# process cannot write to a database table when a concurrent process reads
+# from the table. As saving data to database is considered far more important
+# than getting them (data could be reread a second later after all), database
+# writer could try to terminate concurrent reading processes. Just set
+# terminate rivals to 'yes' to turn this ability on.
+# terminate_rivals=no 
+
+# Events to be handled. Currently the following types of events are processed:
+# 1. file creation
+# 2. file deletion
+# 3. directory creation
+# 4. directory deletion
+# 5. file content/metadata modification
+# 6. file/directory attributes/ownership modification
+# 7. hardlink creation
+# 8. symlink creation
+# 9. file/directory moving/renaming
+# By default all events are processed. Keep in mind that events for a filepath
+# are cached, i.e if a file was deleted and then a file with the same absolute
+# name is created, only the deletion event is triggerred. Changing file
+# modification timestamp with command 'touch' will trigger modification event
+# as if a file content is modified.
+# Currently supported options are:
+# file_created, file_modified, file_deleted, dir_created, dir_deleted,
+# owner_changed, attrib_changed, moved, hardlink_created, symlink_created, all
+# Options that don't have 'file' or 'dir' prefix, applied to both files and
+# directories. To set more than one options, separate them with commas,
+# e.g. event_types=file_created,file_deleted,file_modified. Unknown options are
+# ignored.
+#
+# event_types=all
+```
+</div>
+
+:::tip Note
+Please keep in mind, that current implementation implies that one process is writing to a database and another is reading from it. As reading sets shared lock to a database table, the writing process cannot write to the table until the lock is released. That’s why passing a timestamp to cloudlinux-backup-helpermatters: this way the number of records to be returned is substantially decreased, lowering the processing time and filtering out old records. Likewise, pay attention to narrowing the scope of events being recorded. Chances are that changing attributes, ownership, directory creation/deletion, symlink events are not relevant and there’s no need to keep them.
+:::
+
+### Low-level access
+
+:::tip Note
+Using this options is dangerous, and might cause problems with <span class="notranslate">CloudLinux File Change API.</span>
+:::
+
+The kernel exposes the functionality to /proc/sys/fs/datacycle/ folder.
+
+1. <span class="notranslate"> **enable** </span> - enable/disable the functionality. Write 1 to this file to enable, 0 to disable. If disabled, no events are coming to events file.
+
+2. <span class="notranslate"> **events** </span> - the modified files log itself. Events in the format <span class="notranslate"> <EVENT_ID>:<EVENT_TYPE_ID>:<USER_ID>:<FILE_PATH> </span> are constantly appending to the end of the file if datacycle enabled. File events are never duplicated: if we have file modification event, we would not get file deletion event if the file has been later deleted. This events buffer has limited capacity, therefore from time to time, the events log requires flushing.
+
+3. <span class="notranslate"> **flush** </span> - a file for clearing events log. For flushing, the last <span class="notranslate"> event_id </span> from the events file is written to this file. Right after this, events log is truncated to that <span class="notranslate"> event_id </span> .
+
+4. <span class="notranslate"> **user_ro_mode** </span> - forbidding users with UIDs equal or bigger that set in this file writing to their home directories. At the boot, the file has -1. When it’s written positive value, say 500, the system starts effectively preventing users from modifying their home dirs (on write attempt a user gets <span class="notranslate"> ‘read-only filesystem’ </span> error). This feature is designed to prevent users from updating their home dirs when events are not handled.
+
+5. <span class="notranslate"> **entries_in_buffer** </span> - just counter of log entries of events file.
+
+6. <span class="notranslate"> **min_event_uid** </span> - this file has minimal UID of events to be handled. Events from users with smaller UID are not handled. By default 500 (non-system users in redhat-based systems).
+
+## Tuned-profiles-cloudlinux
+
+The <span class="notranslate"> **_tuned-profiles-cloudlinux_** </span> package brings a range of kernel under-the-hood tunings to address high LA, iowait issues what were detected earlier on particular users deploys. The package also encloses OOM adjustments to prioritize the elimination of overrun PHP, <span class="notranslate"> lsphp, Phusion Passenger </span> workers processes over other processes (e.g. ssh, a cron job).
+
+There are three profiles provided by CloudLinux OS:
+<div class="notranslate">
+
+```
+# tuned-adm list | grep cloudlinux
+- cloudlinux-default          - Default CloudLinux tuned profile
+- cloudlinux-dummy            - Empty CloudLinux tuned profile
+- cloudlinux-vz               - Empty CloudLinux tuned profile
+```
+</div>
+
+
+<span class="notranslate"> cloudlinux-dummy</span> and  <span class="notranslate"> cloudlinux-vz</span> are used for internal needs or when  <span class="notranslate"> Virtuozzo/OpenVZ </span>  detected and actually do nothing.  
+
+<span class="notranslate"> cloudlinux-default </span> is one to be used, it actually does the following:
+
+1. Switches CPU power consumption mode to the maximum. CPU operates at maximum performance at the maximum clock rate:
+
+<div class="notranslate">
+
+```
+governor=performance
+energy_perf_bias=performance
+```
+</div>
+
+::: tip Note
+If standard software CPU governors are used.
+:::
+
+
+
+ 2. Applies the following kernel options:  
+<span class="notranslate"> 
+vm.force_scan_thresh=100 </span> - Improves kernel memory clean-up in case of big number of running LVE.
+
+UBC parameters set the limits for the containers:
+
+<span class="notranslate">  ubc.dirty_ratio=100 </span> - Defines maximum RAM percentage for dirty memory pages.
+<span class="notranslate"> dirty_background_ratio=75</span> - Defines RAM percentage when to allow writing dirty pages on the disk.
+
+3. _[CloudLinux OS 7 only]_ Detects used disk types and changes elevator to <span class="notranslate"> 'deadline' </span> for HDD and to <span class="notranslate"> 'noop' </span> for SSD in <span class="notranslate"> /sys/block/[blockname]/queue/scheduler </span> . 
+
+::: tip Note
+<span class="notranslate">The script uses /sys/block/[blockname]/queue/rotational flag, some RAID controllers can not set it properly. For example, SSD used for RAID but rotational is set to 1 by RAID driver. As a workaround add the following to /etc/rc.d/rc.local to make it applied on boot:</span>
+:::
+
+<div class="notranslate">
+
+```
+echo "noop" > /sys/block/[blockname]/queue/scheduler  
+echo "0" > /sys/block/[blockname]/queue/rotational
+```
+</div>
+
+
+Where <span class="notranslate"> _[blockname]_ </span> is used device name, like <span class="notranslate"> _sda/sdb_ </span> .
+
+And make it executable:
+<div class="notranslate">
+
+```
+chmod +x /etc/rc.d/rc.local
+```
+</div>
+
+4. _[CloudLinux OS 7 only]_ The profile sets <span class="notranslate"> I/O </span> scheduler. For the normal discs the <span class="notranslate"> Deadline Scheduler </span> is set to improve <span class="notranslate"> IO </span> performance and decrease <span class="notranslate"> IO </span> latency, for SSD - noop.
+When configuring scheduler <span class="notranslate"> I/O </span> queue is changed and set to the value 1024 which improves overall <span class="notranslate"> I/O </span> subsystem performance by caching <span class="notranslate"> IO </span> requests in memory.
+
+5. Disables transparent <span class="notranslate"> HugePage </span> .
+
+6. Provides adjustment group file for OOM-Killer to kill overrun php, lsphp and <span class="notranslate"> Phusion Passenger </span> workers first.
+
+To install:
+
+<div class="notranslate">
+
+```
+yum install tuned-profiles-cloudlinux
+```
+</div>
+
+To start using a profile:
+
+<div class="notranslate">
+
+```
+tuned-adm profile cloudlinux-default
+```
+</div>
+
+To stop using a profile:
+
+<div class="notranslate">
+
+```
+tuned-adm off
+```
+</div>
+
+
+## Kernel config variables
+
+Starting from **lvemanager 4.0-25.5**, **lve-utils 3.0-21.2**, and **cagefs-6.1-26**, CloudLinux OS utilities can read/write kernel config variables from a custom config /etc/sysctl.d/90-cloudlinux.conf (earlier, the parameters were read/written only from sysctl.conf ).
+
+CloudLinux OS utilities get parameter by using `sysctl` system utility. So for now, even if a config variable is not set in the `sysctl.conf` and in the `/etc/sysctl.d` config files, this variable will be read by `sysctl` utility directly from `/proc/sys`.
+
+If you changed some kernel variables in `/etc/sysctl.d/90-cloudlinux.conf` you need to apply these changes to the kernel parameter by running the command:
+
+<div class="notranslate">
+
+```
+sysctl --system
+```
+</div>
+
+After that, the variable can be read by the sysctl utility.
+
+Starting from **cagefs-6.1-27**,  fs.proc_can_see_other_uid will be migrated (one time) from /etc/sysctl.conf into /etc/sysctl.d/90-cloudlinux.conf . If this variable is not set in either file, it will default to 0.
+It is strongly advised against setting this variable in 90-cloudlinux.conf . Define it in /etc/sysctl.conf or in some other config file with an index number greater than 90-cloudlinux.conf , e.g. `/etc/sysctl.d/95-custom.conf`.
+
+Starting from **lve-utils-3.0-23.7**  fs.proc_super_gid and fs.symlinkown_gid will be migrated (one time) from /etc/sysctl.conf into /etc/sysctl.d/90-cloudlinux.conf .
+
+For **lve-utils** versions from 3.0-21.2 to 3.0-23.7 the migration was performed the same way, but during every package install/update.
+Variables setting guidelines are the same as for CageFS (see above).
+
+The CL kernel with the lve module restricts an access to all files in /proc/net/* except the ones in the following whitelist:  
+```
+tcp, tcp6, udp, udp6, assocs, raw, raw6, unix, dev
+```
+If you want to restrict an access even to those that are in the whitelist you should set `kernel.proc_disable_net = 1` (by default it’s disabled).
+
+## Virtualized /proc filesystem
+
+You can prevent user from seeing processes of other users (via ps/top command) as well as special files in /proc file system by setting fs.proc_can_see_other_uid sysctl.
+
+To do that, edit /etc/sysctl.conf
+<div class="notranslate">
+
+```
+fs.proc_can_see_other_uid=0
+fs.proc_super_gid=600
+```
+</div>
+And do:
+<div class="notranslate">
+
+```
+# sysctl -p
+```
+</div>
+fs.proc_can_see_other_uid=0
+
+If fs.proc_can_see_other_uid is set to 0, users will not be able to see special files. If it is set to 1 - user will see other processes IDs in /proc filesystem.
+
+fs.proc_super_gid=XX
+
+The fs.proc_super_gid sets group ID which will see system files in /proc, add any users to that group so they will see all files in /proc. Usually needed by some monitoring users like nagios or zabbix and [cldetect utility](/cloudlinuxos/command-line_tools/#cldetect) can configure few most commonly used monitoring software automatically.
+
+#### Automatic configuration of a group in the fs.proc_super_gid
+
+Starting from **lve-utils v.4.2.0-1**, when installing (not updating) the `lve-utils` package it automatically creates the `clsupergid` group and registers this group in the `fs.proc_super_gid` (if this group was not created before).
+If a group was created in the `fs.proc_super_gid` earlier all stays the same.
+
+
+Virtualized /proc filesystem in CloudLinux OS 8/CloudLinux OS 7 hybrid will display all files to unprivileged users. But unprivileged users will have access only to the following files (as well as directories for PIDs for the user):
+<div class="notranslate">
+
+```
+/proc/cpuinfo
+/proc/version
+/proc/stat
+/proc/uptime
+/proc/loadavg
+/proc/filesystems
+/proc/stat
+/proc/cmdline
+/proc/meminfo
+/proc/mounts
+/proc/net/tcp
+/proc/net/tcp6
+/proc/net/udp
+/proc/net/udp6
+/proc/net/assocs
+/proc/net/raw
+/proc/net/raw6
+/proc/net/unix
+/proc/net/dev
+```
+</div>
+
+:::tip Note
+Starting from lve-utils 3.0-21.2, fs.proc_super_gid parameter in da_add_admin utility is written to /etc/sysctl.d/90-cloudlinux.conf.
+:::
+
+### Remounting procfs with "hidepid" option
+
+In **lve-utils-2.1-3.2** and later `/proc` can be remounted with `hidepid=2` option to enable additional protection for procfs. This remount is performed in lve_namespaces service.
+This option is in sync with `fs.proc_can_see_other_uid` kernel parameter described above.
+When `/etc/sysctl.conf` does not contain `fs.proc_can_see_other_uid` setting, the protection is off (procfs is remounted with `hidepid=0` option). In this case `fs.proc_super_gid` setting is ignored. Users are able to see full `/proc` including processes of other users on a server. This is a default behavior.
+
+If `/etc/sysctl.conf` contains `fs.proc_can_see_other_uid=1` setting, then `/proc` will be remounted with `hidepid=0` option (disable `hidepid` protection for all users).
+If `/etc/sysctl.conf` contains `fs.proc_can_see_other_uid=0` setting, then `/proc` will be remounted with `hidepid=2` option (enable `hidepid` protection for all users).
+If `/etc/sysctl.conf` contains `fs.proc_can_see_other_uid=0` and `fs.proc_super_gid=$GID` settings, then `/proc` will be remounted with `hidepid=2, gid=$GID` options (enable `hidepid` for all users except users in group with gid $GID).
+
+To apply `/etc/sysctl.conf` changes, you should execute
+<div class="notranslate">
+
+```
+service lve_namespaces restart
+```
+</div>
+ Or
+<div class="notranslate">
+ 
+```
+/usr/share/cloudlinux/remount_proc.py
+```
+</div>
+
+So, admin can prevent users from seeing processes of other users via `fs.proc_can_see_other_uid` and `fs.proc_super_gid` settings in `/etc/sysctl.conf`, like earlier.
+
+Also, you can override this by specifying desired options for `/proc` in `/etc/fstab`.
+
+To disable hidepid, add to `/etc/fstab` the following:
+<div class="notranslate">
+
+```
+proc /proc proc defaults,hidepid=0,gid=0 0 0
+```
+</div>
+Or you can specify desired hidepid and gid values explicitly:
+<div class="notranslate">
+
+```
+proc /proc proc defaults,hidepid=2,gid=clsupergid 0 0
+```
+</div>
+ You should execute
+<div class="notranslate">
+ 
+```
+mount -o remount /proc
+```
+</div>
+
+to apply `/etc/fstab` changes.  
+Nevertheless, we recommend to manage procfs mount options via `/etc/sysctl.conf` as described above for backward compatibility. 
+
+::: tip Note
+There is a known issue on CloudLinux OS 6 systems. User cannot see full /proc inside CageFS even when this user is in “super” group, that should see full /proc. This issue does not affect users with CageFS disabled. CloudLinux OS 7 is not affected.
+:::
+
+::: tip Note
+Starting from lve-utils 3.0-21.2, lve_namespaces service can read parameters from the /etc/sysctl.d/90-cloudlinux.conf.
+:::
+
+::: tip Note
+Even if fs.proc_can_see_other_uid and fs.proc_super_gid parameters are not set in config files but specified in /proc/sys, then when restarting lve_namespaces service the parameters from /proc/sys will be used. So, /proc will be remounted according to these parameters.
+:::
+
+### Remounting procfs on CloudLinux OS 8
+
+On CloudLinux OS 8, starting from the kernel version `4.18.0-193.28.1.lve1.el8.x86_64` remounting is controlled by the kernel.
+
+As before, admins are able to change the settings `fs.proc_can_see_other_uid` and `fs.proc_super_gid` in the `/etc/sysctl.d/90-cloudlinux.conf` or `/etc/sysctl.conf`.
+
+To apply changes, execute the following command:
+
+```
+sysctl --system
+```
+
+It is no longer needed to manually run the `/usr/share/cloudlinux/remount_proc.py` to remount `/proc`.
+
+::: tip Note
+On Cloudlinux OS 8, changing the `/etc/fstab` file for setting `/proc` remounting with the `hidepid=` option **will not cause any effect** as remounting is totally controlled by the kernel and depends on the `fs.proc_can_see_other_uid` option.
+:::
+
+## Ptrace block
+
+:::tip
+Since CL7 kernel it’s recommended to use the native sysctl parameter `yama.ptrace_scope`. For details refer to the [official documentation](https://docs.kernel.org/admin-guide/LSM/Yama.html#ptrace-scope).
+::: 
+
+Starting with kernel 3.10.0-427.18.s2.lve1.4.21 ( <span class="notranslate"> CloudLinux  OS </span> 7) and 2.6.32-673.26.1.lve1.4.17 ( <span class="notranslate"> CloudLinux OS </span> 6) we re-implemented <span class="notranslate"> ptrace block </span> to protect against <span class="notranslate"> ptrace </span> family of vulnerabilities. It prevents end user from using any <span class="notranslate"> ptrace </span> related functionality, including such commands as <span class="notranslate"> strace, lsof </span> or <span class="notranslate"> gdb </span> .
+
+By default, <span class="notranslate"> CloudLinux OS </span> doesn't prevent <span class="notranslate"> ptrace </span> functionality.
+
+Defaults:
+<div class="notranslate">
+
+```
+kernel.user_ptrace = 1
+kernel.user_ptrace_self = 1
+```
+</div>
+
+The option <span class="notranslate"> kernel.user_ptrace </span> disables <span class="notranslate"> PTRACE_ATTACH </span> functionality, option <span class="notranslate"> kernel.user_ptrace_self </span> disables <span class="notranslate"> PTRACE_TRACEME </span> .
+
+To disable all <span class="notranslate"> ptrace </span> functionality change both <span class="notranslate"> sysctl </span> options to 0, add this section to <span class="notranslate"> /etc/sysctl.conf </span> :
+<div class="notranslate">
+
+```
+## CL. Disable ptrace for users
+kernel.user_ptrace = 0
+kernel.user_ptrace_self = 0
+##
+```
+</div>
+
+Apply changes with:
+<div class="notranslate">
+
+```
+$ sysctl -p
+```
+</div>
+
+Different software could need different access to <span class="notranslate"> ptrace </span> , you may need to change only one option to 0 to make them working. In this case, there will be only partial <span class="notranslate"> ptrace </span> protection. 
+
+::: danger
+ptrace protection is known to break PSA service for Plesk 11
+:::
+
+## Xen XVDA
+
+2.6.32 kernels have different mode of naming <span class="notranslate"> Xen XVDA </span> drives.
+
+By adding <span class="notranslate"> xen_blkfront.sda_is_xvda=0 </span> to kernel boot line in <span class="notranslate"> grub.conf </span> you will make sure no naming translation is done, and the drives will be identified as <span class="notranslate"> xvde </span> .
+
+By default, this option is set to 1 in the kernel, and drives are detected as <span class="notranslate"> xvda </span> .
+This is needed only for CloudLinux OS 6 and <span class="notranslate"> Hybrid </span> kernels.
+
+## Umask behavior
+
+:::tip Note
+CloudLinux OS 6, CloudLinux OS 6 hybrid, CloudLinux OS 7, CloudLinux OS 7 hybrid kernels.
+::: 
+ 
+Starting from the kernel module **lve-kmod-2.0-10**, the behavior of umask is changed.
+
+Now, when entering LVE task's original umask value is preserved, instead of using LVE's umask value.
+This behavior is typical for all kernels: CloudLinux OS 6, CloudLinux OS 6 hybrid, CloudLinux OS 7, CloudLinux OS 7 hybrid kernels. 
+
+## IO limits latency
+
+**[lve1.2.29+]**
+
+When customer reaches <span class="notranslate"> IO Limit, the processes that are waiting for  <span class="notranslate"> IO will be placed to sleep to make sure they don't go over the limit. That could make some processes sleep for a very long time. </span> </span>
+By defining <span class="notranslate"> IO latency, you can make sure that no process sleeps due to  <span class="notranslate"> IO limit for more then X milliseconds. By doing so, you will also let customers to burst through the limits, and use up more than they were limited too in some instances. </span> </span>
+
+This option is <span class="notranslate"> OFF by default. </span>
+
+_For CloudLinux OS 6 , CloudLinux OS 7, CloudLinux OS 8 (kmodlve 2.1-2 and later):_
+
+To enable <span class="notranslate"> IO </span> Limits latency and set it to 10 seconds:
+<div class="notranslate">
+
+```
+echo 10000 > /sys/module/kmodlve/parameters/latency
+```
+</div>
+To disable latency:
+<div class="notranslate">
+
+```
+echo 2000000000 > /sys/module/kmodlve/parameters/latency
+```
+</div>
+
+It is possible to set, for example, 1000 as a permanent value. To do so, create a file <span class="notranslate">/etc/modprobe.d/kmodlve.conf </span> with the following content:  
+<span class="notranslate">`options kmodlve latency=1000` </span>
+
+
+_For <span class="notranslate"> CloudLinux OS </span> 5 (OBSOLETE):_
+
+To enable <span class="notranslate"> IO </span> Limits latency and set it to 10 seconds:
+<div class="notranslate">
+
+```
+echo 10000 > /sys/module/iolimits/**parameters/latency
+```
+</div>
+To disable latency:
+<div class="notranslate">
+
+```
+echo 2000000000 > /sys/module/iolimits/**parameters/latency
+```
+</div>
+
+
+## Reading LVE usage
+
+CloudLinux OS kernel provides real time usage data in file.
+
+All the statistics can be read from that file in real time. Depending on your kernel version you will get either Version 6 of the file, or version 4 of the file.
+You can detect the version by reading the first line of the file. It should look like:
+ 
+6:LVE... for version 6  
+4:LVE... for version 4
+
+First line presents headers for the data.
+Second line shows default limits for the server, with all other values being 0.
+The rest of the lines present limits & usage data on per <span class="notranslate"> LVE </span> bases.
+
+Version 6 (CL6 & hybrid kernels):
+<div class="notranslate">
+
+```
+6:LVE        EP        lCPU        lIO        CPU        MEM        IO        lMEM        lEP        nCPU        fMEM        fEP        lMEMPHY        lCPUW        lNPROC        MEMPHY        fMEMPHY        NPROC        fNPROC
+0        0        25        1024        0        0        0        262144        20        1        0        0        262144        100        0        0        0        00
+300        0        25        1024        1862407        0        0        262144        20        1        0        0        262144        100        0        31        000
+```
+</div>
+
+| |  |  | |
+|-|--|--|-|
+|**Label** | **Description** | **Value** | **Supported versions**|
+|<span class="notranslate"> LVE </span> | <span class="notranslate"> LVE ID </span> | number | |
+|<span class="notranslate"> EP </span> | Number of <span class="notranslate"> entry processes </span> | number | |
+|<span class="notranslate"> lCPU </span> | <span class="notranslate"> CPU </span> Limit | % relative to total <span class="notranslate"> CPU power </span> | |
+|<span class="notranslate"> lIO </span> | <span class="notranslate"> IO </span> limits for CL6 | KB/s for v6, from 1 to 100 for v4 | |
+|<span class="notranslate"> CPU </span> | <span class="notranslate"> CPU </span> usage since reboot | in nanoseconds for v6, hertz for v4 | |
+|<span class="notranslate"> MEM </span> | Virtual memory usage | number of 4k pages | |
+|<span class="notranslate"> IO </span> | <span class="notranslate"> IO </span> usage | KB/s for v6, 0 for v4 | |
+|<span class="notranslate"> lMEM </span> | Virtual memory limit | number of 4k pages | |
+|<span class="notranslate"> lEP </span> | <span class="notranslate"> Entry Processes </span> limit | number | |
+|<span class="notranslate"> nCPU </span> | Number of cores limit | number of cores | |
+|<span class="notranslate"> fMEM </span> | <span class="notranslate"> Virtual memory </span> faults | number of faults | |
+|<span class="notranslate"> fEP </span> | <span class="notranslate"> Entry Processes </span> faults | number of faults | v6+|
+|<span class="notranslate"> lMEMPHY </span> | Physical memory limit | number | v6+|
+|<span class="notranslate"> lCPUW </span> | <span class="notranslate"> CPU </span> weight (not used) | from 1 to 100 | v6+|
+|<span class="notranslate"> lNPROC </span> | <span class="notranslate"> Number of processes </span> limit | number | v6+|
+|<span class="notranslate"> MEMPHY </span> | Physical memory usage | number of 4k pages | v6+|
+|<span class="notranslate"> fMEMPHY </span> | Physical memory faults | number of faults | v6+|
+|<span class="notranslate"> NPROC </span> | <span class="notranslate"> Number of processes </span> | number | v6+|
+|<span class="notranslate"> fNPROC </span> | <span class="notranslate"> Number of processes </span> faults | number of faults | v6+|
+|<span class="notranslate"> IOPS </span> | <span class="notranslate"> IO </span> operations since reboot | number | v8+|
+
+## Flashcache
+
+:::tip Note
+Available only for x86_64, <span class="notranslate">CloudLinux</span> OS 6 and Hybrid servers
+:::
+
+<span class="notranslate"> Flashcache </span> is a module originally written and released by <span class="notranslate">  Facebook (Mohan Srinivasan, Paul Saab </span> and <span class="notranslate"> Vadim Tkachenko </span> ) in April of 2010. It is a kernel module that allows Writethrough caching of a drive on another drive. This is most often used for caching a rotational drive on a smaller solid-state drive for performance reasons. This gives you the speed of an <span class="notranslate"> SSD </span> and the size of a standard rotational drive for recently cached files. <span class="notranslate"> Facebook </span> originally wrote the module to speed up database <span class="notranslate"> I/O </span> , but it is easily extended to any <span class="notranslate"> I/O </span> .
+
+To install on <span class="notranslate"> CloudLinux OS </span> 6 & Hybrid servers:
+<div class="notranslate">
+
+```
+yum install flashcache
+```
+</div>
+
+More info on <span class="notranslate"> flashcache </span> : [https://github.com/facebook/flashcache/](https://github.com/facebook/flashcache/)
+
+<span class="notranslate"> ArchLinux </span> has a good page explaining how to use <span class="notranslate"> flashcache </span> :
+[https://wiki.archlinux.org/index.php/Flashcache](https://wiki.archlinux.org/index.php/Flashcache)
+
+
+## OOM killer for LVE processes
+
+When <span class="notranslate">LVE</span> reaches its memory limit, the processes inside that <span class="notranslate"> LVE </span> are killed by <span class="notranslate"> OOM Killer </span> and appropriate message is written to <span class="notranslate"> /var/log/messages </span> . When any <span class="notranslate"> LVE </span> hits huge number of memory limits in short period of time, then <span class="notranslate"> OOM Killer </span> could cause system overload. Starting from kernel 2.6.32-673.26.1.lve1.4.15 ( <span class="notranslate"> CloudLinux OS </span> 6) and from kernel 3.10.0-427.18.2.lve1.4.14 ( <span class="notranslate"> CloudLinux OS </span> 7) heavy <span class="notranslate"> OOM Killer </span> could be disabled. If so - lightweight <span class="notranslate"> SIGKILL </span> will be used instead.
+
+:::tip Note
+It is recommended to disable OOM killer for LVE processes and use SIGKILL instead
+:::
+
+By default <span class="notranslate"> OOM Killer </span> is enabled, to disable it please run:
+
+_For <span class="notranslate"> CloudLinux OS </span> 6_ :
+<div class="notranslate">
+
+```
+echo 1 > /proc/sys/ubc/ubc_oom_disable
+```
+</div>
+
+Also, add the following to <span class="notranslate"> _/etc/sysctl.conf_ </span> file to apply the same during boot:
+<div class="notranslate">
+
+```
+ubc.ubc_oom_disable=1
+```
+</div>
+
+_For <span class="notranslate"> CloudLinux OS </span> 7:_
+
+<div class="notranslate">
+
+```
+echo 1 > /proc/sys/kernel/memcg_oom_disable
+```
+</div>
+
+Also, add the following to <span class="notranslate">`/etc/sysctl.conf`</span> file to apply the same during boot:
+
+<div class="notranslate">
+
+```
+kernel.memcg_oom_disable=1
+```
+</div>
+
+
+## File system quotas
+
+
+In <span class="notranslate">**Ext4**</span> file system, the process with enabled capability <span class="notranslate"> CAP_SYS_RESOURCE </span> is not checked on the quota exceeding by default. It allows userland utilities <span class="notranslate"> _selectorctl_ </span> and <span class="notranslate"> _cagefs_ </span> to operate without fails even if a user exceeds a quota.
+
+To disable quota checking in <span class="notranslate">**XFS**</span> file system set <span class="notranslate">`cap_res_quota_disable`</span> option to 1 using the following command:
+
+<div class="notranslate">
+
+```
+echo 1 > /proc/sys/fs/xfs/cap_res_quota_disable
+```
+</div>
+
+## Enter LVE when using cPanel utilities <Badge type="info" text="cPanel"/> <Badge text="CloudLinux OS 7 hybrid"/> <Badge text="experimental" type="warning"/>
+
+cPanel tools might use more resources than desired, so to limit resource usage, you might want to enter the corresponding LVE when using cPanel tools on-behalf of a non-root user.
+
+
+This feature is considered experimental, as in this case there might be contention for LVE limits between cPanel tools and web-requests for a given user, which might not be suitable.
+
+The <span class="notranslate">`lve_setuid_enter`</span> parameter controls whether you want to enter the corresponding LVE when using cPanel tools on behalf of a non-root user.
+
+By default, the feature is disabled (0), to enable it, run the following for CloudLinux OS 7 hybrid:
+
+<div class="notranslate">
+
+```
+echo 1 > /sys/module/kmodlve/parameters/lve_setuid_enter
+```
+</div>
+
+## Proactive reporting kernel crash events with Sentry and Kernel Panic Receiver
+
+As updating the kernel is one of the most sensitive tasks, we'd like to achieve the maximum stability along the way.
+In case something goes wrong, proactive reacting to kernel crashes can help tremendously.
+
+Our new tool, _Kernel Panic Receiver_, released in [June 2020](https://blog.cloudlinux.com/kernel-panic-receiver-a-new-tool-to-organize-kernel-panic-logs) allows you to to organize kernel panic logs.
+Kernel Panic Receiver is an open-source component designed to pre-emptively resolve any kernel-related issues.
+
+Visit the [Kernel Panic Receiver project GitHub page](https://github.com/cloudlinux/kernel_panic_receiver).
+
+#### Usage
+
+To send required kernel logs from the clients' machines to _Kernel Panic Receiver_, we configure the default Linux kernel feature called _netconsole_.
+
+The configuration is done by the `initscripts` package, starting from the following versions:
+
+* For CloudLinux OS 6: `9.03.61-1.cloudlinux`
+* For CloudLinux OS 7: `9.49.49-1.cloudlinux`
+* For CloudLinux OS 8: `10.00.4-1.cloudlinux`
+
+To update the `initscripts` package, run the following command:
+
+```
+yum update initscripts --enablerepo=cloudlinux-updates-testing
+```
+
+When a kernel panic occurs, the _netconsole_ module sends logs to our server as plain text via the UDP protocol.
+
+#### What data is transferred by netconsole?
+
+The _netconsole_ sends only OOPs-related messages from the kernel ring buffer. It doesn't transfer any sensitive data, such as usernames, encryption keys, paths, etc. So, there are no security problems you should worry about.
+
+### Disabling the feature
+
+If you don't want to send us the data, you can turn the _netconsole_ service off (we don't recommend it, though).
+To disable transferring the data, just comment the `SYSLOGADDR` parameter in the _netconsole_ config file (`/etc/sysconfig/netconsole`):
+
+```
+# For more information about this data transmission, check this page:
+# https://cloudlinux.zendesk.com/hc/en-us/articles/360016481200
+# SYSLOGADDR=sentrykernel.cloudlinux.com
+```
+
+And stop the _netconsole_ service by running the following command:
+
+```
+service netconsole stop
+```
+
+:::tip Note
+_Netconsole_ is used only for Kernel Panic Receiver, so disabling it doesn't lead to issues with other CloudLinux OS services.
+:::
diff --git a/docs/cloudlinuxos/command-line_tools/README.md b/docs/cloudlinuxos/command-line_tools/README.md
new file mode 100644
index 000000000..1b18823a0
--- /dev/null
+++ b/docs/cloudlinuxos/command-line_tools/README.md
@@ -0,0 +1,4096 @@
+# Command-line tools (CLI)
+
+The list of the commands (CLI) you can use to manage CloudLinux OS components.
+
+* [CageFS](./#cagefs)
+* [LVE-stats 2](./#lve-stats-2)
+* [MySQL Governor](./#mysql-governor)
+* [PHP Selector](./#php-selector)
+* [Python Selector](./#python-selector)
+* [Ruby Selector](./#ruby-selector)
+* [Node.js Selector](./#node-js-selector)
+* [Apache mod_lsapi PRO](./#apache-mod-lsapi-pro)
+* [Website monitoring tool and Slow Site analyzer](./#website-monitoring-tool-and-slow-site-analyzer)
+* [X-Ray Autotracing](./#x-ray-autotracing)
+* [Other CLI tools](./#other-cli-tools)
+
+## CageFS
+
+* [Running command inside CageFS](./#running-command-inside-cagefs)
+* [Sanity check](./#sanity-check)
+
+`cagefsctl` is used to manage CageFS. It allows initializing and updating CageFS, as well as enabling/disabling CageFS for individual users.
+
+Use the following syntax to manage CageFS:
+<span class="notranslate">`/usr/sbin/cagefsctl [OPTIONS]`</span>
+
+
+Options:
+
+| | | |
+|-|-|-|
+|-i | <span class="notranslate"> --init </span> |initialize CageFS (create CageFS if it does not exist)|
+|-r | <span class="notranslate"> --reinit </span> |reinitialize CageFS (make backup and recreate CageFS)|
+|-u | <span class="notranslate"> --update </span> |update files in CageFS (add new and modified files to CageFS, remove unneeded files)|
+|-f | <span class="notranslate"> --force </span> |recreate CageFS (do not make backup, overwrite existing files)|
+|-d | <span class="notranslate"> --dont-clean </span> |do not delete any files from skeleton (use with <span class="notranslate"> --update </span> option)|
+|-k | <span class="notranslate"> --hardlink </span> |use hardlinks if possible|
+| | <span class="notranslate"> --create-mp </span> |Creates _/etc/cagefs/cagefs.mp_ file|
+| | <span class="notranslate"> --mount-skel </span> |mount CageFS skeleton directory|
+| | <span class="notranslate"> --unmount-skel </span> |unmount CageFS skeleton directory|
+| | <span class="notranslate"> --remove-all </span> |disable CageFS, remove templates and _/var/cagefs_ directory|
+| | <span class="notranslate"> --sanity-check </span> |perform basic self-diagnistics of common cagefs-related issues (mostly useful for support)|
+| | <span class="notranslate"> --addrpm </span> |add rpm-packages in CageFS (run <span class="notranslate"> `cagefsctl --update` </span> in order to apply changes)|
+| | <span class="notranslate"> --delrpm </span> |remove rpm-packages from CageFS (run <span class="notranslate"> `cagefsctl --update` </span> in order to apply changes)|
+| | <span class="notranslate"> --list-rpm </span> |list rpm-packages that are installed in CageFS|
+|-e | <span class="notranslate"> --enter </span> |enter into user's CageFS as root|
+| | <span class="notranslate"> --update-list </span> |update specified files only (paths are read from stdin)|
+| | <span class="notranslate"> --update-etc </span> |update _/etc_ directory of all or specified users|
+| | <span class="notranslate"> --set-update-period </span> |set min period of update of CageFS in days (default = 1 day)|
+| | <span class="notranslate"> --force-update </span> |force update of CageFS (ignore period of update)|
+| | <span class="notranslate"> --force-update-etc </span> |force update of _/etc_ directories for users in CageFS|
+| | <span class="notranslate"> --reconfigure-cagefs </span> |configure CageFS integration with other software (control panels, database servers, etc)|
+
+Use the following syntax to manage users:    
+<span class="notranslate"> `/usr/sbin/cagefsctl [OPTIONS] username [more usernames]` </span>
+
+Options:
+
+| | | |
+|-|-|-|
+|-m | <span class="notranslate"> --remount </span> |remount specified user(s)|
+|-M | <span class="notranslate"> --remount-all </span> |remount CageFS skeleton directory and all users (use this each time you have changed _cagefs.mp_ file|
+|-w | <span class="notranslate"> --unmount </span> |unmount specified user(s)|
+|____ | <span class="notranslate"> --unmount-dir </span> |unmount specified dir for all users|
+|-W | <span class="notranslate"> --unmount-all </span> |unmount CageFS skeleton directory and all users|
+|-l | <span class="notranslate"> --list </span> |list users that entered in CageFS|
+| | <span class="notranslate"> --list-logged-in </span> |list users that entered in CageFS via SSH|
+| | <span class="notranslate"> --enable </span> |enable CageFS for the user|
+| | <span class="notranslate"> --disable </span> |disable CageFS for the user|
+| | <span class="notranslate"> --enable-all </span> |enable all users, except specified in _/etc/cagefs/users.disabled_|
+| | <span class="notranslate"> --disable-all </span> |disable all users, except specified in _/etc/cagefs/users.enabled_|
+| | <span class="notranslate"> --display-user-mode </span> |display the current mode ( <span class="notranslate"> "Enable All" </span> or <span class="notranslate"> "Disable All" </span> )|
+| | <span class="notranslate"> --toggle-mode </span> |toggle mode saving current lists of users (lists of enabled and disabled users remain unchanged)|
+| | <span class="notranslate"> --list-enabled </span> |list enabled users|
+| | <span class="notranslate"> --list-disabled </span> |list disabled users|
+| | <span class="notranslate"> --user-status </span> |print status of specified user (enabled or disabled)|
+| | <span class="notranslate"> --getprefix </span> |display prefix for user|
+
+<span class="notranslate"> PHP Selector </span> related options:
+ 
+| | |
+|-|-|
+| <span class="notranslate"> --setup-cl-selector </span> | setup <span class="notranslate"> PHP Selector </span> or register new alt-php versions|
+| <span class="notranslate"> --remove-cls-selector </span> |unregister alt-php versions, switch users to default php version when needed|
+| <span class="notranslate"> --rebuild-alt-php-ini </span> |rebuild _alt_php.ini_ file for specified users (or all users if none specified)|
+| <span class="notranslate"> --validate-alt-php-ini </span> |same as <span class="notranslate"> `--rebuild-alt-php-ini` </span> but also validates _alt_php.ini_ options|
+| <span class="notranslate"> --cl-selector-reset-versions </span> |reset php version for specifed users to default (or all users if none specified)|
+| <span class="notranslate"> --cl-selector-reset-modules </span> |reset php modules (extensions) for specific users to defaults (or all users if none specified)|
+| <span class="notranslate"> --create-virt-mp </span> |create virtual mount points for the user|
+| <span class="notranslate"> --create-virt-mp-all </span> |create virtual mount points for all users|
+| <span class="notranslate"> --remount-virtmp </span> |create virtual mount points and remount user|
+| <span class="notranslate"> --apply-global-php-ini </span> |use with 0, 1 or 2 arguments from the list: <span class="notranslate"> `error_log`, `date.timezone` </span> without arguments applies all global php options including the two above|
+
+Common options:
+
+| | | |
+|-|-|-|
+|___ | <span class="notranslate"> --disable-cagefs </span> |disable CageFS|
+| | <span class="notranslate"> --cagefs-status </span> |print CageFS status: ( <span class="notranslate"> enabled </span> or <span class="notranslate"> disabled </span> )|
+| | <span class="notranslate"> --set-min-uid </span> |Set min <span class="notranslate"> UID </span> |
+| | <span class="notranslate"> --get-min-uid </span> |Display current MIN_UID setting|
+| | <span class="notranslate"> --print-suids </span> |Print list of <span class="notranslate"> SUID </span> and SGID programs in skeleton|
+| | <span class="notranslate"> --do-not-ask </span> |assume <span class="notranslate"> "yes" </span> in all queries (should be the first option in command)|
+| | <span class="notranslate"> --clean-var-cagefs </span> |clean _/var/cagefs_ directory (remove data of non-existent users)|
+| | <span class="notranslate"> --set-tmpwatch </span> |set `tmpwatch` command and parameters (save to _/etc/cagefs/cagefs.ini_ file)|
+| | <span class="notranslate"> --tmpwatch </span> |execute tmpwatch (remove outdated files in tmp directories in CageFS for all users)|
+| | <span class="notranslate"> --toggle-plugin </span> |disable/enable CageFS plugin|
+|-v | <span class="notranslate"> --verbose </span> |verbose output|
+| | <span class="notranslate"> --wait-lock </span> |wait for end of execution of other `cagefsctl` processes (when needed) before execution of the command|
+|-h | <span class="notranslate"> --help </span> |this message|
+
+
+
+#### Running command inside CageFS
+
+::: tip Note
+lve-wrappers 0.6-1+
+:::
+
+Sometimes you will need to execute a command as user inside CageFS.
+
+If a user has shell enabled - you can simply use:
+<div class="notranslate">
+
+```
+/bin/su - $USERNAME  -c _command_
+```
+</div>
+Yet, if a user have they shell disabled, it wouldn't work. To solve this issue, we have added command:
+<div class="notranslate">
+
+```
+/sbin/cagefs_enter_user [--root] [--no-fork] $USERNAME _command_
+```
+</div>
+
+**Options**:
+
+* `--root` – tells the utility not to reset UID and GID to user ones. It might be dangerous to call untrusted commands.
+* `--no-fork` – do not create a child process for a called command. The called command will replace the cagefs_enter process with exec.
+* `--no-cpu-limit`- remove all CPU limits (requires `kmod-lve` >= 2.0.36)
+* `--no-io-and-memory-limit` - remove all limits of IO and Memory (requires `kmod-lve` >= 2.0.36)
+
+If you disable CageFS for a user, then <span class="notranslate"> `cagefs_enter` </span> will be executed without <span class="notranslate"> `proxyexec` </span> .
+
+You can forcibly disable <span class="notranslate"> `cagefs_enter` </span> start via <span class="notranslate"> `proxyexec` </span> for all users (regardless if CageFS is enabled or disabled) by specifying the parameter <span class="notranslate"> _cagefs_enter_proxied=0_ in _/etc/sysconfig/cloudlinux_ </span>.
+
+<span class="notranslate"> _/bin/cagefs_enter.proxied_ </span> can be executed instead of <span class="notranslate"> _/bin/cagefs_enter_ </span> to enter CageFS without <span class="notranslate"> `proxyexec` </span> . Note that starting <span class="notranslate"> `cagefs_enter` </span> via <span class="notranslate"> `proxyexec` </span> is necessary to enable sending local notification messages to users with enabled CageFS. <span class="notranslate"> `cagefs_enter` </span> is executed via <span class="notranslate"> `proxyexec` </span> by default.
+
+
+#### Sanity check
+
+
+:::tip Note
+CageFS 6.0-34+
+:::
+
+CageFS <span class="notranslate">`--sanity-check`</span> utility allows to check CageFS configuration consistency, so that an administrator can save the time investigating issues with CageFS and ensure that custom configuration is correct.
+
+To start, run the command:
+<div class="notranslate">
+
+```
+cagefsctl --sanity-check
+```
+</div>
+At the moment 7 types of check are implemented:
+
+1. _Check cagefs mount points exists_ - reads _cagefs.mp_ file and verifies if the directories specified in it really exist on the disk. To learn more, visit [Mount points](/cloudlinuxos/cloudlinux_os_components/#mount-points) and [Split by username](/cloudlinuxos/cloudlinux_os_components/#split-by-username)
+
+2. _Check cagefs <span class="notranslate"> `users.enabled` </span> is a directory_ - ensures that if  <span class="notranslate"> _/etc/cagefs/users.enabled_ </span> exists, then it is a directory, not a file (if it is recognized as a file, then it would cause a breakdown).
+
+3. _Check cagefs <span class="notranslate"> `users.disabled` </span> is a directory_ - ensures that if  <span class="notranslate"> _/etc/cagefs/users.disabled_ </span> exists, then it is a directory, not a file (if it is recognized as a file, then it would cause a breakdown).
+
+4. _Check cagefs <span class="notranslate"> `disable.etcfs` </span> exists_ - checks if <span class="notranslate"> _/etc/cagefs/etc.safe/disable.etcfs_ </span> exists.
+
+5. _Check cagefs users can enter cagefs_ - chooses two users in the system with enabled CageFS (the first and the second ones in the unsorted list) and tries to log in to CageFS under their credentials and see what happens. It runs <span class="notranslate"> `su -l "$USER" -s /bin/bash -c "whoami"` </span> and compares the output with the <span class="notranslate"> $USER </span> and <span class="notranslate"> su </span> command retcode estimation.
+
+::: tip Note
+If a login fails, it can be due to various reasons, that can only be determined in manual mode. The checker only gives the output of the command.
+:::
+
+6. _Check cagefs proxy commands configs are parsable_ - tries to load <span class="notranslate"> _/etc/cagefs/*.proxy.commands_ </span> files and parse them to check the syntax. In case of any parsing error the test will fail. To learn more, visit [Executing by proxy](/cloudlinuxos/cloudlinux_os_components/#executing-by-proxy).
+
+7. _Check cagefs virt.mp files syntax_ - reads all _/var/cagefs///virt.mp_ files (if any) and checks their syntax validity. At the moment there are only two checks of the syntax: the file is not empty if it exists, and the file is not starting with the sub directory definitions (with @). To learn more, visit [Per-user virtual mount points](/cloudlinuxos/cloudlinux_os_components/#per-user-virtual-mount-points)
+
+8. _Check MultiPHP system default PHP version_ – checks that MultiPHP system default PHP version is **NOT** Alt-PHP. That means <span class="notranslate"> PHP Selector </span> should work properly. If MultiPHP system default PHP version is Alt-PHP, <span class="notranslate"> PHP Selector </span> does not work and should be disabled. To learn more on how to disable <span class="notranslate"> PHP Selector, </span> visit [cPanel LVE Manager](/cloudlinuxos/cloudlinux_os_components/#php-selector) 
+
+Possible results of the checks:
+
+* <span class="notranslate"> OK </span> - the check succeeded.
+
+* <span class="notranslate"> FAILED </span> - the check revealed a problem.
+
+* <span class="notranslate"> SKIPPED </span> - the check was skipped as it made no sense in such environment (e.g. wrong control panel) or can not be performed for some reason (e.g no users with enabled CageFS found). The actual result does not mean that a problem exists and can be considered as positive.
+
+* <span class="notranslate"> INTERNAL_TEST_ERROR </span> - the check failed because of a problem inside the checker itself. Must be reported to the developers.
+
+In case if at least one of the checks resulted neither <span class="notranslate"> OK </span> nor <span class="notranslate"> SKIPPED </span> then the checker will end with ret code >0.
+
+
+## LVE-stats 2
+
+* [lveinfo](./#lveinfo)
+* [lvechart](./#lvechart)
+* [dbgovchart](./#dbgovchart)
+* [lve-read-snapshot](./#lve-read-snapshot)
+* [lve-create-db](./#lve-create-db)
+* [cloudlinux-top](./#cloudlinux-top)
+  * [Usage](./#usage)
+  * [Output format](./#output-format)
+  * [Units of measurement](./#units-of-measurement)
+  * [Errors handling](./#errors-handling)
+  * [Examples](./#examples)
+* [cloudlinux-statistics](./#cloudlinux-statistics)
+  * [Usage](./#usage-2)
+  * [Output format](./#output-format-2)
+  * [Units of measurement](./#units-of-measurement-2)
+  * [Errors handling](./#errors-handling-2)
+  * [Examples](./#examples-2)
+
+| | |
+|-|-|
+|<span class="notranslate"> `/usr/sbin/lveinfo` </span> |utility to display historical information about LVE usage.|
+|<span class="notranslate"> `/usr/sbin/lvechart` </span> |creates a chart representing LVE usage for user.|
+|<span class="notranslate"> `/usr/sbin/dbgovchart` </span> |creates a chart representing MySQL usage for user.|
+|<span class="notranslate"> `/usr/sbin/lve-read-snapshot` </span> |displays information from system state (snapshots) for user.|
+|<span class="notranslate"> `/usr/sbin/lve-create-db` </span> |creates/recreates database for <span class="notranslate">lve-stats</span>.|
+|<span class="notranslate"> `/usr/sbin/cloudlinux-top` </span> |utility provides information about current MySQL and LVE usage of a running system in JSON format.|
+|<span class="notranslate"> `/usr/sbin/cloudlinux-statistics` </span> |utility provides historical information about resource usage.|
+
+<div class="notranslate">
+
+#### lveinfo
+
+</div>
+
+:::tip Note
+<span class="notranslate">lve-stats-2.2-2</span>
+:::
+
+**Usage**
+
+<div class="notranslate">
+
+```
+lveinfo [-h] [-v] [--dbgov DBGOV] [-f YYYY-MM-DD[HH:MM]]
+
+              [-t YYYY-MM-DD[HH:MM]] [--period PERIOD] [-u USER | --id ID]
+
+              [-d] [-o ALIAS] [-b ALIAS [ALIAS ...]] [-p 0..100]
+
+              [--by-fault ALIAS [ALIAS ...]] [-r FAULTS]
+
+              [--style {user,admin}] [-l LIMIT] [-c [PATH] | -j]
+
+              [--server_id SERVER_ID] [--servers-info]
+
+              [--show-all | --show-columns COLUMN_NAME [COLUMN_NAME ...]]
+
+              [--time-unit TIME_UNIT] [-m {v1,v2}]
+
+              [--blank-value [BLANK_VALUE]]
+```
+</div>
+
+<span class="notranslate">`lveinfo`</span> is an utility to display historical information about LVE usage.
+
+**Optional arguments**
+
+* <span class="notranslate"> `-h, --help` </span> – show this help message and exit
+* <span class="notranslate"> `-v, --version` </span> – show program's version number and exit
+* <span class="notranslate"> `--dbgov DBGOV` </span> – show <span class="notranslate"> MySql Governor</span> statistic
+* <span class="notranslate"> `-u USER, --user USER` </span> – use username instead of <span class="notranslate"> LVE id</span>, and show only record for that user
+* <span class="notranslate"> `--id ID` </span> – will display record only for that <span class="notranslate"> LVE id</span>
+* <span class="notranslate"> `-d, --display-username` </span> – try to convert <span class="notranslate"> LVE id</span> into username when possible
+* <span class="notranslate"> `-o ALIAS, --order-by ALIAS` </span> – orders results by one of the following:
+  | | | |
+  |-|-|-|
+  |<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|DESCRIPTION|
+  |<span class="notranslate">`cpu_avg`</span>|<span class="notranslate">`aCPU`</span>|average CPU usage|
+  |<span class="notranslate">`cpu_max`</span>|<span class="notranslate">`mCPU`</span>|max CPU usage|
+  |<span class="notranslate">`total_cpu_faults`</span>|<span class="notranslate">`CPUf`</span>|total number of max CPU usage faults|
+  |<span class="notranslate">`vmem_avg`</span>|<span class="notranslate">`aVMem`</span>|average virtual memory usage||<span class="notranslate">`vmem_max`</span>|<span class="notranslate">`mVMem`</span>|average virtual memory usage||<span class="notranslate">`total_vmem_faults`</span>|<span class="notranslate">`VMemF`</span>|total number of out of virtual memory faults|
+  |<span class="notranslate">`mep_avg`</span>|<span class="notranslate">`aEP`</span>|average number of entry processes (concurrent connections)|
+  |<span class="notranslate">`mep_max`</span>|<span class="notranslate">`mEP`</span>|max number of entry processes (concurrent connections)|
+  |<span class="notranslate">`total_ep_faults`</span>|<span class="notranslate">`EPf`</span>|total number of max entry processes faults|
+  |<span class="notranslate">`pmem_avg`</span>|<span class="notranslate">`aPMem`</span>|average physical memory usage (LVE version >= 6)|
+  |<span class="notranslate">`pmem_max`</span>|<span class="notranslate">`mPMem`</span>|max physical memory usage (LVE version >= 6)|
+  |<span class="notranslate">`nproc_avg`</span>|<span class="notranslate">`aNproc`</span>|average number of processes (LVE version >= 6)|
+  |<span class="notranslate">`nproc_max`</span>|<span class="notranslate">`mNproc`</span>|max number of processes (LVE version >= 6)|
+  |<span class="notranslate">`io_avg`</span>|<span class="notranslate">`aIO`</span>|average io usage (LVE version >= 6)|
+  |<span class="notranslate">`io_max`</span>|<span class="notranslate">`mIO`</span>|max io usage (LVE version >= 6)|
+  |<span class="notranslate">`total_pmem_faults`</span>|<span class="notranslate">`PMemF`</span>|total number of out of physical memory faults (LVE version >= 6)|
+  |<span class="notranslate">`total_nproc_faults`</span>|<span class="notranslate">`NprocF`</span>|total number of max processes faults (LVE version >= 6)|
+  |<span class="notranslate">`total_io_faults`</span>|<span class="notranslate">`IOf`</span>|total number of max io faults (LVE version >= 6)|
+  |<span class="notranslate">`iops_avg`</span>|<span class="notranslate">`aIOPS`</span>|average io operations (LVE version >= 8)|
+  |<span class="notranslate">`iops_max`</span>|<span class="notranslate">`mIOPS`</span>|max io operations (LVE version >= 8)|
+  |<span class="notranslate">`total_iops_faults`</span>|<span class="notranslate">`IOPSf`</span>|total number of max io operations faults (LVE version >= 8)|
+  |<span class="notranslate">`any_faults`</span>|<span class="notranslate">`anyF`</span>|total number of faults of all types|
+* <span class="notranslate"> `-b ALIAS [ALIAS ...]` `--by-usage ALIAS [ALIAS ...]`</span> – show LVEs with usage (averaged) within 90 percent of the limit available values:
+
+  | | | | |
+  |-|-|-|-|
+  |<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|DESCRIPTION|
+  |<span class="notranslate">`cpu_avg`</span>|<span class="notranslate">`cpu`</span>|<span class="notranslate">`aCPU`</span>|average CPU usage|
+  |<span class="notranslate">`cpu_max`</span>|<span class="notranslate">`cpu_max`</span>|<span class="notranslate">`mCPU`</span>|max CPU usage|
+  |<span class="notranslate">`vmem_avg`</span>|<span class="notranslate">`vmem`</span>|<span class="notranslate">`aVMem`</span>|average virtual memory usage|
+  |<span class="notranslate">`vmem_max`</span>|<span class="notranslate">`vmem_max`</span>|<span class="notranslate">`mVMem`</span>|max virtual memory usage|
+  |<span class="notranslate">`mep_avg`</span>|<span class="notranslate">`mep`</span>|<span class="notranslate">`aEP`</span>|average number of entry processes (concurrent connections)|
+  |<span class="notranslate">`mep_max`</span>|<span class="notranslate">`mep_max`</span>|<span class="notranslate">`mEP`</span>|max number of entry processes (concurrent connections)|
+  |<span class="notranslate">`pmem_avg`</span>|<span class="notranslate">`pmem`</span>|<span class="notranslate">`aPMem`</span>|average physical memory usage (LVE version >= 6)|
+  |<span class="notranslate">`pmem_max`</span>|<span class="notranslate">`pmem_max`</span>|<span class="notranslate">`mPMem`</span>|max physical memory usage (LVE version >= 6)|
+  |<span class="notranslate">`nproc_avg`</span>|<span class="notranslate">`nproc`</span>|<span class="notranslate">`aNproc`</span>|average number of processes (LVE version >= 6)|
+  |<span class="notranslate">`nproc_max`</span>|<span class="notranslate">`nproc_max`</span>|<span class="notranslate">`mNproc`</span>|max number of processes (LVE version >= 6)|
+  |<span class="notranslate">`io_avg`</span>|<span class="notranslate">`io`</span>|<span class="notranslate">`aIO`</span>|average io usage (LVE version >= 6)|
+  |<span class="notranslate">`io_max`</span>|<span class="notranslate">`io_max`</span>|<span class="notranslate">`mIO`</span>|max io usage (LVE version >= 6)|
+  |<span class="notranslate">`iops_avg`</span>|<span class="notranslate">`iops`</span>|<span class="notranslate">`aIOPS`</span>|average io operations (LVE version >= 8)|
+  |<span class="notranslate">`iops_max`</span>|<span class="notranslate">`iops_max`</span>|<span class="notranslate">`mIOPS`</span>|max io operations (LVE version >= 8)|
+
+* <span class="notranslate">`-p 0..100`, `--percentage 0..100`</span> – defines percentage for <span class="notranslate">`--by-usage`</span> option; default `90`
+* <span class="notranslate"> `--style {user,admin}` </span> – deprecated, not used.
+* <span class="notranslate"> `-l LIMIT`, `--limit LIMIT` </span> – max number of results to display, `10` by default, if `0` no limit
+* <span class="notranslate"> `-c [PATH]`, `--csv [PATH]` </span> – save statistics in CSV format; `-` by default (output to screen)
+* <span class="notranslate"> `-j`, `--json` </span> – display output in JSON format
+* <span class="notranslate"> `--server_id SERVER_ID` </span> – used with central database for multiple servers, default <span class="notranslate">`localhost`</span>
+* <span class="notranslate"> `--servers-info` </span> – show servers LVE versions
+* <span class="notranslate"> `--show-all` </span> – full output (show all limits); brief output is default; equivalent <span class="notranslate">`--show-columns all`</span>
+* <span class="notranslate"> `--show-columns COLUMN_NAME [COLUMN_NAME ...]` </span> – show only the listed columns; <span class="notranslate">`all`</span> for all supported columns
+  
+  | | |
+  |-|-|
+  |<span class="notranslate">COLUMN_NAME</span> |DESCRIPTION|
+  |<span class="notranslate"> `From ` </span> |Show start period statistics|
+  |<span class="notranslate"> `To  ` </span> |Show end period statistics|
+  |<span class="notranslate"> `ID ` </span> |LVE Id or username|
+  |<span class="notranslate"> `aCPU` </span> |Average <span class="notranslate"> CPU</span> usage|
+  |<span class="notranslate"> `uCPU` </span> |The percentage of user-allocated resource <span class="notranslate">CPU</span>|
+  |<span class="notranslate"> `mCPU` </span> |deprecated|
+  |<span class="notranslate"> `lCPU` </span> |<span class="notranslate">CPU</span> limit|
+  |<span class="notranslate">`CPUf`</span> |Out Of <span class="notranslate">CPU</span> usage Faults|
+  |<span class="notranslate">`aEP`</span> | Average Entry Processes|
+  |<span class="notranslate">`uEP` </span> |The percentage of user-allocated resource Entry processes|
+  |<span class="notranslate">`mEP` </span> |deprecated|
+  |<span class="notranslate">`lEP` </span> |maxEntryProc limit|
+  |<span class="notranslate">`aVMem` </span> |Average Virtual Memory Usage|
+  |<span class="notranslate">`uVMem ` </span> |The percentage of user-allocated resource Virtual Memory|
+  |<span class="notranslate">`mVMem` </span> |deprecated|
+  |<span class="notranslate">`lVMem` </span> |Virtual Memory Limit|
+  |<span class="notranslate">`VMemF` </span> |Out Of Memory Faults|
+  |<span class="notranslate">`EPf` </span> |Entry processes faults|
+  |<span class="notranslate">`aPMem` </span> |Average Physical Memory Usage (LVE version >= 6)|
+  |<span class="notranslate">`uPMem` </span> |The percentage of user-allocated resource Physical Memory (LVE version >= 6)|
+  |<span class="notranslate">`mPMem` </span> |deprecated (LVE version >= 6)|
+  |<span class="notranslate">`lPMem` </span> |Physical Memory Limit (LVE version >= 6)|
+  |<span class="notranslate">`aNproc` </span> |Average Number of processes (LVE version >= 6)|
+  |<span class="notranslate">`uNproc` </span> |The percentage of user-allocated resource Number of processes (LVE version >= 6)|
+  |<span class="notranslate">`mNproc` </span> |deprecated (LVE version >= 6)|
+  |<span class="notranslate">`lNproc` </span> |Limit of Number of processes (LVE version >= 6)|
+  |<span class="notranslate">`PMemF` </span> |Out Of Physical Memory Faults (LVE version >= 6)|
+  |<span class="notranslate">`NprocF` </span> |Number of processes faults (LVE version >= 6)|
+  |<span class="notranslate">`aIO` </span> |Average <span class="notranslate">I/O</span> (LVE version >= 6)|
+  |<span class="notranslate">`uIO` </span> |The percentage of user-allocated resource <span class="notranslate">I/O</span> (LVE version >= 6)|
+  |<span class="notranslate">`mIO` </span> |deprecated (LVE version >= 6)|
+  |<span class="notranslate">`lIO` </span> |<span class="notranslate">I/O</span> Limit (LVE version >= 6)|
+  |<span class="notranslate">`IOf` </span> |Out Of <span class="notranslate">I/O</span> usage Faults (LVE version >= 6)|
+  |<span class="notranslate">`aIOPS` </span> |Average <span class="notranslate">I/O</span> Operations (LVE version >= 8)|
+  |<span class="notranslate">`mIOPS` </span> |deprecated (LVE version >= 8)|
+  |<span class="notranslate">`uIOPS` </span> |The percentage of user-allocated resource <span class="notranslate">I/O</span> Operations (LVE version >= 8)|
+  |<span class="notranslate">`lIOPS` </span> |<span class="notranslate">I/O</span> Operations Limit (LVE version >= 8)|
+  |<span class="notranslate">`IOPSf` </span> |Out Of <span class="notranslate">I/O</span> Operations Faults (LVE version >= 8)|
+
+* <span class="notranslate"> `--time-unit TIME_UNIT` </span> – time step for grouping statistic in minutes; 1 min., by default; can use <span class="notranslate">`m\|h\|d`</span> suffixes; for example: `1h or 1h30m or 1d12h`
+* <span class="notranslate"> `-m {v1,v2}`, `--compat {v1,v2}` </span> – `v1` - return old output mode; `v2` - new mode; default `v1`; you can change default in config
+* <span class="notranslate"> `--blank-value [BLANK_VALUE]` </span> – Use to fill unsupported limits; default `-`
+* <span class="notranslate"> `-f YYYY-MM-DD[ HH:MM]`,  `--from YYYY-MM-DD[ HH:MM]`</span> – run report from date and time in <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present last 10 minutes are assumed
+* <span class="notranslate"> `-t YYYY-MM-DD[ HH:MM]`,  `--to YYYY-MM-DD[ HH:MM]`</span> – run report up to date and time in <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, reports results up to now
+* <span class="notranslate"> `--period PERIOD` </span> – time period; specify minutes with <span class="notranslate"> `m`, `h`</span> - hours, days with <span class="notranslate"> `d`</span>, and values: <span class="notranslate"> `today`, `yesterday`; `5m`</span> - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, as well as <span class="notranslate"> `today`</span>
+* <span class="notranslate"> `--by-fault ALIAS [ALIAS ...]` </span> – show LVEs which failed on max processes limit or memory limit
+  
+  | | | | |
+  |-|-|-|-|
+  |<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|DESCRIPTION|
+  |<span class="notranslate">`mcpu`</span>|<span class="notranslate">`cpu`</span>|<span class="notranslate">`CPUf`</span>|total number of max CPU usage faults|
+  |<span class="notranslate">`mem`</span>|<span class="notranslate">`vmem`</span>|<span class="notranslate">`VMemF`</span>|total number of out of virtual memory faults|
+  |<span class="notranslate">`mep`</span>|<span class="notranslate">`ep`</span>|<span class="notranslate">`EPf`</span>|total number of max entry processes faults|
+  |<span class="notranslate">`pmem`</span>|<span class="notranslate">`pmem`</span>|<span class="notranslate">`PMemF`</span>|total number of out of physical memory faults (LVE version >= 6)|
+  |<span class="notranslate">`nproc`</span>|<span class="notranslate">`nproc`</span>|<span class="notranslate">`NprocF`</span>|total number of max processes faults (LVE version >= 6)|
+  |<span class="notranslate">`io`</span>|<span class="notranslate">`io`</span>|<span class="notranslate">`IOf`</span>|total number of max io faults (LVE version >= 6)|
+  |<span class="notranslate">`iops`</span>|<span class="notranslate">`iops`</span>|<span class="notranslate">`IOPSf`</span>|total number of max io operations faults (LVE version >= 8)|
+  |<span class="notranslate">`any_faults`</span>|<span class="notranslate">`any`</span>|<span class="notranslate">`anyF`</span>|total number of faults of all types|
+* <span class="notranslate"> `-r FAULTS, --threshold FAULTS` </span>– in combination with <span class="notranslate">`--by-fault`</span>, shows only LVEs with number of faults above; default `1`
+  
+Prefixes <span class="notranslate">`Kb`, `Mb` </span> and <span class="notranslate">`Gb`</span> indicates powers of 1024.
+
+:::tip Note
+All <span class="notranslate">ALIAS</span> options are not case sensitive.
+:::
+
+<div class="notranslate">
+
+#### lvechart
+
+</div>
+
+`/usr/sbin/lvechart` - creates a chart representing LVE usage for user.
+
+**Usage**
+
+<div class="notranslate">
+
+```
+/usr/sbin/lvechart [OPTIONS]
+```
+</div>
+
+**Acceptable options**
+
+| | |
+|-|-|
+|<span class="notranslate"> `--help ` </span> |This help screen|
+|<span class="notranslate"> `--version` </span> |Version number|
+|<span class="notranslate"> `--from` </span> |Run report from date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format (if not present, last 10 minutes are assumed)|
+|<span class="notranslate"> `--to=` </span> |Run report up to date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format (if not present, reports results up to now)|
+|<span class="notranslate"> `--period=` </span> |Time period: specify minutes with `m`, `h` - hours, days with `d`, and values: <span class="notranslate">`today`</span>, <span class="notranslate">`yesterday`</span>; `5m` - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, as well as today|
+|<span class="notranslate"> `--id= ` </span> |<span class="notranslate">`LVE id`</span> will display record only for that <span class="notranslate">LVE id</span>|
+|<span class="notranslate"> `--user=` </span> |Use username instead of <span class="notranslate"> LVE id </span>, and show only record for that user|
+|<span class="notranslate"> `--server= ` </span> |<span class="notranslate">`Server id`</span> will display record for that server, instead of default (current)|
+|<span class="notranslate"> `--output= ` </span> |Filename to save chart as, if not present, output will be sent to STDOUT|
+|<span class="notranslate"> `--show-all` </span> |Show all graphs (by default shows graphs for which limits are set)|
+|<span class="notranslate"> `--style=` </span> |<span class="notranslate">`admin`, `user`</span> set chart style,  <span class="notranslate">CPU</span> limits are normalized to 100% in user’s style|
+|<span class="notranslate"> `--format=` </span> |<span class="notranslate">`svg`, `png`</span> set chart output format|
+
+<div class="notranslate">
+
+#### dbgovchart
+
+</div>
+
+
+`/usr/sbin/dbgovchart` - creates a chart representing MySQL usage for user.`
+
+**Usage**
+
+<div class="notranslate">
+
+```
+/usr/sbin/dbgovchart [OPTIONS]
+```
+</div>
+
+**Acceptable options**
+
+| | |
+|-|-|
+|<span class="notranslate"> `--help ` </span> |This help screen|
+|<span class="notranslate"> `--version` </span> |Version number|
+|<span class="notranslate"> `--from=` </span> |Run report from date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format (if not present, last 10 minutes are assumed)|
+|<span class="notranslate"> `--to=` </span> |Run report up to date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format (if not present, reports results up to now)|
+|<span class="notranslate"> `--period=` </span> |Time period: specify minutes with `m`,  `h` - hours, days with `d`, and values: <span class="notranslate">`today`</span>, <span class="notranslate">`yesterday`</span>; `5m` - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, as well as today`|
+|<span class="notranslate"> `--user=` </span> |mysql username|
+|<span class="notranslate"> `--output= ` </span> |Filename to save chart as, if not present, output will be sent to <span class="notranslate">STDOUT</span>|
+|<span class="notranslate"> `--show-all` </span> |Show all graphs (by default shows graphs for which limits are set)|
+|<span class="notranslate"> `--server=` </span> | <span class="notranslate"> `Server id`</span> will display record for that server, instead of default (current)|
+|<span class="notranslate"> `--style=` </span> | <span class="notranslate">`admin`, `user`</span> set chart style,  <span class="notranslate">CPU</span> limits are normalized to 100% in user’s style|
+|<span class="notranslate"> `--format=` </span> | <span class="notranslate">`svg`, `png`</span> set chart output format|
+
+<div class="notranslate">
+
+#### lve-read-snapshot
+
+</div>
+
+**Usage**
+
+<div class="notranslate">
+
+```
+lve-read-snapshot [-h] [--version] [-f FROM [FROM ...]] [-t TO [TO ...]
+                  [ -p PERIOD | --timestamp TIMESTAMP]
+                  [-i ID | -u USER] [-l] [-o file] [-j] [--stats]
+                  [--unit unit]
+```
+</div>
+
+Reads LVE system state snapshots for <span class="notranslate">LVE/user</span>.
+
+**Optional arguments**
+
+* <span class="notranslate">`-h, --help`</span> – show this help message and exit
+* <span class="notranslate">`--version`</span> – version number
+* <span class="notranslate">`-f FROM [FROM ...]`, `--from FROM [FROM ...]`</span> – run report from date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format, if not present last 10 minutes are assumed (default: `2016-10-24 19:28`)
+* <span class="notranslate">`-t TO [TO ...]`, `--to TO [TO ...]`</span> – run report up to date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format, if not present, reports results up to now (default: `2016-10-24 19:38`)
+* <span class="notranslate">`-p PERIOD`, `--period PERIOD`</span> – time period specify minutes with `m`, `h` - hours, days with `d`, and values: <span class="notranslate">`today`, `yesterday`</span>, `5m` - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, as well as today (default: `10m`)
+* <span class="notranslate">`--timestamp TIMESTAMP`</span> – time stamp in unix format for get one snapshot (default: <span class="notranslate">`None`</span>)
+* <span class="notranslate">`-i ID, --id ID`</span> – LVE id to show records for (default: <span class="notranslate">`None`</span>)
+* <span class="notranslate">`-u USER`, `--user USER`</span> – user account to show records for (default: <span class="notranslate">`None`</span>)
+* <span class="notranslate">`-l`, `--list`</span> – show timestamp list only (default: <span class="notranslate"> `False`</span>)
+* <span class="notranslate">`-o file`, `--output file`</span> – filename to save snaphots report to, if not present,output will be sent to <span class="notranslate">STDOUT</span> (default: <span class="notranslate">`None`</span>)
+* <span class="notranslate">`-j`, `--json`</span> – output in json format (default: <span class="notranslate">`False`</span>)
+* <span class="notranslate">`--stats`</span> – output stats, instead of snapshots (default: <span class="notranslate">`False`</span>)
+* <span class="notranslate">`--unit unit`</span> – group stats by time unit. Example values `3h`, `24h`, `1d`, `1w`. Other possible value is <span class="notranslate">`auto`</span> for grouping by each incident (default: <span class="notranslate">`1d`</span>)
+  
+One of <span class="notranslate">`-u --user`</span> or <span class="notranslate">`-i --id`</span> should be specified.
+
+<div class="notranslate">
+
+#### lve-create-db
+
+</div>
+
+**Usage**
+
+<div class="notranslate">
+
+```
+lve-create-db [-h] [--recreate] [--print-sql]
+                   [--update-serverid-prompt] [--update-serverid-auto]
+                   [--validate]
+```
+</div>
+
+Creates a database for <span class="notranslate">lve-stats</span>.
+
+**Optional arguments**
+
+* <span class="notranslate">`-h`, `--help`</span> – show this help message and exit
+* <span class="notranslate">`--recreate`</span> – drops and recreates database even if tables exists (default: <span class="notranslate">`False`</span>)
+* <span class="notranslate">`--print-sql`</span> – prints sql and exits, without creating db (default: <span class="notranslate">`False`</span>)
+* <span class="notranslate">`--update-serverid-prompt`</span> – update exist server ID or create new one (default: <span class="notranslate">`False`</span>)
+* <span class="notranslate">`--update-serverid-auto`</span> – update exist server ID with <span class="notranslate">uuid</span> (default: <span class="notranslate">`False`</span>)
+* <span class="notranslate">`--validate`</span> – check the correctness of the database structure (default: <span class="notranslate">`False`</span>)
+
+#### cloudlinux-top
+
+Utility provides information about current MySQL and LVE usage of a running system in JSON format.
+
+#### **Usage**
+
+<div class="notranslate">
+
+```
+cloudlinux-top [-h] [-v] [-j] [--hide-mysql]
+               [-u USERNAME | -r FOR_RESELLER] [-d DOMAIN] [-m MAX]
+               [-o ORDER_BY]
+```
+</div>
+
+**Optional arguments**
+
+* <span class="notranslate"> `-h, --help` </span> – show this help message and exit
+* <span class="notranslate"> `-v, --version`   </span> – show program version number and exit
+* <span class="notranslate"> `-j, --json`   </span> – return data in JSON format
+* <span class="notranslate"> `--hide-mysql`   </span> | `don't show MySQL related info
+* <span class="notranslate"> `-u USERNAME`, `--username USERNAME` </span> – show data only for a specific user. Can be used to filter the output; returns users with username <span class="notranslate">`%USERNAME%`</span>
+* <span class="notranslate"> `-r FOR_RESELLER`, `--for-reseller FOR_RESELLER` </span> – get information only about specified reseller and his users
+* <span class="notranslate"> `-d DOMAIN`, `--domain DOMAIN` </span> – show data only for a specific domain. Can be used to filter the output; returns users with domain <span class="notranslate">`%DOMAIN%`</span>
+* <span class="notranslate"> `-m MAX`, `--max MAX` </span> – show up to <span class="notranslate">`N`</span> records. If <span class="notranslate">`--max`</span> key is omitted. By default will show top 25 users
+* <span class="notranslate"> `-o ORDER_BY`, `--order-by ORDER_BY` </span> – sort output by resource usage; available options: <span class="notranslate">`cpu`, `mysql_cpu`, `io`, `mysql_io`, `iops`, `ep`, `nproc`, `pmem`</span>
+
+#### **Output format**
+
+<div class="notranslate">
+
+```
+{
+  "mySqlGov": "enabled",              # possible values: enabled, error
+  "mySqlGovMode": "abusers",          # see “MySQL Governor > Modes Of Operation”
+                                      # if MySQL Governor is not enabled, value is "none"
+ 
+  "resellers": [                      # list of resellers (available only with
+                                      # reseller limits feature)
+      {
+          "id": 1000020005,           # internal record id
+          "limit": <lve_section>,     # current limits (last 5 seconds)
+          "name": "reseller_name",    # reseller’s login in control panel
+          "usage": <lve_section>      # current usage (last 5 seconds)
+      }
+  ],
+  "result": "success",                # see the ‘errors handling’ section
+  "timestamp": 1522858537.337549,
+  "users": [
+      {
+          "domain": "domain.com",     # user’s primary domain (from control panel)
+          "id": 20005,                # lve_id, same as user id in /etc/passwd file
+          "limit": <lve_section>,     # limits for last 5 seconds
+          "reseller": "reseler1",     # user’s reseller (from control panel)
+          "usage": <lve_section>,     # usage for last 5 seconds
+          "username": "user"          # username from /etc/passwd file or “N/A” if user
+                                      # with such id does not exist
+       }
+   ]
+ }
+```
+</div>
+
+The structure<sup> *</sup> of <span class="notranslate">`<lve_section>`</span>:
+
+<div class="notranslate">
+
+```
+{
+"cpu": {
+ "all": 50.0,      # CPU usage or limit (LVE only)
+ "mysql": 0.0*     # CPU usage or limit (MySQL Governor only)
+},
+"ep": 1.0,           # number of entry processes
+"io": {
+ "all": 0.0,       # IO usage or limit (LVE only)
+ "mysql": 0.0**     # IO usage or limit (MySQL Governor only)
+},
+"iops": 0.0,         # IO operations per second
+"mem": 258048,       # memory usage or limit
+"pno": 1.0           # number of processes
+}
+```
+</div>
+
+
+:::tip Note
+* you can modify this structure using <span class="notranslate">`--show`</span> option, see [usage examples](./#examples) for details.
+* MySQL values are only present when <span class="notranslate">MySQL Governor</span> statistics is available and <span class="notranslate">`--hide-mysql`</span> options is not used.
+:::
+
+#### **Units of measurement**
+
+For <span class="notranslate">`limits`</span> and <span class="notranslate">`usage`</span> sections we use the following units of measurement.
+
+| | |
+|-|-|
+|**Value** | **Units of measurement**|
+|<span class="notranslate"> cpu (lve and mysql) </span> | percentage of one <span class="notranslate"> CPU </span> core|
+|<span class="notranslate"> io (lve and mysql) </span> | bytes per second|
+|<span class="notranslate"> iops </span> | number of <span class="notranslate"> IO </span> operations per second|
+|<span class="notranslate"> mem </span> | bytes|
+|<span class="notranslate"> ep </span> | number of entry processes|
+|<span class="notranslate"> pno </span> | number of processes|
+
+
+#### **Errors handling**
+
+The format of the error message is the same as in the other <span class="notranslate">`cloudlinux- *`</span> utilities. When everything is ok, the <span class="notranslate">`result`</span> value is <span class="notranslate">`success`</span>. Otherwise, it contains error message. In case of unexpected errors, the output will be as follows.
+
+<div class="notranslate">
+
+```
+cloudlinux-top --json 
+```
+```
+{
+  "context": {
+      "error_text": "Very bad error"
+  },
+  "result": "An error occured: \"%(error_text)s\"",
+  "timestamp": 1523871939.639394
+}
+```
+</div>
+
+
+#### **Examples**
+
+
+* get 100 users ordered by <span class="notranslate"> CPU </span> usage
+
+  <div class="notranslate">
+
+  ```
+  cloudlinux-top --json --order-by cpu --max=100
+  ```
+  </div>
+
+* get information about one user
+
+  <div class="notranslate">
+
+  ```
+  cloudlinux-top --json -u username
+  ```
+  </div>
+
+* get information about reseller and his users
+
+  <div class="notranslate">
+
+  ```
+  cloudlinux-top --json --for-reseller=reseller_name
+  ```
+  </div>
+
+* show only <span class="notranslate">IO</span> limits and usage
+
+  <div class="notranslate">
+
+  ```
+  cloudlinux-top --json --show=io
+  ```
+  </div>
+
+<div class="notranslate">
+
+#### cloudlinux-statistics
+
+</div>
+
+<span class="notranslate">cloudlinux-statistics</span> is a <span class="notranslate">CLI</span> utility that provides historical information about resource usage.
+
+#### **Usage**
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics [-h] [-j] [-v] [--by-usage BY_USAGE]
+                      [--percentage 0..100] [--by-fault BY_FAULT]
+                      [--threshold THRESHOLD] [--server_id SERVER_ID]
+                      [-f FROM] [-t TO] [--period PERIOD]
+                      [--limit LIMIT]
+                      [--show COLUMN_NAME [COLUMN_NAME ...]]
+                      [-o ORDER_BY] [--id ID] [--time-unit TIME_UNIT]
+                      [-r FOR_RESELLER]
+```
+</div>
+
+**Optional arguments**
+
+* <span class="notranslate"> `-h`, `--help` </span> – show this help message and exit
+* <span class="notranslate"> `-j`, `--json` </span> – return data in JSON format
+* <span class="notranslate"> `-v`, `--version` </span> – show program version number and exit
+* <span class="notranslate"> `--server_id SERVER_ID`, `--server-id SERVER_ID` </span> – can be used with the central database for multiple servers; default `...`
+* <span class="notranslate"> `--limit LIMIT` </span> – limit the number of results to display, `0` is unlimited
+* <span class="notranslate"> `--show COLUMN_NAME [COLUMN_NAME ...]` </span> – show only listed columns; <span class="notranslate">`all`</span> for all supported columns (fields)
+  | | |
+  |-|-|
+  |<span class="notranslate">Key</span>|Fields to show|
+  |<span class="notranslate">`all`</span>|all available fields|
+  |<span class="notranslate">`cpu`</span>|CPU field|
+  |<span class="notranslate">`io`</span>|IO field|
+  |<span class="notranslate">`iops`</span>|IOPS field|
+  |<span class="notranslate">`ep`</span>|entry processes (concurrent connections) field|
+  |<span class="notranslate">`nproc`</span>|number of processes field|
+  |<span class="notranslate">`pmem`</span>|physical memory field|
+  |<span class="notranslate">`vmem`</span>|virtual memory field|
+  |<span class="notranslate">`mysql`</span>|`mysql_cpu` & `mysql_io` field|
+
+* <span class="notranslate"> `-o ORDER_BY`, `--order-by ORDER_BY` </span> – order results by one of the following keys (fields):
+  | | |
+  |-|-|
+  |FIELD|DESCRIPTION|
+  |<span class="notranslate">`any_faults`</span>|total number of faults of all types|
+  |<span class="notranslate">`cpu`</span>|average CPU usage|
+  |<span class="notranslate">`mysql_cpu`</span>|average MySQL CPU usage|
+  |<span class="notranslate">`io`</span>|average IO usage|
+  |<span class="notranslate">`mysql_io`</span>|average MySQL IO usage|
+  |<span class="notranslate">`iops`</span>|average IO operations; (LVE version >= 8)|
+  |<span class="notranslate">`ep`</span>|average number of entry processes (concurrent connections)|
+  |<span class="notranslate">`nproc`</span>|average number of processes|
+  |<span class="notranslate">`pmem`</span>|average physical memory usage|
+  |<span class="notranslate">`vmem`</span>|average virtual memory usage|
+  |<span class="notranslate">`cpu_faults`</span>|total number of CPU usage faults|
+  |<span class="notranslate">`io_faults`</span>|total number of max IO faults|
+  |<span class="notranslate">`iops_fault`</span>|total number of max IO operations faults; (LVE version >= 8)|
+  |<span class="notranslate">`ep_faults`</span>|total number of max entry processes faults|
+  |<span class="notranslate">`nproc_faults`</span>|total number of max processes faults|
+  |<span class="notranslate">`pmem_faults`</span>|total number of out of physical memory faults|
+  |<span class="notranslate">`vmem_faults`</span>|total number of out of virtual memory faults|
+
+* <span class="notranslate"> `-r FOR_RESELLER`, `--for-reseller FOR_RESELLER` </span> – show statistics only for given reseller and his users
+
+Filter items by resource usage.
+
+* <span class="notranslate"> `--by-usage BY_USAGE` </span> – show LVEs with usage (averaged) within 90 percent of the limit available values
+  | | |
+  |-|-|
+  |FIELD|DESCRIPTION|
+  |<span class="notranslate">`cpu`</span>|average CPU usage|
+  |<span class="notranslate">`mysql_cpu`</span>|average MySQL CPU usage|
+  |<span class="notranslate">`io`</span>|average IO usage|
+  |<span class="notranslate">`mysql_io`</span>|average MySQL IO usage|
+  |<span class="notranslate">`iops`</span>|average IO operations; (LVE version >= 8)|
+  |<span class="notranslate">`ep`</span>|average number of entry processes (concurrent connections)|
+  |<span class="notranslate">`nproc`</span>|average number of processes|
+  |<span class="notranslate">`pmem`</span>|average physical memory usage|
+  |<span class="notranslate">`vmem`</span>|average virtual memory usage|
+
+* <span class="notranslate"> `-percentage 0..100` </span> – define percentage for <span class="notranslate">`--by-usage`</span> option; default `90`
+
+Filter items by the number of faults.
+
+* <span class="notranslate"> `--by-fault BY_FAULT` </span> – show only accounts that have some faults for the given limit
+  | | |
+  |-|-|
+  |FIELD|DESCRIPTION|
+  |<span class="notranslate">`any`</span>|faults of all types|
+  |<span class="notranslate">`cpu`</span>|CPU usage faults|
+  |<span class="notranslate">`io`</span>|max IO usage faults|
+  |<span class="notranslate">`iops`</span>|max IO operations faults; (LVE version >= 8)|
+  |<span class="notranslate">`ep`</span>|max entry processes faults|
+  |<span class="notranslate">`nproc`</span>|max processes faults|
+  |<span class="notranslate">`pmem`</span>|out of physical memory faults|
+  |<span class="notranslate">`vmem`</span>|out of virtual memory faults|
+
+* <span class="notranslate"> `--threshold THRESHOLD` </span> – in combination with <span class="notranslate">`--by-fault`</span> shows only accounts with the number of faults more than given; default `1`
+
+Filter items by a time interval.
+
+Allows to get information for the given period of time; you can either set <span class="notranslate">`--from`</span> and <span class="notranslate">`--to`</span> options, or just get information for the recent time period using <span class="notranslate">`--period option`.</span>
+
+:::tip Note
+<span class="notranslate">`--from`</span> and <span class="notranslate">`--to`</span> values are ignored when <span class="notranslate">`--period`</span> is set.
+:::
+
+* <span class="notranslate"> `-f FROM`, `--from FROM` </span> – run report from date and time in <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, last 10 minutes are assumed
+* <span class="notranslate"> `-t TO`, `--to TO` </span> – run report up to date and time in <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, reports results up to now
+* <span class="notranslate"> `--period PERIOD` </span> – time period; specify minutes with <span class="notranslate">`m`</span>, hours with <span class="notranslate">`h`</span>, days with <span class="notranslate">`d`</span>, and values: <span class="notranslate">`today`, `yesterday`</span>; `5m` - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, and <span class="notranslate">`today`</span>
+
+Get detailed statistics.
+
+* <span class="notranslate"> `--id ID` </span> – get detailed statistics for database record with the given id
+* <span class="notranslate"> `--time-unit TIME_UNIT` </span> – group statistics using the given time; 1 minute by default. For example: <span class="notranslate">`1h`</span> or <span class="notranslate">`1h30m`</span> or <span class="notranslate">`dynamic`</span>; available only in pair with <span class="notranslate">`--id`</span>
+
+
+#### **Output format**
+
+There are two different JSON formats used for **summary statistics** and **detailed statistics**.
+
+**Summary statistics**
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics --json
+```
+```
+ {
+ "resellers": [
+   {
+     "usage": <lve_section>,
+     "faults": <lve_section>,
+     "name": "reseller",
+     "limits": <lve_section>,
+     "id": 1000020005
+   }
+ ],
+ "timestamp": 1522920637,
+ "mySqlGov": "enabled",            # possible values: ”enabled”, “error”
+ "result": "success",
+ "users": [
+   {
+     "username": "username",
+     "domain": "example.com",
+     "reseller": "reseller",
+     "limits": <lve_section>,
+     "faults": <lve_section>,
+     "usage": <lve_section>,
+     "id": 20005
+   }
+ ]
+ }
+```
+</div>
+
+**Detailed statistics**
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics --json --id=20001
+```
+```
+ {
+ "timestamp": 1523011550,
+ "mySqlGov": "enabled",           # possible values: ”enabled”, “error”
+ "result": "success",
+ "user": [
+   {
+     "usage": <lve_section>,
+     "faults": <lve_section>,
+     "from": 1523011144,
+     "limits": <lve_section>,
+     "to": 1523011143
+   },
+ ...
+   {
+     "usage": <lve_section>,
+     "faults": <lve_section>,
+     "from": 1523011204,
+     "limits": <lve_section>,
+     "to": 1523011203
+   }
+ ]
+ }
+```
+</div>
+
+For both, **summary statistics** and **detailed statistics**, <span class="notranslate">`<lve_section>`</span> is the same and looks like following<sup> *</sup>.
+
+<div class="notranslate">
+
+```
+{
+   "ep": {
+     "lve": 1        # number of entry processes
+   },
+   "vmem": {
+     "lve": 2428928  # virtual memory usage or limit (deprecated)
+   },
+   "iops": {
+     "lve": 0        # io operations per second
+   },
+   "io": {
+     "lve": 0.0,     # io usage or limit (lve only)
+     "mysql": 0.0**   # io usage or limit (mysql only)
+   },
+   "nproc": {
+     "lve": 1        # number of processes in lve
+   },
+   "cpu": {
+     "lve": 25.6,    # cpu usage (lve only)
+     "mysql": 0.0*   # cpu usage (mysql governor only)
+   },
+   "pmem": {
+     "lve": 360448   # physical memory usage or limit
+   }
+ }
+```
+</div>
+
+:::tip Note
+* you can specify only required fields using <span class="notranslate">`--show`</span> option;
+* <span class="notranslate">`mysql`</span> fields are only available with <span class="notranslate"> [MySQL Governor](/cloudlinuxos/cloudlinux_os_components/#installation-and-update-3)</span> installed.
+:::
+
+#### **Units of measurement**
+
+For <span class="notranslate">`limits`</span> and <span class="notranslate">`usage`</span> sections we use the following units of measurement.
+
+| | |
+|-|-|
+|Value|Units of measurement|
+|<span class="notranslate">`cpu` (LVE and MySQL)</span> | percentage of one <span class="notranslate">CPU</span> core|
+|<span class="notranslate">`io` (LVE and MySQL) </span> | bytes per second|
+|<span class="notranslate">`iops`</span> | number of <span class="notranslate">IO</span> operations per second|
+|<span class="notranslate">`pmem`</span> and <span class="notranslate">`vmem`</span> | bytes|
+|<span class="notranslate">`ep`</span> | number of entry processes|
+|<span class="notranslate">`nproc`</span> | number of processes in LVE|
+
+#### **Errors handling**
+
+The format of the error message is the same as in the other <span class="notranslate">`cloudlinux- *`</span> utilities. When everything is ok, the <span class="notranslate">`result`</span> value is <span class="notranslate">`success`</span>. Otherwise, it contains error message.
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics --json 
+```
+```
+{
+  "context": {
+      "error_text": "Very bad error"
+  },
+  "result": "An error occured: \"%(error_text)s\"",
+  "timestamp": 1523871939.639394
+}
+```
+</div>
+
+#### **Examples**
+
+
+* get top 10 users ordered by <span class="notranslate">CPU</span> usage for today
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics --json --order-by=cpu --period=today --limit=10
+```
+</div>
+
+* get users that hit <span class="notranslate">IO</span> limit more than 10 times for today
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics --json --period=today --by-fault=io --threshold=10
+```
+</diV>
+
+* get users that used more than 80% of <span class="notranslate">CPU</span> in last 24 hours
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics --json --by-usage=cpu --percentage=80 --period=24h
+```
+</div>
+
+* get information only about reseller and his users
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics --json --for-reseller=reseller_name
+```
+</div>
+
+* get information only about <span class="notranslate">CPU</span> and <span class="notranslate">IO</span> usage
+
+<div class="notranslate">
+
+```
+cloudlinux-statistics --json --show=cpu,io
+```
+</div>
+
+
+## MySQL Governor
+
+* [dbtop](./#dbtop)
+* [dbctl](./#dbctl)
+* [lveinfo --dbgov](./#lveinfo-dbgov)
+* [dbgovchart](./#dbgovchart-2)
+
+* <span class="notranslate">`dbtop`</span> monitors MySQL usage on per user bases.
+* <span class="notranslate">`dbctl`</span> is a command line tool to manage <span class="notranslate">DB Governor</span> configuration.
+* <span class="notranslate">`lveinfo --dbgov`</span> provides historical information about usage and customer restrictions. 
+* <span class="notranslate">`dbgovchart`</span> generates charts for MySQL usage.
+
+
+#### dbtop
+
+Utility to monitor MySQL usage. Requires <span class="notranslate">`db_governor`</span> to be running. It shows usage for the current, mid and long intervals.
+
+**Options:**
+
+| | |
+|-|-|
+| <span class="notranslate"> -c </span> |show one time user list (no interactive mode) | 
+| <span class="notranslate"> -r interval </span> |refresh interval for interactive mode (in seconds)|
+
+**Control keys**
+
+| | |
+|-|-|
+|<span class="notranslate"> z </span> |toggle color mode and two-color mode | 
+|<span class="notranslate"> q </span> | <span class="notranslate"> F10, Ctrl-c </span> - quit program | 
+|<span class="notranslate"> u </span> |sort table by username | 
+|<span class="notranslate"> c </span> |sort table by cpu column | 
+|<span class="notranslate"> r </span> |sort table by read column | 
+|<span class="notranslate"> w </span> |sort table by write column | 
+|<span class="notranslate"> l </span> |sort by restriction level | 
+|<span class="notranslate"> t </span> |sort by time before restrictions will be lifted.|
+
+Control keys, that sort table, displays into header of table bold and underlined symbol.
+Sorted field will be highlighted by *.
+<span class="notranslate"> CAUSE </span> field shows current stage, reason for restriction and number of seconds before restriction will be lifted:
+Values of column ' <span class="notranslate"> CAUSE </span> ' - cause of restriction or freezing:
+Possible stages:
+* `-` <span class="notranslate"> OK </span>
+* `1` - Restriction 1
+* `2` - Restriction 2
+* `3` - Restriction 3
+* `4` - Restriction level 4
+
+| | |
+|-|-|
+| <span class="notranslate"> c - current </span> |(current value of parameter)|
+| <span class="notranslate"> s - short </span> |(average value of 5 last values of parameter)|
+| <span class="notranslate"> m - middle </span> |(average value of 15 last values of parameter)|
+| <span class="notranslate"> l - long </span> |(average value of 30 last values of parameter)|
+| |and parameter which is cause of restriction|
+| <span class="notranslate"> 1/s:busy_time/12 </span> | first level restricted account with short average restriction <span class="notranslate"> by busy_time </span> with 12 seconds left before re-enabled.|
+
+**Display fields:**
+
+* <span class="notranslate"> cpu </span> - number in %, shows <span class="notranslate"> cpu </span> usage by user
+  * <span class="notranslate"> read </span> - number of bytes (kbytes, mbytes, gbytes) which user reads per second
+  * <span class="notranslate"> write </span> - number of bytes (kbytes, mbytes, gbytes) write user reads per second
+
+
+Accounts highlighted in _red_ color means that the account is restricted.  
+Accounts highlighted in _blue_ color are in cool down period
+
+Command line parameters of <span class="notranslate"> dbtop </span> utility:  
+<span class="notranslate"> -r - dbtop </span> refresh period in seconds ( <span class="notranslate"> dbtop -r12 </span> )
+
+#### dbctl
+
+
+usage: <span class="notranslate"> dbctl command [parameter] [options] </span>
+
+**Commands:**
+
+| | |
+|-|-|
+| <span class="notranslate"> set </span> |set parameters for a <span class="notranslate"> db_governor </span> |
+| <span class="notranslate"> list </span> |list users & their limits. It will list all users who had been active since <span class="notranslate"> Governor </span> restart,  as well as those for who explicit limits were set|
+| <span class="notranslate"> list-restricted </span> |list restricted customers, with their limits, restriction reason, and time period they will still be restricted|
+| <span class="notranslate"> ignore </span> |ignore particular user|
+| <span class="notranslate"> watch </span> |start observing particular user again|
+| <span class="notranslate"> delete </span> |remove limits for user/use defaults|
+| <span class="notranslate"> restrict </span> |restrict user using lowest level (or if <span class="notranslate"> --level </span> specified, using the specified level)|
+| <span class="notranslate"> unrestrict </span> |unrestrict username (configuration file remains unchanged)|
+| <span class="notranslate"> unrestrict-all </span> |unrestrict all restricted users (configuration file remains unchanged)|
+| <span class="notranslate"> --help </span> |show this message|
+| <span class="notranslate"> --version </span> |version number|
+| <span class="notranslate"> --lve-mode </span> |set <span class="notranslate"> DB Governor </span> mode of operation. Available values: <span class="notranslate"> off/abusers/all/single/on </span> |
+| | <span class="notranslate"> off </span> - monitor only, don't throttle|
+| | <span class="notranslate"> abusers </span> - when user reaches the limit, put user's queries into LVE for that user (experimental)|
+| | <span class="notranslate"> all </span> - user's queries always run inside LVE for that user (experimental)|
+| | <span class="notranslate"> single </span> - single LVE for all abusers.|
+| | <span class="notranslate"> on </span> - same as <span class="notranslate"> single </span> (deprecated)|
+
+**Parameters**
+
+| | |
+|-|-|
+| <span class="notranslate"> default </span> |set default parameter|
+| <span class="notranslate"> username </span> |set parameter for user|
+
+**Options**
+
+| | |
+|-|-|
+| <span class="notranslate"> --cpu=N </span> |limit <span class="notranslate"> CPU </span> (pct) usage|
+| <span class="notranslate"> --read=N </span> |limit <span class="notranslate"> READ </span> (MB/s) usage|
+| <span class="notranslate"> --write=N </span> |limit <span class="notranslate"> WRITE </span> (MB/s) usage|
+| <span class="notranslate"> --level=N </span> |level (1,2,3 or 4) specified (deprecated) - this option is available only for period mode <br> <restrict_mode use="period"/> (see [Configuration](/cloudlinuxos/cloudlinux_os_components/#configuration-2))|
+
+
+
+The default mode is " <span class="notranslate"> limit </span> " - when a user hits limits, the account will be marked as restricted and if the user does not hit the limit again during " <span class="notranslate"> unlimit=1m </span> " account will be unrestricted. This mode doesn't have any additional levels/penalties.  
+<span class="notranslate"> <restrict_mode use="limit" unlimit="1m"/> </span>
+
+Changing the <span class="notranslate"> "unlimit" </span> can be done only via the configuration file (see [Configuration](/cloudlinuxos/cloudlinux_os_components/#configuration-and-operation)).
+
+| | |
+|-|-|
+| `--slow=N` | limit time (in seconds) for long running <span class="notranslate"> SELECT </span> queries|
+
+Options for parameter <span class="notranslate">`list`</span>:
+
+| | |
+|-|-|
+| `--kb` |show limits in Kbytes no pretty print|
+| `--bb` |show limits in bytes no pretty print|
+| `--mb` |show limits in Mbytes no pretty print|
+
+Examples:
+<div class="notranslate">
+
+```
+dbctl set test2 --cpu=150,100,70,50 --read=2048,1500,1000,800
+```
+</div>
+
+sets individual limits for <span class="notranslate"> cpu (current, short, middle </span> period) and <span class="notranslate"> read (current, short, middle, long </span> periods) for user <span class="notranslate"> test2 </span>
+<div class="notranslate">
+
+```
+dbctl set default --cpu=70,60,50,40
+```
+</div>
+
+changes default <span class="notranslate"> cpu </span> limits.
+
+All new limits will be applied immediately
+
+To unrestrict user:
+<div class="notranslate">
+
+```
+dbctl unrestrict username
+```
+</div>
+
+To unrestrict all users:
+<div class="notranslate">
+
+```
+dbctl unrestrict-all 
+```
+</div>
+
+To restrict user:
+<div class="notranslate">
+
+```
+dbctl restrict dbgov
+```
+</div>
+
+To restrict user to level 2 restriction:
+<div class="notranslate">
+
+```
+dbctl restrict dbgov --level=2
+```
+</div>
+
+To make <span class="notranslate"> Governor </span> to ignore user:
+<div class="notranslate">
+
+```
+dbctl ignore username
+```
+</div>
+
+Delete user's limits, and use defaults instead:
+<div class="notranslate">
+
+```
+dbctl delete username
+```
+</div>
+
+Show limits as bytes:
+<div class="notranslate">
+
+```
+dbctl list --bb
+```
+</div>
+
+#### lveinfo --dbgov
+
+<div class="notranslate">
+
+```
+lveinfo --dbgov --help
+```
+</div>
+
+Displays information about DB Governor historical usage
+
+**Usage**:
+
+<div class="notranslate">
+
+```
+lveinfo [OPTIONS]
+```
+</div>
+
+**Optional arguments**:
+
+| | |
+|-|-|
+|`-h`, <span class="notranslate">`--help`</span>|show this help message and exit|
+|<span class="notranslate">`-u USER`</span>, <span class="notranslate">`--user USER`</span>|system user name|
+|<span class="notranslate">`--id ID`</span>|user id|
+|<span class="notranslate">`-l LIMIT`</span>, <span class="notranslate">`--limit LIMIT`</span>|max number of results to display, if 0 – no limit|
+|<span class="notranslate">`--by-usage ALIAS [ALIAS ...]`</span>|show LVEs with usage (averaged) within 90 percent of the limit;<br>available values:<br><span class="notranslate">`COLUMN_NAME`–`ALIAS`</span>–DESCRIPTION<br><span class="notranslate">`cpu`–`CPU`–`average CPU usage`</span><br><span class="notranslate">`io`–`IO`–`average IO usage`</span>|
+|<span class="notranslate">`-p 0..100`</span>, <span class="notranslate">`--percentage 0..100`</span>|defines percentage for the <span class="notranslate">`--by-usage`</span> option; default is 90|
+|<span class="notranslate">`-o ALIAS`</span>, <span class="notranslate">`--order-by ALIAS`</span>|orders results by one of the following:<br><span class="notranslate">`ALIAS`</span> – DESCRIPTION<br><span class="notranslate">`con`</span> – average connections (deprecated)<br><span class="notranslate">`cpu`</span> – average CPU usage<br><span class="notranslate">`read`</span> – average READ usage<br><span class="notranslate">`write`</span> – average WRITE usage<br><span class="notranslate">`io`</span> – average READ+WRITE usage|
+|<span class="notranslate">`-b ALIAS [ALIAS ...]`</span>, <span class="notranslate">`--format ALIAS [ALIAS ...]`</span>|show only specific fields into output:<br>COLUMN_NAME – <span class="notranslate">`ALIAS`</span> – DESCRIPTION<br><span class="notranslate">`ts`</span> – <span class="notranslate">`TS`</span> – timestamp records<br><span class="notranslate">`username`</span> – <span class="notranslate">`USER`</span> – user name<br><span class="notranslate">`id`</span> – <span class="notranslate">`ID`</span>user id<br><span class="notranslate">`cpu`</span> – <span class="notranslate">`CPU`</span> – average CPU usage<br><span class="notranslate">`read`</span> – <span class="notranslate">`READ`</span> – average READ usage<br><span class="notranslate">`write`</span> – <span class="notranslate">`WRITE`</span> – average WRITE usage<br><span class="notranslate">`con`</span> – <span class="notranslate">`CON`</span> – average connections (deprecated)<br><span class="notranslate">`lcpu`</span> – <span class="notranslate">`lCPU`</span> – CPU limit<br><span class="notranslate">`lread`</span> – <span class="notranslate">`lREAD`</span> – READ limit<br><span class="notranslate">`lwrite`</span> – <span class="notranslate">`lWRITE`</span> – WRITE limit<br><span class="notranslate">`-`</span> – <span class="notranslate">`RESTRICT`</span> – <span class="notranslate">`C`</span> - CPU restrict, <span class="notranslate">`R`</span> - read restrict, <span class="notranslate">`W`</span> - write restrict |
+|<span class="notranslate">`--show-all`</span>|full output (show all limits); brief output is default|
+|<span class="notranslate">`--server_id SERVER_ID`</span>, <span class="notranslate">`--server-id SERVER_ID`</span>|used with central database for multiple servers, default is <span class="notranslate">`2d823047-a`</span>|
+|<span class="notranslate">`--time-unit TIME_UNIT`</span>|time step for grouping statistic in minutes; 1 min. by default; can use <span class="notranslate">`m`,`h`,`d`</span> suffixes or can use <span class="notranslate">`dyn[amic]`</span> for using in the <span class="notranslate">`v1`</span> mode; for example: <span class="notranslate">`1h`</span> or <span class="notranslate">`1h30m`</span> or <span class="notranslate">`1d12h`</span>|
+|<span class="notranslate">`-c [PATH]`</span>, <span class="notranslate">`--csv [PATH]`</span>|save statistics in CSV format; <span class="notranslate">`-`</span> by default (output to screen)|
+|<span class="notranslate">`-j`</span>, <span class="notranslate">`--json`</span>|display output in JSON format|
+|<span class="notranslate">`-f FROM`</span>, <span class="notranslate">`--from FROM`</span>|run report from date and time in the <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, the last 10 minutes are assumed|
+|<span class="notranslate">`-t TO`</span>, <span class="notranslate">`--to TO`</span>|run a report up to date and time in the <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, reports results up to now|
+|<span class="notranslate">`--period PERIOD`</span>|time period; specify minutes with <span class="notranslate">`m`</span>, hours with <span class="notranslate">`h`</span>, days with <span class="notranslate">`d`</span> and values: <span class="notranslate">`today`, `yesterday`; `5m`</span> - last 5 minutes, <span class="notranslate">`4h`</span> - last four hours, <span class="notranslate">`2d`</span> - last 2 days, as well as <span class="notranslate">`today`</span>|
+
+
+#### dbgovchart
+
+
+<span class="notranslate"> dbgovchart </span> is analog of <span class="notranslate"> lvechart </span> tool to create charts representing customer's to MySQL usage
+
+Usage: <span class="notranslate"> `/usr/sbin/dbgovchart [OPTIONS]` </span>
+
+Acceptable options are:
+<div class="notranslate">
+
+```
+--help      This help screen
+--version   Version number
+--from=     Run report from date and time in YYYY-MM-DD HH:MM format
+            if not present last 10 minutes are assumed
+--to=       Run report up to date and time in YYYY-MM-DD HH:MM format
+            if not present, reports results up to now
+--period=   Time period
+            specify minutes with m,  h - hours, days with d, and values:
+            today, yesterday
+            5m - last 5 minutes, 4h - last four hours, 2d - last 2 days,
+            as well as today
+--user=     mysql username
+--output=   Filename to save chart as, if not present, output will be sent to STDOUT
+--show-all  Show all graphs (by default shows graphs for which limits are set)
+```
+</div>
+
+Charts examples:
+
+![](/images/cloudlinuxos/command-line_tools/1111_2.webp)
+
+
+## PHP Selector
+
+* [selectorctl](./#selectorctl)
+
+| | |
+|-|-|
+|<span class="notranslate"> /usr/bin/alt-php-mysql-reconfigure.py </span> | Reconfigures <span class="notranslate"> alt-php </span> extensions to use correct MySQL library, based on the one installed in the system.|
+
+#### selectorctl
+
+<span class="notranslate">`selectorctl`</span> is a new tool that replaces <span class="notranslate">`cl-selector`</span> (which is deprecated and should not be used anymore) and <span class="notranslate">`piniset`</span>. It is available starting with **CageFS 5.1.3**.
+
+All new features will be implemented as part of <span class="notranslate">`selectorctl`</span>.
+
+**Common options**
+
+| | |
+|-|-|
+|<span class="notranslate"> --interpreter (-i) </span> : | chooses the interpreter to work with. Currently only PHP is supported. If omitted, <span class="notranslate"> `--interpreter=php` </span> is implied.|
+|<span class="notranslate"> --version (-v) </span> : | specifies alternatives version to work with|
+|<span class="notranslate"> --user (-u) </span> : | specifies user to take action upon.|
+|<span class="notranslate"> --show-native-version (-V) </span> : | prints the version of native interpreter|
+
+**Global options**
+
+The global options modify settings in the <span class="notranslate"> /etc/cl.selector/defaults.cfg </span> file.
+
+| | |
+|-|-|
+|<span class="notranslate"> --list (-l) </span> : | lists all available alternatives for an interpreter. For instance on server with Alt-PHP installed, it produces the following output. Columns are: short alternative version, full alternative version and path to php-cgi binary. <br> <span class="notranslate"> `$ selectorctl --list` <br>`5.2 5.2.17 /opt/alt/php52/usr/bin/php-cgi` <br>`5.3 5.3.28 /opt/alt/php53/usr/bin/php-cgi` <br>`5.4 5.4.23 /opt/alt/php54/usr/bin/php-cgi` <br>`5.5 5.5.7 /opt/alt/php55/usr/bin/php-cgi` </span>|
+|<span class="notranslate"> --summary (-S) </span> : | prints alternatives state summary. Output format: alternative version, state ('e' for 'enabled', '-' otherwise), chosen as default one or not ('d' for 'default', '-' otherwise). For example: <br> <span class="notranslate"> `$ selectorctl --summary` <br>`5.2 e -` <br>`5.3 e -` <br>`5.4 e -` <br>`5.5 e -` <br>`native e d` </span> <br> if used with <span class="notranslate"> `--show-native-version` </span> displays version for native interpreter: <br> <span class="notranslate"> `$ selectorctl --summary --show-native-version` <br>`5.2 e -` <br>`5.3 e -` <br>`5.4 e -` <br>`5.5 e -` <br>`native(5.3) e d` </span>|
+|<span class="notranslate"> --current (-C) </span> : | prints currently globally selected default version (it is stored in the <span class="notranslate"> _/etc/cl.selector/defaults.cfg_ </span> file):<br> <span class="notranslate"> `$ selectorctl --current` <br>`native native /usr/bin/php` </span> <br> If used with <span class="notranslate"> `--show-native-version` </span> , native interpreter version is displayed as well:<br> <span class="notranslate"> `$ selectorctl --current --show-native-version`</span> <br> `native(5.3) native(5.3.19) /usr/bin/php`|
+|<span class="notranslate"> --set-current (-B): </span>  | sets specified version as globally default one (in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_ </span> file). For example, to set current default version of PHP to 5.4, use: <br> <span class="notranslate"> `$ selectorctl --set-current=5.4` </span>|
+|<span class="notranslate"> --disable-alternative (-N): </span> | adds <span class="notranslate"> state=disabled </span> option to alternative section. With it a corresponding alternative gets removed from user alternatives selection list. For instance to disable PHP 5.2, run: <span class="notranslate"> `$ selectorctl --disable-alternative=5.2` </span>|
+|<span class="notranslate"> --enable-alternative (-Y): </span> | Enables alternative version, removes <span class="notranslate"> state=disabled </span> option, if present, from alternative section. For example to enable PHP 5.2: <span class="notranslate"> `$ selectorctl --enable-alternative=5.2` </span>|
+|<span class="notranslate"> --enable-extensions (-E): </span> | enables extensions for particular PHP version by adding comma-separated list of extensions of modules for alternative in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_ </span> . Requires <span class="notranslate"> --version </span> option. For example: <br> <span class="notranslate"> `$ selectorctl --enable-extensions=pdo,phar --version=5.2`</span>|
+|<span class="notranslate"> --disable-extensions (-D): </span>  | removes extensions for a particular PHP version. Comma-separated list of extensions will be removed from <span class="notranslate"> /etc/cl.selector/defaults.cfg </span> . Requires <span class="notranslate"> --version </span> . Example: <br> <span class="notranslate"> `$ selectorctl --disable-extensions=pdo,phar --version=5.2` </span>|
+|<span class="notranslate"> --replace-extensions (-R): </span> | replaces all extensions for particular PHP version to the list of comma separated extensions. Requires <span class="notranslate"> `--version`  option </span> . Example: <br> <span class="notranslate"> `$ selectorctl --replace-extensions=pdo,phar --version=5.2` </span>|
+|<span class="notranslate"> --list-extensions (-G): </span> | lists extensions for an alternative for a particular version. Requires <span class="notranslate"> --version </span> . Example: <br> <span class="notranslate"> `$ selectorctl --list-extensions --version=5.3` <br>`~ xml <br>- xmlreader <br>- xmlrpc <br>- xmlwriter` <br>`- xrange` <br>`+ xsl` </span> <br> Plus sign (+) stands for 'enabled', minus (–) for 'disabled', tilde (~) means compiled into interpreter or enabled in php global config file <span class="notranslate">_/opt/alt/phpXX/etc/php.ini_</span>. Enabled and disabled state relates to presence in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_</span> file.|
+
+**End user options**
+
+All end user settings are contained in individual user's alt_php.ini files and controlled using the `selectorctl` command. 
+
+::: tip Note
+Starting from cagefs-7.6.17, users inside CageFS can manipulate PHP Selector using the end-user options. If a command is run by a user, the `--user` option is not required.
+:::
+
+| | |
+|-|-|
+|<span class="notranslate"> --user-summary (-s): </span>  | Prints user alternatives state summary. Example: <br> <span class="notranslate"> `$ selectorctl --user-summary --user=user1` <br>`5.2 e - -` <br>`5.3 e - -` <br>`5.4 e - -` <br>`5.5 e - -` <br>`native e d s` </span> <br> Columns are: alternative version, state ('e' for 'enabled', '-' otherwise), chosen as default one or not('d' for 'default', '-' otherwise), selected as user default one or not ('s' for 'selected', '-' otherwise).<br> If used with <span class="notranslate"> `--show-native-version` </span> , version for native interpreter is shown in parenthesis: <br> <span class="notranslate"> `$ selectorctl --user-summary --user=user1 --show-native-version` <br>`5.2 e - -` <br>`5.3 e - -` <br>`5.4 e - -` <br>`5.5 e - -` <br>`native(5.3) e d s` </span> <br> <span class="notranslate"> `--user` </span> option is required. |
+|<span class="notranslate"> --current (-c): </span> | prints currently globally selected default version (in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_ </span> file): <br> <span class="notranslate"> `$ selectorctl --current` <br>`5.3 5.3.28 /opt/alt/php53/usr/bin/php-cgi` </span> <br> If used with <span class="notranslate"> `--show-native-version` </span> to display native version: <br> <span class="notranslate"> `$ selectorctl --user-current --user=user1` <br>`5.3 5.3.28 /opt/alt/php53/usr/bin/php-cgi` </span> <br> <span class="notranslate"> `--user` </span> option is required.|
+|<span class="notranslate"> --set-user-current (-b): </span> | sets specified version as the one to use for this end user: <br> <span class="notranslate"> `$ selectorctl --set-user-current=5.4 --user=user1` </span> <br> changes user symlinks for the PHP interpreter to point to alternative 5.4. <br> <span class="notranslate"> --user </span> option is required.|
+|<span class="notranslate"> --enable-user-extensions (-e): </span> | Enables comma-separated list of extensions for the user user. Information is saved to <span class="notranslate"> _alt_php.ini_ </span> file. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options. <br> <span class="notranslate"> `$ selectorctl --enable-user-extensions=pdo,phar --version=5.2 --user=user1` </span>|
+|<span class="notranslate"> --disable-user-extensions (-d): </span> | Disables extensions provided as comma-separated list. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options. <br> <span class="notranslate"> `$ selectorctl --disable-user-extensions=pdo,phar --version=5.2 --user=user1` </span>|
+|<span class="notranslate">--for-all-users:</span> | Allows to enable/disable extensions for all users with the required PHP version. Works only with <span class="notranslate">`--enable-user-extensions`</span> or <span class="notranslate">`--disable-user-extensions`</span> option. <br> <span class="notranslate">`$ selectorctl --enable-user-extensions=gd --version=5.3 --for-all-users`</span><br><span class="notranslate">`$ selectorctl  --disable-user-extensions=gd --version=5.3 --for-all-users`</span>|
+|<span class="notranslate"> --replace-user-extensions (-r): </span> | Replaces extensions with a provided comma-separated list of extensions Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options: <br> <span class="notranslate"> `$ selectorctl --replace-user-extensions=pdo,phar --version=5.2 --user=user1` </span>|
+|<span class="notranslate"> --reset-user-extensions (-t): </span> | Resets extensions for end user to default list of extensions as defined in <span class="notranslate"> default.cfg </span> . Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options. <br> <span class="notranslate"> `$ selectorctl --reset-user-extensions --version=5.2 --user=user1` </span>|
+|<span class="notranslate"> --list-user-extensions (-g): </span> | lists enabled user extensions for an alternative. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options. <br> <span class="notranslate"> `$ selectorctl --list-user-extensions --version=5.3 --user=user1` <br>`xml` <br>`xmlreader` <br>`xmlrpc` </span> <br> if <span class="notranslate"> `--all` </span> option present, command will list all alternatives extensions marked enabled or disabled for given user. For example: <br> <span class="notranslate"> `$ selectorctl --list-user-extensions --version=5.3 --user=user1 --all` <br>`- xmlreader` <br>`- xmlrpc` <br>`- xmlwriter` <br>`- xrange` <br>`+ xsl` </span> <br> Plus sign (+) stands for 'enabled', minus (–) stands for 'disabled'. Enabled and disabled state relates to presence or absence of corresponding extensions in user <span class="notranslate"> _alt_php.ini_ </span> file.|
+|<span class="notranslate"> --add-options (-k): </span> | adds options (as in <span class="notranslate"> _php.ini_ </span> ) to user <span class="notranslate"> _alt_php.ini_ </span> file. For example: <br> <span class="notranslate"> `$ selectorctl --add-options=log_errors:on,display_errors:on --version=5.2 --user=user1` </span> <br> adds <span class="notranslate"> `log_error` </span> and <span class="notranslate"> `display_errors` </span> options with values <span class="notranslate"> 'on' </span> to user <span class="notranslate"> _alt_php.ini_ </span> file overwriting default values for a user. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options.|
+|<span class="notranslate"> --replace-options (-m): </span> | replaces all options in user <span class="notranslate"> _alt_php.ini_ </span> file with specified ones. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options. <br> <span class="notranslate"> `$ selectorctl --replace-options=log_errors:on,display_errors:on --version=5.2 --user=user1` </span>|
+|<span class="notranslate"> --delete-options (-x): </span> | removes custom options from user <span class="notranslate"> _alt_php.ini_ </span> file. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options. <br> <span class="notranslate"> `$ selectorctl --delete-options=log_errors,display_errors --version=5.2 --user=user1` </span>|
+|<span class="notranslate"> --print-options (-P): </span> | print options from <span class="notranslate"> _/etc/cl.selector/php.conf_ </span> file with default values or ones overwritten in user's <span class="notranslate"> _alt_php.ini_ </span> file. <br> <span class="notranslate"> `$ selectorctl --print-options --version=5.2 --user=user1` <br>`TITLE:allow_url_fopen` <br>`DEFAULT:On` <br>`COMMENT:Allows PHP file functions to retrieve data from remote <br>locations over FTP or HTTP. This option is a great security risk, thus do not turn it on without necessity.` <br>`TYPE:bool` <br>`...` </span> <br> Requires <span class="notranslate"> `--user`   </span> option. <span class="notranslate"> `--version` </span> option is optional. When <span class="notranslate"> `--version` </span> is omitted, options for current selected version will be printed. By default outputs as plain test. If <span class="notranslate"> `--json` ,  `--csv` ,  `--perl` </span> is specified, outputs data in corresponding format. For example, with <span class="notranslate"> `--perl` </span> option, the output is perl hash structure that can be evaluated. |
+|<span class="notranslate"> --reset-options (-z): </span> | removes custom options from <span class="notranslate"> _alt_php.ini_ </span> files for ALL users and versions. Backup files in home folders are cleared. <br> <span class="notranslate"> `$ selectorctl --reset-options` </span> <br> The ranges of affected customers or versions can be narrowed with <span class="notranslate"> `--version` </span> or <span class="notranslate"> `--user`  options </span> : <br> <span class="notranslate"> `$ selectorctl --reset-options --user=user1,user2 --version=5.3,5.4` </span>|
+|<span class="notranslate"> --list-users (-L): </span> | list users that use particular version of interpreter, specified with <span class="notranslate"> `--version` </span> option. For example, to see all users that use PHP version 5.3: <br> <span class="notranslate"> `$ selectorctl --list-users --version=5.3` </span>|
+|<span class="notranslate"> --change-to-version (-T): </span> | changes all (or particular user) from one interpreter version to another. <br> <span class="notranslate"> `$ selectorctl --change-to-version=5.2 --version=5.3` </span>|
+
+**Additional options**
+
+| | |
+|-|-|
+|<span class="notranslate"> --base64 (-Q) </span> | Sometimes PHP options values can contain commas and other symbols that break command line formatting. In such a case convert a <span class="notranslate"> key:value </span> pair into <span class="notranslate"> base64 </span> and pass it as value for option-related arguments. For example, to add <span class="notranslate"> disable_functions=exec,popen,system </span> and <span class="notranslate"> display_errors=on </span> to user options, do the following: <br> `$ selectorctl --add-options=$(echo disable_functions:exec,popen,system \| base64 -w 0),$(echo display_errors:on \| base64 -w 0) --version=5.2 --user=user1 --base64` <br> Option <span class="notranslate"> '-w 0' </span> of <span class="notranslate"> base64 </span> executable stands for <span class="notranslate"> 'disable wrapping of lines' </span> . Without it <span class="notranslate"> base64 </span> output will break the command. |
+|<span class="notranslate"> --quiet </span> | makes <span class="notranslate"> selectorctl </span> continue when it encounter option not found in <span class="notranslate"> _php.conf_ </span>. Without it <span class="notranslate"> selectorctl </span> exits with error.|
+
+
+## Python Selector
+
+* [Hoster](./#hoster)
+* [Examples](./#examples-3)
+* [Examples](./#examples-4)
+* [End user](./#end-user)
+
+:::warning Warning!
+selectorctl command line tool is not supported in the new Python Selector. You can use cloudlinux-selector command line tool instead.
+:::
+
+Below, there is a list of commands hoster and end user can run in a command line.
+
+#### Hoster
+
+:::tip Note
+When running user command as root, please use <span class="notranslate">`--user`</span> option.
+:::
+
+* Get all Python-related information: default version, a list of supported versions, status of Python Selector, a list of users, their applications, etc:
+  
+    <div class="notranslate">
+
+    ```
+    cloudlinux-selector [get] [--json] --interpreter python
+    ```
+    </div>
+
+    JSON output for <span class="notranslate">`get`</span> command:
+
+<div class="notranslate">
+
+```
+{
+  "selector_enabled": true | false, 
+  "default_version": "2.7.15", 
+  "result": "success", 
+  "timestamp": 1508667174.220027,
+  “cache_status”: “ready”,         //  or “updating” during automatic yum cache rebuild
+  "available_versions": {   //  begin of  “versions”
+      "2.7.15" : {   //   begin of version "2.7.15"
+          "status": "enabled",  //  enabled, disabled, not_installed, installing, removing, locked
+          “base_dir”: “/opt/alt/alt-python27”   //  empty when version is not installed
+          “users”: {   //  begin of  “users”
+              “user1”: {   //  begin of “user1”
+	“homedir”: “/home/user1”,		
+                 “applications”: {    //  begin of “applications”
+                     “apps_dir/app1” : {   //   begin of application “apps_dir/app1”
+                         “domain”: “cltest1.com”,
+                         “app_uri”: “apps/my-app1”,
+                         “startup_file” : “run.py”,
+                         “entry_point” : “app”,
+                         “app_status” : “started”,   // ‘started’ or ‘stopped’
+                         “config_files” : [
+                             “requirements.txt”,
+                             “requirements-migration.txt”
+                         ],
+                         “env_vars” : {
+                             “var1” : “value1”,
+                             “var2” : “value2”
+                         },
+                     },   // end of application “apps_dir/app1”
+                     “apps_dir/app2” : {    //   begin of application “apps_dir/app2”
+                          << data for application “apps_dir/app2”  (same structure as for application “apps_dir/app1” above) >>
+                     },   //  end of application “apps_dir/app2”
+                 },   //  end of “applications”
+              },   //  end of “user1”
+              “user2”: {   //  begin of “user2”
+                  << data for user “user2”  (same structure as for “user1” above) >>
+              },   //  end of “user2”
+          },   // end of “users”
+        },    //  end of version “2.7.15”
+      "8.21.5" : {   //   begin of version "3.3.7"
+            << data for version "3.3.7"  (same structure as for version “2.7.15” above) >>
+        },    //  end of version “3.3.7”
+    },    //  end of “versions”
+}   //   end of json
+```
+</div>
+
+* Get Python script execution timeout in seconds :
+  
+    <div class="notranslate">
+
+    ```
+    cloudlinux-selector get --json --interpreter python --get-run-script-timeout
+    ```
+    </div>
+
+* Set default version, supported versions, and status of Python Selector:
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-selector set [--json] --interpreter python (--selector-status <enabled,disabled> | --default-version <str> | --supported-versions <str>)
+    ```
+    </div>
+
+#### *Examples*
+
+1. Enable Python Selector:
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-selector set --json --interpreter python --selector-status enabled
+    ```
+    </div>
+2. Set default Python Selector version as 3.3:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector set --json --interpreter python --default-version 3.3
+    ```
+    </div>
+
+3. Set supported Python Selector version as 3.3:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector set --json --interpreter python --supported-versions='{"2.7": false, "3.3": true}'
+    ```
+    </div>
+
+4. Install a specific Python version:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector install-version --json --interpreter python --version 2.7
+    ```
+    </div>
+
+5. Uninstall a specific Python version:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector uninstall-version --json --interpreter python --version 2.7
+    ```
+    </div>
+
+6. Enable a specific Python version:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector enable-version --json --interpreter python --version 2.7
+    ```
+    </div>
+
+7. Disable a specific Python version:
+
+   <div class="notranslate">
+   
+    ```
+    cloudlinux-selector disable-version --json --interpreter python --version 2.7
+    ```
+    </div>
+
+8. Set Python script execution timeout value in seconds :
+     <div class="notranslate">
+    
+     ```
+     cloudlinux-selector set --json --interpreter=python --run-script-timeout=5
+     ```
+     </div>
+
+* Change version for an application:
+    * For a specific application:
+        
+        <div class="notranslate">
+        
+        ```
+        cloudlinux-selector set [--json] --interpreter python --user <str> --app-root <str> --new-version <str>
+        ```
+        </div>
+
+    * For all applications that use specific Python version:
+        
+        <div class="notranslate">
+        
+        ```
+        cloudlinux-selector change-version-multiple --json --interpreter python --from-version <str> --new-version <str>
+        ```
+        </div>
+
+    * For multiple applications:
+        
+        <div class="notranslate">
+        
+        ```
+        cloudlinux-selector change-version-multiple --json --interpreter python --data  <pairs user:app-root as json> --new-version <str>
+        ```
+        </div>
+
+
+#### *Examples*
+
+1. Change version for a specific application:
+    
+    <div class="notranslate">
+
+    ```
+    cloudlinux-selector set --json --interpreter python --user user1 --app-root apps_dir/app1 --new-version 2.7
+    ```
+    </div>
+
+2. Change version for all applications that use version 2.7.15 to version 3.3.5:
+    
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector change-version-multiple --json --interpreter python --from-version 2.7 --new-version 3.3
+    ```
+    </div>
+
+3. Change version of multiple application(s) and/or multiple users:
+    
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector change-version-multiple --json --interpreter python --data <pairs user:app-root as json> --new-version <str>
+    ```
+    </div>
+
+**Example**
+
+<div class="notranslate">
+
+```
+cloudlinux-selector change-version-multiple --json --interpreter python --data [ {“user”: “user1”, “app_root”: “apps/app1”}, {“user”: “user2”, “app_root”: “apps/app1”} ]  --new-version 2.7
+```
+</div>
+
+Common output for all <span class="notranslate">`set`</span> commands:
+
+**in case of success:**
+
+<div class="notranslate">
+
+```
+{
+  "result": "success", 
+  "timestamp": 1508666792.863358
+}
+```
+</div>
+
+**in case of error:**
+
+<div class="notranslate">
+
+```
+{
+  "result": "Some error message",
+  "details" : "Traceback: ..." ,
+  "context": {},
+  "timestamp": 1508666792.863358
+}
+```
+</div>
+
+**in case of warning:**
+
+<div class="notranslate">
+
+```
+{
+  "result": "success",
+  "warning" : "Some warning message" ,
+  "context": {},
+  "timestamp": 1508666792.863358
+}
+```
+</div>
+
+#### End user
+
+:::tip Note
+To start all users CLI commands use <span class="notranslate">`cagefs_enter`</span> command:
+
+<div class="notranslate">
+
+```
+/bin/cagefs_enter.proxied /usr/sbin/cloudlinux-selector --json <other parameters>
+```
+</div>
+:::
+
+* Get config file for the user application:
+    
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector read-config [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> --config-file <name>
+    ```
+    </div>
+
+    **JSON output:**
+
+    <div class="notranslate">
+    
+    ```
+    {
+      	"result": "success", 
+     "timestamp": 1508666792.863358
+     	 “data”: “content of config file as Base64 encoded string”
+    }
+    ```
+    </div>
+
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector read-config --json --interpreter python  --user user1 --app-root app_dir/app1 --config-file requirements.txt
+    ```
+    </div>
+
+* Save config file for user application:
+  
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector save-config [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> --config-file <path> --content <content of config file as Base64 encoded string>
+    ```
+    </div>
+
+    **JSON output** (the same as for all <span class="notranslate">`set`</span> commands):
+
+    <div class="notranslate">
+    
+    ```
+    {
+      	"result": "success", 
+    "timestamp": 1508666792.863358
+    }
+    ```
+    </div>
+    
+    **Example:**
+    
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector save-config --json --interpreter python  --user user1 --app-root app_dir/app1 --config-file requirements.txt  --content VGh1ICAyIE5vdiAxMDo0MzoxMiBFRFQgMjAxNwo=
+    ```
+    </div>
+
+    :::tip Note
+    An output for all commands below is like in Hoster’s CLI, but filtered out by username.
+    :::
+
+* Get a list of applications for a specific user:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector [get] [--json] --interpreter python  [--user <str> | --domain <str>]
+    ```
+    </div>
+
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector get --json --interpreter python  --user user1
+    ```
+    </div>
+
+* Create user application:
+
+    :::tip Note
+    Python Selector supports only utf-8 symbols for the 'app-root' and 'app-uri' arguments.
+    ::: 
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector create [--json] --interpreter python  [--user <str> | --domain <str>]  --app-root <str> --app-uri <str> [--version <str>]  [--startup-file <str>] [--entry-point <str>] [--env-vars <json string>]
+    ```
+    </div>
+
+    **Example:**
+    
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector create --json --interpreter python --app-root my_apps/app1 --domain xyz.com --app-uri apps/app1 --version 2.7 --startup-file run.py --entry-point app
+    ```
+    </div>
+
+* Start, restart, stop, and destroy user application:
+    
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector (start | restart | stop | destroy) [--json] --interpreter python [--user <str> | --domain <str>] --app-root <str>
+    ```
+    </div>
+
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector start --json --interpreter python --user user1 --app-root my_apps/app1
+    ```
+    </div>
+
+* Set a custom path for Passenger log files:
+
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector --json create --interpreter=python --version=3.3 --user=cltest1 --app-root=p_app2 --app-uri=p_app2_uri --passenger-log-file=/home/cltest1/passenger.log
+    ```
+    </div>
+
+* Remove a custom path for Passenger log files:
+  
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector --json set --interpreter=python --user=cltest1 --app-root=p_app1 --passenger-log-file=""
+    ```
+    </div>
+
+* Change properties for an application:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector set [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> [--app-mode <str>]  [--new-app-root <str>]  [--new-domain <str>]  [--new-app-uri <str>]  [--new-version <str>]  [--startup-file <str>] [--entry-point <str>] [--env-vars <json string>] [--config-files <str>]
+    ```
+    </div>
+
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector set --json --interpreter python  --user user1 --app-root my_apps/app1 --app-mode production  --new-app-root new_apps/new_app1  --new-domain new.xyz.com --new-app-uri new_apps/app1  --new-version 8  --startup-file new_app.js --env-vars { “var1” : “value1”, “var2” : “value2” }  --config-files requirements.txt,reqs.txt
+    ```
+    </div>
+
+* Run <span class="notranslate">`PIP install`</span> for user application:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector install-modules [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> --requirements-file <path>
+    ```
+    </div>
+
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector install-modules --json --interpreter python --user user1 --app-root my_apps/app --requirements-file requirements.txt
+    ```
+    </div>
+
+* Optional: install or uninstall Python packages for user application:
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector (install-modules|uninstall-modules) [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> --modules <module1[,module2...]>
+    ```
+    </div>
+
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector install-modules --json --interpreter python --user user1 --app-root my_apps/app --modules json-annotate,termcolor
+    ```
+    </div>
+
+* Optional: run Python script in virtual environment of user application, arguments <span class="notranslate">`<args>`</span> are passed to the script:
+    
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector run-script [--json] --interpreter python  [--user <str | --domain <str>>] --app-root <str> --script-name <str> [-- <args>...]
+    ```
+    </div>
+
+    **Example:**
+
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector run-script --json --interpreter python --user user1 --app-root my_apps/app --script-name test_script -- --script_opt1 --script_opt2 script_arg1 script_arg2
+    ```
+    </div>
+
+    **JSON output:**
+    
+    <div class="notranslate">
+
+    ```
+    {
+      	"result": "success", 
+     	"timestamp": 1508666792.863358
+       	“data”: “script output as Base64 encoded string”
+    }
+    ```
+    </div>
+
+* Get Python script execution timeout in seconds :
+    
+    <div class="notranslate">
+    
+    ```
+    cloudlinux-selector get --json --interpreter=python --get-run-script-timeout
+    ``` 
+    </div>
+
+## Ruby Selector
+
+To create application run:
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=ruby --version=VERSION [--user=USER] [--print-summary] [--json] --create-webapp <FOLDER_NAME> <URI>
+```
+</div>
+
+:::tip Note
+Ruby Selector supports only utf-8 symbols for the 'FOLDER_NAME' and 'URI' arguments.
+::: 
+
+To delete application:
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=ruby [--user=USER] [--print-summary] [--json] --destroy-webapp <FOLDER_NAME>
+```
+</div>
+To change application folder name:
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=ruby [--user=USER] [--print-summary] [--json] --relocate-webapp <FOLDER_NAME> <NEW_FOLDER_NAME>
+```
+</div>
+
+To change application <span class="notranslate"> URI </span> :
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=ruby [--user=USER] [--print-summary] [--json] --transit-webapp <FOLDER_NAME> <NEW_URI>
+```
+</div>
+
+To change application interpreter version:
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=ruby [--user=USER] [--print-summary] [--json] --set-user-current --version=<NEW VERSION> <FOLDER_NAME>
+```
+</div>
+
+To restart application:
+<div class="notranslate">
+
+```
+selectorctl --interpreter ruby --user cltest1 --domain cltest1.com --restart-webapp testapp
+```
+</div>
+To choose <span class="notranslate"> Ruby </span> version:
+<div class="notranslate">
+
+```
+selectorctl --interpreter=ruby --user=$USER -v 2.0
+```
+</div>
+
+## Node.js Selector
+
+* [Hoster](./#hoster-2)
+* [End user](./#end-user-2)
+
+Below is a list of commands hoster and end user can run in a command line.
+
+#### **Hoster**
+
+Get information related to Node.js: default version, list of supported versions, status of <span class="notranslate"> Node.js Selector </span> , list of users, their applications, etc:
+<div class="notranslate">
+
+```
+cloudlinux-selector [get] [--json] --interpreter nodejs
+```
+</div>
+
+<span class="notranslate"> JSON </span> output for <span class="notranslate"> _get_ </span> command:
+<div class="notranslate">
+
+```
+{  
+"selector_enabled": true | false,   
+"default_version": "6.11.3",   
+"result": "success",   
+"timestamp": 1508667174.220027  
+"cache_status": "ready"         //  or “updating” during automatic yum cache rebuild  
+"available_versions": {   //  begin of  “versions”
+      "6.11.3" : {   //   begin of version "6.11.3"
+		"name_modifier": "",
+		"status": "enabled",  //  enabled, disabled, not_installed, installing, removing
+		“base_dir”: “/opt/alt/alt-nodejs6”   //  empty when version is not installed
+		“users”: {   //  begin of  “users”                      
+			“user1”: {   //  begin of “user1”
+				“homedir”: “/home/user1”,
+				“applications”: {    //  begin of “applications”
+					“apps_dir/app1” : {   //   begin of application “apps_dir/app1”
+						“domain”: “cltest1.com”,
+						“app_uri”: “apps/my-app1”,
+						“app_mode” : “development”,
+						“startup_file” : “app.js”,
+						“app_status” : “started”,   // ‘started’ or ‘stopped’
+						“config_files” : [
+							“package.json”,
+							“gruntfile.js”
+						],
+						“env_vars” : {
+							“var1” : “value1”,
+							“var2” : “value2”
+						},
+					},   // end of application “apps_dir/app1”
+					“apps_dir/app2” : {    //   begin of application “apps_dir/app2”
+						<< data for application “apps_dir/app2”  (same structure as for application “apps_dir/app1” above) >>
+					},   //  end of application “apps_dir/app2”
+				},   //  end of “applications”
+			},   //  end of “user1”
+			“user2”: {   //  begin of “user2”
+				<< data for user “user2”  (same structure as for “user1” above) >>
+			},   //  end of “user2”
+		},   // end of “users”
+	},    //  end of version “6.11.3”
+	"8.21.5" : {   //   begin of version "8.21.5"
+		<< data for version "8.21.5"  (same structure as for version “6.11.3” above) >>
+	},    //  end of version “8.21.5”
+},    //  end of “versions”}   //   end of json
+```
+</div>
+
+Get Nodejs script execution timeout in seconds :
+    
+<div class="notranslate">
+
+```
+cloudlinux-selector get --json --interpreter=nodejs --get-run-script-timeout
+``` 
+</div>
+
+Set default version, supported versions, and status of <span class="notranslate"> Node.js Selector </span> :
+<div class="notranslate">
+
+```
+cloudlinux-selector set [--json] --interpreter nodejs (--selector-status <enabled,disabled> | --default-version <str> | --supported-versions <str>)
+```
+</div>
+
+::: tip Note
+<span class="notranslate"> Node.js Selector </span> is disabled by default. If an available Node.js version is not installed <span class="notranslate"> Node.js Selector </span> is always disabled and it is impossible to enable it.
+:::
+
+To set default Node.js version, please use the following command (note that required Node.js version should be enabled):
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter=nodejs --default-version=<ver>
+```
+</div>
+
+**Examples**:  
+This command enables <span class="notranslate"> Node.js Selector </span> :
+
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter nodejs --selector-status enabled
+```
+</div>
+
+This command sets default Node.js version as 6:
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter nodejs --default-version 6
+```
+</div>
+
+This command sets supported Node.js version as 8:
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter nodejs --supported-versions='{"6": false, "8": true}'
+```
+</div>
+
+Install required Node.js version:
+<div class="notranslate">
+
+```
+cloudlinux-selector install-version --json --interpreter nodejs --version 8
+```
+</div>
+
+Uninstall required Node.js version:
+<div class="notranslate">
+
+```
+cloudlinux-selector uninstall-version --json --interpreter nodejs --version 8
+```
+</div>
+
+Enable required Node.js version:
+<div class="notranslate">
+
+```
+cloudlinux-selector enable-version --json --interpreter nodejs --version 8
+```
+</div>
+
+Disable required Node.js version (note that it is impossible to disable default Node.js version):
+<div class="notranslate">
+
+```
+cloudlinux-selector disable-version --json --interpreter nodejs --version 8
+```
+</div>
+
+Set Nodejs script execution timeout value in seconds :
+  
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter nodejs --run-script-timeout=5
+```
+</div>
+
+Change version for application(s):
+<div class="notranslate">
+
+```
+cloudlinux-selector set [--json] --interpreter nodejs ((--user <str> |  --domain <str>) --app-root <str> | --from-version <str>) --new-version <str>
+```
+</div>
+
+**Examples** :  
+This command changes version for the specific application:
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter nodejs --user user1 --app-root apps_dir/app1 --new-version 8
+```
+</div>
+
+Common output for all <span class="notranslate"> _set_ </span> commands:
+
+**_in case of success_** :
+<div class="notranslate">
+
+```
+{  "result": "success",   "timestamp": 1508666792.863358}
+```
+</div>
+
+**_in case of error:_**
+<div class="notranslate">
+
+```
+{  "result": "Some error message",  "details" : "Traceback: ..." ,  "context": {},  "timestamp": 1508666792.863358}
+```
+</div>
+
+**_in case of warning:_**
+<div class="notranslate">
+
+```
+{  "result": "success",  "warning" : "Some warning message" ,  "context": {},  "timestamp": 1508666792.863358}
+```
+</div>
+
+To resolve issues related to <span class="notranslate"> _install-version/uninstall-version_ </span> commands (because they are running in the background) you may use this log file <span class="notranslate"> _/var/log/cl-nodejs-last-yum.log_ </span>
+It contains full <span class="notranslate"> _yum_ </span> output from the <span class="notranslate"> **_latest_** </span> performed operation (install or uninstall) and it will be rewritten with each operation.
+
+#### **End user**
+
+::: danger
+options --user and --domain are mutually exclusive now.
+:::
+
+Get config file for the user applications
+
+<div class="notranslate">
+
+```
+cloudlinux-selector read-config [--json] --interpreter nodejs  [(--user <str> |  --domain <str>)] --app-root <str> --config-file <name>
+```
+</div>
+
+JSON output:
+
+<div class="notranslate">
+
+```
+{
+    "result": "success",
+	"timestamp": 1508666792.863358
+	"data": "content of config file as Base64 encoded string"
+}
+```
+
+</div>
+
+
+**Example**:
+
+This command gets config file for <span class="notranslate"> user1 </span> ’s application <span class="notranslate"> app1 </span> :
+
+<div class="notranslate">
+
+```
+cloudlinux-selector read-config --json --interpreter nodejs  --user user1 --app-root app_dir/app1 --config-file package.json
+```
+</div>
+Save config file for the user applications
+<div class="notranslate">
+
+```
+cloudlinux-selector save-config [--json] --interpreter nodejs  [(--user <str> | --domain <str>)] --app-root <str> --config-file <path> --content <content of config file as Base64 encoded string>
+```
+</div>
+
+<span class="notranslate"> JSON </span> output (the same as for all <span class="notranslate"> _set_ </span> commands):
+
+<div class="notranslate">
+
+```
+{
+          "result": "success",
+		  "timestamp": 1508666792.863358
+}
+```
+</div>
+
+**Example**:  
+This command saves config file for <span class="notranslate"> user1 </span> ’s application <span class="notranslate"> app1 </span> :
+
+<div class="notranslate">
+
+```
+cloudlinux-selector save-config --json --interpreter nodejs  --user user1 --app-root app_dir/app1 --config-file package.json  --content                                         VGh1ICAyIE5vdiAxMDo0MzoxMiBFRFQgMjAxNwo=
+```
+</div>
+Get a list of applications for the specific user
+<div class="notranslate">
+
+```
+cloudlinux-selector [get] [--json] --interpreter nodejs  [(--user <str> |  --domain <str>)]
+```
+</div>
+
+**Example**:  
+This command gets a list of applications for the <span class="notranslate"> user1 </span> :
+
+<div class="notranslate">
+
+```
+cloudlinux-selector get --json --interpreter nodejs  --user user1
+```
+</div>
+Create user application
+
+<div class="notranslate">
+
+```
+cloudlinux-selector create [--json] --interpreter nodejs [(--user <str> | --domain <str>)] --app-root <str> --app-uri <str> [--version <str>] [--app-mode <str>] [--startup-file <str>] [--env-vars <json string>]
+```
+</div>
+
+**Example**:  
+
+:::tip Note
+NodeJS Selector supports only utf-8 symbols for the 'app-root' and 'app-uri' arguments.
+::: 
+
+This command creates <span class="notranslate"> user1 </span> 's application for the domain <span class="notranslate"> xyz.com </span> :
+<div class="notranslate">
+
+```
+cloudlinux-selector create --json --interpreter nodejs --user user1 --app-root my_apps/app1 --app-uri apps/app1
+```
+</div>
+or
+<div class="notranslate">
+
+```
+cloudlinux-selector create --json --interpreter nodejs --app-root my_apps/app1 --domain xyz.com --app-uri apps/app1
+```
+</div>
+
+Start, restart, stop, and destroy user application
+<div class="notranslate">
+
+```
+cloudlinux-selector (start | restart | stop | destroy) [--json] --interpreter nodejs  [(--user <str> | --domain <str>)] --app-root <str>
+```
+</div>
+
+**Example**:
+This command starts <span class="notranslate"> user1 </span> 's application:
+<div class="notranslate">
+
+```
+cloudlinux-selector start --json --interpreter nodejs --user user1 --app-root my_apps/app1
+```
+</div>
+Change properties for an application
+<div class="notranslate">
+
+```
+cloudlinux-selector set [--json] --interpreter nodejs  [(--user <str> | --domain <str>)] --app-root <str> [--app-mode <str>] [--new-app-root <str>] [--new-domain <str>] [--new-app-uri <str>] [--new-version <str>] [--startup-file <str>] [--env-vars <json string>]
+```
+</div>
+
+**Examples:**
+
+This command sets a custom path for Passenger log files:
+<div class="notranslate">
+    
+```
+cloudlinux-selector --json create --interpreter=nodejs --user=cltest1 --app-root=p_app2 --app-uri=p_app2_uri --passenger-log-file=/home/cltest1/passenger.log
+```
+</div>
+
+This command removes a custom path for Passenger log files:
+<div class="notranslate">
+    
+```
+cloudlinux-selector --json set --interpreter=nodejs --user=cltest1 --app-root=p_app1 --passenger-log-file=""
+```
+</div>
+
+**Example 1**:
+This command sets a production mode, new domain <span class="notranslate"> new.xyz.com </span> , new Node.js version 8, new <span class="notranslate"> URI </span> , new application <span class="notranslate"> root </span> directory and new startup file for <span class="notranslate"> user1 </span> application located on the domain <span class="notranslate"> xyz.com </span> :
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter nodejs  --user user1 --app-root my_apps/app1 --mode production  --new-app-root new_apps/new_app1  --new-domain new.xyz.com --new-app-uri new_apps/app1  --new-version 8  --startup-file new_app.js --env-vars '{ "var1" : "value1", "var2" : "value2" }'
+```
+</div>
+
+**Example 2**:
+
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter nodejs  --domain xyz.com --app-root my_apps/app1 --mode production  --new-app-root new_apps/new_app1  --new-domain new.xyz.com --new-app-uri new_apps/app1  --new-version 8  --startup-file new_app.js --env-vars '{ "var1" : "value1", "var2" : "value2" }'
+```
+</div>
+
+::: tip Note
+When changing Node.js version all replies from web application to get request will be checked in Node.js Selector (before and after version changing). HTTP response codes and MIME type are comparing. So, make sure application is available via http(s) at least locally.
+:::
+
+Run <span class="notranslate"> _npm install_ </span> command for the user application
+<div class="notranslate">
+
+```
+cloudlinux-selector install-modules [--json] --interpreter nodejs  [(--user <str> |  --domain <str>)] --app-root <str>
+```
+</div>
+
+**Example**:
+This command runs <span class="notranslate">`npm install`</span> for <span class="notranslate"> user1 </span> application:
+
+<div class="notranslate">
+
+```
+cloudlinux-selector install-modules --json --interpreter nodejs --user user1 --app-root my_apps/app
+```
+</div>
+
+::: tip Note
+All replies from web application to get request will be checked in Node.js Selector (before and after modules installation). HTTP response codes and MIME type are comparing. So, make sure application is available via http(s) at least locally.
+:::
+
+Run a script from <span class="notranslate"> package.json </span> file of a user application, arguments <span class="notranslate"> _args_ </span> are passed to the script
+<div class="notranslate">
+
+```
+cloudlinux-selector run-script [--json] --interpreter nodejs  [(--user <str> | --domain <str>)] --app-root <str> --script-name <str> [-- <args>...]
+```
+</div>
+
+**Example**:
+<div class="notranslate">
+
+```
+cloudlinux-selector run-script --json --interpreter nodejs --user user1 --app-root my_apps/app --script-name test_script -- --script_opt1 --script_opt2 script_arg1 script_arg2
+```
+</div>
+
+<span class="notranslate"> JSON </span> output:
+
+<div class="notranslate">
+
+```
+{
+          "result": "success",
+		  "timestamp": 1508666792.863358
+		  "data": "script output as Base64 encoded string"
+}
+```
+</div>
+
+Get Nodejs script execution timeout in seconds :
+    
+<div class="notranslate">
+
+```
+cloudlinux-selector get --json --interpreter=nodejs --get-run-script-timeout
+``` 
+</div>
+
+Activate virtual environment of NodeJS:
+<div class="notranslate">
+
+```
+source <home_of_user>/nodevenv/<app_root>/<nodejs_version>/bin/activate
+```
+</div>
+
+This command changes prompt to
+**Example**:  
+<div class="notranslate">
+
+```
+[newusr@test ~]$ source /home/newusr/nodevenv/newapp4/newapp3/8/bin/activate
+[newapp4/newapp3 (8)]  
+[newusr@test ~]$
+```
+</div>
+
+After activation user can use <span class="notranslate">`npm`</span> and node from a virtual environment without full paths.
+
+## Apache mod_lsapi PRO
+
+switch_mod_lsapi is the command line tool used to manage mod_lsapi PRO.
+
+It has the following syntax:
+
+`/usr/bin/switch_mod_lsapi [OPTIONS]`
+
+`[OPTIONS]`  can be the main and an additional (for usage together with any other main option).
+
+**Main options**
+
+| | |
+|-|-|
+|**Option** | **Description**|
+|`--setup` | setup _mod_lsapi_ configurations for Apache, including PHP handlers setup; create native lsphp (if it doesn't exist) by doing: `cp /opt/alt/php56/usr/bin/lsphp /usr/local/bin/` <br> _* NOT supported for DirectAdmin_ |
+|`--setup-light` | setup PHP handlers only<br> _* supported for cPanel EasyApache 4 only_|
+|`--uninstall` | uninstall _mod_lsapi_ from Apache<br> _* supported for cPanel (EasyApache 3 and EasyApache 4), Plesk, and servers without control panel_|
+|`--enable-domain` | enable _mod_lsapi_ for individual domain<br> _* supported for cPanel EasyApache 3 only_|
+|`--disable-domain` | disable _mod_lsapi_ for individual domain<br> _* supported for cPanel EasyApache 3 only_|
+|`--enable-global` | sets up _mod_lsapi_ as a default way to serve PHP, making it enabled for all domains. Once that mode is enabled, you cannot disable _mod_lsapi_ for an individual domain.<br> _* supported for cPanel only (EasyApache 3 and EasyApache 4)_|
+|`--disable-global` | disable _mod_lsapi_ as a default way to serve PHP, disabling _mod_lsapi_ for all domains, including those selected earlier using<br> _--enable-domain_ _* supported for cPanel EasyApache 3 only_|
+|`--build-native-lsphp` | build native _lsphp_ for cPanel EasyApache 3<br> _* supported for cPanel EasyApache 3 only_|
+|`--build-native-lsphp-cust` | build native _lsphp_ for cPanel EasyApache 3 (with custom PHP source path)<br> _* supported for cPanel EasyApache 3 only_|
+|`--check-php` | check PHP configuration<br> _* NOT supported for DirectAdmin_|
+|`--stat` | return usage statistics in JSON format; the following statistics metrics are collected:<br> • control panel name;<br> • mod_lsapi version;<br> • liblsapi version;<br> • criu version and status;<br> • whether mod_lsapi is enabled;<br> • lsapi configuration options;<br> • number of domains, that use _mod_lsapi_, per each installed PHP version including those set in PHP Selector _(this metric is supported for cPanel EasyApache 4, Plesk and DirectAdmin)_ .|
+
+**Additional options**
+
+| | |
+|-|-|
+|**Option** | **Description**|
+|`--verbose` | switch verbose level on|
+|`--force` | switch force mode on|
+
+
+The following table presents which `[OPTIONS]` are supported for various panels:
+
+| |  |  |  |  |  |  | |
+|-|--|--|--|--|--|--|-|
+| | No Control Panel | cPanel EA3 | cPanel EA4 | DirectAdmin | Plesk | InterWorx | ISPManager|
+|`setup` | + | + | + | custombuild | + | + | +|
+|`setup-light` | - | - | + | - | - | - | -|
+|`uninstall` | + | + | + | custombuild | + | + | +|
+|`enable-domain` | - | + | - | - | - | - | -|
+|`disable-domain` | - | + | - | - | - | - | -|
+|`enable-global` | - | + | + | custombuild | - | - | -|
+|`disable-global` | - | + | - | custombuild | - | - | -|
+|`build-native-lsphp` | - | + | - | - | - | - | -|
+|`build-native-lsphp-cust` | - | + | - | - | - | - | -|
+|`check-php` | + | + | + | - | + | + | +|
+|`verbose` | + | + | + | - | + | + | +|
+|`force` | + | + | + | - | + | + | +|
+|`stat` | + <br> _*without domain info_ | + <br> _*without domain info_ | + | + | + | + <br> _*without domain info_ | + <br> _*without domain info_|
+
+
+## Website Monitoring tool and Slow Site analyzer
+
+### The cloudlinux-ssa-manager utility
+
+The `cloudlinux-ssa-manager` utility allows to manage Slow Site analyzer via CLI.
+
+**Usage**
+
+```
+/usr/sbin/cloudlinux-ssa-manager [command] [--optional arguments]
+```
+
+**Optional arguments**:
+
+| | |
+|-|-|
+|`-h`, `--help`|show help message and exit|
+
+**Commands**:
+
+| | |
+|-|-|
+|`set-config`|set the SSA configuration|
+|`get-config`|get the SSA configuration|
+|`get-ssa-status`|get a current status of SSA|
+|`enable-ssa`|enable SSA|
+|`disable-ssa`|disable SSA|
+|`get-report`|get the latest report|
+
+You can use the `-h`, `--help` option with commands to get a full list of available optional arguments for each command.
+
+Example of the `/usr/sbin/cloudlinux-ssa-manager set-config --help` command output:
+
+```
+/usr/sbin/cloudlinux-ssa-manager set-config --help  
+............ 
+
+usage: cloudlinux-ssa-manager set-config [-h]
+                                         [--domains-number DOMAINS_NUMBER]
+                                         [--urls-number URLS_NUMBER]
+                                         [--requests-duration REQUESTS_DURATION]
+                                         [--request-number REQUEST_NUMBER]
+                                         [--time TIME]
+                                         [--correlation CORRELATION]
+                                         [--correlation-coefficient CORRELATION_COEFFICIENT]
+                                         [--ignore-list IGNORE_LIST]
+optional arguments:
+  -h, --help            show this help message and exit
+  --domains-number DOMAINS_NUMBER
+                        Size of TOP list for slow domains
+  --urls-number URLS_NUMBER
+                        Size of TOP list for slow urls
+  --requests-duration REQUESTS_DURATION
+                        The threshold value of request duration in seconds
+  --request-number REQUEST_NUMBER
+                        The threshold value of slow requests number in the
+                        period of time to mark URL as a slow one
+  --time TIME           Period of time in hours required to analyze these
+                        requests
+  --correlation CORRELATION
+                        Flag to enable or disable correlation
+  --correlation-coefficient CORRELATION_COEFFICIENT
+                        The threshold value of correlation coefficient
+  --ignore-list IGNORE_LIST
+                        List of URLs or domains that should not be included in
+                        the daily report
+```
+
+### The wmt-api utility
+
+The `wmt-api` utility allows to manage Website Monitoring tool via CLI.
+
+**Usage**
+
+```
+/usr/share/web-monitoring-tool/wmtbin/wmt-api [command] [--optional arguments]
+```
+
+**Optional arguments**:
+
+| | |
+|-|-|
+|`-h`, `--help`|show help message and exit|
+
+**Commands**:
+
+| | |
+|-|-|
+|`config-change`|set the WMT configuration using the JSON string that follows|
+|`config-get`|get the WMT configuration as JSON|
+|`email-get`|get WMT email from the config file|
+|`report-generate`|Generate a report JSON file|
+|`send-clickhouse`|Send the summary report to ClickHouse|
+|`start`|Start the WMT system|
+|`status`|Check the status of the WMT system|
+|`stop`|Stop the WMT system|
+
+Example of the `/usr/share/web-monitoring-tool/wmtbin/wmt-api` command usage:
+
+```
+/usr/share/web-monitoring-tool/wmtbin/wmt-api -config-change "{\"ping_connections\":8,\"report_top\":5,\"report_email\":\"user@example.com\"}"
+```
+
+This way you can set all or only certain parameters.
+
+## X-Ray Autotracing
+
+### The cloudlinux-autotracing utility
+
+The `cloudlinux-autotracing` utility allows to manage the X-Ray Autotracing via CLI.
+
+**Usage**
+
+```
+/usr/sbin/cloudlinux-autotracing [command] [--optional arguments]
+```
+
+**Commands**:
+
+| | |
+|-|-|
+|`enable`|Enable X-Ray Autotracing|
+|`disable`|Disable X-Ray Autotracing|
+|`status`|Get current status of the X-Ray Autotracing|
+
+**Optional arguments**:
+
+| | |
+|-|-|
+|`-h`, `--help`|Show help message and exit|
+|`--all`|Enable or disable for all users|
+|`{username}`|Enable/disable the specified user|
+|`--list-disabled`|Show list of disabled users|
+
+You can use the `-h`, `--help` option with commands to get a full list of available optional arguments for each command.
+
+**Example usage:**
+
+Disable user1:
+	
+```
+/usr/sbin/cloudlinux-autotracing disable user1
+{"result": "success"}
+```
+
+Show list of disabled users:
+	
+```
+/usr/sbin/cloudlinux-autotracing status --list-disabled
+{"result": "success", "disabled_users": ["user1"]}
+```
+	
+Enable all:
+
+```
+/usr/sbin/cloudlinux-autotracing enable --all
+{"result": "success"}
+```
+
+## Other CLI tools
+
+
+* [cldeploy](./#cldeploy)
+* [lvectl](./#lvectl)
+* [lveps](./#lveps)
+* [lvetop](./#lvetop)
+* [cldetect](./#cldetect)
+* [cldiag](./#cldiag)
+* [cloudlinux-config](./#cloudlinux-config)
+* [cl-quota](./#cl-quota)
+* [cloudlinux-limits](./#cloudlinux-limits)
+
+
+### cldeploy
+
+<span class="notranslate">`sh cldeploy --help`</span>
+
+Usage:
+
+| | |
+|--|--|
+|<span class="notranslate">`-h, --help`</span>|Print this message|
+|<span class="notranslate">`-k, --key &lt;key&gt;`</span>|Update your system to CloudLinux OS with activation key|
+|<span class="notranslate">`-i, --byip`</span>|Update your system to CloudLinux OS and register by IP|
+|<span class="notranslate">`-c, --uninstall`</span>|Convert CloudLinux OS back to CentOS|
+|<span class="notranslate">`--serverurl`</span>|Use non-default registration server (default is `https://xmlrpc.cln.cloudlinux.com/XMLRPC`)|
+|<span class="notranslate">`--components-only`</span>|Install control panel components only|
+|<span class="notranslate">`--conversion-only`</span>|Do not install control panel components after converting|
+|<span class="notranslate">`--hostinglimits`</span>|Install mod_hostinglimits rpm|
+|<span class="notranslate">`--skip-kmod-check`</span>|Skip check for unsupported kmods|
+|<span class="notranslate">`--skip-version-check`</span>|Do not check for script updates|
+|<span class="notranslate">`--skip-registration`</span>|Don't register on CLN if already have access to CL repository|
+|<span class="notranslate">`--force-hybridize`</span>|Option allows to convert CloudLinux OS 7 to CloudLinux OS 7 Hybrid which has a newer kernel (from v1.61)|
+|<span class="notranslate">`--no-force-hybridize `</span>|Don't hybridize machine from CloudLinux 7 to CloudLinux 7 Hybrid automatically, even though machine has a new hardware|
+|<span class="notranslate">`--to-solo-edition `</span>|Convert to CloudLinux Solo edition (only allowed with --skip-registration option)|
+|<span class="notranslate">`--to-admin-edition `</span>|Convert to CloudLinux Admin edition (only allowed with --skip-registration option)|
+|<span class="notranslate">`--to-container-environment `</span>|Convert to CloudLinux which supports working inside containers|
+|<span class="notranslate">`--force-packages-installation `</span>|Automatically resolve dependencies and remove conflicting packages|
+|<span class="notranslate">`--allow-lower-version `</span>|Convert to lower minor version (Almalinux x.y to CL x.y-1) if current version (CL x.y) is not available|
+
+The script will perform the following actions:
+
+1. Register server with CLN.
+2. Install CloudLinux OS kernel, lve libraries, lve-utils, lve-stats and pam_lve packages.
+3. Attempt to detect control panel and do the following actions:
+*  _For cPanel_:
+   * install mod_hostinglimits;
+   * install LVE Manager.
+
+*  _For DirectAdmin_:
+   * recompile Apache to install mod_hostinglimits;
+   * install LVE Manager.
+
+* _For Plesk, ISPManager & InterWorx_:
+  * update httpd and install mod_hostinglimits;
+  * install LVE Manager.
+
+* To disable installation of LVE Manager and mod_hostinglimits, please use <span class="notranslate">`--conversion-only`</span> option.
+
+* To disable installation of kernel & CLN registration, please use <span class="notranslate">`--components-only`</span> option.
+
+* To install **mod_hostinglimits** only, use <span class="notranslate">`--hostinglimits`</span> option.
+
+Examples:
+
+<div class="notranslate">
+
+```
+cldeploy --key xx-xxxxxx                            # convert RHEL/CentOS to CL by using activation key, install control panel components
+cldeploy --key xx-xxxxxx --force-hybridize           # convert RHEL/CentOS 7 to CL7h by using activation key, install control panel components (from v1.61)
+cldeploy --byip --conversion-only                   # convert RHEL/CentOS to CL by ip, don't install control panel components
+cldeploy --components-only                          # install control panel components on already converted system
+cldeploy --hostinglimits                            # update httpd and install mod_hostinglimits 
+```
+</div>
+
+
+### lvectl
+
+`lvectl` is the primary tool for LVE management. To use it, you have to have administrator access. lvectl is a part of lve-utils package.
+
+**lvectl syntax**
+
+**Usage**: <span class="notranslate">`lvectl command [lveid] [options]`</span>
+
+**Commands**
+
+|  |  |
+|--|--|
+| <span class="notranslate"> `apply`   </span> |apply config settings to specified LVE|
+| <span class="notranslate"> `apply all`   </span> |apply config settings to all the LVEs|
+| <span class="notranslate"> `apply-many` </span> |to apply LVE limits to multiple distinct LVEs (uids of users are read from stdin)|
+| <span class="notranslate"> `set`   </span> |set parameters for a LVE and/or create a LVE|
+| <span class="notranslate"> `set-user`   </span> |set parameters for a LVE and/or create a LVE using username instead of ID|
+| <span class="notranslate"> `list` </span> |list loaded LVEs|
+| <span class="notranslate"> `list-user`   </span> |list loaded LVEs, display username instead of user id|
+| <span class="notranslate"> `limits` </span> |show limits for loaded LVEs|
+| <span class="notranslate"> `delete` </span> |delete LVE and set configuration for that LVE to defaults|
+| <span class="notranslate"> `delete-user` </span> |delete LVE and set configuration for that user to defaults|
+| <span class="notranslate"> `destroy` </span> |destroy LVE (configuration file remains unchanged)|
+| <span class="notranslate"> `destroy all` </span> |destroy all LVE (configuration file remains unchanged)|
+| <span class="notranslate"> `destroy-many` </span> |to destroy LVE limits to multiple distinct LVEs (uids of users are read from stdin)|
+| <span class="notranslate"> `package-set` </span> | set LVE parameters for a package|
+| <span class="notranslate"> `package-list` </span> |list LVE parameters for packages|
+| <span class="notranslate"> `package-delete` </span> |delete LVE parameters for a package|
+| <span class="notranslate"> `paneluserslimits` </span> |show current user's limits for control panel|
+| <span class="notranslate"> `limit` </span> |limit PID into specified LVE. Parameters PID LVE_ID|
+| <span class="notranslate"> `release` </span> |release PID from LVE. Parameters PID|
+| <span class="notranslate"> `set-binary` </span> |add binary to be run inside LVE on execution|
+| <span class="notranslate"> `del-binary` </span> |remove binary from being run inside LVE on execution|
+| <span class="notranslate"> `list-binaries` </span> |list all binaries to be run inside LVE on execution|
+| <span class="notranslate"> `load-binaries` </span> |load binaries (used on startup) from config file|
+| <span class="notranslate"> `reload-binaries` </span> |re-load list of binaries from config file|
+| <span class="notranslate"> `help (-h)` </span> |show this message|
+| <span class="notranslate"> `version (-v)` </span> |version number|
+| <span class="notranslate"> `lve-version` </span> |LVE version number|
+| <span class="notranslate"> `set-reseller` </span> |create LVE container and set LVE parameters for a reseller|
+| <span class="notranslate"> `set-reseller-default` </span> |set default limits for resellers users|
+| <span class="notranslate"> `remove-reseller`</span> |delete LVE container and the record in the config, move LVE containers to the host container|
+
+**Options**
+
+|  |  |
+|--|--|
+| <span class="notranslate"> `--enter-count`   </span> |enable limit for enters count (by default disabled), use only with command "limit". Supported in lve-utils-6.1.2-1 or later. |
+| <span class="notranslate"> `--io-and-memory`   </span> |enable limit for IO and memory (by default disabled), use only with command "limit". Supported in lve-utils-6.1.2-1 or later. |
+| <span class="notranslate"> `--cpu=N`   </span> |limit <span class="notranslate">`CPU`</span> usage; (deprecated. Use <span class="notranslate">`--speed`</span>)|
+| <span class="notranslate"> `--speed=N%` </span> |limit <span class="notranslate">`CPU`</span> usage in percentage; 100% is one core|
+| <span class="notranslate"> `--speed=Nmhz\ghz` </span> |limit <span class="notranslate">`CPU`</span> usage in mhz\ghz|
+| <span class="notranslate"> `--ncpu=N` </span> |limit VCPU usage (deprecated)|
+| <span class="notranslate"> `--io=N` </span> |define io limits (KB/s)|
+| <span class="notranslate"> `--nproc=N` </span> |limit number of processes|
+| <span class="notranslate"> `--pmem=N`   </span> |limit physical memory usage for applications inside LVE|
+| <span class="notranslate"> `--iops=N` </span> |limit io per second|
+| <span class="notranslate"> `--mem=N` </span> | mem alias for vmem (deprecated)|
+| <span class="notranslate"> `--vmem=N` </span> |limit virtual memory for applications inside LVE|
+| <span class="notranslate"> `--maxEntryProcs=N` </span> |limit number of entry processes|
+| <span class="notranslate"> `--save` </span> |save configuration settings (use with set) (deprecated)|
+| <span class="notranslate"> `--save-all-parameters` </span> |save all parameters even if they match with defaults settings|
+| <span class="notranslate"> `--json` </span> |returns result of command json formatted|
+| <span class="notranslate"> `--unlimited` </span> |set all limits to unlimited|
+| <span class="notranslate"> `--save-username` </span> |save username in the config file. This parameter is used in conjunction with <span class="notranslate">`set-user`</span>|
+
+**Examples**
+
+* Reset all LVEs settings based on configuration in <span class="notranslate">`/etc/container/ve.cfg`</span>:
+  
+    <div class="notranslate">
+
+    ```
+    lvectl apply all
+    ```
+    </div>
+
+* Set new default <span class="notranslate">CPU & Physical memory</span> limit:
+  
+    <div class="notranslate">
+
+    ```
+    lvectl set default --speed=100% --pmem=256m
+    ```
+    </div>
+
+* Reset all LVE's killing processes inside them:
+  
+    <div class="notranslate">
+
+    ```
+    lvectl destroy all
+    ```
+    </div>
+
+* Show list of LVEs and their limits:
+  
+    <div class="notranslate">
+
+    ```
+    lvectl list
+    ```
+    </div>
+
+### lveps
+
+**lveps** tool shows information about running LVEs, processes and threads belonging to them, <span class="notranslate"> CPU/memory/IO </span> usage consumed by LVEs and their individual processes/threads. LVE is only reported if it is considered active (at least one thread belongs to that LVE or was running during measurement in dynamic mode).
+
+**Usage**:
+
+<div class="notranslate"> 
+
+```
+lveps [-p] [-n] [-o <fmt1:width1,...>] [-d] [-c <time>] [-s <style>] [-t] [-h]
+```
+</div>
+
+**Options**:
+
+| | |
+|-|-|
+|`-p`| to print per-process/per-thread statistics|
+|`-n`| to print LVE ID instead of username|
+|`-o`| to use formatted output (fmt=id,ep,pid,tid,cpu,mem,io)|
+|`-d`| to show dynamic cpu usage instead of total cpu usage|
+|`-c`| to calculate average cpu usage for &lt;time&gt; seconds (used with `-d`)|
+|`-r`| to run under realtime priority for more accuracy (needs privileges)|
+|`-s`| to sort LVEs in output (cpu, process, thread, mem, io)|
+|`-t`| to run in the top-mode|
+|`-h`| to print this brief help message|
+
+
+Command like <span class="notranslate">`lveps -p`</span> will display processes running inside 'active' LVEs.
+
+| | |
+|-|-|
+|<span class="notranslate"> CPU </span> | The number of seconds LVE/process/thread has been running (each <span class="notranslate"> CPU </span> /core is counted separately), or the average CPU load (100% is all <span class="notranslate"> CPU </span> resources) if used with <span class="notranslate">`-d`</span>.|
+|<span class="notranslate">MEM</span>| The number of megabytes of resident memory in use by LVE/process/thread (shared memory is not included).|
+|<span class="notranslate">IO</span> | The number of kilobytes read and written in sum by LVE, or kb/sec if used with `-d`.|
+|<span class="notranslate">ID</span> | LVE ID or username.|
+|<span class="notranslate">EP</span> | The number of entry processes inside  LVE.|
+|<span class="notranslate">COM</span> | Command name for this process.|
+|<span class="notranslate">PID</span> | <span class="notranslate">PID</span> of the process.|
+|<span class="notranslate">PNO</span> | The number of processes belonging to the LVE.|
+|<span class="notranslate">TID</span> | <span class="notranslate">TID</span> of the thread.|
+|<span class="notranslate">TNO</span> | The number of threads belonging to the LVE.|
+|<span class="notranslate">DO</span> | The number of disk operations belonging to the LVE from the time it was created.|
+|<span class="notranslate">DT</span> | Total amount of disk transfer in megabytes from LVE creation time.|
+|<span class="notranslate">IOPS</span> | The number of I/O operations per second|
+
+### lvetop
+
+**lvetop** utility allows to monitor LVE usage:
+
+<div class="notranslate">
+
+```
+ID        EP PNO TNO SPEED MEM  IO   IPOS
+testuser1 0  1   1   0%    7    0    0
+testuser2 0  0   0   5%    0    3    0
+testuser3 1  2   2   0%    102  2727 0
+testuser4 0  1   1   0%    12   84   1
+testuser5 0  2   2   1%    52   0    0
+```
+</div>
+
+**lvetop fields**:
+
+| | |
+|--|--|
+|<span class="notranslate"> `ID`</span>|user name if LVE id matches user id in <span class="notranslate">`/etc/passwd`</span>, or LVE id|
+|<span class="notranslate"> `EP`</span>|number of entry processes (concurrent scripts executed)|
+|<span class="notranslate"> `PNO`</span>|number of processes within LVE|
+|<span class="notranslate"> `TNO`</span>|number of threads within LVE|
+|<span class="notranslate"> `CPU`</span>|<span class="notranslate"> CPU</span> usage by LVE, relative to total <span class="notranslate"> CPU </span>  resources of the server|
+|<span class="notranslate"> `MEM`</span>|Memory usage by LVE, in KB|
+|<span class="notranslate"> `I/O`</span>|<span class="notranslate"> I/O </span> usage|
+|<span class="notranslate"> `IOPS`</span>|number of read/write operations per second|
+
+
+### cldetect
+
+* [clsupergid auto-configuration](./#clsupergid-auto-configuration)
+
+:::tip Note
+<span class="notranslate">lve-utils 1.2-10+</span>
+:::
+
+**cldetect** is used to detect installed software, and adjust CloudLinux OS options accordingly.
+
+**Usage**:
+<div class="notranslate">
+
+```
+/usr/bin/cldetect [--options]
+```
+</div>
+
+
+|||
+|----|--|
+|<span class="notranslate">`cldetect -h`/`-h`/`--help`</span>|show this message|
+|<span class="notranslate">`--detect-edition`</span>|detects and prints OS [edition](/introduction/#cloudlinux-os-editions) name:<ul><li><span class="notranslate">CloudLinux OS Solo</span></li><li><span class="notranslate">CloudLinux OS Admin</span></li><li><span class="notranslate">CloudLinux OS Shared</span></li><li><span class="notranslate">CloudLinux OS Shared Pro</span></li></ul><b>Note:</b> "<span class="notranslate">CloudLinux OS Shared</span>" is a historic name for "<span class="notranslate">CloudLinux OS Legacy</span>" edition and is kept here for backward-compatibility purpose.|
+|<span class="notranslate">`--detect-cp`</span>|prints control panel and its version (<span class="notranslate">CP_NAME,CP_VERSION</span>)|
+|<span class="notranslate">`--detect-cp-full`</span>|prints control panel, version and panel specific data (<span class="notranslate">CP_NAME,CP_VERSION</span>,...). Specific data: for <span class="notranslate">ISP Manager5 - Master/Node</span>|
+|<span class="notranslate">`--detect-cp-nameonly`</span>|prints control panel name (<span class="notranslate">CP_NAME</span>)|
+|<span class="notranslate">`--get-admin-email`</span>|prints control panel admin email (<span class="notranslate">CP_ADMIN_EMAIL</span>)|
+|<span class="notranslate">`--cxs-installed`</span>|check if CXS is installed. Returns 0 if installed, 1 otherwise|
+|<span class="notranslate">`--cpanel-suphp-enabled`</span>|check if suPHP is enabled in cPanel.Returns 0 if enabled, 1 otherwise|
+|<span class="notranslate">`--detect-litespeed`</span>|check if LiteSpeed is installed. Returns 0 if installed, 1 otherwise|
+|<span class="notranslate">`--detect-postgresql`</span>|check if PostGreSQL is installed. Returns 0 if installed, 1 otherwise|
+|<span class="notranslate">`--print-apache-gid`</span>|prints current apache gid|
+|<span class="notranslate">`--print-da-admin`</span>|prints DirectAdmin admin user|
+|<span class="notranslate">`--set-securelinks-gid`</span>|changes `/etc/sysctl.conf` if apache gid != 48 (default)|
+|<span class="notranslate">`--set-nagios`</span>|do some adjustments to make nagios work correctly if it's installed. Called as a part of `--setup-supergids`|
+|<span class="notranslate">`--setup-supergids`</span>|do some adjustments to make special users/software (nagios, cPanel’s mailman) work correctly if it is installed to the system|
+|<span class="notranslate">`--cl-setup`</span>|check if CloudLinux OS is installing. Returns 0 if installing, 1 otherwise|
+|<span class="notranslate">`--update-license`</span>|updates license|
+|<span class="notranslate">`--update-new-key`</span>|updates license with new key|
+|<span class="notranslate">`--check-license`</span>|check license. Returns OK if license is not older than 3 days, error message otherwise|
+|<span class="notranslate">`-q`</span>|check license. Returns 0 if license is not older than 3 days, 1 otherwise|
+|<span class="notranslate">`--no-valid-license-screen`</span>|returns no valid license found screen|
+|<span class="notranslate">`--license-out-of-date-email`</span>|returns License out of Date Email.|
+|<span class="notranslate">`--check-openvz`</span>|returns enviroment id|
+
+
+#### **clsupergid auto-configuration**
+
+Each time <span class="notranslate">`lve-utils`</span> package is installed or upgraded it does some automatic system re-configuration to make some software (like nagios) work correctly, if it’s installed, by calling <span class="notranslate">`cldetect --setup-supergids`</span> command.
+
+Starting from <span class="notranslate">**_lve-utils 3.0-21_**</span> a behaviour of <span class="notranslate">`cldetect --set-nagios`</span> (now, it’s a part of <span class="notranslate">`cldetect --setup-supergids`</span>) command slightly changed.
+
+| |  | |
+|-|--|--|
+| | **Old behavior** | **New behavior**|
+|If <span class="notranslate">**fs.proc_super_gid**</span> is 0 (which means it’s not configured) or it’s set to some GID that doesn’t exist in the system.| Command will set <span class="notranslate">`sysctl fs.proc_super_gid`</span> to point to Nagios GID. | Command will create special <span class="notranslate">`clsupergid`</span> group, setup <span class="notranslate">`sysctl fs.proc_super_gid`</span> to point to it’s GID and add Nagios user to this group. If no such user exists, then no actions with the group will be done.|
+
+If **fs.proc_super_gid** was configured by an admin to some existing group, the command will just add Nagios user to this group.
+
+### cldiag
+ 
+`cldiag` utility is included in <span class="notranslate">`lve-utils`</span> package and is intended for:
+
+* server diagnostics performed by a server administrator for detecting the most common errors in the configuration or software operation;
+* the focused check of the servers for typical errors performed by the support engineers before proceeding to the detailed analysis of the customer tickets;
+* servers automatic check by cron with the following generation of the reports and email them to the server administrator.
+    * Set option `ENABLE_CLDIAG` to `false` in config `/etc/sysconfig/cloudlinux` if you want to disable automatic check by cron permanently
+    * Use the cldiag key `--disable-cron-checkers` for disabling separate checkers if you want to disable only some checkers (<span class=“notranslate”>lve-utils >= 4.2.18-1</span>)
+    * A default email is `root@localhost.localdomain`. Note that the settings of the mail server can change the final email.
+
+You can change the email in the following ways:
+
+* In your control panel by changing the mail server settings
+* By changing the `/etc/sysconfig/cloudlinux` config:
+  * Set the desired email instead of the default CP value in the `EMAIL` option
+  * Set the `CP` value in the `EMAIL` option in the `license_check` section. Add an option with the path to the panel script for receiving emails:
+    ```
+    {PANEL_NAME}_getemail_script=/path/to/getemail_script)
+    ```
+  `{PANEL_NAME}` is the name of the panel from the `cldetect --detect-cp-name` command output.
+  * If there is no panel script, the default email (`root@localhost.localdomain`) will be used.
+  * The `/path/to/getemail_script` file should be executable and output to stdout the admin email to which an email with checks results will be sent. Note that the settings of the mail server can change the final email.
+
+In all cases, for the negative checker result, the exit code will be > 0 (at the moment it will be equal to the number of failed checkers).
+
+All the checkers support additional <span class="notranslate">`--json`</span> option with the unified output in an appropriate format.
+
+For example:
+ 
+<div class="notranslate"> 
+
+```
+cldiag --symlinksifowner --json
+
+{"total_errors": 0, "Check fs.enforce_symlinksifowner is correctly enabled in /etc/sysctl.conf": {"res": "OK", "msg": "fs.enforce_symlinksifowner = 1"}}
+```
+</div>
+
+Each checker returns a typical result with the name of the check performed (brief description), one of the possible statuses of its execution, and detailed information on its fail or success.
+
+For example:
+
+<div class="notranslate">
+
+```
+Check fs.enforce_symlinksifowner is correctly enabled in /etc/sysctl.conf:
+
+OK: fs.enforce_symlinksifowner = 1
+
+Check suexec has cagefs jail:
+
+SKIPPED: SuEXEC is not enabled
+```
+</div>
+
+Possible checkers results:
+
+1. <span class="notranslate">`OK`</span> - the check succeeded.
+2. <span class="notranslate">`FAILED`</span> - the check revealed a problem.
+3. <span class="notranslate">`SKIPPED`</span> - the check was skipped as it made no sense in the actual environment (e.g. wrong control panel) or it could not be executed for some reason (e.g. no users with enabled CageFS found). Such result doesn’t mean there is a problem and can be considered as a positive.
+4. <span class="notranslate">`INTERNAL_TEST_ERROR`</span> - the check has failed because of a problem in the checker itself. Please report such problems using [https://cloudlinux.zendesk.com/agent/](https://cloudlinux.zendesk.com/agent/).
+
+The utility includes several built-in checkers, and can also import and run checkers from other utilities.
+
+Currently implemented checkers:
+
+#### diag-cp
+
+Checks control panel and its configuration (for DirectAdmin only).
+
+Checking control panel availability, thereby detecting it with our code. Displaying control panel name and version. Also, for DirectAdmin, checking if CloudLinux OS support is enabled in its config.
+
+Fails if <span class="notranslate">`/usr/local/directadmin/custombuild/options.conf`</span> does not contain <span class="notranslate">`cloudlinux=yes`</span> line (for DirectAdmin control panel).
+
+#### symlinksifowner
+
+Checks fs.enforce_symlinksifowner is correctly enabled in <span class="notranslate">`/etc/sysctl.conf`</span>.
+
+Checking specified kernel setup described in [this docs section](/cloudlinuxos/cloudlinux_os_kernel/#symlink-owner-match-protection) for deprecated value and displaying its current value.
+
+Fails if <span class="notranslate">`/proc/sys/fs/enforce_symlinksifowner`</span> contains value `2` (it is deprecated and can cause issues for the system operation).
+ 
+
+#### check-suexec
+
+Checks suexec has <span class="notranslate">cagefs</span> jail.
+
+In case if <span class="notranslate">CageFS</span> is installed and SuEXEC is on, checking if <span class="notranslate">CageFS</span> is enabled for SuEXEC.
+ 
+Fails if CageFS is not enabled for suexec binary.
+
+
+#### check-suphp
+
+Checks suphp has <span class="notranslate">cagefs</span> jail.
+
+In case if <span class="notranslate">CageFS</span> is installed and SuPHP is on, checking if <span class="notranslate">CageFS</span> is enabled for SuPHP.
+ 
+Fails if CageFS is not enabled for suphp binary.
+
+#### check-usepam
+
+Checks usepam setting in <span class="notranslate">`/usr/sbin/sshd -T`</span> output.
+
+Checking if <span class="notranslate">`/usr/sbin/sshd -T`</span> output contains <span class="notranslate">`usepam yes`</span> line, which is required for pam_lve correct work with sshd.
+ 
+Fails if <span class="notranslate">`/usr/sbin/sshd -T`</span> output contains <span class="notranslate">`usepam no`</span>. You could specify `UsePAM yes` in `/etc/ssh/sshd_config`.
+
+::: tip Note
+Cldiag checks `/usr/sbin/sshd -T` output in <span class="notranslate">**lve-utils >= 6.4.8**</span>. Lower versions check whether `/etc/ssh/sshd_config` file contains `UsePAM yes` line.
+:::
+
+#### check-symlinkowngid
+
+Checks <span class="notranslate">`fs.symlinkown_gid`</span>.
+
+First checking if user <span class="notranslate">`Apache`</span> is available in the system (on some panels users `httpd` or <span class="notranslate">`nobody`</span> with special GID are present instead of <span class="notranslate">`Apache`</span>, they are detected correctly as well). Then, if such user exists, checking that his GID equals to the one specified in sysctl or that this user belongs to this supplemental group. If these conditions are met, then the protection effect described in [this docs section](/cloudlinuxos/cloudlinux_os_kernel/#symlink-owner-match-protection) is applied to this user, and the appropriate message will be displayed.
+ 
+Fails if Apache user is not in the group specified in <span class="notranslate">`/proc/sys/fs/symlinkown_gid`</span>.
+
+#### check-cpanel-packages
+
+Checks existence of all user's packages (cPanel only)
+
+Reading <span class="notranslate">`PLAN=`</span> for all users from <span class="notranslate">`/var/cpanel/users`</span> and checking if all of them are present in <span class="notranslate">`/var/cpanel/packages`</span> and if not, then displaying them in pairs like <span class="notranslate">`user: plan`. `default`</span> and <span class="notranslate">`undefined`</span> packages are excluded from the check.
+
+Fails if users from <span class="notranslate">`/var/cpanel/users/`</span> directory have non-existing packages (packages do not exist in <span class="notranslate">`/var/cpanel/packages/`</span> directory, except for <span class="notranslate">`undefined`</span> and <span class="notranslate">`default`</span>). 
+ 
+
+#### check-defaults-cfg
+
+Checks <span class="notranslate">`/etc/cl.selector/default.cfg`</span>.
+
+Checking that if this config exists, the default PHP version is not disabled in it. Also performing minimal syntax checks for PHP modules settings and displaying the incorrect.
+ 
+Fails if there are some problems in <span class="notranslate">`/etc/cl.selector/default.cfg`</span> found.
+
+Possible reasons for failure:
+   * Default version is undefined, which means <span class="notranslate">`/etc/cl.selector/default.cfg`</span> file does not contain section [versions] with the defined default version. 
+   * Default PHP version is disabled.
+
+#### check-cagefs
+
+All checks for CageFS are described separately in [this docs section](./#sanity-check) and their start from cagefsctl utility is completely equivalent to the start from cldiag and is designed only for a better experience.
+ 
+This checker includes a set of CageFS sub-checkers, failure of one (or more) of them causes general checker failure.
+
+#### check-php-conf
+
+Checks <span class="notranslate">`/etc/cl.selector/php.conf`</span>.
+
+Checking the config syntax for acceptable blocks and directives.
+ 
+Fails if <span class="notranslate">`/etc/cl.selector/php.conf`</span> has incorrect format.
+
+ * File contains an invalid parameter (valid parameters: <span class="notranslate">`Directive`</span>, <span class="notranslate">`Default`</span>, <span class="notranslate">`Type`</span>, <span class="notranslate">`Comment`</span>, <span class="notranslate">`Range`</span>, <span class="notranslate">`Remark`</span>).
+  
+ * File contains an invalid setting for the parameter <span class="notranslate">`Type`</span> (valid settings for the  <span class="notranslate">`Type`</span> parameter: <span class="notranslate">`value`, `list`, `bool`</span>)
+
+#### check-phpselector
+
+Checks compatibility for the <span class="notranslate">PHP Selector</span>
+
+Detecting which PHP handler has been configured on the server and checking its compatibility with the <span class="notranslate">CloudLinux OS PHP Selector</span> according to [this table](/cloudlinuxos/limits/#compatibility-matrix) and displaying the corresponding message with the link to the documentation in case of a problem detected. No checks are performed for EasyApache3.
+
+Failure reasons:
+  * The installed <span class="notranslate">`mod_ruid`</span> package is incompatible with the <span class="notranslate">PHP Selector</span>
+  * <span class="notranslate">`mod_suexec`</span> is not installed
+  * <span class="notranslate">`mod_suphp`</span> is not installed
+  * Absence of the <span class="notranslate">`/usr/local/lsws/conf/httpd_config.xml`</span> file (only for LiteSpeed server)
+
+::: tip Note
+The following checkers are available in <span class="notranslate">**lve-utils >= 3.1.2**</span>
+:::
+ 
+
+#### check-lve-limits
+
+Checks the validity of LVE limits on the server.
+
+[See this page for detailed description](/cloudlinuxos/limits/#limits-validation).
+
+#### check-rpmdb
+
+:::warning Warning
+This checker was removed from the cldiag utility as `cldiag --check-rpmdb` can in some cases hang up during `rpmdb` check, which can brake access to the database for `rpm/yum` utilities.
+:::
+
+#### check-hidepid
+
+A new checker `check-hidepid` is available starting from `lve-utils-4.2.18-1` and later. It checks if CageFS is installed and if `/proc` is mounted without the `hidepid=2` parameter.
+
+* If CageFS is not installed, `check-hidepid` skips and outputs the following:
+
+  ```
+    Check mount with hidepid=2 option:
+	    SKIPPED: Cagefs is not installed
+  ```
+
+* If `check-hidepid` triggers and finds an issue, it outputs the following:
+
+  ```
+    Check mount with hidepid=2 option:
+	    FAILED: Details: hidepid protection disabled.
+    Please, mount system with hidepid=2 for better security.
+    Read more about hidepid option here: https://docs.cloudlinux.com/cloudlinuxos/cloudlinux_os_kernel/#remounting-procfs-with-hidepid-option
+  ```
+
+* If `check-hidepid` triggers and it's OK, it outputs the following:
+
+  ```
+    Check mount with hidepid=2 option:
+	    OK: hidepid protection enabled
+  ```
+
+#### check-jwt-token
+
+This new checker is available starting from LVE-Utils 4.2.21-2
+
+Checks the validity and presence of the JWT token which is required for correct work of client part of Centralized Monitoring.
+
+Failure reasons:
+* The JWT token is absent in path `/etc/sysconfig/rhn/jwt.token`
+* The JWT token is malformed
+* The JWT token is expired.
+* The issuer of JWT token is invalid.
+
+In all cases try running <span class="notranslate">`rhn_check`</span> for getting a new token.
+
+#### check-cm-all
+
+This new checker is available starting from LVE-Utils 4.2.21-2
+
+Checks the things on a server of client which are required for correct work of client part of Centralized Monitoring:
+* Checks the validity and presence of JWT token
+* Checks that service <span class="notranslate">`cl_plus_sender`</span> is present, enabled and active
+* Checks that service <span class="notranslate">`node_exporter`</span> is present, enabled and active
+* Checks that service <span class="notranslate">`lvestats`</span> is present, enabled and active
+* Checks that RPM packages <span class="notranslate">`cl-end-server-tools`</span> and <span class="notranslate">`cl-node-exporter`</span> are installed
+
+#### all
+
+Performs diagnostic checks from the list:
+
+* check_cp_diag
+* check_symlinksifowner
+* check_suexec
+* check_suphp
+* check_use_pam
+* check_symlinkowngid
+* check_existence_of_all_users_packages
+* check_phpselector
+* check_defaults_cfg
+* check_php_conf
+* check_lve_limits
+* check_hidepid
+* check_cagefs_partition_disk_quota
+* fake_cagefs_checker
+
+#### generate-email
+
+Performs diagnostic checks (from the list above) and generates HTML report sent to the administrator's email.
+
+#### cron-check
+
+Performs the same diagnostic checks as `generate-email` but with considering the `ENABLE_CLDIAG` option in the `/etc/sysconfig/cloudlinux`.
+
+Performs diagnostic checks from the list:
+
+* check_symlinksifowner
+* check_use_pam
+* check_symlinkowngid
+* check_existence_of_all_users_packages
+* check_lve_limits
+* check_hidepid
+* check_cagefs_partition_disk_quota
+* check_jwt_token
+* check_cl_plus_sender_service
+* check_node_exporter_service
+* check_cmt_packages
+* check_lvestats_service
+
+#### doctor
+
+:::tip Note
+Available starting from lve-utils version 6.3.9-1.
+:::
+
+This option can be used instead of the following command:
+
+```
+wget -qq -O - https://repo.cloudlinux.com/cloudlinux/cldoctor/cldoctor.sh | bash
+```
+
+If this option is provided cldoctor script will be downloaded to a temp directory and executed by cldiag. Also the report will be automatically sent to our support team.  
+
+### cloudlinux-config
+
+**cloudlinux-config** utility shows/sets various parameters related to [LVE Manager](/cloudlinuxos/lve_manager/#lve-manager-options) UI, [MySQL Governor](/cloudlinuxos/cloudlinux_os_components/#configuration-and-operation) and [faults notifications for LVE-Stats 2](/cloudlinuxos/cloudlinux_os_components/#configuration)
+
+**Usage:**
+
+<div class="notranslate">
+
+```
+cloudlinux-config get [--json] [--for-reseller resname ]
+cloudlinux-config set [--json] --data <str> [--for-reseller resname ]
+cloudlinux-config set [--json] --reset-inodes-limit
+```
+</div>
+
+**Commands:**
+
+| | |
+|-|-|
+|<span class="notranslate">`get`</span>| Shows the values of all supported parameters|
+|<span class="notranslate">`set`</span>| Sets values for supported parameters|
+
+**Options**
+
+| | |
+|-|-|
+|<span class="notranslate">`--json`</span>| Sets/returns values in json format|
+|<span class="notranslate">`--data`</span>| Sets values from the data string that follows|
+|<span class="notranslate">`--for-reseller`</span>| Sets/limits the output only to the data related to reseller _resname_ |
+|<span class="notranslate">`--reset-inodes-limit`</span>| Resets inode limits (in case disk quota breaks)|
+
+**JSON data structure**
+
+All options are enclosed inside <span class="notranslate">`options`</span> (Level 0) string. All options are enclosed in `" "`, while values come as is. Here's an example:
+
+<div class="notranslate">
+
+```
+'{"options":{"L1_option1":value1, "L1_option2":value2}}'
+```
+</div>
+
+Each Level1 option can have nested Level2 options specified using the same syntax, the same goes for Level2 and Level3 options respectively.
+
+**LVE-Stats 2 faults notification settings**
+
+| | | | | | |
+|-|-|-|-|-|-|
+| Level1| Level2| Level3| Level4| Possible values| Description|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>| <span class="notranslate">`concurrentConnections`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include concurrent connection value in notification emails|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`cpu`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include CPU consumption value in notification emails|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`io`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include IO value in notification emails|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`iops`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include IOPS value in notification emails|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`mem`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include RAM consumption value in notification emails|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`nproc`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include number of processes value in notification emails|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`fminimumNumberOfFaultsToNotify`</span>| <span class="notranslate">`admin`</span>| | `N`| The minimum number of faults to notify for admin|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`fminimumNumberOfFaultsToNotify`</span>| <span class="notranslate">`user`</span>| | `N`| The minimum number of faults to notify for users|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`fminimumNumberOfFaultsToNotify`</span>| <span class="notranslate">`reseller`</span><sup> *</sup>| | `N`| The minimum number of faults to notify for reseller|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`fminimumNumberOfFaultsToNotify`</span>| <span class="notranslate">`customer`</span><sup> *</sup>| | `N`| The minimum number of faults to notify for reseller's customers|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`admin`</span>|<span class="notranslate">`period`</span>| `N`| The period of faults notifications for admin|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`admin`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Time units of period of faults notifications for admin|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`user`</span>|<span class="notranslate">`period`</span>| `N`| The period of faults notifications for users|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`user`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Time units of period of faults notifications for users|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`reseller`</span><sup> *</sup>|<span class="notranslate">`period`</span>| `N`| The period of faults notifications for resellers|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`reseller`</span><sup> *</sup>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Time units of period of faults notifications for resellers|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`customer`</span><sup> *</sup>|<span class="notranslate">`period`</span>| `N`| The period of faults notifications for reseller's customers|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`customer*`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Time units of period of faults notifications for reseller's customers|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyAdmin`</span>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notifications to admin|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyResellerCustomers`</span>| | | <span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notification to reseller users|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyResellerOnCustomers`</span><sup> *</sup>| | | <span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send users' faults notifications to the respective reseller|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyReseller`</span><sup> *</sup>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notification to reseller|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyCustomers`</span>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notifications to users|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyResellers`</span>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notification to resellers|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`email`</span>|<span class="notranslate">`notifyCharset`**</span>| |<span class="notranslate">`utf-8`/null</span>|Set charset used in email|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`email`</span>|<span class="notranslate">`notifyFromEmail`**</span> | |<span class="notranslate">`admin@email.com`/null</span>|Set email to notify from|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`email`</span>|<span class="notranslate">`notifySubject`**</span> | |<span class="notranslate">`Subject`/null</span>|Set email subject|
+|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`email`</span>|<span class="notranslate">`reportAdminEmail`**</span> | |<span class="notranslate">`admin@email.com`/null</span>|Set admin email for notifications|
+
+:::tip Note
+To reset options marked with ** set `null`.
+:::
+
+::: tip Note  
+Options marked with `*` are for reseller use only
+:::
+
+**MySQL Governor settings**
+
+| | | | | | |
+|-|-|-|-|-|-|
+| Level1| Level2| Level3| Level4| Possible values| Description|
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`errorLog`</span>|<span class="notranslate">`level`</span>| | <span class="notranslate">`DEBUG`</span>/<span class="notranslate">`ERROR`</span>| Sets error log level |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`errorLog`</span>|<span class="notranslate">`logPath`</span>| |<span class="notranslate">`/var/log/dbgovernor-error.log`</span>| Sets error log destination file |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`gatherDataForDetailedStats`</span>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Enables gathering data for detailed statistics |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`logRestrictedUsersQueries`</span>| | | <span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Enables logging of restricted user queries |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`modeOfOperation`</span>| | |<span class="notranslate">`off`</span>/<span class="notranslate">`single`</span>/<span class="notranslate">`abusers`</span>/<span class="notranslate">`all`</span>| Sets the mode of operation |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictLog`</span>|<span class="notranslate">`format`</span>| |<span class="notranslate">`SHORT`</span>/<span class="notranslate">`MEDIUM`</span>/<span class="notranslate">`LONG`</span>/<span class="notranslate">`VERYLONG`</span>| Sets the format for restrict log |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictLog`</span>|<span class="notranslate">`logPath`</span>| |<span class="notranslate">`/var/log/dbgovernor-restrict.log`</span>| Sets the format for restrict log |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictType`</span>|<span class="notranslate">`mode`</span>| |<span class="notranslate">`period`</span>/<span class="notranslate">`limit`</span>| Sets the restriction mode |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictType`</span>|<span class="notranslate">`unlimit`</span>|<span class="notranslate">`period`</span>| `N`| Sets the restriction expiration period |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictType`</span>|<span class="notranslate">`unlimit`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets the restriction expiration period units of time |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level1`</span>|<span class="notranslate">`period`</span>| `N`| Sets L1 restriction time period |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level1`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L1 restriction time period units of time |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level2`</span>|<span class="notranslate">`period`</span>| `N`| Sets L2 restriction time period |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level2`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L2 restriction time period units of time |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level3`</span>|<span class="notranslate">`period`</span>| `N`| Sets L3 restriction time period |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level3`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L3 restriction time period units of time |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level4`</span>|<span class="notranslate">`period`</span>| `N`| Sets L4 restriction time period |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level4`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L4 restriction time period units of time |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>| <span class="notranslate">`timeout`</span>|<span class="notranslate">`period`</span>| `N`| Sets restriction time period timeout|
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`timeout`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L1 restriction time period timeout units of time |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`scriptPath`</span>| | | <span class="notranslate">`/path/to/script`</span>| Path to script to be triggered when account is restricted |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`slowQueries`</span>|<span class="notranslate">`kill`</span>| | <span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Enables killing of slow queries |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`slowQueries`</span>|<span class="notranslate">`logPath`</span>| |<span class="notranslate">`/path/to/sqkill.log`</span>| Sets the path to slow query kill log file |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`slowQueries`</span>|<span class="notranslate">`timeout`</span>| | `N`| Time to kill slow SELECT queries for account (seconds) |
+|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`userMaxConnections`</span>| | | `N`| Sets the maximum number of user connections to database |
+
+**LVE Manager UI settings**
+
+| | | | |
+|-|-|-|-|
+| Level1| Level2| Possible values| Description|
+|<span class="notranslate">`inodeLimits`</span>|<span class="notranslate">`showUserInodesUsage`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Show end user inode usage|
+|<span class="notranslate">`uiSettings`</span>|<span class="notranslate">`hideLVEUserStat`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Hide LVE end user usage statistic|
+|<span class="notranslate">`uiSettings`</span>|<span class="notranslate">`hidePHPextensions`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Hide PHP extension selection|
+|<span class="notranslate">`uiSettings`</span>|<span class="notranslate">`hidePythonApp`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Hide Python App in web-interface|
+|<span class="notranslate">`uiSettings`</span>|<span class="notranslate">`hideRubyApp`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Hide Ruby App in web-interface|
+
+**Examples**
+
+* display Python/Ruby Selector in User UI (cPanel)
+
+<div class="notranslate">
+
+```
+cloudlinux-config set --json --data '{"options":{"uiSettings":{"hideRubyApp":false, "hidePythonApp":false}}}'
+```
+</div>
+
+
+### cl-quota
+
+* [General provisions](./#general-provisions)
+* [Known cl-quota limitations behaviour](./#known-cl-quota-limitations-behaviour)
+* [cPanel User File Synchronization](./#cpanel-user-file-synchronization)
+* [What is Synchronized](./#what-is-synchronized)
+* [What is NOT Synchronized](./#what-is-not-synchronized)
+* [Setting limits and integration with panel packages](./#setting-limits-and-integration-with-panel-packages)
+* [Limits inheritance](./#limits-inheritance)
+* [Caching and synchronizing the limits](./#caching-and-synchronizing-the-limits)
+* [Quotas DB file](./#quotas-db-file)
+* [Troubleshooting](./#troubleshooting)
+* [CLI options/examples](./#cli-options-examples)
+
+<span class="notranslate">**cl-quota**</span> utility is designed to control <span class="notranslate">disk quotas</span> and provides:
+
+* Setting user and package limits.
+
+* Integration with panel packages.
+
+* Limits synchronization.
+
+* Automatic inheritance of panel limits to all appropriate users.
+
+::: tip Note
+cl-quota works only with inodes soft/hard limits (soft/hard file limits in setquota/repquota utilities terminology). Block limits are not controlled by cl-quota utility in any way, they are not taken into account and do not affect the data that they issue. That is why hereinafter it is the inode limits that are implied by the word “limits”.
+:::
+
+#### General provisions
+
+
+<span class="notranslate"> cl-quota </span> utility never sets/reads limits directly in the system, it uses standard <span class="notranslate"> setquota/repquota </span> utilities included into the <span class="notranslate"> quota </span> package for this purpose.
+
+<span class="notranslate"> cl-quota </span>  **will not work** in the following cases:
+
+* <span class="notranslate"> setquota/repquota </span> are missing or working incorrectly;
+
+* the <span class="notranslate"> quotas </span> are not configured in the system.
+
+<span class="notranslate"> cl-quota </span> only **performs** the minimal diagnostics of <span class="notranslate"> quota </span> related errors:
+
+* verifies the availability of <span class="notranslate"> setquota/repquota </span> utilities on the disk;
+
+* verifies if <span class="notranslate"> quotas </span> are activated for a specified user (with a separate command), see below.
+
+<span class="notranslate"> quota </span> package which contains the required <span class="notranslate"> setquota/repquota </span> utilities, is not included in <span class="notranslate"> lvemanager </span> package dependencies by default, and <span class="notranslate"> quotas </span> activation is a long process which sometimes depends on the panel used, therefore, all the steps on <span class="notranslate"> quotas </span> configuration and activation must be carried out by yourself, <span class="notranslate"> cl-quota </span> does not perform these actions.
+
+Error messages sent back to the console are extremely rare, to receive error messages use the command:
+<div class="notranslate">
+
+```
+cat /var/log/messages | grep clquota
+```
+</div>
+
+::: tip Note
+You should not set soft limit higher than hard limit. cl-quota does not control it in any way, but in some cases, the system can ban such limits combination and they won’t be set or will be set in some other way.
+:::
+
+#### Known cl-quota limitations behaviour
+
+::: tip Key Points Administrators Should Know:
+
+* **User Creation**: All users (including panel users) are created with limits equal to 0
+* **Synchronization Timing**: Limits are applied within 5 minutes of user creation via automatic cron job
+* **File Discrepancies**: cPanel user files may show different values than actual enforced limits
+* **Cache Mechanism**: Non-root users see cached data from `/etc/container/cl-quotas.cache`
+* **Package Inheritance**: Users inherit package limits unless individual limits are set
+* **Special Values**: 
+  - `0` means inherit from package or uid=0
+  - `-1` means unlimited (displayed as dash `-`)
+  - Words "default" and "unlimited" are interchangeable with 0 and -1
+* **Auto-Sync Control**: Can be disabled via `cl_quota_limits_autosync=no` in `/etc/sysconfig/cloudlinux`
+* **Root User**: Limits are never set for root (uid=0) but stored for inheritance
+* **Validation**: cl-quota doesn't validate soft/hard limit relationships
+:::
+
+#### cPanel User File Synchronization
+
+* <span class="notranslate">cl-quota</span> does **NOT** synchronize inode limits with cPanel user configuration files (<span class="notranslate">`/var/cpanel/users/*`</span>)
+* Changes made through LVE Manager to package inode limits are correctly applied at the system quota level but do **not** update the corresponding user files
+* This can result in discrepancies where:
+  - <span class="notranslate">`/var/cpanel/packages/packagename`</span> shows updated limits
+  - <span class="notranslate">`/var/cpanel/users/username`</span> shows old limit values
+  - System quota (<span class="notranslate">`repquota`</span>) and API show correct current limits
+  - Actual quota enforcement works correctly despite the file discrepancy
+
+#### What is Synchronized
+
+<span class="notranslate">cl-quota</span> synchronizes the following:
+* Internal quota database file (<span class="notranslate">`/etc/container/cl-quotas.dat`</span>)
+* cPanel package files
+* System-level quota limits
+
+#### What is NOT Synchronized
+
+<span class="notranslate">cl-quota</span> does **NOT** synchronize:
+* cPanel user configuration files (<span class="notranslate">`/var/cpanel/users/*`</span>)
+
+::: tip Note
+The lack of user file synchronization does not affect the actual quota enforcement. Inode limits are applied at the system quota level and function correctly regardless of what is stored in cPanel user files. The discrepancy is cosmetic and affects only file-based configuration visibility.
+:::
+
+#### Setting limits and integration with panel packages
+
+
+<span class="notranslate"> cl-quota </span> utility allows setting <span class="notranslate"> inodes </span> limits for users of the system.
+
+<span class="notranslate"> cl-quota </span> integrates with the panels through a standard mechanism - [Integrating LVE Limits with Packages](/cloudlinuxos/lve_manager/#detecting-and-working-with-cloudlinux).
+
+Panel users are such users whose UIDs are issued by the above panel integration mechanism. The list of panel packages and the information on the user's affiliation to a particular package is obtained from there as well.
+
+When installing/reading the limits, the following peculiarities are applied:
+
+1. When displaying <span class="notranslate"> quotas, cl-quota </span> displays information about the limits of all users - system and panel. No filter applied. The actual limit values are always displayed.
+
+2. Limit value -1 for the packages (see below) is displayed as dash (-).
+
+3. If <span class="notranslate"> cl-quota </span> is running under <span class="notranslate"> root </span>, it will display the limits returned by <span class="notranslate"> repquota </span> utility with no changes. If it is running under some other user, it will return data from a special cache file, see [Quotas cache and synchronization](./#caching-and-synchronizing-the-limits).
+
+4. Limits setting only works for panel users, for all other users limits are not set (the command is ignored). The only exception - <span class="notranslate"> uid=0 </span> . The limits are never set for the <span class="notranslate"> root </span> user <span class="notranslate"> (uid=0) </span> , but they are stored in <span class="notranslate"> DB </span> file and are used by inheritance mechanism. See [Limits Inheritance](./#limits-inheritance).
+
+5. <span class="notranslate"> Hard </span> and <span class="notranslate"> soft </span> limits are completely independent, <span class="notranslate"> сl-quota </span> does not apply any interdependencies to them. Setting only one of them (any) is acceptable, the other one will not change.
+
+<span class="notranslate"> cl-quota </span> utility also supports package limits set/read. When setting package limits, they are set for all users of a particular package except for those whose limits are set individually. See also [Limits Inheritance](./#limits-inheritance).
+
+Any positive numbers are allowed as limit values. <span class="notranslate"> cl-quota </span> neither controls nor changes these values except the following cases:
+
+* negative values are taken modulo;
+
+* fractional values are converted to integers by discarding the fractional part;
+
+* if the transferred value can not be turned into a number (for example, 67wg76), it is completely ignored and the limit is not set at all.
+
+Then these values are transmitted directly to <span class="notranslate"> setquota </span> system utility for the actual setting of the limits.
+
+Thus <span class="notranslate"> cl-quota </span> has two limit values, which are processed in a special way:
+
+* 0: Means inheritance of the limit from the package where the user is located, or from <span class="notranslate"> uid=0 </span> . See also [Limits inheritance](./#limits-inheritance) for more detailed information.
+
+* -1: The real limits are set to 0, which means no limits, literally "unlimited". This is legit both for individual and for package limits. Limit value -1 is stored in the database as well as any other but is never displayed.
+
+You can use the words <span class="notranslate"> “default” </span> and <span class="notranslate"> “unlimited” </span> instead of 0 and -1 respectively, they are fully interchangeable. See also [DB File](./#quotas-db-file) and [CLI Options](./#cli-options-examples).
+
+Individual and package limits are always saved in DB file. Limits from there are used when synchronizing <span class="notranslate"> quotas </span> . Please find more details in [Limits Synchronization](/cloudlinuxos/lve_manager/#caching-and-synchronizing-the-limits).
+
+Also, find detailed information on DB file itself in [Quotas DB File](./#quotas-db-file) section.
+
+Utility options are described in [CLI Options](./#cli-options-examples) section.
+
+#### Limits inheritance
+
+
+When setting package limits to the package users, the inheritance principle is applied. It means that:
+
+* If no individual limit is set to a user, then he inherits the limits of the package he belongs to.
+
+* If no limit is set to a package (=0), then the users inherit uid=0 limits.
+
+
+#### Caching and synchronizing the limits
+
+
+Any user of the system (including panel users) is always created with limits equal to 0. To assign him the limits of the corresponding package, the synchronization process is used.
+
+During the synchronization, <span class="notranslate"> cl-quota </span> utility reads the database file and sets the limits from it to the users and packages specified therein.
+This mode is designed to set the correct limits for the new users and to restore them for the existing ones. When recovering, the current limits are neither read nor analyzed.
+
+Caching - is writing current limits to <span class="notranslate"> _/etc/container/cl-quotas.cache_ </span> file. If <span class="notranslate"> cl-quota </span> is not started from the <span class="notranslate"> root </span> for reading the current limits, then it returns data from this file.
+
+When installing <span class="notranslate"> LVE Manager </span> package, a special <span class="notranslate"> cron job </span> is installed, which performs synchronization and caching ( <span class="notranslate"> cl-quota -YC </span> ) every 5 minutes. Therefore, the correct limits will be set for the user within 5 minutes from the moment of its creation.
+
+Caching and synchronization can also be performed separately, see ["CLI Options"](./#cli-options-examples) section.
+
+To disable this feature and stop CloudLinux from interfering with system quotas, add `cl_quota_limits_autosync=no` to the config file `/etc/sysconfig/cloudlinux`.
+
+
+#### Quotas DB file
+
+
+All <span class="notranslate"> cl-quota </span> limits settings are stored in along with the <span class="notranslate"> UID </span> or the name of the package the limit was set for.
+
+When saving the limits to a file, the following rules are applied:
+
+* If a limit value is non-integer or non-numeric, then the rules from <span class="notranslate"> "Setting limits and integrating with panel packages" </span> section are applied. The assigned value is saved to the file.
+
+* Limits are always saved in pairs, no matter if only one limit was set or both. The pair looks as follows: <span class="notranslate"> soft_limit:hard_limit </span> .
+
+* The values 0 and -1, when having a predetermined meaning, are saved as is without any transformations.
+
+* The words <span class="notranslate"> “default” </span> and <span class="notranslate"> “unlimited” </span> are saved as 0 and -1 respectively.
+
+* If both limits for a user/package were set as 0, then such user/package is not saved in the file, and if it was previously there - it will be removed. Therefore, if a user/package is not mentioned in the file, then all its limits are inherited. See [Limits Inheritance](./#limits-inheritance) section.
+
+The lists of panel users, packages, and user-package correspondence are not saved anywhere, this information is always subtracted from the panel.
+
+Example:
+<div class="notranslate">
+
+```
+/etc/container/cl-quotas.dat
+[users]
+0 = 1000:2000
+500 = -1:-1
+958 = 0:20000
+[packages]
+pack1 = 5000:-1
+```
+</div>
+It follows that:
+
+* uid=0 limits are set to 1000:2000 - default for all panel users
+
+* Both limits are set as unlimited for a user with uid=500, which means that its real limits will always be 0:0. The package limits do not affect this user.
+
+* <span class="notranslate"> Soft </span> limit of the user with uid=958 is inherited (0 means inheritance), his <span class="notranslate"> hard </span> limit is set to 20000 and it will not depend on the package limits or uid=0 limits.
+
+* Limits 5000:-1 are set for pack1 package, therefore its real limits are: <span class="notranslate"> soft_limit=5000 </span> and <span class="notranslate"> hard_limit=0 </span> (unlimited).
+
+* The users of <span class="notranslate"> pack1 </span> package will get <span class="notranslate"> pack1 </span> limits (5000:-1), the users of all the rest of the packages will get the limits of uid=0 because no limits are set for them. Exceptions: uid=500 and 958. uid=500 has both limits set individually, and uid=958 inherits only <span class="notranslate"> soft </span> limits.
+
+#### Troubleshooting
+
+**Inode Limits Synchronization Issues**
+
+If you notice discrepancies between different sources showing inode limits, this is likely due to the [known limitations](#known-cl-quota-limitations-behaviour) of <span class="notranslate">cl-quota</span>. Here's how to troubleshoot:
+
+**How to check actual limits**
+
+To check what limits are actually enforced, please use these commands:
+
+<div class="notranslate">
+
+```bash
+# Check system quota (this is what's actually enforced)
+repquota -u /
+
+# Check specific user quota
+quota -u username
+
+# Check what cl-quota thinks the limits are
+cl-quota
+
+# Check package limits
+cl-quota --package-limits
+```
+</div>
+
+**Script to verify user package and actual limits via CLI**
+
+<div class="notranslate">
+
+```bash
+# Script to show user, package, and actual quota comparison
+for userfile in /var/cpanel/users/*; do
+  user=$(basename "$userfile")
+  plan=$(grep '^PLAN=' "$userfile" | cut -d= -f2)
+  
+  # Get package limits
+  pkg_soft=$(grep '^lve_inodes_soft=' "/var/cpanel/packages/$plan" 2>/dev/null | cut -d= -f2)
+  pkg_hard=$(grep '^lve_inodes_hard=' "/var/cpanel/packages/$plan" 2>/dev/null | cut -d= -f2)
+  
+  # Get user file limits
+  user_soft=$(grep '^lve_inodes_soft=' "$userfile" 2>/dev/null | cut -d= -f2)
+  user_hard=$(grep '^lve_inodes_hard=' "$userfile" 2>/dev/null | cut -d= -f2)
+  
+  # Get actual system quota
+  actual_quota=$(repquota -u / | grep "^$user " | awk '{print $6 ":" $7}')
+  
+  echo "User: $user, Package: $plan"
+  echo "  Package limits: ${pkg_soft:-N/A}:${pkg_hard:-N/A}"
+  echo "  User file limits: ${user_soft:-N/A}:${user_hard:-N/A}"
+  echo "  Actual quota: ${actual_quota:-N/A}"
+  echo "---"
+done
+```
+</div>
+
+#### CLI options/examples
+
+
+<span class="notranslate"> cl-quotа </span> utility has the following command line options:
+<div class="notranslate">
+
+```
+-u | --user                  : specifies the user
+-U | --user-id              : specifies the user ID
+-S | --soft-limit            : sets the soft limit for a user. Pass 0 or 'default' to set package default limit. Pass -1 or 'unlimited' to cancel limit
+-H | --hard-limit            : sets the hard limit for a user. Pass 0 or 'default' to set package default limit. Pass -1 or 'unlimited' to cancel limit
+-V | --csv                  : returns data as comma separated values
+-p | --package              : specifies a package to set or get limits
+-P | --package-limits        : prints package limits
+-a | --all-package-limits : prints all package limits (including packages without limits)
+-Y | --sync                  : synchronizes packages and users limits with the database
+-C | --cache-content        : cache quota data to a file the database
+-F | --force                : save user quotas even when they are equal to defaults
+       --check                : check if quotas is enabled/activated/suported; if disabled show diagnostic information; using with --user or --user-id options
+```
+</div>
+
+<span class="notranslate"> **--user** </span> and <span class="notranslate"> **--user-id** </span> options are designed to specify user whose limits are required to be set or displayed. <span class="notranslate"> --user </span> specifies user name, <span class="notranslate"> --user-id - uid </span> . It is acceptable to specify one or another.
+
+<span class="notranslate"> **--package** </span> - specifies package name.
+
+<span class="notranslate"> **--soft-limit** ,  **--hard-limit** </span> - specify <span class="notranslate"> soft </span> and <span class="notranslate"> hard </span> limits values respectively. It is acceptable to use words <span class="notranslate"> “default” </span> or <span class="notranslate"> “unlimited” </span> as limit value.
+
+<span class="notranslate"> **--csv** </span> - displays limits in <span class="notranslate"> csv </span> format (instead of data formatted in the table).
+
+<span class="notranslate"> **--package-limits** </span> - displaying the limits of the packages created by the panel admin.
+
+<span class="notranslate"> **--all-package-limits**   </span> - displaying the limits of all the packages, including the ones created by the resellers and packages with no users.
+
+<span class="notranslate"> **--sync** </span> - synchronizes users <span class="notranslate"> quotas </span> and packages with the database.
+
+<span class="notranslate"> **--cache-contents** </span> - performs <span class="notranslate"> quotas </span> caching.
+
+<span class="notranslate"> **--force** </span> - saving user <span class="notranslate"> quotas </span> even if they are equal to the current.
+
+<span class="notranslate"> **--check**   </span> - performs diagnostics for a specified user. Can be used only when a user is specified (along with <span class="notranslate"> --user / --user-id </span> ).
+
+_Examples:_
+
+1. Reading current user limits:
+
+<div class="notranslate">
+
+```
+cl-quota
+cl-quota --csv
+```
+</div>
+
+2. Reading current package limits:
+
+<div class="notranslate">
+
+```
+cl-quota --package-limits
+cl-quota --all-package-limits
+cl-quota --package-limits --csv
+cl-quota --all-package-limits --csv
+```
+</div>
+
+3. Specifying limits for a user:
+
+<div class="notranslate">
+
+```
+cl-quota --user-id=500 --soft-limit=0 --hard-limit=0
+cl-quota --user-id=500 --soft-limit=unlimited
+cl-quota --user-id=500 --soft-limit=0 --hard-limit=-1
+cl-quota --user-id=958 --hard-limit=20000 --soft-limit=0 --force
+```
+</div>
+
+4. Specifying limits for a package:
+
+<div class="notranslate">
+
+```
+cl-quota --package pack1 --hard-limit=-1 --soft-limit=5000
+cl-quota --package pack1 --hard-limit=10000
+cl-quota --package pack1 --soft-limit=default
+```
+</div>
+
+5. User diagnostics (with example output):
+
+<div class="notranslate">
+
+```
+cl-quota --user-id=500 --check
+Quota disabled for user id 500 (home directory /home/cltest1); quotaon: Mountpoint (or device) / not found or has no quota enabled.
+```
+</div>
+
+6. Synchronizing <span class="notranslate"> quotas with caching (executed in cron): </span>
+
+<div class="notranslate">
+
+```
+cl-quota -YC
+```
+</div>
+
+
+### cloudlinux-limits
+
+* [Usage](./#usage-3)
+* [Commands](./#commands)
+* [Options](./#options)
+* [Examples](./#examples-5)
+
+<span class="notranslate">`cloudlinux-limits`</span> is an alternative to `lvectl` CLI tool for LVE management. <span class="notranslate">`cloudlinux-limits`</span> utility allows you to get/set any CloudLinux OS limits.
+
+#### Usage:
+
+<div class="notranslate">
+
+```
+cloudlinux-limits command [options] [options]
+```
+</div>
+
+#### Commands
+
+| | |
+|-|-|
+|<span class="notranslate">`set`</span>|set parameters for <span class="notranslate">LVE/username/reseller</span>|
+|<span class="notranslate">`get`</span> |get information about <span class="notranslate">LVE/username/reseller</span>|
+
+#### Options
+
+| | |
+|-|-|
+|<span class="notranslate">`--json`</span>|return data in JSON format|
+|<span class="notranslate">`--lve-id <int>`</span>|Display record only for that LVE ID|
+|<span class="notranslate">`--username <str>`</span>|Execute command only for that specific user|
+|<span class="notranslate">`--reseller-name <str>`</span>|Execute command only for that specific reseller|
+|<span class="notranslate">`--reseller-id <int>`</span>|Execute command only for that specific reseller ID|
+|<span class="notranslate">`--all`</span>|Execute command for all resellers|
+|<span class="notranslate">`--for-reseller <str>`</span>|Use a supplied reseller for get/set data|
+|<span class="notranslate">`--domain <str>`</span>|Show data only for that specific domain|
+|<span class="notranslate">`--limits <keys>`</span>|Available keys: <span class="notranslate">`speed`</span>, <span class="notranslate">`nproc`</span>, <span class="notranslate">`pmem`</span>, <span class="notranslate">`vmem`</span>, <span class="notranslate">`maxEntryProcs`</span>, <span class="notranslate">`io`</span>, <span class="notranslate">`iops`</span>, <span class="notranslate">`mysql-gov`</span>, <span class="notranslate">`mysql-cpu`</span>, <span class="notranslate">`mysql-io`</span>, <span class="notranslate">`cagefs`</span>, <span class="notranslate">`inodes`</span>|
+|<span class="notranslate">`--human-readable-numbers`</span>|Return <span class="notranslate">`PMEM`</span> and <span class="notranslate">`VMEM`</span> limits in KBytes, MBytes or GBytes|
+|<span class="notranslate">`--unlimited`</span>|Set all limits to unlimited|
+|<span class="notranslate">`--default [limits]`</span>|Reset limits to the Package defaults. List of comma-separated limits to reset them to default or <span class="notranslate">`all`</span>|
+|<span class="notranslate">`--mysql-gov <ignored\|watched>`</span>|Monitor or ignore by MySQL Governor|
+|<span class="notranslate">`--cagefs <enabled\|disabled>`</span>|Enable or disable CageFS for a user|
+|<span class="notranslate">`--mysql-restrict <[un]restricted>`</span>|Set user restrict status with dbctl (<span class="notranslate">`restricted`</span> or <span class="notranslate">`unrestricted`</span>)|
+|<span class="notranslate">`--mysql-unrestrict-all`</span>|Unrestrict all restricted users with dbctl|
+|<span class="notranslate">`--speed <str>`</span>|Limit CPU usage for LVE | LVP|
+|<span class="notranslate">`--pmem <str>`</span>|Limit physical memory usage for applications inside LVE | LVP|
+|<span class="notranslate">`--vmem <str>`</span>|Limit virtual memory for applications inside LVE|
+|<span class="notranslate">`--nproc <str>`</span>|Limit number of processes for LVE | LVP|
+|<span class="notranslate">`--io <str>`</span>|Define IO limits for LVE | LVP (KB/s)|
+|<span class="notranslate">`--iops <str>`</span>|Limit IO per second for LVE | LVP|
+|<span class="notranslate">`--maxEntryProcs <str>`</span>|Limit number of entry processes for LVE | LVP|
+|<span class="notranslate">`--mysql-cpu <int>`</span>|Set MySQL Governor CPU limit (pct)|
+|<span class="notranslate">`--mysql-io <int>`</span>|Set MySQL Governor IO limit (read + write MB/s)|
+|<span class="notranslate">`--inodes <N,M>`</span>|Set inode limits. `N` - soft, `M` - hard|
+|<span class="notranslate">`--save-all-parameters`</span>|Save all parameters even if they match with default settings|
+|<span class="notranslate">`-h`</span>, <span class="notranslate">`--help`</span>|Show this help message and exit|
+|<span class="notranslate">`disable-reseller-limits`</span> |disable <span class="notranslate">Reseller Limits</span> for a reseller/all resellers|
+|<span class="notranslate">`enable-reseller-limits`</span> |enable <span class="notranslate">Reseller Limits</span> for a reseller/all resellers|
+
+<span class="notranslate">`cloudlinux-limits`</span> allows you to manage limits and states for the next types of users:
+
+* users, created by admin; 
+* users, created by resellers with reseller limits enabled (see [documentation](/cloudlinuxos/cloudlinux_os_components/#reseller-limits))
+* users, created by resellers without reseller limits enabled. 
+
+For resellers' users with reseller limits enabled admin should use the <span class="notranslate">`--for-reseller`</span> option.
+
+#### Examples
+
+1. Get limits
+
+     * Return data in JSON format
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits get --json 
+    ```
+    </div>
+
+    * Get data for the user <span class="notranslate">`user1`</span> in JSON format
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits get --username user1  --json 
+    ```
+    </div>
+
+    * Get data for the reseller <span class="notranslate">`res1`</span> in JSON format
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits get --reseller-name res1 --json
+    ```
+    </div>
+
+    * Get data for the domain <span class="notranslate">`myapp.com`</span> in JSON format
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits get --domain myapp.com --json
+    ```
+    </div>
+
+    * Get data about entry processes and virtual memory for LVE for the user <span class="notranslate">`myapp`</span> in JSON format
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits get --username myapp --limits=maxEntryProcs,vmem  --json
+    ```
+    </div>
+
+2. Change CageFS status
+    :::warning Note
+    * CageFS should be installed and initialized
+    * <span class="notranslate">`--cagefs`</span> option is not compatible with the <span class="notranslate">`--reseller-name`</span>, <span class="notranslate">`--for-reseller`</span> options
+    :::
+
+    * Enable CageFS for the user <span class="notranslate">`user1`</span>.
+    :::tip Note
+    This example is suitable for any type of user.
+    :::
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --username user1 --cagefs enable --json
+    ```
+    </div>
+
+3. Change <span class="notranslate">MySQL Governor</span> status <span class="notranslate">`ignored`|`watched`, `restricted`|`unrestricted`</span>
+    :::warning Note
+    * <span class="notranslate">MySQL Governor</span> should be installed; see [documentation](/cloudlinuxos/cloudlinux_os_components/#installation-and-update-3)
+    * <span class="notranslate">`--mysql-gov`</span> and <span class="notranslate">`--mysql-restrict`</span> options are not compatible with the <span class="notranslate">`--reseller-name`</span>, <span class="notranslate">`--for-reseller`</span> options
+    :::
+
+    :::tip Note
+    These examples are suitable for any type of user.
+    :::
+
+    * Change <span class="notranslate">MySQL Governor</span> status to <span class="notranslate">`ignored`</span> for the user <span class="notranslate">`user1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --username user1 --mysql-gov ignored --json
+    ```
+    </div>
+
+
+    * Change <span class="notranslate">MySQL Governor</span> status to <span class="notranslate">`restricted`</span> for the user <span class="notranslate">`user1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --username user1 --mysql-restrict restricted --json
+    ```
+    </div>
+
+4. Change limits for a user
+    :::warning Note
+    *  <span class="notranslat">MySQL Governor</span> should be [installed](/cloudlinuxos/cloudlinux_os_components/#installation-and-update-3) to change the <span class="notranslate">`mysql-cpu`</span> and <span class="notranslate">`mysql-io`</span> options
+    *  <span class="notranslate">`--inodes`</span>, <span class="notranslate">`--mysql-cpu`</span>, and <span class="notranslate">`--mysql-io`</span> options are not compatible with the <span class="notranslate">`--for-reseller`</span> and <span class="notranslate">`--reseller-name`</span> options
+    *  <span class="notranslate">`--username`</span> option is suitable for any type of user
+    :::
+
+    * Set <span class="notranslate">`speed`</span>, <span class="notranslate">`io`</span>, <span class="notranslate">`nproc`</span>, <span class="notranslate">`pmem`</span>, <span class="notranslate">`vmem`</span>, <span class="notranslate">`iops`</span>, <span class="notranslate">`inodes`</span>, <span class="notranslate">`maxEntryProcs`</span>, <span class="notranslate">`mysql-cpu`</span>, and <span class="notranslate">`mysql-io`</span> limits for the LVE ID 1000
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --lve-id 1000 --speed 78% --io 8090 --nproc 900 --pmem 300 --vmem 800 --iops 900 --inodes 9090,8989 --maxEntryProcs 90 --mysql-cpu 30 --mysql-io 500 --json 
+    ```
+    </div>
+
+    * Set <span class="notranslate">`speed`</span>, <span class="notranslate">`io`</span>, <span class="notranslate">`nproc`</span>, <span class="notranslate">`pmem`</span>, <span class="notranslate">`vmem`</span>, <span class="notranslate">`iops`</span>, and <span class="notranslate">`maxEntryProcs`</span> limits for the reseller <span class="notranslate">`res1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --reseller-name res1 --speed 78% --io 8090 --nproc 900 --pmem 300 --vmem 800 --iops 900 --maxEntryProcs 90 --json
+    ```
+    </div>
+
+5. Set limits for a <span class="notranslate">`DEFAULT`</span> user 
+   :::tip Note
+   A <span class="notranslate">`default`</span> user is used to set some preselected limits for just created user\package.
+   :::
+ 
+    * Set limits for the admin's <span class="notranslate">`default`</span> user
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --lve-id DEFAULT --speed 78% --io 8090 --nproc 900 --pmem 300 --vmem 800 --iops 900 --inodes 9090,8989 --maxEntryProcs 90 --mysql-cpu 30 --mysql-io 500 --json
+    ```
+    </div>
+
+
+    * Set limits for the reseller's (with reseller limits enabled) <span class="notranslate">`default`</span> user
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --lve-id DEFAULT --speed 48% --io 8990 --nproc 900 --pmem 300 --vmem 800 --iops 900 --maxEntryProcs 90 --for-reseller res1 --json
+    ```
+    </div>
+
+6. Reset all limits to default values (package limits) for a user
+
+    * Reset all limits to default values for the user <span class="notranslate">`user1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --username user1 --default all --json
+    ```
+    </div>
+
+    * Reset all limits to default values for the reseller's <span class="notranslate">`res1`</span> user <span class="notranslate">`r1user1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --username r1user1 --default all --for-reseller res1 --json
+    ```
+    </div>
+
+7. Reset all limits to unlimited values for a user 
+
+    * Reset all limits to <span class="notranslate">`unlimited`</span> for the user <span class="notranslate">`user1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --username user1 --unlimited --json
+    ```
+    </div>
+
+    * Reset all limits to <span class="notranslate">`unlimited`</span> for the reseller's <span class="notranslate">`res1`</span> user <span class="notranslate">`r1user1`</span> 
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --username r1user1 --unlimited --for-reseller res1 --json
+    ```
+    </div>
+
+8. Enable reseller limits
+
+    * Enable reseller limits for the reseller <span class="notranslate">`res1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits enable-reseller-limits --reseller-name res1 --json
+    ```
+    </div>
+
+
+9. Get info about a reseller
+    
+    * Get info about the reseller <span class="notranslate">`res1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits get --reseller-name res1 --json 
+    ```
+    </div>
+
+
+10. Change reseller limits
+    
+    * Change <span class="notranslate">`speed`</span> limit for the reseller <span class="notranslate">`res1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --reseller-name res1 --speed 78% --json
+    ```
+    </div>
+
+    * Reset all limits to <span class="notranslate">`unlimited`</span> for the reseller <span class="notranslate">`res1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --reseller-name res1 --unlimited --json
+    ```
+    </div>
+
+    * Reset all limits to <span class="notranslate">`default`</span> for the reseller <span class="notranslate">`res1`</span>
+
+    <div class="notranslate">
+
+    ```
+    cloudlinux-limits set --reseller-name res1 --default all --json
+    ```
+    </div>
\ No newline at end of file
diff --git a/docs/cloudlinuxos/control_panel_integration/README.md b/docs/cloudlinuxos/control_panel_integration/README.md
new file mode 100644
index 000000000..e91e63286
--- /dev/null
+++ b/docs/cloudlinuxos/control_panel_integration/README.md
@@ -0,0 +1,2484 @@
+
+
+# Control Panel Integration
+
+* [Introduction](./#introduction)
+* [New API in a nutshell](./#new-api-in-a-nutshell)
+* [General](./#general)
+* [Control panel API integration](./#control-panel-api-integration)
+* [Control panel hooks integration](./#control-panel-hooks-integration)
+* [Web UI integration](./#web-ui-integration)
+* [PHP-based integration of WEB UI with the control panel](./#php-based-integration-of-web-ui-with-the-control-panel)
+* [How to integrate CageFS with a control panel](./#how-to-integrate-cagefs-with-a-control-panel)
+* [Integrating CloudLinux OS PHP Selector](./#integrating-cloudlinux-os-php-selector)
+* [Integration of Apache modules in control panels](./#integration-of-apache-modules-in-control-panels)
+* [MySQL Governor](./#mysql-governor)
+* [CloudLinux OS LVE and CageFS patches](./#cloudlinux-os-lve-and-cagefs-patches)
+* [Hardened PHP](./#hardened-php)
+* [CloudLinux OS kernel set-up](./#cloudlinux-os-kernel-set-up)
+* [How to integrate X-Ray and AccelerateWP with a conrol panel](./#how-to-integrate-x-ray-and-acceleratewp-with-a-control-panel)
+
+:::tip Note
+We encourage you to create a pull request with your feedback at the bottom of the page.
+:::
+
+### Introduction
+
+There are several possible ways of integration with CloudLinux OS:
+
+* **Complete integration using new API** - exactly what is described in this document. This way a panel vendor will get all CloudLinux OS features (current and future) and maximum support. It’s recommended.
+* **Manually Ad-hoc** - using low-level CLI utils. It is not recommended. It’s kind of “do it yourself way” - a control panel might use low-level utils like `lvectl` to set limits directly to a raw LVE by ID and control everything (including edge-cases) in its own code. There are many downsides of such approach e.g. only a small number of features can be implemented this way and any new changes in CloudLinux OS will require more and more updates to the control panel code, and can possibly even introduce bugs, etc. And although this way looks easier at first, it will become more and more difficult to maintain it over time.
+* **Old API for CloudLinux OS limits** - described [here](/cloudlinuxos/deprecated/#package-integration). It’s deprecated. It still works but will not get any updates.
+
+### New API in a nutshell
+
+The goal of the new API is to shift all complexity for controlling CloudLinux OS components from a control panel to the CloudLinux OS web UI and utils.
+Most of the integration is done within a few steps:
+1. A control panel vendor implements 7 simple scripts (any language) and specifies them in a special config file. All Cloudlinux OS components will look up and call them with some arguments to get all needed information from the control panel (e.g. users list, their hosting plans, domains, etc.)
+2. Control panel should call hooks described below in a response to Admin/Users actions (e.g. changing end-user’s domain, creating new end-user, etc.). CloudLinux OS utils will do their stuff to reconfigure itself according to these events. There is no need to worry about what exactly they do because it will be related only to CloudLinux OS components and control panel will not be affected.
+3. Configure the control panel and CageFS to work together by changing some configs.
+4. Optionally embed CloudLinux OS web UI into the control panel. It is highly recommended because it does all you may need. You can use PHP scripts to embed SPA application to the specially prepared pages (with your menus) for LVE Manager and Selectors.
+
+
+## General
+
+* [Example of the integration config](./#example-of-the-integration-config)
+
+To integrate CloudLinux OS into a control panel, you should implement the following interfaces required by the CloudLinux OS utilities:
+* [CPAPI](./#control-panel-api-integration) — a small scripts/files-type interface to get the required information from the control panel
+* [CP Hooks Integration](./#control-panel-hooks-integration) — a set of the CloudLinux OS scripts/commands. Control panel calls this set in response to its internal events
+* [Web UI Integration(optional)](./#web-ui-integration) — various configuration parameters and scripts to embed interface SPA application into the control panel native interface. Optional, if CLI is enough
+* [CageFS Integration](./#how-to-integrate-cagefs-with-a-control-panel) — some changes may be required in the config files to work and integrate with CageFS as well as additional support from a control panel
+* [CloudLinux OS kernel set-up](./#cloudlinux-os-kernel-set-up)
+
+Files related to integration (integration config file, CPAPI integration scripts and all their dependencies) as well as parent directories to place them (e.g. <span class="notranslate">`/opt/cpvendor/etc/`</span>) should be delivered/managed by the control panel vendor. They don't exist by default and should be created to activate integration mechanism. Most likely, they should be bundled with the control panel or installed with some CloudLinux OS support module (if CloudLinux OS support is not built-in).
+
+Configuration related to integration should be placed in a valid INI file (further “integration config file”):
+
+<div class="notranslate">
+
+```
+-rw-r--r-- root root /opt/cpvendor/etc/integration.ini
+```
+</div>
+
+All users (and in CageFS too) should have read access to this file because some CPAPI methods have to work from end-user too. CloudLinux OS components only read this file and never write/create it.
+
+The control panel vendor decides where to put CPAPI scripts (CloudLinux OS utils will read path to scripts from the integration file) but we recommend to put them into <span class="notranslate">`/opt/cpvendor/bin/`</span> (should be created by the vendor first) because <span class="notranslate">`/opt/*`</span> is mounted to CageFS by default and the standard location will save some time during possible support incidents.
+
+We recommend to deliver a set of scripts for CPAPI and integration file as a separate RPM package. This can greatly simplify support for vendors as they will be able to release any updates and compatibility fixes separately from the panel updates and use dependencies/conflicts management provided by a package manager.
+
+Assumed that this package contains a list of paths to the integration scripts (or to the one script if it deals with all `cpapi` commands). You can specify default script arguments in the <span class="notranslate">`integration_scripts`</span> section, additional arguments like <span class="notranslate">`filter`</span> and <span class="notranslate">`--name`</span> will be automatically added after the defined ones.
+
+### Versioning
+We provide information about the current version of the API in the form of rpm package capability (`Provides public_cp_vendors_api = VERSION`) added to our packages. While improving integration API, we may add new features and scripts and change `VERSION`.
+
+That means that you can add `Conflicts: public_cp_vendors_api < VERSION` to the spec of rpm package with your integration scripts and that will force yum to search and update our packages in order to support `public_cp_vendors_api` that your scripts require. It also means that you can protect your Control Panel from situations when your scripts and our API version are incompatible.
+
+### Changelog
+::: tip Changelog
+
+Version 1.4
+
+Summary: added AccelerateWP integration.
+1. `Provides public_cp_vendors_api = 1.4` added to rpm spec of alt-python27-cllib package (see [versioning](/cloudlinuxos/control_panel_integration/#versioning)).
+2. New feature `accelerate_wp` added to `supported_cl_features` of [`panel_info` script](/cloudlinuxos/control_panel_integration/#panel-info). This feature defines if your panel supports AccelerateWP integration.
+3. New script `php` description added.
+4. New field `php_version_id` in [domains](#domains) script added.
+5. New field 'handler` in [domains](#domains) script added.
+
+In order to integrate AccelerateWP, you should implement a new script [php](#php), 
+follow [integration guide of X-RAY](/cloudlinuxos/control_panel_integration/#how-to-integrate-x-ray-and-acceleratewp-with-a-control-panel) 
+and add extra field `php_version_id` in [domains](#domains) script. 
+
+Version 1.3
+
+Summary: added CloudLinux Wizard integrations.
+1. `Provides public_cp_vendors_api = 1.3` added to rpm spec of alt-python27-cllib package (see [versioning](/control_panel_integration/#versioning)).
+2. New feature `wizard` added to `supported_cl_features` of [`panel_info` script](/control_panel_integration/#panel-info). Now you can define if your panel supports the CloudLinux Wizard integration.
+
+Version 1.2
+
+Summary: ability to integrate X-Ray added.
+1. `Provides public_cp_vendors_api = 1.2` added to rpm spec of alt-python27-cllib package (see [versioning](./#versioning)).
+2. [`domains` integration script](./#domains) updated: new optional flag `--with-php` added. This option is required for X-Ray integration only.
+3. New X-Ray feature added to `supported_cl_features` of [`panel_info` script](/control_panel_integration/#panel-info). Now the X-Ray UI tab is hidden by default until the panel makes the support clear by setting the `xray` feature to `true`.
+
+Version 1.1
+1. Added `Provides public_cp_vendors_api = 1.1` to rpm spec of alt-python27-cllib package (see [versioning](./#versioning)).
+2. New `supported_cl_features` key added to [`panel_info` script](./#panel-info). You can specify CloudLinux OS features that you want to show in LVE Manager, Wizard, Dashboard and other UI and hide others.
+:::
+
+#### Example of the integration config
+
+<div class="notranslate">
+
+```
+[integration_scripts]
+
+panel_info = /opt/cpvendor/bin/panel_info
+db_info = /opt/cpvendor/bin/db_info
+packages = /opt/cpvendor/bin/packages
+users = /opt/cpvendor/bin/users
+domains = /opt/cpvendor/bin/vendor_integration_script domains
+resellers = /opt/cpvendor/bin/vendor_integration_script resellers
+admins = /opt/cpvendor/bin/vendor_integration_script admins
+php = /opt/cpvendor/bin/vendor_integration_script php
+
+
+
+[lvemanager_config]
+ui_user_info = /panel/path/ui_user_info.sh
+base_path = /panel/path/lvemanager
+
+run_service = 1
+service_port = 9000
+use_ssl = 1
+ssl_cert = /path/to/domain_srv.crt
+ssl_key = /path/to/domain_srv.key
+```
+</div>
+
+## Control panel API integration
+
+To integrate CPAPI, set the paths to the scripts in the integration file in the <span class="notranslate">`integration_scripts`</span> section (see example above).
+
+You can use different scripts for different CPAPI methods or only one script and call it with different arguments. The script is any executable file written in any programming language, that returns a valid JSON file of the specified format in response to arguments it is expected to be called.
+
+### Integration scripts requirements
+
+* [Legend](./#legend)
+
+* By default, integration scripts should run only from UNIX user with the same credentials as LVE Manager is run, unless otherwise stated in the script description.
+* Some scripts are run from both root and end-user. If the script is run from end-user it should return information related to this user only, filtering the irrelevant data for security/isolation purposes or return <span class="notranslate">`PermissionDenied`</span> if script is not intended to be run as this user at all.
+* Scripts run from the end-user should also work from inside CageFS. You can find details on how to implement this [here](./#working-with-cpapi-cagefs)
+
+:::warning IMPORTANT
+When a user employs CloudLinux utilities through a user interface, it is important to take note that integration scripts may be executed prior to entering CageFS. Certain interpreters, such as Python, have the [capability](https://docs.python.org/3/library/site.html#site.USER_SITE) to execute arbitrary code during interpreter startup before the main code is executed. This presents a potential security risk for servers that utilize Python as an interpreter for executing integration scripts, as users may gain an ability to run their code outside of CageFS. This could lead to unauthorized access and exposure of sensitive system files.
+To prevent such incidents, it is crucial to ensure that your integration scripts do not possess similar capabilities or to take necessary measures to eliminate such risks prior to utilization.
+In case of any uncertainty, it is recommended to seek assistance from CloudLinux support.
+:::
+
+#### Legend
+* Necessity <span class="notranslate">`always`</span> means it’s required nearly by all CloudLinux OS code and should be implemented no matter what features you are interested in. Other methods might not be implemented and this will affect only some CloudLinux OS features leaving others to work fine.
+* <span class="notranslate">`All UNIX users`</span> means any Linux system account (from <span class="notranslate">`/etc/passwd`</span>) that is able to execute CloudLinux OS utilities directly or indirectly.
+
+
+|                                                              |                                        | | |
+|--------------------------------------------------------------|----------------------------------------|-|-|
+| Script name                                                  | Necessity                              |Accessed by|Must work inside CageFS also|
+| <span class="notranslate">[panel_info](./#panel-info)</span> | Always                                 |All UNIX users|+|
+| <span class="notranslate">[db_info](./#db-info)</span>       | Only for LVE-Stats, otherwise optional |admins (UNIX users)|-|
+| <span class="notranslate">[packages](./#packages)</span>     | For limits functionality               |admins (UNIX users)|-|
+| <span class="notranslate">[users](./#users)</span>           | Always                                 |admins (UNIX users)|-|
+| <span class="notranslate">[domains](./#domains)</span>       | Selectors, some UI features/X-Ray      |All UNIX users/administrators (UNIX users)|+/-|
+| <span class="notranslate">[resellers](./#resellers)</span>   | Always                                 |admins (UNIX users)|-|
+| <span class="notranslate">[admins](./#admins)</span>         | Always                                 |admins (UNIX users)|-|
+| <span class="notranslate">[php](./#php)</span>            | For AccelerateWP                       |admins (UNIX users)|-|
+
+### Working with CPAPI & CageFS
+
+Some integration scripts required to be called not only from root but from end-user. Developing such scripts, you should keep in mind that CageFS is an optional component, so anything that works in CageFS must also work even if CageFS is disabled for a particular user or not installed at all.
+
+This means that you should do one of the following:
+* all required information (code, all its dependencies, all called binaries, all configs/files/caches it reads) should be available for a user (even in CageFS)
+* you should use CageFS's [proxyexec](/cloudlinuxos/cloudlinux_os_components/#executing-by-proxy) mechanism to make your script run itself in a real system but with user privileges
+* use both configured sudo and proxyexec if your script needs privilege escalation (e.g. to read some credentials or other files that shouldn't be disclosed to end-user). SUDO mechanism is needed for cases when CageFS is not installed or disabled for a user and proxyexec is needed when a user executes script in CageFS
+
+When using SUDO you should create the wrapper that will call your script using SUDO command, like this:
+
+<div class="notranslate">
+
+```
+[root]# cat /opt/cpvendor/bin/domains
+#!/usr/bin/env bash
+sudo opt/cpvendor/bin/domains_real
+```
+</div>
+
+Of course, you must configure <span class="notranslate">`/etc/sudoers`</span> to make it work without a password prompt and with enough security.
+
+:::tip Note
+Your script will run with <span class="notranslate">`root`</span> permissions, but limited with user's LVE. 
+You may see the following warning:
+```
+***************************************************************************
+*                                                                         *
+*             !!!!  WARNING: YOU ARE INSIDE LVE !!!!                      *
+*IF YOU RESTART ANY SERVICES STABILITY OF YOUR SYSTEM WILL BE COMPROMIZED *
+*        CHANGE YOUR USER'S GROUP TO wheel to safely use SU/SUDO          *
+*                             MORE INFO:                                  *
+*      https://docs.cloudlinux.com/index.html?lve_pam_module.html          *
+*                                                                         *
+***************************************************************************
+```
+This is the default behavior so users cannot overload a server with a lot of API requests.
+:::
+
+:::warning Warning
+When using sudo, you must configure sudo with <span class="notranslate">NOSETENV</span> tag in order to forbid the user to override <span class="notranslate">`SUDO_USER`</span> environment or use other secure methods (e.g. <span class="notranslate">`logname`</span>) to get the user who ran the command through sudo.
+:::
+
+As an alternative for sudo you can use regular SUID scripts, but we strongly recommend using SUDO because of builtin logging of permissions escalation.
+
+You can find more details on how to configure your scripts in CageFS properly here:
+
+* [Configuration. General information](/cloudlinuxos/cloudlinux_os_components/#configuration-2)
+* [How to integrate CageFS with any control panel](./#how-to-integrate-cagefs-with-a-control-panel)
+
+### Expected scripts responses
+
+* [Internal errors](./#internal-errors)
+* [Restricted access](./#restricted-access)
+* [Error in arguments](./#error-in-arguments)
+* [Nonexistent entities](./#nonexistent-entities)
+
+Any integration script should return a valid UTF-8 encoded JSON.
+
+There are two expected formats of integration script responses. In case of success, the <span class="notranslate">`metadata.result`</span> field is <span class="notranslate">`ok`</span> and the data field contains data according to the specification of the specific integration script. Return code is `0`.
+
+<div class="notranslate">
+
+```
+{
+  "data": object or array,
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+In case of error, the output should be one of the following: Internal errors, Restricted access, Error in arguments,  Nonexistent entities. 
+
+#### Internal errors
+
+When data is temporarily unavailable due to internal errors in the integration script (database unavailable, file access problems, etc), the output is as follows:
+
+<div class="notranslate">
+
+```
+{
+  "data": null,
+  "metadata": {
+    "result": "InternalAPIError",
+    "message": "API is restarting, try again later"
+  }
+}
+```
+</div>
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|message|False|Error message for an administrator printed by CloudLinux OS utility|
+
+#### Restricted access
+
+When data is unavailable due to restricted access of a user that called the script, the output is as follows: 
+
+<div class="notranslate">
+
+```
+{
+  "data": null,
+  "metadata": {
+    "result": "PermissionDenied",
+    "message": "Only sudoers can view this section."
+  }
+}
+```
+</div>
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|message|False|Error message for an administrator printed by CloudLinux OS utility|
+
+
+:::tip Info
+This kind of error should be used in the case when a user is requesting data that he does not have access to.
+E.g., when a user named <span class="notranslate">`user1`</span> is running <span class="notranslate">`domains`</span> script with the argument <span class="notranslate">`--owner=user2`</span>, you must return this error.
+:::
+
+#### Error in arguments
+
+When wrong arguments are passed to the utility, for example:
+* unknown argument
+* unknown fields in `--fields`
+
+The output is as follows:
+
+<div class="notranslate">
+
+```
+{
+  "data": null,
+  "metadata": {
+    "result": "BadRequest",
+    "message": "Unknown field ‘nosuchfield’"
+  }
+}
+```
+</div>
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|message|False|Error message for an administrator printed by CloudLinux OS utility|
+
+
+#### Nonexistent entities
+
+When during data filtering the target entity doesn't exist in the control panel, the output is as follows:
+
+<div class="notranslate">
+
+```
+{
+  "data": null,
+  "metadata": {
+    "result": "NotFound",
+    "message": "No such user `unix_user_name`"
+  }
+}
+```
+</div>
+
+:::tip Info
+This kind of error should be used only in the filtering case. In case when some script is called without filtering arguments and the control panel has no entities to return (e.g. domains) you should return an empty list/object.
+:::
+
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|message|False|Error message for an administrator printed by CloudLinux OS utility|
+
+### The list of the integration scripts
+
+* [panel_info](./#panel-info)
+* [db_info](./#db-info)
+* [packages](./#packages)
+* [users](./#users)
+* [domains](./#domains)
+* [resellers](./#resellers)
+* [admins](./#admins)
+* [php](./#php)
+
+#### <span class="notranslate">panel_info</span>
+
+Returns the information about the control panel in the specified format.
+
+**Usage example**
+
+<div class="notranslate">
+
+```
+/scripts/panel_info
+```
+</div>
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+	"data": {
+		"name": "SomeCoolWebPanel",
+		"version": "1.0.1",
+		"user_login_url": "https://{domain}:1111/",
+		"supported_cl_features": {
+			"php_selector": true,
+			"ruby_selector": true,
+			"python_selector": true,
+			"nodejs_selector": false,
+			"mod_lsapi": true,
+			"mysql_governor": true,
+			"cagefs": true,
+			"reseller_limits": true,
+			"xray": false,
+			"accelerate_wp": false,
+      "autotracing": true
+		}
+	},
+	"metadata": {
+		"result": "ok"
+	}
+}
+```
+</div>
+
+**Data description**
+
+| | |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
+|-|-|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+|Key|Nullable| Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+|name|False| Control panel name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+|<span class="notranslate">version</span>|False| Control panel version                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
+|<span class="notranslate">user_login_url_template</span>|False| URL template for a user entering to control panel. Used in the lve-stats default templates reporting that user is exceeding server load. You can use the following placeholders in the template: <span class="notranslate">`{domain}`</span>. CloudLinux OS utility automatically replaces  placeholders to the real values. **Example**:<span class="notranslate">`“user_login_url_template”: “https://{domain}:2087/login”`</span> CloudLinux OS utility automatically replaces <span class="notranslate">`{domain}`</span>, and the link will look like <span class="notranslate">`https://domain.zone:2087/login`</span>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
+|<span class="notranslate">supported_cl_features</span>|False| Available since API v1.1 (see [versioning](/control_panel_integration/#versioning)) <br> Object that describes which CloudLinux OS features are supported by your control panel and which must be hidden in web interface.<br>When `supported_cl_features` is omitted, we assume that all modules are supported. When `supported_cl_features` is empty object, all modules will be hidden. All features that are not listed in `supported_cl_features` are considered to be disabled. <br>We recommend you to always return object as we can add more features in the future and you will be able to test them and make them visible after checking and tuning.<br><br>Features that you currently can disable:<ul><li><a href="/cloudlinux_os_components/#php-selector">php_selector</a></li> <li><a href="/cloudlinux_os_components/#ruby-selector">ruby_selector</a></li> <li><a href="/cloudlinux_os_components/#python-selector">python_selector</a></li> <li><a href="/cloudlinux_os_components/#node-js-selector">nodejs_selector</a></li> <li><a href="/cloudlinux_os_components/#apache-mod-lsapi-pro">mod_lsapi</a></li> <li><a href="/cloudlinux_os_components/#mysql-governor">mysql_governor</a></li> <li><a href="/cloudlinux_os_components/#cagefs">cagefs</a></li> <li><a href="/cloudlinux_os_components/#reseller-limits">reseller_limits</a></li></ul> Available since API v1.2 (see [versioning](/control_panel_integration/#versioning)) <ul><li><a href="/cloudlinux-os-plus/#x-ray">xray</a> (CloudLinuxOS+ license only)</li></ul> Available since API v1.4 (see [versioning](/control_panel_integration/#versioning)) <ul><li><a href="/cloudlinux-os-plus/#acceleratewp">accelerate_wp</a> (AccelerateWP)</li><li><a href="/lve_manager/#installation-wizard">wizard</a> </li></ul> Both X-Ray and Accelerate WP require CloudLinux Shared Pro license. |
+
+
+
+#### <span class="notranslate">db_info</span>
+
+Returns the information about databases that are available to the control panel users and are managed by the control panel.
+
+:::warning WARNING!
+For now, CloudLinux OS supports control panels only with MySQL databases.
+:::
+
+Integration script is optional, when there is no script, [lve-stats won’t collect SQL snapshots](cloudlinux_os_components/#plugins).
+
+**Usage example**
+
+<div class="notranslate">
+
+```
+/scripts/db_info
+```
+</div>
+
+**Output**
+
+<div class="notranslate">
+
+```
+{
+  "data": {
+    "mysql": {
+      "access": {
+        "login": "root",
+        "password": "Cphxo6z",
+        "host": "localhost",
+        "port": 3306
+      },
+      "mapping": {
+        "unix_user_name": [
+          "db_user_name1",
+          "db_user_name2"
+        ],
+        "unix_user_name2": [
+          "db_user_name3",
+          "db_user_name4"
+        ]
+      }
+    }
+  },
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|<span class="notranslate">mysql</span>|True|Data section for the MySQL database. Used in lve-stats; if there is no data, snapshots of  SQL queries won’t be collected.|
+|<span class="notranslate">mysql.access.login</span>|False|User name to enter to the database to view a list of SQL queries that are executing at the moment.|
+|<span class="notranslate">mysql.access.password</span>|False|Open password.|
+|<span class="notranslate">mysql.access.host</span>|False|Host to access the database.|
+|<span class="notranslate">mysql.access.port</span>|False|Port to access the database.|
+|<span class="notranslate">mysql.mapping</span>|False|A mapping file where the key is the name of a UNIX user managed by the control panel and the value is a list of the corresponding database users.|
+
+
+#### <span class="notranslate">packages</span>
+
+The package is an abstraction that represents a group of users that have the same default limits. 
+
+**Usage example**
+
+<div class="notranslate">
+
+```
+/scripts/packages [--owner=<owner>]
+```
+</div>
+
+**Arguments**
+
+| | | |
+|-|-|-|
+|Key|Required|Description|
+|<span class="notranslate">--owner, -o</span>|False|Set the name of the packages' owner to output.|
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+  "data": [
+    {
+      "name": "package",
+      "owner": "root"
+    },
+    {
+      "name": "package",
+      "owner": "admin"
+    },
+    {
+      "name": "package",
+      "owner": "reseller"
+    }  
+  ],
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Data description**
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|<span class="notranslate">name</span>|False|Package name|
+|<span class="notranslate">owner</span>|False|Package’s owner name. The owner can be the administrator or reseller.|
+
+#### <span class="notranslate">users</span>
+
+Returns information about UNIX users, created and managed by the control panel. You will be able to manage the limits of these users via LVE Manager.
+
+If a reseller user or administrator user has a corresponding UNIX-user in the system, this user should be included into this list.
+
+**Usage example**
+
+<div class="notranslate">
+
+```
+/scripts/users [--owner=<string> | (--package-name=<string> & --package-owner=<string>) | --username=<string> | --unix-id=<int>] [--fields=id,username,package,...]
+```
+</div>
+
+**Arguments**
+
+| | | |
+|-|-|-|
+|Key|Required|Description|
+|<span class="notranslate">--owner, -o</span>|False|Used for filtering. When the argument is set, output only this owner users.|
+|<span class="notranslate">--package-name</span>|False|Used for filtering. Set the name of the package which users to output. Used ONLY in pair with <span class="notranslate">`--package-owner`</span>.|
+|<span class="notranslate">--package-owner</span>|False|Used in pair with package.name. Set the owner of the specified package.|
+|<span class="notranslate">--username</span>|False|Used for filtering. When the parameter is set, output the information about this UNIX user only.|
+|<span class="notranslate">--unix-id</span>|False|Used for filtering. When the parameter is set, output the information about this UNIX user only.|
+|<span class="notranslate">--fields</span>|False|List fields to output. Fields are divided with a comma; when there is no key, output all available fields.<br><br>The key is used to reduce the data size for the large systems. You can ignore the key and always output the full set of data. Note that in this case, CloudLinux OS will work more slowly.|
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+  "data": [
+    {
+      "id": 1000,
+      "username": "ins5yo3",
+      "owner": "root",
+      "domain": "ins5yo3.com",
+      "package": {
+        "name": "package", 
+        "owner": "root"
+      },
+      "email": "ins5yo3@ins5yo3.com",
+      "locale_code": "EN_us"
+    },
+    {
+      "id": 1001,
+      "username": "ins5yo4",
+      "owner": "root",
+      "domain": "ins5yo4.com",
+      "package": {
+        "name": "package", 
+        "owner": "root"
+      },
+      "email": "ins5yo4@ins5yo4.com",
+      "locale_code": "EN_us"
+    }  
+  ],
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Example to output specific data fields**
+
+<div class="notranslate">
+
+```
+/scripts/users --fields=id,email
+```
+</div>
+
+**Output**
+
+<div class="notranslate">
+
+```
+{
+  "data": [
+    {
+      "id": 1000,
+      "email": "ins5yo3@ins5yo3.com"
+    },
+    {
+      "id": 1001,
+      "email": "ins5yo3@ins5yo3.com"
+    }  
+  ],
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|<span class="notranslate">id</span>|False|ID of the UNIX account in the system.|
+|<span class="notranslate">username</span>|False|The name of the UNIX account in the system.|
+|<span class="notranslate">owner</span>|False|The name of the account owner in the control panel. The owner can be an administrator (in this case he should be included in the <span class="notranslate">`admins()`</span> output) or a reseller (in this case he should be included in the <span class="notranslate">`resellers()`</span> output).|
+|<span class="notranslate">locale_code</span>|True|The control panel locale selected by a user (the values are according to ISO 639-1). Used when sending lve-stats emails. If not selected, EN_us used.|
+|<span class="notranslate">email</span>|True|Email to send lve-stats notifications about hitting limits. If there is no email, should return null.|
+|<span class="notranslate">domain</span>|False|Main domain of user (used to display in LVE Manager UI and create applications in Selectors)|
+|<span class="notranslate">package</span>|True|Information about the package to which a user belongs to. If the user doesn’t belong to any package, should return null.|
+|<span class="notranslate">package.name</span>|False|The name of the package to which a user belongs to.|
+|<span class="notranslate">package.owner</span>|False|The owner of the package to which a user belongs to (reseller or administrator).|
+
+
+#### <span class="notranslate">domains</span>
+
+Returns key-value object, where a key is a domain (or subdomain) and a value is a key-value object contains the owner name (UNIX users), the path to the site root specified in the HTTP server config, and the domain status (main or alternative).
+
+X-Ray support is available since API v1.2 (see [versioning](./#versioning)). In order to enable X-Ray support, the value for each domain should include php configuration. Full X-Ray integration documentation can be found [here](./#how-to-integrate-x-ray-with-a-control-panel)
+AccelerateWP support is available since API v1.4 (see [versioning](./#versioning)). In order to enable AccelerateWP support, 
+the `php_version_id` fields should be included in php configuration. `php_version_id` should match unique identifier retured by [php](#php) script and `handler` must be specified, one of the following: `fpm`, `cgi`, `lsapi`.
+
+::: warning WARNING
+To make Python/Node.js/Ruby/PHP Selector workable, this script should be executed with user access and inside CageFS. When running this script as the user, you must limit answer scope to values, allowed for the user to view.
+E.g. if the control panel has two domains: <span class="notranslate">`user1.com`</span> and <span class="notranslate">`user2.com`</span>, and <span class="notranslate">`user1`</span> Unix user owns only one of them, you should not return second one even if <span class="notranslate">`--name`</span> argument is not set explicitly.
+:::
+
+**Usage example**
+
+<div class="notranslate">
+
+```
+/scripts/domains ([--owner=<unix_user>] | [--name=<name>] | [--with-php])
+```
+</div>
+
+**Arguments**
+
+| | | |
+|-|-|-|
+|Key|Required|Description|
+|<span class="notranslate">--owner, -o</span>|False|Used for filtering output; set a name of the owner whose domains to print|
+|<span class="notranslate">--name, -n</span>|False|Used for filtering output; set a name of the domain, to display information about it|
+|<span class="notranslate">--with-php</span>|False (X-Ray support only)|Used for extending output with PHP configuration, required by X-Ray (available since API v1.2, see [versioning](./#versioning))|
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+  "data": {
+    "domain.com": {
+      "owner": "username",
+      "document_root": "/home/username/public_html/",
+      "is_main": true
+    },
+    "subdomain.domain.com": {
+      "owner": "username",
+      "document_root": "/home/username/public_html/subdomain/",
+      "is_main": false  
+    }
+  },
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Output example with optional flag --with-php (X-Ray and Accelerate WP support only)**
+
+<div class="notranslate">
+
+```
+{
+  "data": {
+    "domain.com": {
+      "owner": "username",
+      "document_root": "/home/username/public_html/",
+      "is_main": true,
+      "php": {
+        "php_version_id": "alt-php56",
+        "version": "56",
+        "ini_path": "/opt/alt/php56/link/conf",
+        "is_native": true,
+        "handler": "lsapi"
+       }
+    },
+    "subdomain.domain.com": {
+      "owner": "username",
+      "document_root": "/home/username/public_html/subdomain/",
+      "is_main": false,
+      "php": {
+        "php_version_id": "alt-php72",
+        "version": "72",
+        "ini_path": "/opt/alt/php72/link/conf",
+        "fpm": "alt-php72-fpm",
+        "handler": "fpm"
+      }
+    }
+  },
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|Dictionary (named array) key|False|Domain name (subdomains are acceptable)|
+|<span class="notranslate">owner</span>|False|UNIX user who is a domain owner|
+|<span class="notranslate">document_root</span>|False|Absolute path to the site root directory|
+|<span class="notranslate">is_main</span>|False|Is the domain the main domain for a user|
+|<span class="notranslate">Nested dictionary (named array) php</span>|True (False if X-Ray support is enabled)|PHP configuration for a domain, required by X-Ray, see details [here](./#how-to-integrate-x-ray-with-a-control-panel) (available since API v1.2, see [versioning](./#versioning))|
+
+#### <span class="notranslate">resellers</span>
+
+This script returns the information about resellers. A reseller is an entity that can own users in the control panel. Resellers do not obligatory have UNIX account with the same name. It can exist only as an account in the control panel.
+
+**Usage example**
+
+<div class="notranslate">
+
+```
+/scripts/resellers ([--id=<id>] | [--name=<name>])
+```
+</div>
+
+**Arguments**
+
+| | | |
+|-|-|-|
+|Key|Required|Description|
+|<span class="notranslate">--id</span>|False|Used for filtering output; set a reseller ID to output information about it|
+|<span class="notranslate">--name, -n</span>|False|Used for filtering output; set a reseller name to output information about it|
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+  "data": [
+    {
+      "name": "reseller",
+      "locale_code": "EN_us",
+      "email": "reseller@domain.zone",
+      "id": 10001   
+    }
+  ],
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|<span class="notranslate">name</span>|False|Reseller name in the control panel; unique on the server, should not be the same as administrators names|
+|<span class="notranslate">locale_code</span>|True|Control panel locale selected by a reseller (according to ISO 639-1). Default is EN_us.|
+|<span class="notranslate">id</span>|True|Unique reseller ID in the system. From <span class="notranslate">`MAX_UID`</span> to <span class="notranslate">`0xFFFFFFFF`</span>, where <span class="notranslate">`MAX_UID`</span> is a value from <span class="notranslate">`/etc/login.defs`</span>. Required for the second level reseller limits. Set null if not needed.|
+|<span class="notranslate">email</span>|True|Reseller email to send notifications from lve-stats about reseller’s users limits hitting. If no email, output null.|
+
+
+#### <span class="notranslate">admins</span>
+
+Gives information about panel’s administrators, output information about all panel’s administrators who:
+* could be (or actually are) the owners of the users, listed in users() 
+* could be (or actually are) the owners of the packages, listed in packages()
+* has UNIX users with the rights to run LVE Manager UI
+
+**Usage example**
+
+<div class="notranslate">
+
+```
+/scripts/admins ([--name=<string>] | [--is-main=<true|false>])
+```
+</div>
+
+**Arguments**
+
+| | | |
+|-|-|-|
+|Key|Required|Description|
+|<span class="notranslate">--name, -n</span>|False|Used for filtering; set the administrator name to output information about it|
+|<span class="notranslate">--is-main, -m</span>|False|Used for filtering output to get the main and the alternative administrators of the control panel|
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+  "data": [
+    {
+      "name": "admin1",
+      "unix_user": "admin",
+      "locale_code": "EN_us",
+      "email": "admin1@domain.zone",
+      "is_main": true
+    },
+	{
+      "name": "admin2",
+      "unix_user": "admin",
+      "locale_code": "Ru_ru",
+      "email": "admin2@domain.zone",
+      "is_main": false
+    },
+  ],
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Data description**
+
+| | | |
+|-|-|-|
+|Key|Nullable|Description|
+|<span class="notranslate">name</span>|False|The name of the administrator in the control panel; unique, should not be the same as resellers’ names|
+|<span class="notranslate">unix_user</span>|True|The name of the UNIX account in the system; it corresponds to the administrator account in the control panel. If an administrator already has UNIX account, it is automatically added to the special group on the server using hook, so this administrator can enter to the LVE Manager and manage users limits. If an administrator doesn't have UNIX account and he can only own users, output null.|
+|<span class="notranslate">locale_code</span>|True|Control panel locale selected by the administrator (values are according to  ISO 639-1). Default is EN_us.|
+|<span class="notranslate">email</span>|True|Email to send notifications from lve-stats. If email is not set in the control panel, output null.|
+|<span class="notranslate">is_main</span>|False|Assumed that one of the control panel’s administrators is the main administrator. That particular administrator will receive server status notifications from lve-stats to his email.|
+
+
+#### <span class="notranslate">php</span>
+
+Gives information about panel’s supported php versions.
+
+**Usage example**
+
+<div class="notranslate">
+
+```
+/scripts/php
+```
+</div>
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+  "data": [
+    {
+      "identifier":  "alt-php74",
+      "version": "7.4",
+      "modules_dir":  "/opt/alt/php74/usr/lib64/modules",
+      "dir": "/opt/alt/php74/",
+      "bin":  "/opt/alt/php74/usr/bin/php",
+      "ini": "/opt/alt/php74/link/conf/default.ini"
+    },
+    {
+      "identifier":  "ea-php74",
+      "version": "7.4",
+      "modules_dir":  "/opt/cpanel/ea-php74/usr/lib64/modules",
+      "dir": "/opt/cpanel/ea-php74/",
+      "bin":  "/opt/cpanel/ea-php74/usr/bin/php",
+      "ini": "/opt/cpanel/ea-php74/etc/php.ini"
+    }
+  ],
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Data description**
+
+|                                              |          |                                                                                                                                   |
+|----------------------------------------------|----------|-----------------------------------------------------------------------------------------------------------------------------------|
+| Key                                          | Nullable | Description                                                                                                                       |
+| <span class="notranslate">identifier</span>  | False    | Unique identifier of php version. Must be in format XX-php-YZ, where XX - any latin symbols, YZ - numbers describing php version. |
+| <span class="notranslate">version</span>     | False    | PHP version in X.Y format.                                                                                                        |
+| <span class="notranslate">modules_dir</span> | False    | Path to the directory where php modules (*.so files) are stored.                                                                  |
+| <span class="notranslate">dir</span>         | False    | Path to the root directory of php installation.                                                                                   |
+| <span class="notranslate">bin</span>         | False    | Path to the php binary.                                                                                                           |
+| <span class="notranslate">ini</span>         | False    | Path to the default ini file.                                                                                                     |
+
+## Control panel hooks integration
+
+For proper CloudLinux OS operation, you should implement a hooks mechanism. Hooks are scripts that control panel invokes with the exact arguments at a specific time. The control panel is responsible for executing these scripts as a system root user.
+
+### Managing administrators
+
+::: tip Note
+Some control panels allow to create several administrator accounts, each of which has a system user who is used to work with the LVE Manager plugin. In this case, all administrator accounts should be added to the sudoers and clsupergid. To do so, you can use our user-friendly interface.
+:::
+
+::: tip Note
+If you don’t have several administrator accounts (or LVE Manager plugin always runs from the root) you don’t need to implement these hooks.
+:::
+
+After creating a new administrator, the control panel should call the following command:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_admin.py create --username admin
+```
+</div>
+
+| | | |
+|-|-|-|
+|Argument |Default |Description |
+|<span class="notranslate">--name, -n</span>| - |The name of the newly created administrator account |
+
+After removing the administrator, the following command should be called by the control panel:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_admin.py delete --name admin
+```
+</div>
+
+| | | |
+|-|-|-|
+|Argument |Default |Description |
+|<span class="notranslate">--name, -n</span>| - |The name of removed UNIX user of administrator |
+
+### Managing users
+
+To manage user limits properly, CloudLinux OS utilities need information about the following control panel events.
+
+After creating a new user, the following script should be called:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_user.py create --username user --owner owner
+```
+</div>
+
+| | | | |
+|-|-|-|-|
+|Argument |Mandatory |Default |Description |
+|<span class="notranslate">--username, -u</span>|Yes | - |The name of the user account |
+|<span class="notranslate">--owner, -o</span>|Yes | - |The owned of the created account. The owner can be an administrator or a reseller |
+
+After renaming a user (when a user name or a home directory was changed), the following script should be called:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_user.py modify -u user --new-username newuser
+```
+</div>
+
+| | | | |
+|-|-|-|-|
+|Argument |Mandatory |Default |Description |
+|<span class="notranslate">-u ,--username</span>|Yes | - |The user name to be changed |
+|<span class="notranslate">--new-username</span>|Yes | - |A new user name |
+
+After moving the user to the new owner, the following command should be run:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_user.py modify -u user --new-owner new_owner
+```
+</div>
+
+| | | |
+|-|-|-|
+|Argument |Default |Description |
+|<span class="notranslate">--new-owner</span>| - |The name of the new account owner. The owner can be an administrator or a reseller. |
+|<span class="notranslate">--username, -u</span>| - |The account name (should be the same as the name in /etc/passwd). |
+
+Before removing a user, the following command should be run:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/pre_modify_user.py delete --username user
+```
+</div>
+
+| | | |
+|-|-|-|
+|Argument |Default |Description |
+|<span class="notranslate">--username, -u</span>| - |The name of the account to be removed (should be the same as the name in /etc/passwd). |
+
+After removing the user, you should call the following command:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_user.py delete --username user
+```
+</div>
+
+| | | |
+|-|-|-|
+|Argument |Default |Description |
+|<span class="notranslate">--username, -u</span>| - |The name of the removed account |
+
+After restoring the user fron backup, you should call the following command:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_user.py restore --username user
+```
+</div>
+
+| | | |
+|-|-|-|
+|Argument |Default |Description |
+|<span class="notranslate">--username, -u</span>| - |The name of the restored account |
+
+::: tip Note
+If you don't have a capability to create user backups or restore users from backups, there is no need to implement the `/usr/share/cloudlinux/hooks/post_modify_user.py restore` hook.
+:::
+
+### Managing domains
+
+We expect that all domain-related data is stored inside the user's home directory. If your control panel stores domain-related data outside the user's home directory and that data can potentially change, please contact us so we can add support for this to our integration mechanism.
+
+After renaming a domain (or any equivalent domain removal operation with transfer of all data to another domain), the following command should be run:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_domain.py modify -u user --domain old_domain --new-domain new_domain [--include-subdomains]
+```
+</div>
+
+| | | | |
+|-|-|-|-|
+|Argument |Mandatory |Default |Description |
+|<span class="notranslate">--username, -u</span>|Yes | - |The name of the new domain owner (should be the same as the name in /etc/passwd). |
+|<span class="notranslate">--domain</span>|Yes | - |The domain name to be changed |
+|<span class="notranslate">--new-domain</span>|Yes | - |A new domain name |
+|<span class="notranslate">--include-subdomains</span>|No |False |If set, all subdomains are renamed as well, i.e. when renaming domain.com → domain.eu the corresponding subdomain will be renamed as well test.domain.com → test.domain.eu.|
+
+### Managing packages (hosting plans)
+
+To manage packages limits properly, CloudLinux OS utilities need information about the following control panel events.
+
+After renaming a package, the following command should be run:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_package.py rename --name package_name --new-name new_package_name
+```
+</div>
+
+| | | | |
+|-|-|-|-|
+|Argument |Mandatory |Default |Description |
+|<span class="notranslate">--name</span>|Yes | - |The package name to be changed |
+|<span class="notranslate">--new-name</span>|No | - |A new package name |
+
+## Web UI integration
+UI integration can be configured in `lvemanager_config` section of the `/opt/cpvendor/etc/integration.ini`:
+
+Example:
+<div class="notranslate">
+
+```
+[lvemanager_config]
+# Required
+ui_user_info = /panel/path/ui_user_info.sh
+
+# Can be optional or required depend on vendor implementation
+base_path = /panel/path/lvemanager
+run_service = 1
+service_port = 9000
+use_ssl = 1
+ssl_cert = /path/to/domain_srv.crt
+ssl_key = /path/to/domain_srv.key
+```
+</div>
+
+### ui_user_info script
+
+* [Known issues for GUI unification](./#known-issues-for-gui-unification)
+
+This script should return information about the current user opening Web UI. It is only used in UI part of the LVE Manager and utilities.
+
+* Input value (first positional argument) — the current authentication token, passed on plugin open (for example, <span class="notranslate">`open.php?token=hash`</span>)
+* Expected data format
+
+<div class="notranslate">
+
+```
+{
+    "userName": "user1",
+    "userId": 1000,
+    "userType": "user",
+    "baseUri": "/user2/lvemanager/",
+    "assetsUri": "/userdata/assets/lvemanager",
+    "lang": "en",
+    "userDomain": "current-user-domain.com"
+}
+```
+</div>
+
+* **<span class="notranslate">userName</span>** is used in queries to Selectors and Resource Usage plugin.
+* **<span class="notranslate">userId</span>** - system user ID if exist.
+* **<span class="notranslate">userType</span>** - can have the following values: “user”, “reseller”, “admin”
+* **<span class="notranslate">lang</span>** - used to identify a current locale in the user interface (‘en’, ‘ru’ - two-character language code)
+* **<span class="notranslate">userDomain</span>** - a current user domain. It can be the default domain or any selected user domain. Used to display in Selector. For example, in DirectAdmin the control panel opens only if a domain is selected — the selected domain is set. In cPanel, a domain is not selected — the default domain is set. If a domain is absent —  leave empty.
+* **<span class="notranslate">baseUri</span>** - URI where LVE Manager files are available on the webserver
+* **<span class="notranslate">assetsUri</span>** - URI where assets files for LVE Manager are available on the webserver
+
+The following configuration file parameters are used to determine the location of the plugin UI part.
+
+* **<span class="notranslate">`base_path`</span>** - directory where file assets are copied for accessibility from the control panel. This is optional if the default directories `/usr/share/l.v.e-manager/commons` and `/usr/share/l.v.e-manager/panelless-version/lvemanager` are accessible from the control panel and correctly configured in the web server. The command `yum update lvemanager` performs file copying or replacement.
+* **<span class="notranslate">`run_service`</span>** - parameter that activates the LVE Manager web server. Set it to 1 during the installation or updating of LVE Manager to run the web server automatically.
+* **<span class="notranslate">`service_port`</span>** - port used for running a web server for access LVE Manager without the control panel (required if `run_service = 1`)
+* **<span class="notranslate">`use_ssl`</span>** - optional parameter that mandates the use of HTTPS for the LVE Manager web server when set to 1.
+* **<span class="notranslate">`ssl_cert`</span>** - conditional parameter that becomes essential when `use_ssl` is activated. Identifies the path to the SSL certificate file for the domain.
+* **<span class="notranslate">`ssl_key`</span>** - conditional parameter that becomes mandatory when `use_ssl` is enabled. Specifies the path to the SSL certificate key file for the domain.
+
+#### Known issues for GUI unification
+
+:::warning Known issues for GUI unification
+
+A user can run standalone services to provide access to LVE Manager without UI integration. These services use system authentication for users and the integration script <span class="notranslate">`ui-user-info script`</span> to get information about the current user.
+
+These services have some issues:
+
+* The ability to download log files from <span class="notranslate">CloudLinux OS Wizard</span> is missed
+* Incorrect layout for some UI forms (Node.js Selector/Python Selector)
+* Some errors are not displayed
+
+These issues will be fixed in the near future.
+:::
+
+## PHP-based integration of WEB UI with the control panel
+
+The first use case:
+
+<div class="notranslate">
+
+```
+require_once('lvemanager/widget.php');
+```
+</div>
+
+This script defines the type of user and displays icons to open plugins included in LVE Manager.
+You can customize your styles by copying the file content and setting your control panel styles.
+In this case, all LVE Manager plugins will be opened in a new window.
+
+The second use case:
+
+Embedding the specific plugin into the control panel page.
+
+<div class="notranslate">
+
+```
+<?php
+require_once('lvemanager/LveManager.php');
+$manager = new LveManager(‘<pluginName>’);
+$manager->setCSRFToken();
+?>
+<html><body>
+<?php
+echo $manager->insertPanel();
+?>
+</body></html>
+```
+</div>
+
+Pass the plugin name to the class constructor to initialize the plugin (user name will be defined).
+At the time of the insertPanel method invocation, the SPA application with the specified Selector will be embedded.
+	
+`vendor_php` (optional for PHP integration only) - a full path to the `vendor.php` file. This option allows the vendor to implement specific logic before initializing the plugin (for example drop permission).
+	
+Example:
+	
+```
+vendor_php = /opt/cpvendor/etc/vendor.php
+```
+
+Queries to the backend are created separately in the points (PHP files) which are located in the LVE Manager catalog.
+
+### Implementing Logic for Plugin Visibility Control
+
+Vendors can implement logic to control the visibility of end-user plugins within their control panel. The current UI settings are stored in the read-only config file located at `/usr/share/l.v.e-manager/lvemanager-config.json`. **Note: This file is read-only and cannot be modified by vendors. Vendors should read this file and implement logic in their own systems to show or hide icons based on the settings in this config file.**
+
+<div class="notranslate">
+
+```
+{
+    "ui_config": {
+        "inodeLimits": {
+            "showUserInodesUsage": false
+        },
+        "uiSettings": {
+            "hideRubyApp": true,
+            "hideLVEUserStat": false,
+            "hidePythonApp": false,
+            "hideNodeJsApp": false,
+            "hidePHPextensions": false,
+            "hideDomainsTab": false,
+            "hidePhpApp": false,
+            "hideXrayApp": true,
+            "hideAccelerateWPApp": false
+        }
+    }
+}
+```
+</div>
+
+The following options are available under `ui_config.uiSettings`:
+
+- `hideLVEUserStat` - control the visibility of the “Resource Usage” plugin for end-users (hide if value is `true`, show if value is `false`).
+- `hidePhpApp` - control the visibility of the “PHP Selector” plugin for end-users (hide if value is `true`, show if value is `false`).
+- `hidePythonApp` - control the visibility of the “Python Selector” plugin for end-users (hide if value is `true`, show if value is `false`).
+- `hideNodeJsApp` - control the visibility of the “Nodejs Selector” plugin for end-users (hide if value is `true`, show if value is `false`).
+- `hideXrayApp` - control the visibility of the “X-Ray” plugin for end-users (hide if value is `true`, show if value is `false`).
+- `hideAccelerateWPApp` - control the visibility of the “AccelerateWP” plugin for end-users (hide if value is `true`, show if value is `false`).
+
+*Brand assets* located in  `/usr/share/l.v.e-manager/commons/brand-assets`. In the `images` folder present icons which vendor can use while embeds plugin into control panel. Icons for the following plugins are available:
+
+- CloudLinux Manager
+- Resource Usage
+- Python/NodeJS, PHP Selectors
+- X-Ray
+- AccelerateWP
+
+### UI with CageFS enabled
+
+LVE Manager scripts run outside of CageFS (on production systems). When calling API, LVE Manager scripts enter CageFS if needed (Node.js Selector, Python Selector). PHP Selector API does not work if the script is started inside CageFS and returns an error.
+
+As for Node.js Selector and Python Selector, they are supposed to be contained inside CageFS because end-users can start scripts from UI (npm run, pip install). That is the reason why they should run inside LVE.
+
+PHP Selector run outside of CageFS. When PHP Selector is called, it is not limited by LVE which allows an end-user whose web site is reaching its limits to use PHP Selector UI without problems.
+
+## How to integrate CageFS with a control panel
+
+CageFS documentation can be found here: [CageFS](/cloudlinuxos/cloudlinux_os_components/#cagefs)
+
+### CageFS MIN_UID  
+
+CageFS has UID_MIN setting. Users with UIDs < UID_MIN will not be limited by CageFS. This setting is configured based on UID_MIN setting from <span class="notranslate">`/etc/login.defs`</span> file by default. So, typically UID_MIN is 500 on CloudLinux OS 6 and 1000 on CloudLinux OS 7.
+
+You can obtain current UID_MIN value by executing the following command:
+
+<div class="notranslate">
+
+```
+cagefsctl --get-min-uid
+```
+</div>
+
+You can set UID_MIN by executing the following command:
+
+<div class="notranslate">
+
+```
+cagefsctl --set-min-uid <value>
+```
+</div>
+
+For example, to set UID_MIN to 10000, you should execute the following command:
+
+<div class="notranslate">
+
+```
+cagefsctl --set-min-uid 10000
+```
+</div>
+
+### PAM configuration for CageFS
+
+CageFS is enabled for su, ssh and cron services by default.
+[PAM Configuration](/cloudlinuxos/cloudlinux_os_components/#pam-configuration)
+
+Also you can enable CageFS for any service that uses PAM.
+[LVE PAM Module](/cloudlinuxos/cloudlinux_os_components/#lve-pam-module)
+
+:::tip
+It is safe to enable an interactive shell (e.g. /bin/bash) for users when CageFS is enabled.
+:::
+
+### Integrating CageFS with Apache
+
+You should apply CloudLinux OS patches to integrate CageFS with Apache. Details can be found here:
+[Integration of Apache modules in Control Panels](./#integration-of-apache-modules-in-control-panels)
+
+Note that it may be required to execute <span class="notranslate">`cagefsctl --force-update`</span> after Apache rebuild in order to update CageFS.
+
+### Running commands inside CageFS
+
+You may want to execute commands inside CageFS for security reasons. To do so, you can execute a command inside CageFS in the following way:
+
+<div class="notranslate">
+
+```
+/bin/su -s /bin/bash -c “$COMMAND” - $USER
+/sbin/cagefs_enter_user $USER "$COMMAND"
+```
+</div>
+
+The commands above require root privileges. You can use the following command when running as a user:
+
+<div class="notranslate">
+
+```
+/bin/cagefs_enter "$COMMAND"
+```
+</div>
+
+### CageFS - temporary LVEs with lvectl options
+
+Starting from lve-wrappers 0.7.5-1, `cagefs_enter_user` accepts a subset of `lvectl` limit parameters as input. Using any of them will result in a creation of a temporary LVE with a unique ID. That LVE will have the provided limits set and will be destroyed after the given command is run.
+
+The following parameters are accepted: `--speed`, `--pmem`, `--vmem`, `--io`, `--iops`, `--nproc`, `--maxEntryProcs`.
+	
+<div class="notranslate">
+
+```
+cagefs_enter_user --pmem=512M --speed=70% <user> <command>
+```
+</div>
+
+Refer to [documentation on limits](/cloudlinuxos/limits/#understanding-limits) for more details on the provided parameters.
+
+:::tip Note
+Temporary LVE is destroyed after the process terminates unless the option `--no-fork` passed.
+:::
+
+### Updating CageFS skeleton
+
+Updating CageFS skeleton is required after update of the system RPM packages. It may be also required after update of hosting control panel itself.
+
+To update CageFS skeleton, execute the following command:
+
+<div class="notranslate">
+
+```
+cagefsctl --force-update
+```
+</div>
+
+CageFS RPM package installs a daily cron job that updates CageFS skeleton
+
+<div class="notranslate">
+
+```
+/etc/cron.d/cp-cagefs-cron
+```
+</div>
+
+You can set update period for CageFS skeleton in days using
+
+<div class="notranslate">
+
+```
+cagefsctl --set-update-period <days>
+```
+</div>
+
+### Setting up directories for PHP sessions
+
+Each user in CageFS has its own <span class="notranslate">`/tmp`</span> directory that is not visible for other users. PHP scripts save sessions in <span class="notranslate">`/tmp`</span> directory by default (when <span class="notranslate">`session.save_path`</span> directive is empty). However, you can set up a different location for PHP sessions specific to each PHP versions using CageFS per-user [mounts](/cloudlinuxos/cloudlinux_os_components/#mount-points) like it is done for alt-php. Simply add a line like below to <span class="notranslate">`/etc/cagefs/cagefs.mp`</span>
+
+<div class="notranslate">
+
+```
+@/opt/alt/php54/var/lib/php/session,700
+```
+</div>
+
+and then execute
+
+<div class="notranslate">
+
+```
+cagefsctl --remount-all
+```
+</div>
+
+to apply changes. After that, session files will be stored in <span class="notranslate">`/opt/alt/php54/var/lib/php/session`</span> inside user’s CageFS. In real file systems these files can be found inside `.cagefs` directory in user’s home directory. For above example, given that user’s home directory is <span class="notranslate">`/home/user`</span>, the files will reside in <span class="notranslate">`/home/user/.cagefs/opt/alt/php54/var/lib/php/session`</span> directory. TMP directory for the user will be located in <span class="notranslate">`/home/user/.cagefs/tmp`</span>. 
+Temporary files including php sessions in `/tmp` directories in CageFS are cleaned using `tmpwatch`. You can change the period of removing old temporary files or set up additional directories for cleaning according to the documentation: 
+[TMP directories](/cloudlinuxos/cloudlinux_os_components/#tmp-directories).
+
+Knowing the location where PHP sessions are stored (described above), you can also implement any custom script for cleaning PHP sessions. Remember to drop permissions (switch to the appropriate user) when removing the files (for example using sudo).
+
+### Creating new user account
+
+When user or admin account has been created, you should execute an appropriate hook script.
+More about CloudLinux OS hooks subsystem: [Control Panel Hooks Integration](./#control-panel-hooks-integration)
+
+:::tip Note
+It is safe to enable an interactive shell (/bin/bash) for users when CageFS is enabled.
+:::
+
+:::warning IMPORTANT
+Execute the post hook described in the link above after the account has been created completely. When the account is being transferred to another server or restored from backup, all files in user’s home directory should be written/restored completely BEFORE executing the post hooks, including files in <span class="notranslate">`~/.cl.selector`</span> directory. This is required to setup/restore PHP Selector settings for the user correctly. If PHP Selector settings were not restored correctly, you can recreate them by executing
+
+<div class="notranslate">
+
+```
+rm -rf /var/cagefs/`/usr/sbin/cagefsctl --getprefix $username`/$username/etc/cl.selector
+rm -rf /var/cagefs/`/usr/sbin/cagefsctl --getprefix $username`/$username/etc/cl.php.d
+/usr/sbin/cagefsctl --force-update-etc "$username"
+```
+</div>
+:::
+
+:::warning IMPORTANT
+You should create <span class="notranslate">`/etc/cagefs/enable.duplicate.uids`</span> empty file when your control panel creates users with duplicate UIDs. It is required for CageFS to operate properly.
+
+While this file is present, CageFS will always associate the UIDs with the first passwd entry in order of appearance. Without it, this behaviour is not guaranteed.
+:::
+
+### Modifying user accounts
+
+You should execute appropriate hook script when an account has been modified: [Control Panel Hooks Integration](./#control-panel-hooks-integration)
+
+### Removing user accounts
+
+CageFS has <span class="notranslate">`userdel`</span> hook script <span class="notranslate">`/usr/bin/userdel.cagefs`</span>, that is configured in <span class="notranslate">`/etc/login.defs`</span> file:
+
+<div class="notranslate">
+
+```
+USERDEL_CMD /usr/bin/userdel.cagefs
+```
+</div>
+
+This script performs all necessary actions when a user is being removed.
+Anyway, you should execute appropriate hook script when removing an account:
+[Control Panel Hooks Integration](./#control-panel-hooks-integration)
+
+### Excluding users from CageFS
+
+If you need to exclude some system users from CageFS that are specific to your control panel, you can do this by creating a file (any name would work) inside <span class="notranslate">`/etc/cagefs/exclude`</span> folder, and list users that you would like to exclude from CageFS in that file (each user in separate line). Then execute
+
+<div class="notranslate">
+
+```
+cagefsctl --user-status USER
+```
+</div>
+
+to apply changes and check that the command shows <span class="notranslate">_Disabled_</span>:
+[Excluding users](/cloudlinuxos/cloudlinux_os_components/#excluding-users)
+
+### How to add a file or a directory to CageFS
+
+* [Copy files and directories to CageFS](./#copy-files-and-directories-to-cagefs)
+* [Mount an entire directory with needed files to CageFS](./#mount-an-entire-directory-with-needed-files-to-cagefs)
+
+There are two major ways to add files and directories to CageFS:
+
+1. copy files and directories to CageFS
+2. mount an entire directory with needed files to CageFS
+
+
+#### Copy files and directories to CageFS
+
+:::warning Note
+Please do not modify any existing files in the <span class="notranslate">`/etc/cagefs/conf.d`</span> directory because they may be overwritten while updating CageFS package. You should create a new file with a unique name instead.
+:::
+
+In order to copy files and directories to CageFS, you can manually create a custom config file with *.cfg extension in <span class="notranslate">`/etc/cagefs/conf.d`</span> directory.
+
+Also, you can add files and directories that belong to `rpm` package to CageFS as follows:
+
+* execute <span class="notranslate">`cagefsctl --addrpm PACKAGE`</span> command
+* execute <span class="notranslate">`cagefsctl --force-update`</span> command to apply changes, i.e. to copy files and directories to the <span class="notranslate">`/usr/share/cagefs-skeleton`</span> directory.
+
+There is a daily cron job that copies new and removes unneeded files and directories, i.e. updates cagefs-skeleton.
+
+You should execute <span class="notranslate">`cagefsctl --force-update`</span> after each change of system configuration or after installing new software. Otherwise, CageFS will only be updated every 24 hours by a daily cron job.
+
+The benefits of this approach:
+* users in CageFS cannot modify files in the real file system (for example, in case of wrong permissions), because files in cagefs-skeleton are the copies of files from the real file system (and not mounted to CageFS)
+* you can copy specific _safe_ files from some directory from the real file system to CageFS, and not copy all files and not mount the entire directory.
+
+You can find more info [here](/cloudlinuxos/cloudlinux_os_components/#file-system-templates).
+
+#### Mount an entire directory with needed files to CageFS
+
+The second way to add files and directories to CageFS is to mount the entire directory containing the files to CageFS.
+
+This approach should be used for frequently updated files (like UNIX sockets) or for directories with a large number of files or with files that occupy much disk space.
+
+The benefits of this approach:
+* no delay between update of the file in the real file system and update of the file in CageFS; when file or directory is changed in the real file system they will be changed in CageFS immediately
+* data is mounted but not copied to CageFS, so this minimizes IO load while updating cagefs-skeleton
+
+Please make sure that the mounted directory does not contain sensitive data.
+
+You can mount a directory from the real system to CageFS via <span class="notranslate">`/etc/cagefs/cagefs.mp`</span> config file.
+
+To apply changes of mount points in <span class="notranslate">`/etc/cagefs/cagefs.mp`</span> file you should execute the following command:
+
+<div class="notranslate">
+
+```
+cagefsctl --remount-all
+```
+</div>
+
+You can find more info [here](/cloudlinuxos/cloudlinux_os_components/#mount-points).
+
+### Users' home directory
+
+CageFS mounts users' home directories to CageFS automatically. Usually, there is no need to configure anything. However, if your control panel uses a custom path to users' home directories (for example <span class="notranslate">`/home/$USER/data`</span> instead of <span class="notranslate">`/home/$USER`</span>), then it may be necessary to configure Base Home Directory setting:
+[Base Home Directory](/cloudlinuxos/cloudlinux_os_components/#base-home-directory)
+
+The modes of mounting users' home directories into CageFS are described here: 
+[Mounting user’s home directory inside CageFS](/cloudlinuxos/cloudlinux_os_components/#mounting-users-home-directory-inside-cagefs)
+
+### Excluding files from CageFS
+
+CageFS has a default set of files and directories that are visible to users inside CageFS. If you wish to exclude some of these files or directories from CageFS, you can do this as described below:
+[Excluding files](/cloudlinuxos/cloudlinux_os_components/#excluding-files) 
+
+### Executing commands outside CageFS via proxyexec
+
+SUID programs cannot run inside CageFS due to “nosuid” mounts. But you can give users in CageFS the ability to execute some specific commands outside CageFS via `proxyexec`.
+
+Typically, these commands are suid programs or other programs that cannot run inside CageFS (due to complex dependencies, for example). Examples of such programs are <span class="notranslate">`passwd`</span>, <span class="notranslate">`exim`</span> or <span class="notranslate">`sendmail`</span> commands.
+
+* Regular (not suid) commands will be executed as user inside the user’s LVE, but outside of CageFS.
+* SUID commands will be executed in the user’s LVE outside of CageFS with the effective UID set to the owner of the file being executed.
+
+You can find more details [here](/cloudlinuxos/cloudlinux_os_components/#executing-by-proxy).
+
+:::tip Note
+You should use this feature with caution because it gives users the ability to execute specified commands outside of CageFS. SUID commands are extremely dangerous because they are executed not as a user, but as an owner of the file (typically root). You should give users the ability to execute safe commands only. These commands should not have known vulnerabilities.
+You should check that users cannot use these commands to get sensitive information on a server. You can disable specific _dangerous_ options of programs executed via proxyexec (see below).
+:::
+
+
+### Filtering options for commands executed by proxyexec
+
+It is possible to disable specific *dangerous* options of programs executed via `proxyexec`. More details:
+[Filtering options for commands executed by proxyexec](/cloudlinuxos/cloudlinux_os_components/#filtering-options-for-commands-executed-by-proxyexec).
+
+## Integrating CloudLinux OS PHP Selector
+
+Complete documentation for CloudLinux OS PHP Selector can be found here:
+[PHP Selector](/cloudlinuxos/cloudlinux_os_components/#php-selector)
+
+:::tip Note
+CloudLinux OS PHP Selector requires CageFS, so integration of CageFS must be completed before starting PHP Selector integration.
+:::
+
+If your control panel has some PHP version selector installed already, we suggest you not to enable CloudLinux OS PHP Selector for your users, so they will not be confused by two multiple PHP Selectors. However, if you want to use CloudLinux OS PHP Selector anyway, you can refer to the following article to configure loading of extensions for alt-php: [PHP extensions](/cloudlinuxos/cloudlinux_os_components/#php-extensions)
+
+For proper operation of CloudLinux OS PHP Selector, you should specify location of native PHP binaries of your control panel in <span class="notranslate">`/etc/cl.selector/native.conf`</span>. Then execute
+
+<div class="notranslate">
+
+```
+cagefsctl --setup-cl-selector
+```
+</div>
+
+to apply changes.
+More details: [Native PHP Configuration](/cloudlinuxos/cloudlinux_os_components/#native-php-configuration)
+
+You can configure CloudLinux OS  PHP Selector to allow your customers to select any custom PHP version specific to your control panel. Here's how to do this:
+[Roll your own PHP](/cloudlinuxos/cloudlinux_os_components/#roll-your-own-php)
+
+Also, you can compile and add your own PHP extensions to CloudLinux OS PHP Selector:
+[Compiling your own extensions](/cloudlinuxos/cloudlinux_os_components/#compiling-your-own-extensions) 
+
+## Integration of Apache modules in control panels
+
+We provide control panels with the ability to build their own Apache packages with modules such as alt-mod-passenger, mod_lsapi, mod_hostinglimits. This is due to the fact that control panels often have their own customly-built Apache. At the same time, the modules must be compiled with the version of Apache and APR libraries that control panels use. Therefore, if your control panel uses Apache that is provided by CloudLinux OS, you can use native packages with modules. The following table represents the RPM package compatibility.
+
+
+RPMs of Apache provided by CloudLinux OS, if you are using:
+
+| | |
+|-|-|
+|httpd |httpd24-httpd |
+|then install:<br>`mod_lsapi`<br>`mod_hostinglimits`<br>`alt-mod-passenger` |then install:<br>`httpd24-mod_lsapi`<br>`httpd24-mod_hostinglimits`<br>`httpd24-alt-mod-passenger`|
+
+
+If you use custom Apache, follow this documentation on how to build a package for your Apache.
+	
+:::tip Note
+The supported Apache versions are 2.2 and 2.4.
+:::
+
+### alt-mod-passenger
+
+
+1. Download alt-mod-passenger sources
+
+<div class="notranslate">
+
+```
+yumdownloader --source alt-mod-passenger --enablerepo=*source
+```
+</div>
+
+2. Rebuild the package with your Apache using rpmbuild
+
+<div class="notranslate">
+
+```
+rpmbuild --rebuild alt-mod-passenger-ver.cloudlinux.src.rpm
+```
+</div>
+
+3. Remove dependencies from `httpd`, `apr`, `apr-util` packages (`-devel` packages as well) and set your Apache packages instead, in the alt-mod-passenger spec file. Also, set the path for the directory where your Apache configs are located with <span class="notranslate">`__apache_conf_dir`</span> in the spec file.
+
+4. Rebuild the package again, this time you should get to the compilation stage. During compilation, you may encounter such errors:
+
+<div class="notranslate">
+
+```
+* Checking for Apache 2 development headers...
+     Found: no
+* Checking for Apache Portable Runtime (APR) development headers...
+     Found: no
+* Checking for Apache Portable Runtime Utility (APU) development headers...
+     Found: no
+```
+</div>
+
+In this case, you should specify the paths of your custom Apache in <span class="notranslate">`alt-mod-passenger-5.3.7/utils/passenger`</span> file. You need to add paths to binaries such as `httpd`, `apu-1-config`, and `apxs`. For example the following lines should be added before the <span class="notranslate">`passenger-install-apache2-module`</span> call:
+
+<div class="notranslate">
+
+```
+export APU_CONFIG="${PATH_IN_YOUR_SYSTEM}/bin/apu-1-config"
+export HTTPD="${PATH_IN_YOUR_SYSTEM}/sbin/httpd"
+export APXS2="${PATH_IN_YOUR_SYSTEM}/bin/apxs"
+```
+</div>
+
+5. Rebuild the package again, if everything is set correctly, there shouldn't be any problems.
+
+6. Install the module, check that it is successfully loaded into Apache.
+
+### mod_hostinglimits
+
+1. Download mod_hostinglimits sources
+
+<div class="notranslate">
+
+```
+yumdownloader --source mod_hostinglimits --enablerepo=*source
+```
+</div>
+
+2. Rebuild the package with your Apache using rpmbuild
+
+<div class="notranslate">
+
+```
+rpmbuild --rebuild mod_hostinglimits-ver.el7.cloudlinux.1.src.rpm
+```
+</div>
+
+3. Remove dependencies such as `httpd`, (`-devel` packages as well) and set your Apache packages instead, in the mod_hostinglimits spec file. Also, check the paths that lead to the <span class="notranslate">`modules`</span> or <span class="notranslate">`conf.d`</span> directories and change them if they are different on your system.
+
+4. Rebuild the package again, this time you should get to the compilation stage. During compilation, you may encounter the following errors:
+
+<div class="notranslate">
+
+```
+-- Not Found Apache Bin Directory: APACHE2_2_HTTPD_BIN-NOTFOUND, APACHE2_2_HTTPD_MODULES-NOTFOUND
+-- Can't find Apache2.2: APACHE2_2_HTTPD_INCLUDE_DIR-NOTFOUND
+```
+</div>
+
+In this case, you should specify the paths of your custom Apache in <span class="notranslate">`mod_hostinglimits-1.0/cmake/FindApacheForBuild.cmake`</span> file. According to macros above, add the paths to the directory where httpd bin is located, to the dir where apache modules are located and to the dir where include files are located. It may look the following way:
+
+<div class="notranslate">
+
+```
+FIND_PATH (APACHE2_2_HTTPD_INCLUDE_DIR 
+   NAMES 
+      httpd.h
+   PATHS
+      ${APACHE2_2_INCLUDES_DIR}
+      /usr/local/include/httpd
+      /usr/include/httpd
+      /usr/include/apache
+      /usr/local/apache/include/       # added line
+)
+```
+</div>
+	
+5. Rebuild the package again, if you set everything correctly, there shouldn't be any problems.
+
+6. Install the module, check that it is successfully loaded into Apache.
+
+### mod_lsapi
+
+1. Install the packages needed to build mod_lsapi from the source. Some packages may be missing on some platforms, this is not critical
+
+<div class="notranslate">
+
+```
+yum install -y rpm-build
+yum install -y liblsapi liblsapi-devel
+yum install -y autoconf cmake apr-devel apr-util-devel
+yum install -y python-lxml pytest python-mock
+```
+</div>
+
+On CloudLinux OS 7 and above you also should install criu related packages
+
+<div class="notranslate">
+
+```
+yum install -y criu-lve python-criu-lve criu-lve-devel crit-lve
+```
+</div>
+
+On CloudLinux OS 8 and above you also should install next packages
+
+<div class="notranslate">
+
+```
+yum install -y alt-python37-mock alt-python37-pytest httpd-devel
+```
+</div>
+
+2. Download mod_lsapi sources
+
+<div class="notranslate">
+
+```
+yumdownloader --source mod_lsapi --enablerepo=*source
+```
+</div>
+
+:::warning Note
+Make sure that versions of all installed and downloaded
+* `mod_lsapi`
+* `liblsapi`
+* `liblsapi-devel`
+packages completely coincide.
+Ensure that the copy of mod_lsapi.so visible to Apache is configured to load liblscapi.so of the same version.
+Mismatched versions can cause errors or unexpected behavior.
+:::
+
+3. Rebuild the package with your Apache using rpmbuild
+
+<div class="notranslate">
+
+```
+rpmbuild --rebuild mod_lsapi-ver.el7.cloudlinux.src.rpm
+```
+</div>
+
+:::tip Note
+This command will fail, but it will create a ~/rpmbuild/SPECS/mod_lsapi.spec file.
+This ~/rpmbuild/SPECS/mod_lsapi.spec file will need to be modified.
+:::
+
+4. Remove building dependency from `httpd-devel` in the <span class="notranslate">`mod_lsapi.spec`</span> spec file located in the <span class="notranslate">`~/rpmbuild/SPECS/`</span> directory.
+
+5. Change the paths to copy `mod_lsapi.so` and `mod_lsapi.conf` in the %install section of the `mod_lsapi.spec` file. For example, if Apache root is `/usr/local/apache`, then modules directory and config files directory will be <span class="notranslate">`/usr/local/apache/modules`</span> and <span class="notranslate">`/usr/local/apache/conf.d`</span> respectively. So for the config file you should substitute the following line in the <span class="notranslate">`%install`</span> section:
+
+<div class="notranslate">
+
+```
+install -D -m 644 conf/mod_lsapi.conf $RPM_BUILD_ROOT%{g_path}/confs/lsapi.conf
+```
+</div>
+
+with the following line:
+
+<div class="notranslate">
+
+```
+install -D -m 644 conf/mod_lsapi.conf $RPM_BUILD_ROOT/usr/local/apache/conf/lsapi.conf
+```
+</div>
+
+And, also, for the module you should substitute the following line in the <span class="notranslate">`%install`</span> section:
+
+<div class="notranslate">
+
+```
+install -D -m 755 build/lib/mod_lsapi.so $RPM_BUILD_ROOT%{g_path}standard/mod_lsapi.so 
+```
+</div>
+
+with the following line:
+
+<div class="notranslate">
+
+```
+install -D -m 755 build/lib/mod_lsapi.so $RPM_BUILD_ROOT/usr/local/apache/modules/mod_lsapi.so
+```
+</div>
+
+Also you should add mentions of both module and config files in the <span class="notranslate">`%files`</span> section of <span class="notranslate">`mod_lsapi.spec`</span>. For example, for <span class="notranslate">`/usr/local/apache`</span> Apache root the following two lines should be added:
+
+<div class="notranslate">
+
+```
+%config /usr/local/apache/conf.d/lsapi.conf
+/usr/local/apache/modules/mod_lsapi.conf
+```
+</div>
+
+6. Rebuild the package again, this time you should get to the compilation stage.
+
+Use this command to rebuild a package
+<div class="notranslate">
+```
+rpmbuild -bb ~/rpmbuild/SPECS/mod_lsapi.spec
+```
+</div>
+
+During compilation, you may encounter some errors:
+<div class="notranslate">
+
+```
+-- Not Found Apache Bin Directory: APACHE2_2_HTTPD_BIN-NOTFOUND, APACHE2_2_HTTPD_MODULES-NOTFOUND
+-- Can't find Apache2.2: APACHE2_2_HTTPD_INCLUDE_DIR-NOTFOUND
+```
+</div>
+
+In this case, you should specify the paths of your custom Apache in the <span class="notranslate">`mod_lsapi-1.1/cmake/FindApacheForBuild.cmake`</span> file. According to macros above, add the paths to the directory where httpd binary is located, to the dir where apache modules are located and to the dir where include files are located. It may look a such way:
+
+<div class="notranslate">
+
+```
+FIND_PATH (APACHE2_2_HTTPD_INCLUDE_DIR 
+   NAMES 
+      httpd.h
+   PATHS
+      ${APACHE2_2_INCLUDES_DIR}
+      /usr/local/include/httpd
+      /usr/include/httpd
+      /usr/include/apache
+      /usr/local/apache/include/       # added line
+)
+```
+</div>
+
+Starting from mod_lsapi-1.1-57, you can use macros for custom paths to the Apache/APR includes/binaries.
+
+A custom Apache location can be defined via the `CUSTOM_APACHE_ROOT` variable. This implies the following structure under the `${CUSTOM_APACHE_ROOT}`:	
+	
+|     |     |
+| :---|:----|
+|`${CUSTOM_APACHE_ROOT}/bin`| Apache binary directory, apachectl location|
+|`${CUSTOM_APACHE_ROOT}/include`|Apache include directory, httpd.h location|
+|`${CUSTOM_APACHE_ROOT}/include`| apr include directory, apr.h location|
+|`${CUSTOM_APACHE_ROOT}/include`|apr-util include directory, apu.h location|
+|`${CUSTOM_APACHE_ROOT}/lib`|apr lib directory, libapr.so location|
+|`${CUSTOM_APACHE_ROOT}/lib`|apr-util lib directory, libaprutil.so location|
+|`${CUSTOM_APACHE_ROOT}/modules`|Apache modules directory, mod_alias.so location|
+	
+If the real structure of Apache root differs from the implied one, it's possible to define a custom location for every single component.
+	
+|     |     |
+| :---|:----|	
+|`CUSTOM_APACHE_BIN`|Apache binary directory, apachectl location|
+|`CUSTOM_APACHE_INC_HTTPD`|Apache include directory, httpd.h location|
+|`CUSTOM_APACHE_INC_APR`|apr include directory, apr.h location|
+|`CUSTOM_APACHE_INC_APU`|apr-util include directory, apu.h location|
+|`CUSTOM_APACHE_LIB_APR`|apr lib directory, libapr.so location|
+|`CUSTOM_APACHE_LIB_APU`|apr-util lib directory, libaprutil.so location|
+|`CUSTOM_APACHE_MODULES`|Apache modules directory, mod_alias.so location|       
+
+7. To customize the switch_mod_lsapi script add into `mod_lsapi.spec` custom script and its configuration file. Configuration file name should be `config.ini` file. Script file name can be arbitrary, because its name should be mentioned in `config.ini` file. Both of them should be copied into */usr/share/lve/modlscapi/custom* in the *%install* section of the `mod_lsapi.spec` file. For example, if script file name is `custom.sh`, you should add the following lines into *%install* section of `mod_lsapi.spec` file:
+
+```
+install -D -m 644 config.ini $RPM_BUILD_ROOT%{g_path}/custom/config.ini
+install -D -m 755 custom.sh $RPM_BUILD_ROOT%{g_path}/custom/custom.sh
+```
+
+Also you should add mentions of both files in the *%files* section of `mod_lsapi.spec`:
+
+```
+/usr/share/lve/modlscapi/custom/config.ini 
+/usr/share/lve/modlscapi/custom/custom.sh
+```
+
+The requirements to the `config.ini` file and script file are described in the following [section](#how-to-integrate-switch_mod_lsapi-script-with-custom-panels)
+
+8. Rebuild the package again, if you set everything correctly, there shouldn't be any problems. 
+
+Use this command to rebuild a package
+<div class="notranslate">
+```
+rpmbuild -bb ~/rpmbuild/SPECS/mod_lsapi.spec
+```
+</div>
+
+9. Install the module, check that it is successfully loaded into Apache.
+
+#### How to integrate switch_mod_lsapi script with custom panels
+
+To be able to use switch_mod_lsapi you have to do the steps mentioned below. We assume that if the /usr/share/lve/modlscapi/custom/config.ini file exists, then it is a Custom Panel.
+
+1. Create config.ini file /usr/share/lve/mod_lsapi/custom/ directory. As an example we have created a config.ini.example file. **All directives that are shown in example file needed in GLOBAL section:**
+
+```
+[GLOBAL]
+VERSION = 1.0.0
+APACHECTL_BIN_LOCATION = /usr/sbin/apachectl
+DOC_URL = http://docs.cloudlinux.com/index.html?apache_mod_lsapi.html
+EXECUTABLE_BIN = custom.sh
+PANEL_NAME=CustomPanel
+```
+
+2. Create executable script in */usr/share/lve/mod_lsapi/custom/executable.sh*. Name it as you want and specify in the config.ini file. Set EXECUTABLE_BIN=executable.sh in the GLOBAL section of the ini file. **Script must be located in the /usr/share/lve/mod_lsapi/custom/ directory.**
+
+3. Custom script options correspond to the options of the switch_mod_lsapi. For more information use the [this document](/cloudlinuxos/command-line_tools/#apache-mod-lsapi-pro).
+
+#### What you need to write in your custom executable.sh file.
+
+You have to implement options in your script. Switch_mod_lsapi will call executable with corresponding arguments. Script must return exit code 0 as success or some integer in case of fail.
+
+**Supported options are:**
+
+```
+switch_mod_lsapi --setup
+/usr/share/lve/modlscapi/custom/executable.sh --setup
+
+switch_mod_lsapi --uninstall
+/usr/share/lve/modlscapi/custom/executable.sh --uninstall
+
+switch_mod_lsapi --enable-domain test.com
+/usr/share/lve/modlscapi/custom/executable.sh --enable-domain test.com
+```
+
+Script executable.sh executed with two arguments --disable-domain and domain name:
+
+```
+switch_mod_lsapi --disable-domain test.com
+/usr/share/lve/modlscapi/custom/executable.sh --disable-domain test.com
+```
+
+Script executable.sh executed with --enable-global argument:
+
+```
+switch_mod_lsapi --enable-global
+/usr/share/lve/modlscapi/custom/executable.sh --enable-global
+```
+
+Script executable.sh executed with --disable-global argument:
+
+```
+switch_mod_lsapi --disable-global
+/usr/share/lve/modlscapi/custom/executable.sh --disable-global
+```
+
+Сustom script executed with --verbose and --force arguments if switch_mod_lsapi are called with.
+
+**Not supported options are:**
+
+```
+--setup-light
+--build-native-lsphp
+--build-native-lsphp-cust
+--check-php
+--stat
+```
+
+mod_lsapi uses one predefined lsphp handler *application/x-httpd-lsphp*, which relates to */usr/local/bin/lsphp* binary. All other lsphp handlers should be added by custom script into */etc/container/php.handler* file.
+
+**An example of /etc/container/php.handler file**
+
+```
+application/x-lsphp52 /opt/alt/php52/usr/bin/lsphp
+application/x-lsphp53 /opt/alt/php53/usr/bin/lsphp
+application/x-lsphp54 /opt/alt/php54/usr/bin/lsphp
+application/x-lsphp55 /opt/alt/php55/usr/bin/lsphp
+application/x-lsphp56 /opt/alt/php56/usr/bin/lsphp
+application/x-lsphp70 /opt/alt/php70/usr/bin/lsphp
+application/x-lsphp71 /opt/alt/php71/usr/bin/lsphp
+application/x-lsphp72 /opt/alt/php72/usr/bin/lsphp
+
+application/x-httpd-php81-lsphp /usr/local/apps/php81/bin/lsphp
+```
+
+**An example of executable.sh script:**
+
+```
+#!/bin/bash
+ 
+CMD=$1
+ 
+if [ "$CMD" == "--setup" ]; then
+    	echo "application/x-httpd-php81-lsphp /usr/local/apps/php81/bin/lsphp"     >>/etc/container/php.handler
+fi 
+ 
+if [ "$CMD" == "--uninstall" ]; then
+    sed -i "#application/x-httpd-php81-lsphp#d" /etc/container/php.handler
+fi
+ 
+if [ "$CMD" == "--enable-domain" ]; then
+    http_root=`/opt/ExamplePanel/domain2root $2`
+    if [ -e $http_root/.htaccess ]; then
+        sed -i '/lsphp/d' $http_root/.htaccess
+    fi
+fi 
+ 
+if [ "$CMD" == "--disable-domain" ]; then
+    http_root=`/opt/ExamplePanel/domain2root $2`
+    if [ -e $http_root/.htaccess ]; then
+        sed -i '/lsphp/d' $http_root/.htaccess
+    fi
+fi 
+ 
+# if command not supported
+if [ "$CMD" == "--enable-global" ]; then
+    echo "LSAPI enable global command is not supported by ExamplePanel"; exit 1
+fi 
+```
+
+## MySQL Governor
+
+:::Warning
+MySQL Governor is not available in CloudLinux OS Admin edition.
+:::
+
+1. Install MySQL Governor
+
+<div class="notranslate">
+
+```
+yum install governor-mysql
+```
+</div>
+
+2. MySQL Governor supports only `cl-MariaDB**` or `cl-MySQL**` packages. Follow the [documentation](/cloudlinuxos/cloudlinux_os_components/#mysql-governor) to figure out all supported versions.
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mysqlXX
+```
+</div>
+
+3. Backup your databases.
+
+4. Run the cl-MySQL/cl-MariaDB installation.
+
+<div class="notranslate">
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install
+```
+</div>
+
+5. After installation, check that the database server is working properly. If you have any problems, contact [support](https://helpdesk.cloudlinux.com/)
+
+6. Configure user mapping to the database. The mapping format is described in the following [section](/cloudlinuxos/cloudlinux_os_components/#mapping-a-user-to-a-database). The control panel should automatically generate such mapping and write it to <span class="notranslate">`/etc/container/dbuser-map`</span>. Usually, it is enough to write a hook when adding, deleting or renaming a database for a user. The control panel should implement such a mechanism for MySQL Governor to operate properly. MySQL Governor automatically applies changes from the dbuser-map file every five minutes.
+
+7. MySQL Governor configuration can be found in the following [section](/cloudlinuxos/cloudlinux_os_components/#configuration-3).
+
+8. MySQL Governor CLI tools description can be found in the following [section](/cloudlinuxos/command-line_tools/#mysql-governor)
+
+9. Having configured the mapping use `dbtop` to see the current user load on the database (you'd need to make some database queries).
+
+<div class="notranslate">
+
+```
+dbtop
+```
+</div>
+
+10. If the load appears in the dbtop output, then you have successfully configured MySQL Governor.
+
+## CloudLinux OS LVE and CageFS patches
+
+:::tip Note
+If you are using Apache from the CloudLinux OS repository (such as httpd or httpd24-httpd), skip this section.
+:::
+
+If you use custom Apache, you need to apply patches so that the processes launched by the Apache are working with LVE and CageFS properly. 
+Cloudlinux OS provides patches for the following packages: 
+
+* `suphp`
+* `suexec`
+* `php-fpm`
+* `apr` library
+* `Apache mpm itk`
+
+First of all, download patches using the following link [https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
+
+To apply the patch, follow these steps.
+
+1. Untar archive which you were going to patch and go to the created directory with sources.
+
+2. Transfer the patch to the directory with sources.
+
+3. Use the patch utility inside the directory with sources
+
+4. Recompile your project.
+
+Here's an example with `apr` library:
+
+<div class="notranslate">
+
+```
+# ls 
+apr-1.4.8.tar.bz2  apr-2.4-httpd.2.patch
+# tar xvjf apr-1.4.8.tar.bz2
+# cp apr-2.4-httpd.2.patch ./apr-1.4.8
+# cd ./apr-1.4.8
+# patch -p3 < apr-2.4-httpd.2.patch 
+patching file include/apr_thread_proc.h
+Hunk #1 succeeded at 204 (offset -2 lines).
+patching file threadproc/unix/proc.c
+
+Patch applied Successfully, recompile apr. 
+```
+
+</div>
+
+If you build custom RPM packages, it might make sense to apply patches using spec file.
+
+In this case, add to the Source section (example for `apr`):
+
+<div class="notranslate">
+
+```
+Source0: apr-1.4.8.tar.bz2
+Patch100: apr-2.4-httpd.2.patch
+```
+
+</div>
+
+Then  apply this patch in the <span class="notranslate">`%setup`</span> section:
+
+<div class="notranslate">
+
+```
+%prep
+%setup -q
+%patch100 -p3 -b .lve
+```
+</div>
+
+If no errors appear during the build, the patch has been successfully applied.
+
+Instead of patching the apr library, you can build your custom Apache with one of the libapr-devel packages provided by CloudLinux OS. Every version of CloudLinux OS provides two versions of libapr - the system library as a package named `apr` and the alternative library as a package named `alt-apr`. Their versions are listed in the following table:
+
+|-|-|-|
+|CloudLinux OS version |apr version |alt-apr version |
+|6 |1.3.9 |1.7.4 |
+|7 |1.4.8 |1.7.4 |
+|8 |1.6.3 |1.7.4 |
+|9 |1.7.0 |1.7.4 |
+
+If your custom Apache is already linked with a non-patched apr library with the major version equal to one provided by `apr` or `alt-apr` package, you can just change the library symlink. For example, if your Apache binary `/usr/local/apps/apache2/bin/httpd` is linked with `/usr/local/apps/apache2/lib/libapr-1.so.0` library which, in turn, is a link to `libapr` library with version 1.7.4, you can install the `alt-apr` package and change the symlink - it should link to the patched library provided by `alt-apr` package instead of the original one.
+<div class="notranslate">
+
+```
+[root@cloudlinux ~]# ldd /usr/local/apps/apache2/bin/httpd | grep libapr-1.so.0
+        libapr-1.so.0 => /usr/local/apps/apache2/lib/libapr-1.so.0 (0x00007f191e35c000)
+[root@cloudlinux ~]#
+[root@cloudlinux ~]# ls -l /usr/local/apps/apache2/lib/libapr-1.so.0
+lrwxrwxrwx 1 root root 17 Feb 10  2023 /usr/local/apps/apache2/lib/libapr-1.so.0 -> libapr-1.so.0.7.4
+[root@cloudlinux ~]#
+[root@cloudlinux ~]# rpm -ql alt-apr | grep libapr-1.so.0.7.4
+/opt/alt/alt-apr17/lib64/libapr-1.so.0.7.4
+[root@cloudlinux ~]#
+[root@cloudlinux ~]# ln -sf /opt/alt/alt-apr17/lib64/libapr-1.so.0.7.4 libapr-1.so.0
+```
+</div>
+
+## Hardened PHP
+
+All versions of alt-php should work properly in any control panel.
+
+To install all PHP versions, run:
+
+<div class="notranslate">
+
+```
+yum groupinstall alt-php
+```
+</div>
+
+To install a particular version of PHP, run:
+
+<div class="notranslate">
+
+```
+yum groupinstall alt-php{some_version}
+```
+</div>
+
+For details, see [PHP Selector Installation and Update](/cloudlinuxos/cloudlinux_os_components/#installation-and-update-4)
+
+## CloudLinux OS kernel set-up
+
+### /proc filesystem access control
+
+* [Integrating control panel with CloudLinux OS](./#integrating-control-panel-with-cloudlinux-os)
+
+CloudLinux OS kernel allows the server administrator to control the user access to the `/proc` filesystem with the special parameters.
+Unprivileged system users will not be able to see the processes of other system users, they can only see their processes. See details [here](/cloudlinuxos/cloudlinux_os_kernel/#virtualized-proc-filesystem).
+
+If the <span class="notranslate">`fs.proc_can_see_other_uid`</span> parameter is not defined in `sysctl` config during the CageFS package installation, it is set to `0`: <span class="notranslate">`fs.proc_can_see_other_uid=0`</span>.
+
+You can also set this parameter in the <span class="notranslate">`/etc/sysctl.conf`</span> file and then run the <span class="notranslate">`sysctl -p`</span> command.
+
+<span class="notranslate">[`hidepid`](/cloudlinuxos/cloudlinux_os_kernel/#remounting-procfs-with-hidepid-option)</span> parameter is set based on the <span class="notranslate">`fs.proc_can_see_other_uid`</span> parameter value automatically during the <span class="notranslate">`lve_namespaces`</span> service starting (i.e. during <span class="notranslate">`lve-utils`</span> package installation and server booting).
+
+#### Integrating control panel with CloudLinux OS
+
+Run the following command to add administrators into <span class="notranslate">`proc_super_gid`</span> group (if the panel administrator is not a root user or there are several administrators):
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/hooks/post_modify_admin.py create --username <admin_name>
+```
+</div>
+
+:::tip Note 
+This administrator should exist as a system user.
+:::
+
+This command also adds a specified administrator to the <span class="notranslate">`clsudoers`</span> group, so the LVE Manager admin's plugin works properly.
+
+This command is a hook that the control panel should call after adding the admin user to the system.
+
+If the [admins](./#admins) list script exists when installing <span class="notranslate">`lve-utils`</span> package then the existing administrators will be processed automatically. It the script does not exist, you should run the above mentioned command for each administrator.
+
+### Symlink protection
+
+* [How to enable symlink protection](./#how-to-enable-symlink-protection)
+
+CloudLinux OS kernels have symlink attacks protection. When this protection is enabled, the system does not allow users to create symlinks (and hard links) to non-existent/not their own files.
+
+[Here](/cloudlinuxos/cloudlinux_os_kernel/#link-traversal-protection) you can find all protection mechanism parameters.
+
+See also: [the special module to protect web-server](/cloudlinuxos/cloudlinux_os_kernel/#symlink-owner-match-protection).
+
+You can run <span class="notranslate">`cldiag`</span> utility with the <span class="notranslate">`--check-symlinkowngid`</span> parameter to check whether your web-server protection mechanisms are correctly set-up.
+
+<div class="notranslate">
+
+```
+cldiag --symlinksifowner
+Check fs.enforce_symlinksifowner is correctly enabled in sysctl conf:
+	OK: fs.enforce_symlinksifowner = 1
+
+There are 0 errors found.  
+............ 
+
+cldiag --check-symlinkowngid
+Check fs.symlinkown_gid:
+	OK: Web-server user is protected by Symlink Owner Match Protection
+
+There are 0 errors found.
+```
+</div>
+
+* Symlink traversal protection is disabled by default.
+* Symlink owner match protection is enabled by default.
+
+#### How to enable symlink protection
+
+Set the <span class="notranslate">`symlinkown_gid`</span> parameter to the value of the GID group of the web-server process.
+
+Before enabling symlink protection, ensure it does not break the control panel functionality.
+
+For example, if an unprivileged user is allowed to create symlinks or hard links to files or directories he doesn’t own then when enabling symlink traversal protection he will not be able to do so.
+
+To allow an unprivileged user to create such symlink or hard link, a file/directory which symlink is referred to should have <span class="notranslate">`linksafe`</span> group.
+
+### File system quotas
+
+Some of CloudLinux OS utilities (`cagefsctl`, `selectorctl`, `cloudlinux-selector`, etc) writes files to the user’s home directory on behalf of this user.
+
+So they are subject to the disk quotas if any are set for the user. The utilities can override these quotas to avoid failures.
+See [File system quotas](/cloudlinuxos/cloudlinux_os_kernel/#file-system-quotas) for kernel parameters controlling these permissions. This parameter is used only for XFS file system.
+
+## How to integrate X-Ray and AccelerateWP with a control panel
+
+:::warning WARNING!
+Please note that cPanel, Plesk and DirectAdmin are already supported by X-Ray and AccelerateWP and do not require any integration effort.
+:::
+
+:::tip Note
+X-Ray support is available since API v1.2
+AccelerateWP support is available since API v1.4
+
+See [versioning](./#versioning) for changelog.
+:::
+
+:::tip Note
+AccelerateWP has following known limitaions:
+- only cgi, fpm, and lsapi handlers are supported
+:::
+- 
+:::tip Note
+Both X-Ray and Accelerate WP require CloudLinux Shared Pro license.
+:::
+
+In order to integrate X-Ray or AccelerateWP into your panel, you should follow two simple steps.
+
+1. Extend the output of your existing [domains integration script](./#domains) as follows:
+
+1.1. Implement an optional flag <span class="notranslate">`--with-php`</span>, upon which all domains with their PHP configuration will be returned.
+Thus, if your [integration config file](./#example-of-the-integration-config) <span class="notranslate">`/opt/cpvendor/etc/integration.ini`</span> has
+
+<div class="notranslate">
+
+```
+domains = /opt/cpvendor/bin/vendor_integration_script domains
+```
+</div>
+
+in <span class="notranslate">`[integration_scripts]`</span> section, X-Ray and AccelerateWP would call this script as
+<div class="notranslate">
+
+```
+/opt/cpvendor/bin/vendor_integration_script domains --with-php
+```
+</div>
+
+1.2. In order to enable X-Ray or AccelerateWP support, the script output should return a representation of all domains on the server: a key-value object, where a key is a domain (or subdomain) and a value is a key-value object contains the owner name (UNIX users) and PHP interpreter configuration. **If you are extending the existing domains integration script, you just include the PHP configuration.**
+
+PHP interpreter configuration for each domain is to be placed in the nested key-value object of the following format:
+
+<div class="notranslate">
+
+```
+“php”: {
+   “version”: str
+   “ini_path”: str
+   “is_native”: bool
+   “fpm”: str
+}
+```
+</div>
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+  "data": {
+    "domain.com": {
+      "owner": "username",
+      "document_root": "/home/username/public_html/",
+      "is_main": true,
+      "php": {
+        "version": "56",
+        "ini_path": "/opt/alt/php56/link/conf",
+        "is_native": true
+       }
+    },
+    "subdomain.domain.com": {
+      "owner": "username",
+      "document_root": "/home/username/public_html/subdomain/",
+      "is_main": false,
+      "php": {
+        "version": "72",
+        "ini_path": "/opt/alt/php72/link/conf",
+        "fpm": "alt-php72-fpm"
+      }
+    }
+  },
+  "metadata": {
+    "result": "ok"
+  }
+}
+```
+</div>
+
+**Data description**
+
+|                                            |          |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
+|--------------------------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| Key                                        | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
+| <span class="notranslate">version</span>   | True     | The version of php that is selected by the end user or administrator in the panel for this domain. Should be presented in the format XY where XY is the exact version of PHP. List of supported versions is presented below.                                                                                                                                                                                                                                                                                                                                                                                               |
+| <span class="notranslate">ini_path</span>  | True     | Path where PHP expects additional .ini files to scan, usually compiled path into binary PHP.Example where to get this value: ![](/images/cloudlinuxos/control_panel_integration/IniPath.webp)                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+| <span class="notranslate">is_native</span> | False    | If your panel [has integrated CloudLinux OS PHP Selector](./#integrating-cloudlinux-os-php-selector), then there is the list of native PHP binaries in the <span class="notranslate">`native.conf`</span> (see details [here](/cloudlinuxos/cloudlinux_os_components/#native-php-configuration)). The <span class="notranslate">`is_native`</span> value must be set to true if the binary of the above version of PHP is specified in the <span class="notranslate">`native.conf`</span>, false or omitted otherwise. This way the X-Ray will determine if CloudLinux OS PHP Selector is enabled for a given domain |
+| <span class="notranslate">fpm</span>       | False    | The name of the FPM service that uses specified domain, optional value. To make the X-Ray work on domains using FPM, you need to restart FPM service. In X-Ray added automatic restart of the FPM service if the tracing task is created for the domain that uses the FPM therefore we need this field, otherwise it can be omitted                                                                                                                                                                                                                                                                                        |
+| handler                                    | *True    | The name of used handler. Can be one of the follwing: fpm, cgi, fcgi, lsapi. Use lsapi in case if you use litespeed web server.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
+
+* handler is only required for Accelerate WP integration.
+
+2. After finishing the X-Ray integration script, enable X-Ray support through [panel_info integration script](./#panel-info): add xray component into <span class="notranslate">`supported_cl_features`</span> object.
+
+**Output example**
+
+<div class="notranslate">
+
+```
+{
+	"data": {
+		"name": "SomeCoolWebPanel",
+		"version": "1.0.1",
+		"user_login_url": "https://{domain}:1111/",
+		"supported_cl_features": {
+			"php_selector": true,
+			"ruby_selector": true,
+			"python_selector": true,
+			"nodejs_selector": false,
+			"mod_lsapi": true,
+			"mysql_governor": true,
+			"cagefs": true,
+			"reseller_limits": true,
+			"xray": true
+		}
+	},
+	"metadata": {
+		"result": "ok"
+	}
+}
+```
+</div>
diff --git a/docs/cloudlinuxos/deprecated/README.md b/docs/cloudlinuxos/deprecated/README.md
new file mode 100644
index 000000000..64749fa75
--- /dev/null
+++ b/docs/cloudlinuxos/deprecated/README.md
@@ -0,0 +1,2274 @@
+# Deprecated
+
+* [Python Selector (Old)](./#python-selector-old)
+* [Git for cPanel](./#git-for-cpanel)
+* [LVE-Stats 0.x](./#lve-stats-0-x)
+* [OptimumCache](./#optimumcache)
+* [TPE extension](./#tpe-extension)
+* [CPU limits](./#cpu-limits)
+* [Package integration](./#package-integration). You can use [Control panel integration guide](/cloudlinuxos/control_panel_integration/) instead.
+* [Redis support for HostingLimits]()
+* [Migration to EA4](./#migration-to-easyapache-4)
+
+## Python Selector (Old)
+
+:::tip Note
+This documentation is for the old version of Python Selector. You can find documentation for the new Python Selector [here](/cloudlinuxos/cloudlinux_os_components/#python-selector)
+:::
+
+We have the ability to deploy <span class="notranslate"> Python </span> applications via application server. <span class="notranslate"> Python Selector </span> uses <span class="notranslate"> mod_passenger </span> to host <span class="notranslate">Python</span>.
+
+This feature is available for CloudLinux OS 6 or later. It supports only cPanel servers.
+
+You can find a list of supported <span class="notranslate"> alt-python</span> versions using the following command.
+
+<div class="notranslate">
+
+```
+yum grouplist | grep alt-python
+```
+</div>
+
+
+### Installation
+
+::: tip Note
+The instructions below are suitable only for EasyApache 3 and EasyApache 4. You should follow [this instruction](https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:enable_ruby_python_selector) if you use LiteSpeed.
+:::
+Install tools to create isolated <span class="notranslate"> Python </span> environments and <span class="notranslate"> Passenger Apache </span> module. For servers with EasyApache3:
+
+<div class="notranslate">
+
+```
+yum install lvemanager alt-python-virtualenv alt-mod-passenger
+```
+</div>
+
+for EasyApache4:
+
+<div class="notranslate">
+
+```
+yum install lvemanager alt-python-virtualenv ea-apache24-mod-alt-passenger
+```
+</div>
+
+To use <span class="notranslate"> Python Selector </span> you should install alternative <span class="notranslate"> Python </span> packages:
+
+<div class="notranslate">
+
+```
+yum groupinstall alt-python
+```
+</div>
+
+To use MySQL database you should install <span class="notranslate"> alt-python27-devel </span> package:
+
+<div class="notranslate">
+
+```
+yum install alt-python27-devel
+```
+</div>
+
+::: tip Note
+After installation, please make sure that you have unmarked appropriate checkboxes in <span class="notranslate"> LVE Manager Options </span> tab to show <span class="notranslate">Python App</span> in web-interface.
+:::
+
+::: tip Note
+Adding <span class="notranslate"> Python</span> modules requires executing permissions to gcc/make binaries. Please enable compilers in Compiler Access section of WHM, then run: `cagefsctl --force-update` 
+:::
+
+### End user access
+
+1. In <span class="notranslate">_Software/Services_</span> area choose <span class="notranslate">_Select Python Environment_</span>.
+
+![](/images/cloudlinuxos/deprecated/clip000133.webp)
+
+2. Create project form will appear. Choose interpreter version for your application, application folder name (project path) and <span class="notranslate"> URI </span> for accessing your application. Click <span class="notranslate"> “Create project” </span> to create an application.
+
+![](/images/cloudlinuxos/deprecated/clip000233.webp)
+
+After a little while a new application entry will be appended to the web-page.
+
+![](/images/cloudlinuxos/deprecated/clip000255.webp)
+
+3. You can edit path (folder name of the project in the home directory, for example, <span class="notranslate"> _/home/clman1/project_name_ </span> ), <span class="notranslate"> uri </span> for application, <span class="notranslate"> wsgi </span> handler. If you click <span class="notranslate"> Edit </span> - the value is converted to input field and thus becomes editable. When editing is complete, click <span class="notranslate"> Save </span>.
+
+![](/images/cloudlinuxos/deprecated/clip000256.webp)
+
+4. <span class="notranslate"> Wsgi </span> entry is to specify <span class="notranslate"> python wsgi </span> application entry point. It must be specified as filename, must be callable and separated by colon. If your app is running from file <span class="notranslate"> flask/run.py </span> by calling callable app, set <span class="notranslate"> flask/run.py:app </span>.
+
+![](/images/cloudlinuxos/deprecated/clip000257.webp)
+
+5. When <span class="notranslate"> Show </span> control is clicked, <span class="notranslate"> python </span> extensions section will be expanded. It gives the ability to add or remove <span class="notranslate"> python </span> modules. When start typing in input field, appropriate hints are shown in drop-down list. Choose the entry you want from drop-down and click <span class="notranslate"> Add </span>.
+
+![](/images/cloudlinuxos/deprecated/clip000261.webp)
+
+If you click <span class="notranslate"> Delete </span>, the corresponding module entry will disappear.
+In addition to setting <span class="notranslate"> path, uri </span> and <span class="notranslate"> wsgi </span> , the interpreter version can be changed as well by changing the value in select drop-down.
+
+6. No changes are applied to application environment until <span class="notranslate"> Update </span> button is clicked. Before the <span class="notranslate"> Update </span> button is clicked, all changes can be reverted with <span class="notranslate"> Reset </span> button.
+
+The newly created application will be supplied with <span class="notranslate"> stub </span> only. A real application ought to be put into application folder. After application is placed into application folder, the <span class="notranslate"> wsgi </span> parameter can be set.
+
+Click <span class="notranslate"> Remove </span> to delete the application - the application folder itself will remain unmoved.
+
+_Note. For <span class="notranslate"> LVE Manager </span> version 0.9-10 and higher:_
+
+When creating an application you can use the key <span class="notranslate"> --domain </span> , which attaches application to domain. If <span class="notranslate"> --domain </span> key is not specified, then the main users domain will be used by default.
+To create application run:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python --version=VERSION[--user=USER] [--domain=DOMAIN] [--print-summary] [--json]–-create-webapp <FOLDER_NAME> <URI>
+```
+</div>
+
+When changing application <span class="notranslate"> URI, --domain </span> key can be used simultaneously, in this case not only <span class="notranslate"> URI </span> will be changed, but also the application domain.
+
+To change application <span class="notranslate"> URI </span> run:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER][--domain=NEW_DOMAIN] [--print-summary] [--json] --transit-webapp<FOLDER_NAME> <NEW_URI> 
+```
+</div>
+
+The possibility to choose domain when creating an application was added to web interface as well.
+
+![](/images/cloudlinuxos/deprecated/webapp001_zoom94.webp)
+
+Also, you can run simple commands from web interface (e.g. you can install packages from specific repositories or control web applications by means of <span class="notranslate"> django -admin</span>).
+
+![](/images/cloudlinuxos/deprecated/webapp002_zoom93.webp)
+
+
+### Hide Python Selector icon
+
+It is possible to hide or show <span class="notranslate">Python Selector</span> icons by marking or unmarking proper checkbox in <span class="notranslate"> LVE Manager _Options_</span> tab.
+
+![](/images/cloudlinuxos/deprecated/CL-hide-python-ruby.webp)
+
+The same result can be accomplished in CLI by running:
+
+<div class="notranslate">
+
+```
+cloudlinux-config set --json --data '{"options":{"uiSettings":{"hideRubyApp":false, "hidePythonApp":false}}}'
+```
+</div>
+ 
+:::tip Note
+If you are using cPanel/WHM, you can also configure hide/show <span class="notranslate">CloudLinux OS Python Selectors</span> in <span class="notranslate">WHM | Feature Manager</span>.
+For that, you’d need to first uncheck <span class="notranslate">`Hide Python App in web-interface`</span> in the <span class="notranslate">LVE Manager</span>. This will make the menu appear for all accounts. After that, you are free to disable this app in <span class="notranslate">WHM | Feature Manager</span> for the required feature lists. 
+:::
+
+### CLI options for old Python Selector
+
+:::warning Warning!
+selectorctl command line tool is not supported in the new Python Selector. You can use cloudlinux-selector command line tool instead.
+:::
+
+To create application run:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python --version=VERSION [--user=USER] [--print-summary] [--json] --create-webapp <FOLDER_NAME> <URI>
+```
+</div>
+
+To delete application:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --destroy-webapp <FOLDER_NAME>
+```
+</div>
+
+To change application folder name:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --relocate-webapp <FOLDER_NAME> <NEW_FOLDER_NAME>
+```
+</div>
+
+To change application <span class="notranslate"> URI </span>:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=<python|ruby> [--user=USER] [--print-summary] [--json] --transit-webapp <FOLDER_NAME> <NEW_URI>
+```
+</div>
+
+To change application interpreter version:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --set-user-current --version=<NEW VERSION> <FOLDER_NAME>
+```
+</div>
+
+To set application <span class="notranslate"> WSGI </span> handler ( <span class="notranslate"> Python </span> only):
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --setup-wsgi=<file_path:callable> <FOLDER_NAME>
+```
+</div>
+
+To install modules to application environment:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --enable-user-extensions=<module1[,module2...]> <FOLDER_NAME>
+```
+</div>
+
+To remove modules from application environment:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --disable-user-extensions=<module1[,module2...]> <FOLDER_NAME>
+```
+</div>
+
+To list modules installed in application environment:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --list-user-extensions <FOLDER_NAME>
+```
+</div>
+
+To print applications summary for a user:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--json] --user-summary
+```
+</div>
+
+To list available interpreters:
+
+<div class="notranslate">
+
+```
+/usr/bin/selectorctl --interpreter=python [--user=USER] [--json] --list
+```
+</div>
+
+
+## Git for cPanel
+
+:::tip Note
+This package is no longer supported as it may cause dependency issues
+:::
+
+
+Please note that this package is no longer needed, as since cPanel 11.38, you can install git without any issues on cPanel by running:
+
+<div class="notranslate">
+
+```
+yum install git
+```
+</div>
+
+
+To install [git](https://git-scm.com/) on cPanel servers:
+
+<div class="notranslate">
+
+```
+yum install git-cpanel
+```
+</div>
+
+
+## LVE-Stats 0.x
+
+:::tip Note
+LVE-STATS-0.X IS NO LONGER SUPPORTED, PLEASE USE [LVE-STATS 2](/cloudlinuxos/cloudlinux_os_components/#lve-stats-2)
+:::
+
+
+ lve-stats package collects LVE usage statistics and allows to query the data.
+
+To install, run:
+
+<div class="notranslate">
+
+```
+yum install lve-stats
+```
+</div>
+
+
+If you are already running lve-stats (in case you are running cPanel LVE plugin), run:
+
+<div class="notranslate">
+
+```
+yum update lve-stats
+```
+</div>
+
+
+This should also be updated automatically next time your system runs system wide update.
+
+The package installs lvestats-server. You can re-start the server by running:
+
+<div class="notranslate">
+
+```
+service lvestats restart
+```
+</div>
+
+The package creates sqlite database <span class="notranslate">`/var/lve/lveinfo.db`</span> that stores history information about LVE usage. Up to two months of hourly info is stored for each client. The data for the last hour is stored with 5 minutes interval, and the data for the past 10 minutes is stored with 1 minute interval.
+
+LVE Stats updates <span class="notranslate">`/var/lve/info`</span> every few seconds. That info is used by <span class="notranslate">LVE Manager</span> plugin.
+
+Package consists of lveinfo utility to query LVE usage, and lvechart that allows you to chart usage for individual LVE.
+
+To query historical LVE info, lveinfo command provided. It is located at <span class="notranslate">`/usr/sbin/lveinfo`</span>: 
+ 
+<div class="notranslate">
+
+```
+# /usr/sbin/lveinfo [OPTIONS]
+-h --help              : this help screen
+-v, --version          : version number
+-d, --display-username : try to convert LVE id into username when possible
+-f, --from=            : run report from date and time in YYYY-MM-DD HH:MM format
+      if not present last 10 minutes are assumed
+-t, --to=              : run report up to date and time in YYYY-MM-DD HH:MM format
+      if not present, reports results up to now
+-o, --order-by=        : orders results by one of the following:
+      cpu_avg          : average CPU usage
+      cpu_max          : max CPU usage
+      mep_avg          : average number of entry processes (concurrent connections)
+      mep_max          : max number of entry processes (concurrent connections)
+      vmem_avg         : average virtual memory usage
+      vmem_max         : max virtual memory usage
+      pmem_avg         : average physical memory usage
+      pmem_max         : max physical memory usage
+      nproc_avg        : average number of processes usage
+      nproc_max        : max number of processes usage
+      io_avg           : average IO usage
+      io_max           : max IO usage
+      total_mem_faults : total number of out of virtual memory faults (deprecated since 0.8-6)
+      total_vmem_faults: total number of out of virtual memory faults (since 0.8-6)
+      total_pmem_faults: total number of out of physical memory faults (since 0.8-6)
+      total_mep_faults : total number of entry processes faults (deprecated since 0.8-6)
+      total_ep_faults  : total number of entry processes faults (since 0.8-6)
+      total_nproc_faults: total number of number of processes faults (since 0.8-6)
+      any_faults       : total number of any types of faults (since 0.8-6)
+    --id=              : LVE id -- will display record only for that LVE id
+-u, --user=            : Use username instead of LVE id, and show only record for that user
+-l, --limit=           : max number of results to display, 10 by default
+-c, --csv              : display output in CSV format
+-b, --by-usage         : show LVEs with usage (averaged or max) within 90% percent of the limit
+      available values:
+      cpu_avg          : average CPU usage
+      cpu_max          : max CPU usage
+      mep_avg          : average number of entry processes (concurrent connections)
+      ep_avg           : average number of entry processes (since 0.8-6)
+      mep_max          : max number of entry processes (concurrent connections)
+      ep_max           : max number of entry processes (since 0.8-6)
+      mem_avg          : average virtual memory usage
+      mem_max          : max virtual memory usage
+      vmem_avg         : average virtual memory usage
+      vmem_max         : max virtual memory usage
+      pmem_avg         : average physical memory usage
+      pmem_max         : max physical memory usage
+      nproc_avg        : average number of processes
+      nproc_max        : max number of processes
+      io_avg           : average IO usage
+      io_max           : max IO usage
+-p, --percentage       : defines percentage for --by-usage option
+-f, --by-fault         : show LVEs which failed on max entry processes limit or memory limit
+      available values: mem, mep.
+      since 0.8-6      : vmem, pmem, ep, nproc
+    --show-all         : since 0.8-6 only columns for enabled limits will show up. 
+-r, --threshold        : in combination with --by-fault, shows only LVEs with number of faults above threshold specified
+    --server_id        : used in combination with centralized storage, to access info from any server
+    --show-all         : full output (show all limits); brief output by default
+```
+</div>
+
+**Output**
+
+| | |
+|-|-|
+|ID |LVE Id or username |
+|aCPU |Average CPU usage |
+|mCPU |Max CPU usage |
+|lCPU |CPU Limit |
+|aEP |CPU Limit |
+|mEP |Max Entry Processes |
+|lEP |Entry Proc limit |
+|aNPROC |Average Number of Processes |
+|mNPROC |Max Number of Processes |
+|lNPROC |Number of Processes limit |
+|aVMEM |Average virtual Memory Usage |
+|mVMEM |Max virtual Memory Usage |
+|lVMEM |Virtual Memory Limit |
+|aPMEM |Average physical Memory Usage |
+|mPMEM |Max physical Memory Usage |
+|lPMEM |Physical Memory Limit |
+|aIO |Average IO usage |
+|mIO |Max IO usage |
+|lIO |IO Limit |
+|fVMEM |Out Of Virtual Memory Faults |
+|fPMEM |Out Of Physical Memory Faults |
+|fEP |Entry processes faults |
+|fNPROC |Number of processes faults |
+
+* only enabled limits will show up
+
+**Examples**
+
+Display top 10 users, by max <span class="notranslate"> CPU </span> usage, from Oct 10, 2010 to Oct 15, 2010. Display username if possible:
+
+
+<div class="notranslate">
+
+```
+lveinfo --from='2010-10-10' --to='2010-10-15' -o cpu_max --display-username  
+
+ID        aCPU       mCPU     lCPU      aEP      mEP      lEP       aMem       mMem      lMem      MemF     MepF 
+777         7        9        10        0        0        25        10M        15M       1G        0        0 
+300         2        8        10        0        1        25        1M         3M        1G        0        0 
+web2        1        6        10        0        0        25        17K        18M       1G        0        0 
+web1        0        0        10        0        0        25        204K       1M        1G        0        0 
+```
+</div>
+Display LVE info about user <span class="notranslate"> web2 </span> , from Oct 10, 2010 to Oct 15, 2010:
+
+
+<div class="notranslate">
+
+```
+lveinfo --from='2010-10-10' --to='2010-10-15' --user=web2 --display-username  
+
+ID        aCPU       mCPU     lCPU      aEP      mEP      lEP       aMem       mMem       lMem      MemF     MepF 
+web2        1        6        10        0        0        25        10M        15M        1G        0        0
+```
+</div>
+
+### Storing statistics in MySQL
+
+:::tip Note
+LVE-STATS-0.X IS NO LONGER SUPPORTED, PLEASE USE [LVE-STATS 2](/cloudlinuxos/cloudlinux_os_components/#lve-stats-2)
+:::
+
+ You have to install MySQL-python rpm to store lve-stats on centralized server. Run:
+
+<div class="notranslate">
+
+```
+yum install MySQL-python
+```
+</div>
+
+
+If you have MySQL 5.3+ installed on CloudLinux OS 5 server, and there is no libmysqlclient_r.so.15 on the server, run:
+
+<div class="notranslate">
+
+```
+yum --enablerepo=cloudlinux-updates-testing install mysqlclient15
+```
+</div>
+
+
+A typical procedure to configure the MySQL database for storing information about multiple servers for lve-stats services looks as follows:
+
+Create database and user. You can do it by executing the following commands:
+
+<div class="notranslate">
+
+```
+create database <database>;
+grant all on <database>.* to <user> identified by 'password';
+flush privileges;
+```
+</div>
+
+Create database schema:
+
+<div class="notranslate">
+
+```
+CREATE TABLE history (id INTEGER,
+        cpu INTEGER, cpu_limit INTEGER,
+        cpu_max INTEGER,
+        ncpu INTEGER,
+        mep INTEGER, mep_limit INTEGER,
+        mep_max INTEGER,
+        io INTEGER, io_limit INTEGER,
+        mem INTEGER, mem_limit INTEGER,
+        mem_max INTEGER,
+        mem_fault INTEGER, mep_fault INTEGER,
+        created TIMESTAMP, weight INTEGER, server_id CHAR(10),
+        lmemphy INTEGER, memphy INTEGER, memphy_max INTEGER, memphy_fault INTEGER,
+        lnproc INTEGER, nproc INTEGER, nproc_max INTEGER, nproc_fault INTEGER,
+        lcpuw INTEGER, io_max INTEGER,
+        iops INTEGER, liops INTEGER, iops_max INTEGER );
+CREATE INDEX idx_history_id ON history(id);
+CREATE INDEX idx_history_created ON history(created);
+CREATE INDEX idx_history_weight ON history(weight);
+CREATE INDEX idx_history_server_id ON history(server_id);
+CREATE TABLE last_run (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
+CREATE TABLE users (server_id CHAR(10), id INTEGER, username CHAR(20));
+CREATE INDEX idx_users_server_id ON users(server_id);
+CREATE INDEX idx_users_id ON users(id); 
+
+CREATE TABLE history_gov ( ts INTEGER,
+                           username CHAR(64),
+                           max_simultaneous_requests INTEGER,
+                           sum_cpu FLOAT,
+                           sum_write FLOAT,
+                           sum_read FLOAT,
+                           number_of_iterations INTEGER,
+                           max_cpu FLOAT,
+                           max_write FLOAT,
+                           max_read FLOAT,
+                           number_of_restricts INTEGER,
+                           limit_cpu_on_period_end INTEGER,
+                           limit_read_on_period_end INTEGER,
+                           limit_write_on_period_end INTEGER,
+                           cause_of_restrict INTEGER,
+                           weight INTEGER,
+                           server_id char(10)); 
+
+CREATE INDEX idx_history_gov_ts ON history_gov(ts);
+CREATE INDEX idx_history_gov_cause_of_restrict ON history_gov(cause_of_restrict);
+CREATE INDEX idx_history_gov_number_of_restricts ON history_gov(number_of_restricts); 
+CREATE INDEX idx_history_gov_max_simultaneous_requests ON history_gov(max_simultaneous_requests);
+CREATE INDEX idx_history_gov_server_id ON history_gov(server_id);
+CREATE INDEX idx_history_gov_weight ON history_gov(weight);
+
+CREATE TABLE last_run_gov (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
+
+
+* Execute following SQL command for each remote server for which you want to store
+statistics in this database (make sure you substitute _SERVER_NAME_ with the same
+servername as used in lvestats config file on remote server: 
+
+INSERT INTO last_run(hourly, daily, server_id, lve_version) VALUES (UTC_TIMESTAMP(), UTC_TIMESTAMP(), '_SERVER_NAME_', 4);
+```
+</div>
+
+On each server edit file <span class="notranslate">`/etc/sysconfig/lvestats`</span> & <span class="notranslate">`/etc/sysconfig/lvestats.readonly`</span> as follows:
+
+<div class="notranslate">
+
+```
+db_type = mysql
+connect_string = host:database:user:password
+server_id = _SERVER_NAME_
+db_port = _port_
+```
+</div> 
+
+:::tip Note
+lvestats.readonly should have a user that has read only access to all tables from lvestats database.
+:::
+
+:::tip Note
+_SERVER_NAME_ should be at most 10 characters
+:::
+
+:::tip Note
+db_port is an optional parameter. Default port would be used.
+:::
+
+Select server responsible for compacting database on regular bases by setting <span class="notranslate">`COMPACT=master`</span> in <span class="notranslate">`/etc/sysconfig/lvestats`</span> for that server. Set <span class="notranslate"> COMPACT=slave </span> on all other servers.
+
+Make sure that <span class="notranslate">`/etc/sysconfig/lvestats`</span> is readable only by <span class="notranslate">`root (chmod 600 /etc/sysconfig/lvestats), lvestats.readonly`</span> should be readable by anyone
+
+Restart service:
+
+<div class="notranslate">
+
+```
+service lvestats restart
+```
+</div>
+
+If you use central database to store lvestats data, on each server, execute:
+
+<div class="notranslate">
+
+```
+/usr/share/lve-stats/save_users_to_database.py 
+```
+</div>
+
+You just need to execute it once, as it will be later executed via <span class="notranslate"> cron job </span> . That script will store usernames from each server, so that lve-stats would later be able to correctly identify each user.
+
+**Updating MySQL & PostgreSQL schema for lve-stats 0.8+**
+
+If you are using MySQL or PostgreSQL server for lve-stats older then 0.8, make sure to do the following steps to upgrade to latest version:
+
+Stop lvestats service on all your servers.
+
+Connect to your database server, and execute following commands:
+
+<div class="notranslate">
+
+```
+ALTER TABLE history ADD lmemphy INTEGER;
+ALTER TABLE history ADD memphy INTEGER;
+ALTER TABLE history ADD memphy_max INTEGER;
+ALTER TABLE history ADD memphy_fault INTEGER;
+ALTER TABLE history ADD lnproc INTEGER;
+ALTER TABLE history ADD nproc INTEGER;
+ALTER TABLE history ADD nproc_max INTEGER;
+ALTER TABLE history ADD nproc_fault INTEGER;
+ALTER TABLE history ADD lcpuw INTEGER;
+ALTER TABLE history ADD io_max INTEGER;
+UPDATE history SET lmemphy = 0, memphy = 0, memphy_max = 0, memphy_fault = 0,
+       lnproc = 0, nproc = 0, nproc_max = 0, nproc_fault = 0,
+       lcpuw = 0, io_max = 0;
+
+ALTER TABLE last_run ADD lve_version INTEGER;
+UPDATE last_run SET lve_version = 4;
+CREATE TABLE last_run_gov (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
+```
+</div>
+To upgrade scheme to support <span class="notranslate"> MySQL Governor: </span>
+
+<div class="notranslate">
+
+```
+CREATE TABLE history_gov ( ts INTEGER,
+    username char(64),
+    max_simultaneous_requests INTEGER,
+    sum_cpu float,
+    sum_write float,
+    sum_read float,
+    number_of_iterations INTEGER,
+    max_cpu float,
+    max_write float,
+    max_read float,
+    number_of_restricts INTEGER,
+    limit_cpu_on_period_end INTEGER,
+    limit_read_on_period_end INTEGER,
+    limit_write_on_period_end INTEGER,
+    cause_of_restrict INTEGER,
+    server_id char(10));
+
+CREATE INDEX idx_history_gov_ts ON history_gov(ts);
+CREATE INDEX idx_history_gov_cause_of_restrict ON history_gov(cause_of_restrict);
+CREATE INDEX idx_history_gov_number_of_restricts ON history_gov(number_of_restricts);
+CREATE INDEX idx_history_gov_max_simultaneous_requests ON history_gov(max_simultaneous_requests);
+CREATE INDEX idx_history_gov_server_id ON history_gov(server_id);
+```
+</div>
+Upgrading from lve-stats &lt; 0.9-20:
+
+<div class="notranslate">
+
+```
+ALTER TABLE history_gov ADD weight INTEGER;
+CREATE INDEX idx_history_gov_weight ON history_gov(weight);
+CREATE TABLE last_run_gov (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
+```
+</div>
+Update lve-stats RPM on all your servers.
+
+If you use central database to store lvestats data, execute the following commands:
+
+<div class="notranslate">
+
+```
+CREATE TABLE users (server_id CHAR(10), id INTEGER, username CHAR(20));CREATE INDEX idx_users_server_id ON users(server_id);CREATE INDEX idx_users_id ON users(id);
+```
+</div>
+On each server execute:
+
+<div class="notranslate">
+
+```
+/usr/share/lve-stats/save_users_to_database.py 
+```
+</div>
+
+You just need to execute it once, as it will be later executed via cron job. That script will store usernames from each server, so that lve-stats would later be able to correctly identify each user.
+
+### Storing statistics in PostgreSQL
+
+:::tip Note
+LVE-STATS-0.X IS NO LONGER SUPPORTED, PLEASE USE [LVE-STATS 2](/cloudlinuxos/cloudlinux_os_components/#lve-stats-2)
+:::
+
+You have to install <span class="notranslate">`postgresql-python rpm`</span> to store lve-stats on centralized server.
+
+Run:
+
+<div class="notranslate">
+
+```
+yum install postgresql-python
+```
+</div>
+
+A typical procedure to configure the PostgreSQL database for storing information about multiple servers for lve-stats services looks as follows:
+
+Create a database and a user. You can do it by executing the following commands:
+
+<div class="notranslate">
+
+```
+createdb <database>createuser <user>
+```
+</div>
+Create database schema:
+
+<div class="notranslate">
+
+```
+CREATE TABLE history (id INTEGER,
+        cpu INTEGER, cpu_limit INTEGER,
+        cpu_max INTEGER,
+        ncpu INTEGER,
+        mep INTEGER, mep_limit INTEGER,
+        mep_max INTEGER,
+        io INTEGER, io_limit INTEGER,
+        mem INTEGER, mem_limit INTEGER,
+        mem_max INTEGER,
+        mem_fault INTEGER, mep_fault INTEGER,
+        created TIMESTAMP, weight INTEGER, server_id CHAR(10),
+        lmemphy INTEGER, memphy INTEGER, memphy_max INTEGER, memphy_fault INTEGER,
+        lnproc INTEGER, nproc INTEGER, nproc_max INTEGER, nproc_fault INTEGER,
+        lcpuw INTEGER, io_max INTEGER,
+
+
+
+        iops_max: INTEGER, liops: INTEGER, iops: INTEGER);
+
+CREATE INDEX idx_history_id ON history(id);
+CREATE INDEX idx_history_created ON history(created);
+CREATE INDEX idx_history_weight ON history(weight);
+CREATE INDEX idx_history_server_id ON history(server_id);
+CREATE TABLE last_run (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
+CREATE TABLE users (server_id CHAR(10), id INTEGER, username CHAR(20));CREATE INDEX idx_users_server_id ON users(server_id);
+CREATE INDEX idx_users_id ON users(id);
+
+CREATE TABLE history_gov ( ts INTEGER,
+    username char(64),
+    max_simultaneous_requests INTEGER,
+    sum_cpu float,
+    sum_write float,
+    sum_read float,
+    number_of_iterations INTEGER,
+    max_cpu float,
+    max_write float,
+    max_read float,
+    number_of_restricts INTEGER,
+    limit_cpu_on_period_end INTEGER,
+    limit_read_on_period_end INTEGER,
+    limit_write_on_period_end INTEGER,
+    cause_of_restrict INTEGER,
+    weight INTEGER,
+    server_id char(10));
+
+CREATE INDEX idx_history_gov_ts ON history_gov(ts);
+CREATE INDEX idx_history_gov_cause_of_restrict ON history_gov(cause_of_restrict);
+CREATE INDEX idx_history_gov_number_of_restricts ON history_gov(number_of_restricts);
+CREATE INDEX idx_history_gov_max_simultaneous_requests ON history_gov(max_simultaneous_requests);
+CREATE INDEX idx_history_gov_server_id ON history_gov(server_id);
+CREATE INDEX idx_history_gov_weight ON history_gov(weight);
+
+CREATE TABLE last_run_gov (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
+
+     * Execute following SQL command for each remote server for which you want to store
+      statistics in this database (make sure you substitute _SERVER_NAME_ with the same
+      servername as used in lvestats config file on remote server:
+
+INSERT INTO last_run(hourly, daily, server_id, lve_version) VALUES (now() AT TIME ZONE 'UTC', now() AT TIME ZONE 'UTC', '_SERVER_NAME_', 4);
+```
+</div>
+On each server edit file <span class="notranslate">`/etc/sysconfig/lvestats`</span> and <span class="notranslate">`/etc/sysconfig/lvestats`</span> as follows:
+
+<div class="notranslate">
+
+```
+db_type = postgresql
+connect_string = host:database:user:password
+server_id = _SERVER_NAME_db_port = _port_
+```
+</div>   
+
+:::tip Note
+lvestats.readonly should have a user that has read only access to history table.
+:::
+
+:::tip Note
+_SERVER_NAME_ should be at most 10 characters
+:::
+
+:::tip Note
+db_port is optional, default PostgreSQL port will be used
+:::
+
+Select server responsible for compacting database on regular bases by setting <span class="notranslate"> COMPACT=master </span> in <span class="notranslate"> /etc/sysconfig/lvestats </span> for that server. Set <span class="notranslate"> COMPACT=slave </span> on all other servers.
+
+Make sure that <span class="notranslate"> /etc/sysconfig/lvestats </span> is readable only by <span class="notranslate"> root (chmod 600 /etc/sysconfig/lvestats), lvestats.readonly </span> should be readable by anyone.
+
+Restart service:
+
+<div class="notranslate">
+
+```
+service lvestats restart
+```
+</div>
+If you use central database to store lvestats data, on each server, execute:
+
+<div class="notranslate">
+
+```
+/usr/share/lve-stats/save_users_to_database.py 
+```
+</div>
+You just need to execute it once, as it will be later executed via <span class="notranslate"> cron job </span> . That script will store usernames from each server, so that lve-stats would later be able to correctly identify each user.
+
+You are done!
+
+
+### Compacting in multi-server settings
+
+:::tip Note
+LVE-STATS-0.X IS NO LONGER SUPPORTED, PLEASE USE [LVE-STATS 2](/cloudlinuxos/cloudlinux_os_components/#lve-stats-2)
+:::
+
+[lve-stats 0.10+]
+
+When you have multiple servers storing LVE statistics to a central database, then you will need to pick one server responsible for compacting data.
+
+On that server, edit file: <span class="notranslate">`/etc/sysconfig/lvestats`</span> and change the option <span class="notranslate">`COMPACT`</span> to <span class="notranslate">`master`</span>.
+
+On all other servers, change that option to <span class="notranslate">`slave`</span>.
+
+Default: <span class="notranslate">`single`</span> – should be used when lve-stats stores data to a single database.
+
+## OptimumCache
+
+:::tip Note
+OPTIMUMCACHE IS NO LONGER SUPPORTED.
+:::
+
+**OptimumCache 0.2+**
+
+OptimumCache is a de-duplicating file cache optimized specifically for shared hosting. Typical shared hosting server runs a number of sites with WordPress and Joomla as well as other popular software. This usually means that there are hundreds of duplicate files that are constantly being read into file cache - both wasting precious disk <span class="notranslate"> IO </span> operations as well as memory. OptimumCache creates a cache of such duplicated files and de-duplicates file cache.
+![](/images/cloudlinuxos/deprecated/embim1.webp)
+
+With OptimumCache, if a duplicate of an already loaded file is requested, the file gets loaded from filesystem cache. By doing that, system bypasses disk IO, significantly improving the speed of reading that file, while lowering load on the hard disk. As the file had been read from disk just once, it is cached by filesystem cache just once, minimizing amount of duplicates in file system cache and improving overall cache efficiency. This in turn reduces memory usage, decreases the number of disk operations - all while improving the websites response time.
+
+
+### Installation
+
+* [Requirements](./#requirements)
+* [Installation](./#installation-2)
+
+:::tip NOTE
+OPTIMUMCACHE IS NO LONGER SUPPORTED
+:::
+
+#### Requirements
+
+* 64bit CloudLinux OS 6.x or higher
+* ext4 filesystem
+* kernel lve1.2.55 or later.
+
+#### Installation
+
+<div class="notranslate">
+
+```
+yum install optimumcache
+```
+</div>
+
+OptimumCache must be provided with list of directories to expect duplicate files be in:
+
+* <span class="notranslate">`# occtl --recursive --mark-dir /home`</span>
+* <span class="notranslate">`# occtl --recursive --mark-dir /home2`</span> (for cPanel)
+* <span class="notranslate">`# occtl --recursive --mark-dir /var/www`</span> (for Plesk)
+
+OptimumCache is going to index these directories. Thus system load during this period (from hours to days) might be as twice as high. See [Marking directories](./#marking-directories).
+
+**Allocating Disk Space for OptimumCache:**
+
+By default OptimumCache will attempt to setup 5GB ploop (high efficiency loopback disk) to be used for the cache in <span class="notranslate">`/var/share/optimumcache/optimumcache.image`</span>
+
+That ploop will be mounted to: <span class="notranslate">`/var/cache/optimumcache`</span>
+
+The ploop image will be located at <span class="notranslate">`/var/share/optimumcache/optimumcache.image`</span>
+
+Allocating OptimumCache disk space for ploop on a fast drives (like SSD) will provide additional performance improvement as more duplicated files would be loaded from fast disks into memory.
+
+**Moving ploop image to another location:**
+
+<div class="notranslate">
+
+```
+occtl --move-ploop /path/to/new/image/file [new size[KMGT]]
+```
+</div>
+
+`/path/to/new/image/file` must be file path + file name, not a directory name.
+
+Example:
+
+<div class="notranslate">
+
+```
+occtl --move-ploop /var/ssh/optimumcache.image
+```
+</div>
+
+If <span class="notranslate">`new size`</span> is not mentioned, then value from <span class="notranslate">`/etc/sysconfig/optimumcache`</span> is used. If <span class="notranslate">`/etc/sysconfig/optimumcache`</span> does not mention anything regarding ploop image size, then default 5GB is used.
+
+**Enabling and disabling ploop:**
+
+To turn on ploop:
+
+<div class="notranslate">
+
+```
+occtl --init-ploop
+```
+</div>
+
+To disable ploop:
+
+<div class="notranslate">
+
+```
+occtl --disable-ploop
+```
+</div>
+
+If ploop image has been mounted in <span class="notranslate">`/etc/fstab`</span> for OpimumCache-0.1-21 and earlier, you may consider removing this fstab entry in OpimumCache 0.2+. That is because since 0.2+ ploop is mounted automatically at service start.
+
+If you prefer leave that fstab mount point as is, you may see some warnings when you decide to move ploop later via <span class="notranslate">`occtl --move-ploop`</span>.
+
+**Resizing ploop:**
+
+To resize ploop:
+
+<div class="notranslate">
+
+```
+occtl --resize-ploop [new size[KMGT]]
+```
+</div>
+
+A common reason for resizing ploop is reacting to OptimumCache syslog message like <span class="notranslate">“OptimumCache recommends cache storage size to be at least … GB”</span>.
+
+**Deleting ploop:**
+
+<div class="notranslate">
+
+```
+occtl --delete-ploop
+```
+</div>
+
+For the case when this action cannot be completed due to <span class="notranslate">“Unable unmount ploop”</span> issue, there is a workaround in “Troubleshooting” section.
+
+Q. I created/resized/moved/deleted ploop. Do I need to rerun the initial mark process?
+
+А. Not needed.
+
+### Using without ploop
+
+:::tip Note
+OPTIMUMCACHE IS NO LONGER SUPPORTED
+:::
+
+On servers with kernel prior to lve1.2.55 ploop will not be used (due to ploop related issues in the kernel). Instead cached files will be stored in <span class="notranslate">`/var/cache/optimumcache`</span>.
+
+The cache will be cleaned (shrunk) by 20% once partition on which <span class="notranslate">`OPTIMUMCACHE_MNT`</span> resides has only 10% of free space. You can change that by changing <span class="notranslate">`PURGEAHEAD`</span> param in <span class="notranslate">`/etc/sysconfig/optimumcache`</span>, and restarting optimumcache service.
+
+The cache is cleaned <span class="notranslate">`/etc/cron.d/optimumcache_cron`</span> script optimumcache_purge, which runs every minute:
+
+<div class="notranslate">
+
+```
+0-59 * * * * root /usr/share/optimumcache/optimumcache_purge
+```
+</div>
+
+### Marking directories
+
+:::tip Note
+OPTIMUMCACHE IS NO LONGER SUPPORTED
+:::
+
+**Marking directories to be cached:**
+
+<div class="notranslate">
+
+```
+occtl --mark-dir /path/to/site/on/filesystem --recursive
+```
+</div>
+
+In common scenario admin marks for caching user directories:
+
+<div class="notranslate">
+
+```
+occtl --mark-dir /home /home2 /home3 --recursive
+```
+</div>
+
+OptimumCache is going to index these directories. Thus system load during this period (from hours to days) might be as twice as high. You can check indexing job status with <span class="notranslate">`at -l`</span> at any time.
+
+**Ignoring particular files & directories:**
+
+OptimumCache tracks files & directories that need to be cached. Once file is modified, it will no longer be tracked by OptimumCache (as there is very little chance that it will have a duplicate). Yet, all new files created in tracked directories are checked for duplicates.
+
+Sometimes you might want to ignore such checks for directories where large number of temporary or new files are created, that will not have duplicates - as such checks are expensive. Directories like mail queue, and tmp directories should be ignored.
+
+You can set a regexp mask for directories that you would like to ignore using:
+
+<div class="notranslate">
+
+```
+occtl --add-skip-mask REGEX
+```
+</div>
+
+To list skip masks:
+
+<div class="notranslate">
+
+```
+occtl --list-skip-mask
+```
+</div>
+
+To remove skip mask:
+
+<div class="notranslate">
+
+```
+occtl --remove-skip-mask ID\|Tag
+```
+</div>
+
+At the very end, for those changes to take effect:
+
+<div class="notranslate">
+
+```
+occtl --check
+```
+</div>
+
+<span class="notranslate">`occtl --check`</span> is the same lengthy operation as <span class="notranslate">`marking`</span> is. Thus, it’s usage has to be sane, especially for big <span class="notranslate">`home`</span> (>500G).
+
+By default, OptimumCache sets up following skip masks:
+
+| |  | |
+|-|--|-|
+|id | tag | regex|
+|1 | <span class="notranslate">`all_dot_files`</span> | <span class="notranslate">`/\...*`</span>|
+|2 | <span class="notranslate">`cagefs`</span> | <span class="notranslate">`^/home/cagefs-skeleton$`</span>|
+|3 | <span class="notranslate">`cagefs`</span> | <span class="notranslate">`^/home/cagefs-skeleton/`</span>|
+|4 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/cPanelInstall`</span>|
+|5 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/cpeasyapache`</span>|
+|6 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/aquota`</span>|
+|7 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/jailshell`</span>|
+|8 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/mail$`</span>|
+|9 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/mail/.*`</span>|
+|10 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/logs$`</span>|
+|11 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/logs/.*`</span>|
+|12 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/\.cpanel$`</span>|
+|13 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/\.cpanel/.*`</span>|
+|14 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/\.cagefs`</span>|
+|15 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/\.cagefs/.*`</span>|
+|16 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/virtfs`</span>|
+|17 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/virtfs/.*`</span>|
+|18 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/tmp/`</span>|
+|19 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/tmp$`</span>|
+|20 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/ftp/`</span>|
+|21 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/ftp$`</span>|
+|22 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/admin/`</span>|
+|23 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/admin$`</span>|
+|24 | <span class="notranslate">`quota`</span> | <span class="notranslate">`^/home[^/]*/quota.user$`</span>|
+|25 | <span class="notranslate">`usermisc`</span> | <span class="notranslate">`/quota.user$`</span>|
+|26 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/backups$`</span>|
+|27 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/backups/`</span>|
+|28 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/imap$`</span>|
+|29 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/imap/`</span>|
+|30 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/Maildir$`</span>|
+|31 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/Maildir/`</span>|
+|32 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/logs$`</span>|
+|33 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/logs/`</span>|
+|34 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/public_ftp$`</span>|
+|35 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/public_ftp/`</span>|
+|36 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/stats$`</span>|
+|37 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/stats/`</span>|
+
+This information is stored in <span class="notranslate">`/etc/container/optimumcache/ignore.d/`</span>.
+
+**Skip mask syntax**
+
+Skip masks use following regexp syntax: [http://www.greenend.org.uk/rjk/tech/regexp.html](http://www.greenend.org.uk/rjk/tech/regexp.html)
+
+For example, to disable caching all directories that contain <span class="notranslate">`*/cache/*`</span>, you should use skip masks like:
+
+<div class="notranslate">
+
+```
+/cache/
+/cache$
+```
+</div>
+
+This information is stored in <span class="notranslate">`/etc/container/optimumcache/ignore.d/`</span>
+
+
+### OptimumCache configuration file
+
+:::tip Note
+OPTIMUMCACHE IS NO LONGER SUPPORTED
+:::
+
+<span class="notranslate">`/etc/sysconfig/optimumcache`</span>
+
+<div class="notranslate">
+
+```
+OPTIMUMCACHE_MNT=/var/cache/optimumcache
+
+ 
+# Valency to cache
+
+COUNT=0
+
+ 
+# Minimal file size to cache, default - cache all files
+
+# MINSIZE=0
+
+ 
+# Minimal page number in file to start caching, default - 1
+
+PAGEMIN=0
+
+ 
+# Maximum file size to cache, 10485760 (10MB) by default
+
+# MAXSIZE
+
+ 
+# Interval between caching attempts, default - 5 seconds
+
+# TIMEOUT=7
+
+ 
+# Adaptive timeout upper limit (seconds)
+
+# MAXTIMEOUT=160
+
+ 
+# Adaptive timeout multiplicator and divisor
+
+# TIMEOUT_INCR_MUL=2
+
+# TIMEOUT_DECR_DIV=4
+
+ 
+# Buffer size in KB for 'optimumcache dump', default is 32MB
+
+# DUMP_BUFFER_SIZE=32000
+
+ 
+# Extra space in %% of requested to purge, default 20%
+
+# PURGEAHEAD=20
+
+ 
+# Experimental: Eliminate frequent sync to address IO performance
+
+NOIMMSYNC=1
+
+ 
+# Logging verbosity, default - 1, verbose
+
+# LOGLEVEL=1
+
+ 
+# occtl --mark-dir or --check operations IO limit, MB/s, default is 5 MB/s
+
+# OCCTL_LVE_IO_LIMIT=5
+
+ 
+# occtl --mark-dir or --check operations %cpu limit, default is 50% of one CPU core
+
+# OCCTL_LVE_SPEED_LIMIT=50
+
+ 
+# Lve ID to associate limits with
+
+# LVEID=5
+
+ 
+# Collect perf statistics in /var/log/optimumcache_perf. Default is enabled.
+
+# PERF_LOG_ENABLED=1
+```
+</div>
+
+### Command-line interface
+
+:::tip Note
+OPTIMUMCACHE IS NO LONGER SUPPORTED
+:::
+
+OptimumCache is controlled using <span class="notranslate">`occtl`</span> command line utility.
+
+**Usage:**
+
+<div class="notranslate">
+
+```
+occtl.py    [-h] [--move-ploop param [param ...]] [--check] [--verbose]
+
+            [--init-ploop [param [param ...]]] [--resize-ploop New Size]
+
+            [--disable-ploop] [--enable-ploop] [--mount-ploop]
+
+            [--unmount-ploop] [--delete-ploop] [--unmark-all]
+
+            [--mark-dir Path [Path ...]] [--unmark-dir Path [Path ...]]
+
+            [--recursive]  [--add-skip-mask Regex]
+
+            [--remove-skip-mask Id|Tag] [--list-skip-mask] [--silent]
+
+            [--ignore-unmount-failure] [--no-lve-limits] [--foreground]
+
+            [--ploop-status] [--remount-cached-points] [--purge]
+
+            [--cancel-pending-jobs] [--report [Period]]
+
+            [--recommend-minmax-size]
+```
+</div>
+
+Display numbers/percents of cached files:
+
+<div class="notranslate">
+
+```
+optimumcache stat
+```
+</div>
+
+or
+
+<div class="notranslate">
+
+```
+optimumcache stat /home
+```
+</div>
+
+To display statistic for specific mount. In depth display what is being held in cache:
+
+<div class="notranslate">
+
+```
+optimumcache dump [--resolve-filenames] [mount]
+```
+</div>
+
+The option <span class="notranslate">`--resolve-filenames`</span> is experimental and may not apply to all output cached entries.
+
+Optional Arguments:
+
+| | |
+|-|-|
+|<span class="notranslate">`-h`</span>, <span class="notranslate">`--help`</span>|Show this help message and exit.|
+|<span class="notranslate">`--move-ploop param [param ...]`</span>|Move cache from one ploop image to <span class="notranslate">`/path/to/new/image/location [New Size[KMGT]]`</span>.
+|<span class="notranslate">`--check`</span>|Check marked files for errors. This task is scheduled as background job, unless <span class="notranslate">`--foreground`</span> is specified.|
+|<span class="notranslate">`--verbose`</span>|List what is being checked.|
+|<span class="notranslate">`--init-ploop [param [param ...]]`</span>|Create ploop image for the cache <span class="notranslate">`[/path/to/ploop/image [ploop_size] \| ploop_size]`</span> - if only one parameter is given, it is considered to be ploop size. Size should be a <span class="notranslate">`NUMBER[KMGT]`</span>.|
+|<span class="notranslate">`--resize-ploop New Size`</span>|New Size NUMBER[KMGT].|
+|<span class="notranslate">`--disable-ploop`</span>|Disable ploop.|
+|<span class="notranslate">`--enable-ploop`</span>|Enable ploop.|
+|<span class="notranslate">`--mount-ploop`</span>|Mount ploop image.|
+|<span class="notranslate">`--unmount-ploop`</span>|Unmount ploop image.|
+|<span class="notranslate">`--delete-ploop`</span>|Delete ploop image. Implies disable ploop, if was enabled.|
+|<span class="notranslate">`--unmark-all`</span>|Unmark all marked directories.|
+|<span class="notranslate">`--mark-dir Path [Path ...]`</span>|Mark directory for caching.This task is scheduled as background job, unless <span class="notranslate">`--foreground`</span> is specified.|
+|<span class="notranslate">`--unmark-dir Path [Path ...]`</span>|Unmark directory for caching.|
+|<span class="notranslate">`--recursive`</span>|Is used with mark/unmark dir.|
+|<span class="notranslate">`--add-skip-mask Regex`</span>|Regexp to skip files/directories for caching.|
+|<span class="notranslate">`--remove-skip-mask Id\|Tag`</span>|Remove regexp to skip files/directories by id or tag.|
+|<span class="notranslate">`--list-skip-mask`</span>|List regexp to skip files/directories.|
+|<span class="notranslate">`--silent`</span>|Do not echo status to stdout/syslog.|
+|<span class="notranslate">`--ignore-unmount-failure`</span>|Ignore cannot unmount ploop problem.|
+|<span class="notranslate">`--no-lve-limits`</span>|Ignore default LVE limits for <span class="notranslate">`--mark-dir`</span> and <span class="notranslate">`--check`</span> commands. Also implies --foreground.|
+|<span class="notranslate">`--foreground`</span>|Don't spawn <span class="notranslate">`--mark-dir`</span> and <span class="notranslate">`--check`</span> commands in background.|
+|<span class="notranslate">`--ploop-status`</span>|Check if ploop is mounted.|
+|<span class="notranslate">`--purge`</span>|Purge cache storage (takes some time).|
+|<span class="notranslate">`--cancel-pending-jobs`</span>|Cancel <span class="notranslate">`--mark-dir`</span> and <span class="notranslate">`--check`</span> commands if were queued or are being run in background.|
+|<span class="notranslate">`--report [Period]`</span>|Report statistics for Period (hourly|daily|weekly|monthly).|
+
+
+### cloudlinux-collect: collect system load statistics
+
+* [cloudlinux-collectl: quick start](./#cloudlinux-collectl-quick-start)
+* [Install](./#install)
+* [Measure web site response time](./#measure-web-site-response-time)
+* [To watch what is being collected](./#to-watch-what-is-being-collected)
+* [Statistics being collected in details](./#statistics-being-collected-in-details)
+* [Statistics manual configuration](./#statistics-manual-configuration)
+* [Running statistics daemon: collectl-cloudlinux](./#running-statistics-daemon-collectl-cloudlinux)
+* [Analyzing the results](./#analyzing-the-results)
+
+:::tip Note
+OPTIMUMCACHE IS NO LONGER SUPPORTED
+:::
+
+#### cloudlinux-collectl: quick start
+
+Installing this package automatically starts system load statistics collection in background. cloudlinux-collectl package has no strict dependency on OptimumCache, thus the statistics is collected regardless of whether OptimumCache is installed or not. The aim of having this package pre-installed is to compare system performance before and after installing OptimumCache, thus to measure OptimumCache effectiveness.
+
+#### Install
+
+<div class="notranslate">
+
+```
+yum install cloudlinux-collect --enablerepo=cloudlinux-updates-testing
+```
+</div>
+
+:::tip Note
+cloudlinux-collectl will be installed automatically on optimumcache upgrade to 0.2-23
+:::
+
+#### Measure web site response time
+
+cloudlinux-collectl can monitor response time for a configurable set of URLs.
+
+Start monitoring new URL:
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --addurl <alias> <http://url
+```
+</div>
+
+Example:
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --addurl localhost http://127.0.0.1/index.php
+```
+</div>
+
+Try <span class="notranslate">`cloudlinux-collectl --help`</span> for more options.
+
+#### To watch what is being collected
+
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --test
+```
+</div>
+
+Actual logs are compressed with gzip and kept in <span class="notranslate">`/var/log/optimumcache/collectl`</span> directory.
+
+#### Statistics being collected in details
+
+To monitor what statistics are being collected, try command:
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --test
+```
+</div>
+
+![](/images/cloudlinuxos/deprecated/optimumcachecollect_zoom93.webp)
+
+Along with common statistics blocks as <span class="notranslate">CPU</span> , disk usage, <span class="notranslate">inodes</span> cached, there are two blocks of data to watch how effectively OptimumCache is functioning.
+
+<span class="notranslate">`OPTIMUMCACHE DETAIL`</span> refers to data, which is similar to output of command
+
+<div class="notranslate">
+
+```
+optimumcache stat
+```
+</div>
+
+<div class="notranslate">
+
+```
+csums:          4964 (99.9%)
+
+             fetched        uncached            cached
+
+inodes:          4967            31               4936    (99.4%)
+
+size:          204177          131072           73104     (35.8%)
+
+RAM:                8              4                4     (50.0%)
+```
+</div>
+
+Particularly, the last column percent numbers shall match.
+
+The next goes <span class="notranslate">`URLSTATTRACKER DETAIL`</span> block with url response time in milliseconds. Negative values here may pop up unexpectedly. Negative numbers are not milliseconds, but signal about http error response code for that specific url. For instance, -403 will signal for <span class="notranslate">`Forbidden`</span> http error. As for -500 value, it signals not only for <span class="notranslate">`Internal Server Error`</span>, but can be displayed, when there is connection problem with the server, which is specified by the url.
+
+#### Statistics manual configuration
+
+<span class="notranslate">`URLSTATTRACKER DETAIL`</span> is the only statistics, which requires manual configuration. Upon clean installation, it has only <span class="notranslate">`url_localhost`</span> preconfigured:
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --info
+```
+</div>
+
+<div class="notranslate">
+
+```
+url shortname            url
+
+--------------------         ---
+
+localhost                 http://localhost/
+```
+</div>
+
+
+To add another URL for monitoring:
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --addurl alt http://192.168.0.102/
+```
+</div>
+
+To display URLs being monitored list:
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --info
+```
+</div>
+
+<div class="notranslate">
+
+```
+url shortname          url
+
+--------------------          ---
+
+alt                        http://192.168.0.102/
+
+localhost                  http://localhost/
+```
+</div>
+
+
+
+To skip URL from being tracked run command:
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --skip <url short name>
+```
+</div>
+
+#### Running statistics daemon: collectl-cloudlinux
+
+cloudlinux-collectl has got collectl package as a dependency. Initd script <span class="notranslate">`/etc/init.d/cloudlinux-collectl`</span> will automatically bring up another instance of collectl named <span class="notranslate">`collectl-optimumcache`</span> . collectl-optimumcache daemon instance has a separate config and does not interfere with other running pre-configure collectl daemon (if any).
+
+As it was mentioned, collectl-optimumcache daemon starts automatically on package install, then on server restart events, kicked by regular Initd script <span class="notranslate">`/etc/init.d/cloudlinux-collectl`</span>. Thus, checking the daemon status, stop, restart is trivial:
+
+<div class="notranslate">
+
+```
+service cloudlinux-collect status  
+
+collectl-optimumcache (pid  1745) is running…
+```
+</div>
+
+To start /stop:
+
+<div class="notranslate">
+
+```
+service cloudlinux-collect < start | stop >
+```
+</div>
+
+#### Analyzing the results
+
+The statistics is being collected into files named <span class="notranslate">`%hostname%-%datetime%.raw.gz`</span> under directory <span class="notranslate">`/var/log/cloudlinux-collect`</span>.
+
+To convert those info format suitable for loading into Excel, LibreOffice Calc, another data mining tool, run the command:
+
+<div class="notranslate">
+
+```
+cloudlinux-collect --genplotfiles
+```
+</div>
+
+<div class="notranslate">
+
+```
+Generate fresh plot files in
+
+         /var/log/cloudlinux-collect/plotfiles
+
+ ```
+ </div>
+
+
+### Uninstall OptimumCache
+
+:::tip Note
+OPTIMUMCACHE IS NO LONGER SUPPORTED
+:::
+
+To uninstall OptimumCache, run:
+
+<div class="notranslate">
+
+```
+service optimumcache stop
+occtl --delete-ploop
+:>/var/share/optimumcache_store
+yum remove optimumcache
+```
+</div>
+
+If available, reboot server
+
+After the reboot <span class="notranslate">`pfcache= mount`</span> options will disappear by themselves.
+
+For OptimumCache version prior 0.2-11, uninstalling via rpm package manager does not automatically removes away ploop image. That is because not always possible to unmount it properly due to kernel dependency. If there is no luck with unmounting ploop, then the server will have to be rebooted and will need to remove ploop files manually:
+
+<div class="notranslate">
+
+```
+rm /var/share/optimumcache/optimumcache.image
+rm /var/share/optimumcache/DiskDescriptor.xml
+rm /var/share/optimumcache/DiskDescriptor.xml.lck
+```
+</div>
+ or
+
+<div class="notranslate">
+
+```
+rm /path/to/ploop/image/file
+rm /path/to/ploop/image/DiskDescriptor.xml
+rm /path/to/ploop/image/DiskDescriptor.xml.lck
+```
+</div>
+
+For OptimumCache version 0.2-11 and later, ploop image will be removed automatically during uninstall. If ploop unmount issue prevents doing that, ploop image clean up will be scheduled after next server reboot.
+
+If uninstall OptimumCache process lasts for too long, please find the solution in Troubleshooting section of this document.
+
+
+### Troubleshooting
+
+* [Installing for FS is different from Ext4](./#installing-for-fs-is-different-from-ext4)
+* [Yum fails to install Perl rpms coming with OptimumCache](./#yum-fails-to-install-perl-rpms-coming-with-optimumcache)
+* [OptimumCache prior 0.2-23: Cannot unmount old ploop image](./#optimumcache-prior-0-2-23-cannot-unmount-old-ploop-image)
+* [High IO rate](./#high-io-rate)
+* [High CPU utilization](./#high-cpu-utilization)
+* [Uninstalling OptimumCache lasts for too long](./#uninstalling-optimumcache-lasts-for-too-long)
+* [‘Failed to attach peer: Invalid argument’ appears in syslog](./#‘failed-to-attach-peer-invalid-argument’-appears-in-syslog)
+
+:::tip Note
+OPTIMUMCACHE IS NO LONGER SUPPORTED
+:::
+
+#### Installing for FS is different from Ext4
+
+For now Ext4 is the only supported file system type. If a host has no Ext4 filesystem mounted, OptimumCache package installation will be abandoned:
+
+<div class="notranslate">
+
+```
+Preparing packages for installation...
+Cannot continue: Ext4 partition is the only supported by OptimiumCache, there is no one in fstab
+error: %pre(optimumcache-0.1-22.el6.cloudlinux.x86_64) scriptlet failed, exit status 1
+error:   install: %pre scriptlet failed (2), skipping
+```
+</div>
+
+Also, an attempt to add for caching directory, which does not reside on Ext4, will fail:
+
+<div class="notranslate">
+
+```
+occtl --mark-dir /home --recursive
+
+mount: / not mounted already, or bad option
+optimumcache: Can not mount device. rc[8192]
+Error: mark[1]: /usr/bin/optimumcache mark --recursive /home
+```
+</div>
+
+#### Yum fails to install Perl rpms coming with OptimumCache
+
+If got this error with <span class="notranslate">`yum install optimumcache`</span>
+
+<div class="notranslate">
+
+```
+Error: Package: cloudlinux-collect-0.1-6.el6.noarch (cloudlinux-x86_64-server-6)
+
+Requires: perl(Config::Tiny)
+
+Error: Package: cloudlinux-collect-0.1-6.el6.noarch (cloudlinux-x86_64-server-6)
+
+Requires: perl(IO::Socket::SSL)
+
+Error: Package: cloudlinux-collect-0.1-6.el6.noarch (cloudlinux-x86_64-server-6)
+
+Requires: perl(YAML::Tiny)
+
+Error: Package: cloudlinux-collect-0.1-6.el6.noarch (cloudlinux-x86_64-server-6)
+
+Requires: perl(IPC::Run)
+
+You could try using --skip-broken to work around the problem
+
+You could try running: rpm -Va --nofiles --nodigest
+```
+</div>
+
+Most probably you have excluded <span class="notranslate">`perl*`</span> packages in <span class="notranslate">`/etc/yum.conf`</span> file, in this case to install OptimumCache run:
+
+<div class="notranslate">
+
+```
+yum install optimumcache --disableexcludes=all
+```
+</div>
+
+#### OptimumCache prior 0.2-23: Cannot unmount old ploop image
+
+This is well-known ploop problem, which may result in failing such actions as resizing or moving ploop in OptimumCache. To workaround this problem use <span class="notranslate">`--ignore-unmount-failure`</span> with <span class="notranslate">`--move-ploop`</span>
+
+<div class="notranslate">
+
+```
+occtl --move-ploop --ignore-unmount-failure
+```
+</div>
+
+As for resizing ploop, use flavor of <span class="notranslate">`--move-ploop`</span> command instead:
+
+<div class="notranslate">
+
+```
+occtl --move-ploop /path/to/new/image/file [size GB] --ignore-unmount-failure
+```
+</div>
+
+For your changes to take effect, the server has to be rebooted. Upon reboot, you may clean up manually old ploop image file and <span class="notranslate">`DiskDescriptor.xml`</span> file, which resides in the same directory along with old image.
+
+#### High IO rate
+
+High <span class="notranslate">IO</span> problem was fixed in latest version of OptimumCache (version 0.2-6). The fix is to eliminate <span class="notranslate">`superflows fsync()`</span> calls in OptimumCache operations. To activate this fix in existing installation, flag <span class="notranslate">`NOIMMSYNC=1`</span> has to be manually set in <span class="notranslate">`/etc/syscoconfig/optimumcache`</span>.
+
+To ensure that this parameter is set <span class="notranslate">`ON`</span> in the config, set <span class="notranslate">`LOGLEVEL=2`</span> and execute <span class="notranslate">`service optimumcache restart`</span>. You will see something like this:
+
+<div class="notranslate">
+
+```
+optimumcache[1770]: Hash-size: 100000000 min-size: 0 max-size: 18446744071562067968
+optimumcache[1770]: Count: 0 Timeout: 5
+optimumcache[1770]: Max Timeout: 160 Adaptive Timeout Mul/Div: 2/4
+optimumcache[1770]: Iolimit: 0 iopslimit: 0
+optimumcache[1770]: No immediate fsync: Yes
+optimumcache[1771]: Starting OptimumCache monitor
+```
+</div>
+
+To update to version 0.2-6, run:
+
+<div class="notranslate">
+
+```
+yum update optimumcache --enablerepo=cloudlinux-updates-testing
+```
+</div>
+
+#### High CPU utilization
+
+Once it is detected that OptimumCache overuses <span class="notranslate">CPU</span>, it is useful to check, whether checksums reindexing process is running. When reindexing is running, high <span class="notranslate">CPU</span> usage is ok, as far it will certainly drop down after reindexing finished.
+
+Can be checked in <span class="notranslate">`/var/log/messages`</span>
+
+<div class="notranslate">
+
+```
+grep Reindexing /var/log/messages
+
+Feb  4 17:00:55 CL-default-2 occtl[2654]: Reindexing started
+```
+</div>
+
+If the last line from the output is not <span class="notranslate">`Reindexing finished…`</span>, than indexing is in progress.
+
+Also, can be checked via command <span class="notranslate">`occtl --report`</span>, watch if <span class="notranslate">`PFL_REINDEX_NUM_FILES`</span> and <span class="notranslate">`PFL_REINDEX_THOUGHPUT_KB`</span> identifiers are present in the last series of data:
+
+<div class="notranslate">
+
+```
+occtl --report  
+  
+
+- Period starts at: 2015-02-04 17:00
+Period Stat:
+
+PFL_ATTACHED:                    170318
+PFL_CREATED:                     161583
+PFL_ERR_BAD_CSUM:                176
+PFL_ERR_INODES:                  879
+PFL_FAILED_TO_ATTACH_PEER:       791
+PFL_FAILED_TO_ATTACH_PEER_EBUSY: 791
+
+PFL_INODE_IN:                    406167
+PFL_PAGEMIN_FILTERED_OUT:        233418
+PFL_PAGEMIN_USED:                136082
+PFL_REINDEX_NUM_FILES:           192810
+PFL_REINDEX_THOUGHPUT_KB:        2904007
+PFL_RESTART:                     1
+```
+</div>
+
+#### Uninstalling OptimumCache lasts for too long
+
+Uninstalling OptimumCache takes time because of files unmark process, which lasts proportionally to number of files, previously marked for caching with <span class="notranslate">`occtl --mark-dir...`</span>. If you see, that <span class="notranslate">`yum remove optimumcache`</span> command is stuck and you have no time to wait for it to finish, or <span class="notranslate">IO</span> load, caused by unmarking files, is undesirable for you, open another console terminal and invoke:
+
+<div class="notranslate">
+
+```
+occtl --cancel-pending-jobs
+```
+</div>
+
+This command will cancel unmark operation, being run by yum under the hood. So that yum uninstall package transaction will complete very soon.
+
+#### ‘Failed to attach peer: Invalid argument’ appears in syslog
+
+Rather rare problem, try to forcibly update `optimumcache_s` with ploop status.
+
+<div class="notranslate">
+
+```
+occtl --remount-cached-points
+```
+</div>
+
+## TPE extension
+
+**TPE (Trusted Path Execution)**
+
+The kernel supports <span class="notranslate"> TPE </span> feature out of the box. You can configure it using following files:
+<div class="notranslate">
+
+```
+·        /proc/sys/kernel/grsecurity/grsec_lock
+·        /proc/sys/kernel/grsecurity/tpe
+·        /proc/sys/kernel/grsecurity/tpe_gid
+·        /proc/sys/kernel/grsecurity/tpe_restrict_all
+```
+</div>
+
+To enable <span class="notranslate"> TPE </span> feature in a standard way just add following to the end of your <span class="notranslate"> /etc/sysctl.conf </span>
+<div class="notranslate">
+
+```
+#GRsecurity 
+kernel.grsecurity.tpe = 1 
+kernel.grsecurity.tpe_restrict_all = 1 
+kernel.grsecurity.grsec_lock = 1  
+```
+</div>
+
+And do:
+<div class="notranslate">
+
+```
+sysctl -p
+```
+</div>  
+
+::: tip Note
+Once you set grsec_lock to 1, you will not be able to change TPE options without reboot.
+:::
+
+ This <span class="notranslate">Trusted Path Execution</span> feature was adopted from <span class="notranslate">grsecurity</span>.
+
+## CPU limits
+
+:::tip Note
+Deprecated
+
+This limit is no longer used, and <span class="notranslate"> [SPEED](/cloudlinuxos/limits/#speed-limits) </span> is used instead
+:::
+
+### CPU limits before lve-utils 1.4
+
+<span class="notranslate"> CPU </span> Limits are set by <span class="notranslate"> CPU </span> and <span class="notranslate"> NCPU </span> parameters. <span class="notranslate"> CPU </span> specifies the % of total <span class="notranslate"> CPU </span> of the server available to LVE. <span class="notranslate"> NCPU </span> specifies the number of cores available to LVE. The smallest of the two is used to define how much <span class="notranslate"> CPU </span> power will be accessible to the customer.
+
+| |  |  | |
+|-|--|--|-|
+|Cores Per Server | <span class="notranslate"> CPU </span> Limit | <span class="notranslate"> NCPU </span> Limit | Real limit|
+|1 | 25% | 1 | 25% of 1 core|
+|2 | 25% | 1 | 50% of 1 core|
+|2 | 25% | 2 | 50% of 1 core|
+|4 | 25% | 1 | 100% of 1 core (full core)|
+|4 | 25% | 2 | 1 core|
+|4 | 50% | 1 | 1 core|
+|4 | 50% | 2 | 2 cores|
+|8 | 25% | 1 | 1 core|
+|8 | 25% | 2 | 2 cores|
+|8 | 50% | 2 | 2 cores|
+|8 | 50% | 3 | 3 cores|
+
+When user hits <span class="notranslate"> CPU </span> limit, processes within that limit are slowed down. For example, if you set your <span class="notranslate"> CPU </span> limit to 10%, and processes inside LVE want to use more then 10% they will be throttled (put to sleep) to make sure they don't use more then 10%. In reality, processes don't get <span class="notranslate"> CPU </span> time above the limit, and it happens much more often then 1 second interval, but the end result is that processes are slowed down so that their usage is never above the <span class="notranslate"> CPU </span> limit set.
+
+## Package integration
+
+:::tip Note
+Deprecated.
+:::
+
+:::warning Note
+You can use [Control panel integration guide](/cloudlinuxos/control_panel_integration/) instead.
+:::
+
+**[lve-utils 1.4+]**
+
+CloudLinux OS can automatically detect the most popular control panels, like cPanel - and allows to set different limits for users in different packages. It simplifies management as you don't have to choose between one limit that fits all your customers on the server, or individual limits for the customers.
+
+If you have a custom made control panel, with your own 'package' implementation, you can still use CloudLinux OS framework to manage limits for your packages.
+
+To do that, you would need:
+
+Implement script that would map users to packages.
+
+Configure lvectl to use your script.
+
+**Implementing script**
+
+A script can be written in any language, and it has to be executable.
+
+It should accept the following arguments:
+
+--list-all                        prints [userid package] pairs
+
+Output should look like a list of space separate pairs of user Linux IDs and package names.
+
+<div class="notranslate">
+
+```
+100 package1
+101 package1
+102 package2
+103 package3
+```
+</div>
+
+<span class="notranslate">--userid=id prints package for a user specified </span>
+
+Output should contain package name, like:
+
+<div class="notranslate">
+
+```
+package1
+```
+</div>
+
+<span class="notranslate">--package="package"    prints users for a package specified. </span>
+
+Output should look like a list of user Linux IDs.
+
+<div class="notranslate">
+
+```
+100
+101
+```
+</div>
+
+<span class="notranslate">--list-packages prints the list of packages </span>
+
+Output contains a list of names of packages, like:
+
+<div class="notranslate">
+
+```
+package1
+package2
+package3
+```
+</div>
+
+**Configuring lvectl to use your custom script**
+
+Edit <span class="notranslate">/etc/sysconfig/cloudlinux </span> file.
+
+Edit or modify parameter <span class="notranslate">`CUSTOM_GETPACKAGE_SCRIPT`</span>, and set it to point to your script, like: <span class="notranslate">`CUSTOM_GETPACKAGE_SCRIPT=/absolute/path/to/your/script`</span>
+
+
+For the script example please check the following article: [https://cloudlinux.zendesk.com/hc/en-us/articles/115004529105-Integrating-LVE-limits-with-packages-for-unsupported-control-panels](https://cloudlinux.zendesk.com/hc/en-us/articles/115004529105-Integrating-LVE-limits-with-packages-for-unsupported-control-panels).
+
+
+### Detecting and working with CloudLinux OS
+
+
+Detecting if system is running CloudLinux OS/CloudLinux kernel:
+
+
+<div class="notranslate">
+
+```
+uname -r|grep lve 
+```
+</div>
+
+If you get an output, it means the system is running CloudLinux kernel. CloudLinux kernels have lve in its name, like: <span class="notranslate"> 2.6.32-458.18.1.lve1.2.44.el6.x86_64 </span>
+
+Alternatively you can check for the presence of <span class="notranslate">`/proc/lve/list`</span> file.
+
+Check if CageFS is enabled (as <span class="notranslate"> root </span> ):
+
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --cagefs-status
+```
+</div>
+
+Check if CageFS is enabled for a particular user (as <span class="notranslate">`root`</span> ):
+
+<div class="notranslate">
+
+```
+/usr/sbin/cagefsctl --user-status _USER_NAME_
+```
+</div>
+
+Check if you are inside CageFS:
+
+Check for the presence of <span class="notranslate">`/var/.cagefs/.cagefs.token`</span> file - if present, it means that you are inside CageFS.
+
+### Displaying CPU, memory & IO limits
+
+
+Most control panels choose to display CloudLinux OS usage & limits to end customers. To simplify that, we lve-stats exports a file that can be easily read and processed by a control panel to display the necessary information.
+
+The information is located in the <span class="notranslate">/var/lve/info </span> file. This information is updated every 5 minutes, and contains default limits (first line), as well as usage and limits for all customers. If a customer is not present in the file, it means that customer is not active (no scripts were executed recently for the customer), and a customer has default limits (so you can display no usage, and default limits in the control panel for that customer.
+
+The data is stored in a form of one line per customer, with coma separated values.
+
+| | |
+|-|-|
+|0 | user id|
+|1 | <span class="notranslate"> entry processes </span>|
+|2 | <span class="notranslate"> entry processes </span> limit|
+|3 | <span class="notranslate"> CPU </span>|
+|4 | <span class="notranslate"> CPU </span> limit|
+|5 | <span class="notranslate"> Virtual Memory </span>|
+|6 | <span class="notranslate"> Virtual Memory </span> Limit|
+|7 | Number of <span class="notranslate">  virtual memory </span> faults|
+|8 | Number of <span class="notranslate"> entry processes </span> faults|
+|9 | <span class="notranslate"> Physical Memory </span> Limit|
+|10 | <span class="notranslate"> Physical Memory </span>|
+|11 | Number of <span class="notranslate"> Physical memory </span> faults|
+|12 | <span class="notranslate"> Number of processes </span> limit|
+|13 | <span class="notranslate"> Number of processes </span>|
+|14 | <span class="notranslate"> Number of processes </span> fault|
+|15 | Reserved|
+|16 | <span class="notranslate"> IO </span> Usage|
+|17 | <span class="notranslate"> IO </span> Limit|
+
+With LVE version 4 (CloudLinux OS lve0.x) only the first 9 parameters are available. You can check the the version by reading the first byte of <span class="notranslate">/proc/lve/list. </span>
+
+In the version 6 all 15 parameters should be available.
+
+There are only 2 LVE versions currently used in production. Future versions might add more fields, but will not alter order of existing fields.
+
+Memory is defined in 4KB pages (so, 1024 would mean 1024 4KB pages, or 4MB).
+
+<span class="notranslate"> IO </span> is defined as KB/s.
+
+<span class="notranslate"> CPU </span> is defined as % of total number of cores on a server.
+
+
+## Redis support for HostingLimits
+
+:::warning Warning!
+Starting from **mod_hostinglimits version 1.0-30** Redis is not supported.
+:::
+
+Redis support provides a way to query Redis database for LVE id, based on domain in the HTTP request. Given a database like:
+
+<div class="notranslate">
+
+```
+xyz.com 10001
+bla.com  10002
+....
+```
+</div>
+
+The module will retrieve corresponding LVE id from the database.
+
+To enable Redis support, compile from source: [https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz)
+
+The compilation requires hiredis library.
+
+<div class="notranslate">
+
+```
+wget https://repo.cloudlinux.com/cloudlinux/sources/da/mod_hostinglimits.tar.gz
+yum install cmake
+tar -zxvf mod_hostinglimits*.tar.gz
+cd mod_hostinglimits*
+cmake -DREDIS:BOOL=TRUE .
+make
+make install
+```
+</div>
+
+To enable Redis mode, specify:
+
+<div class="notranslate">
+
+```
+LVEParseMode REDIS
+```
+</div>
+
+### **LVERedisSocket**
+
+| | |
+|-|-|
+|**Description**| Socket to use to connect to Redis database.|
+|**Syntax**|<span class="notranslate">`LVERedisSocket path`</span>|
+|**Default**|<span class="notranslate">`/tmp/redis.sock`</span>|
+|**Context**| server config|
+
+Used to specify location of Redis socket.
+
+**Example**:
+
+<div class="notranslate">
+
+```
+LVERedisSocket /var/run/redis.sock
+```
+</div>
+
+### **LVERedisAddr**
+
+| | |
+|-|-|
+|**Description**| IP/port used to connect to Redis database instead of socket.|
+|**Syntax**|<span class="notranslate">`LVERedisAddr IP PORT`</span>|
+|**Default**| <span class="notranslate">`none`</span>|
+|**Context**|<span class="notranslate">server config</span>|
+
+Used to specify IP and port to connect to Redis instead of using Socket
+
+**Example**:
+
+```
+LVERedisAddr 127.0.0.1 6993
+```
+
+### **LVERedisTimeout**
+
+| | |
+|-|-|
+|**Descriptin**| Number of seconds to wait before attempting to re-connect to Redis.|
+|**Syntax**|<span class="notranslate">`LERetryAfter SECONDS`</span>|
+|**Default**| 60 seconds|
+|**Context**|<span class="notranslate">server config</span>|
+
+Number of seconds to wait before attempting to reconnect to Redis after the last unsuccessful attempt to connect.
+
+**Example**:
+
+<div class="notranslate">
+
+```
+LVERedisTimeout 120
+```
+</div>
+
+## Migration to EA4
+
+* [Advices and limitations](/cloudlinuxos/cloudlinux_installation/#advices-and-limitations)
+* [CentOS with EasyApache 4](/cloudlinuxos/cloudlinux_installation/#centos-with-easyapache-4)
+* [CentOS without EasyApache 4](/cloudlinuxos/cloudlinux_installation/#centos-without-easyapache-4)
+* [CloudLinux OS without EasyApache 4](/cloudlinuxos/cloudlinux_installation/#cloudlinux-os-without-easyapache-4)
+* [More about cloudlinux_ea3_to_ea4 script](/cloudlinuxos/cloudlinux_installation/#more-about-cloudlinux-ea3-to-ea4-script)
+
+### Advices and limitations
+
+* Use cPanel 11.55.999.66(55.999.66) or higher version.
+* <span class="notranslate">Hardened EA4</span> limitations:
+  * **ea-php51** and **ea-php52** have no PHP-FPM support. Please use **mod_lsapi** instead.
+
+Follow the instructions [here](/cloudlinuxos/cloudlinux_os_components/#installation-3) to install and configure mod_lsapi.
+
+### CentOS with EasyApache 4
+
+If EasyApache 4 was installed earlier on your CentOS server and you would like to migrate to CloudLinux OS:
+
+1. Convert server from CentOS  to CloudLinux (see [these instructions](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers)).
+
+2. Restart Apache service.
+
+### CentOS without EasyApache 4
+
+If EasyApache 4 was not installed earlier on your CentOS server and you would like to migrate to CloudLinux OS:
+
+1. Convert server from CentOS to CloudLinux OS (see [these instructions](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers)).
+
+2. Run:
+   
+<div class="notranslate">
+
+```
+cd ~; wget https://repo.cloudlinux.com/cloudlinux/sources/cloudlinux_ea3_to_ea4; sh cloudlinux_ea3_to_ea4 --convert
+```
+</div>
+
+(Find examples of <span class="notranslate">`cloudlinux_ea3_to_ea4`</span> script usage below).
+
+### CloudLinux OS without EasyApache 4
+
+Install EasyApache4 on clean CloudLinux OS from ISO image or migrate to EasyApache4 on existings CloudLinux OS servers:
+
+1. Install cPanel.
+2. Run:
+
+<div class="notranslate">
+
+```
+cd ~; wget https://repo.cloudlinux.com/cloudlinux/sources/cloudlinux_ea3_to_ea4; sh cloudlinux_ea3_to_ea4 --convert
+```
+</div>
+
+(Find examples of `cloudlinux_ea3_to_ea4` script usage below).
+
+
+### More about cloudlinux_ea3_to_ea4 script
+
+About `cloudlinux_ea3_to_ea4` migration script parameters:
+
+<div class="notranslate">
+
+```
+cloudlinux_ea3_to_ea4 [ADDITIONS] ACTIONS
+```
+</div>
+
+
+Usage:
+
+| | |
+|-|-|
+|<span class="notranslate">-h, --help</span>  | Print this message|
+
+`Actions` (required parameter, shows what should script do):
+
+| | |
+|-|-|
+|<span class="notranslate"> -c, --convert </span>  | Convert EA3 to EA4|
+|<span class="notranslate"> -r, --revert </span> | Revert to EA3|
+
+`Additions` (optional parameter, adds to action installation of extra components):
+
+| | |
+|-|-|
+|<span class="notranslate"> -m, --mod_lsapi </span> | Install mod_lsapi|
+|<span class="notranslate"> -p, --mod_passenger </span> | Install alt-mod-passenger|
+|<span class="notranslate"> -a, --altphp </span> | Install/Update alt-php|
+
+
+**Examples:**
+
+* If you want to install EA4 with mod_lsapi and update/install alt-php:
+  
+<div class="notranslate">
+
+```
+sh cloudlinux_ea3_to_ea4 --convert --mod_lsapi --altphp 
+```
+</div>
+
+* If you want to install EA4 with mod_lsapi, alt_mod_passenger and update/install alt-php:
+  
+<div class="notranslate">
+
+```
+sh cloudlinux_ea3_to_ea4 --convert --mod_lsapi --altphp --mod_passenger
+```
+</div>
+
+* To restore EA3 with mod_lsapi:
+
+<div class="notranslate">
+
+```
+sh cloudlinux_ea3_to_ea4 --revert --mod_lsapi
+```
+</div>
+
+See also: [FAQ](https://cloudlinux.zendesk.com/hc/articles/360025827914-CloudLinux-OS-Installation-FAQ)
diff --git a/docs/cloudlinuxos/elevate/README.md b/docs/cloudlinuxos/elevate/README.md
new file mode 100644
index 000000000..4ac23bbe6
--- /dev/null
+++ b/docs/cloudlinuxos/elevate/README.md
@@ -0,0 +1,889 @@
+# ELevate
+
+[[toc]]
+
+:::warning
+Please note that the CloudLinux Elevate tool is intended specifically for upgrading the CloudLinux OS.
+Upgrading to CloudLinux directly from a non-CloudLinux OS is **not supported**.
+
+While it is possible, it requires additional steps to be taken.
+Refer to [this documentation section](#i-have-a-centos-7-system-i-want-to-migrate-to-cloudlinux-8-can-i-use-your-tool-to-do-so) for details.
+:::
+
+:::warning
+We disclaim responsibility for incorrect or improper use of the tool. The support team will not be able to help you if you have not followed all the steps described in the documentation or converted a server with an unsupported control panel present.
+
+In addition, support will not be provided if you have any third-party utilities that do not function after the upgrade, according to [Support policy](https://www.cloudlinux.com/CloudLinux-and-Imunify-support-policy.pdf). Examples: webservers, DNS servers, mail servers, database servers and other utilities that do not belong to our product line.
+:::
+
+## FAQ
+
+### What is ELevate?
+The ELevate project is an initiative to support migrations between major version of RHEL-derivatives.
+
+The CloudLinux ELevate variant, built on top of the [AlmaLinux ELevate project](https://wiki.almalinux.org/elevate/), aims to provide a streamlined method of upgrading CloudLinux 7 systems to CloudLinux 8 in-place.
+
+The [Leapp utility](https://leapp.readthedocs.io/) is the main tool used to perform the upgrade.
+
+The [ELevate Scenario - CloudLinux 7 with cPanel](#elevate-scenario-cloudlinux-7-with-cpanel) uses the [cPanel ELevate](https://github.com/cpanel/elevate) project as an additional layer of the upgrade process.
+
+The [ELevate Scenario - CloudLinux 7 with Plesk](#elevate-scenario-cloudlinux-7-with-plesk) also uses an additional layer - the [cloudlinux7to8](https://github.com/plesk/cloudlinux7to8) project.
+
+ELevate is a project aimed to provide the ability to migrate between major versions of RHEL-based distributions from 7.x to 8.x. It combines Red Hat's Leapp framework with a community created library and service for the migration metadata set required for it.
+
+
+### Is it ready for production use?
+
+While the ELevate project and its surrounding ecosystem is mature, support for CloudLinux has been introduced more recently.
+
+We guarantee functionality of CloudLinux products and services on the post-upgrade system. You are welcome to contact CloudLinux Support with any issues that occur with said products.
+
+However, we cannot guarantee that the third-party software and RPM packages will be updated correctly on all system configurations. [See below](#will-it-upgrade-everything-i-have-on-my-system).
+
+Systems with configurations and packages that substantially differ from a typical CloudLinux 7 installation could encounter issues previously not seen before.
+
+
+### Can it break something on my system?
+
+It can.
+
+A full system upgrade is an inherently invasive procedure. In some cases, due to different system configurations, package errors or even power failures, you may encounter issues during the upgrade process that can't be automatically recovered from.
+
+Said issues may be severe, **<font color="Red">up to and including rendering the system completely inaccessible.</font>**
+
+In addition, in some cases the conversion process may get stuck once the server boots into a temporary configuration that does not start any network interfaces. It is preferable to have a way to access the server without an SSH connection, for example, through VNC.
+
+The upgrade process itself is not designed to be reversible. While some of the changes can be undone, the process of reverting the system to its pre-upgrade state varies depending on the system's configuration and the point at which the upgrade failed. Thus, restoring the system from a backup is the most reliable way to recover from a failed upgrade.
+
+Due to all of the potential risks involved, we **highly recommend never running ELevate on a system without a full server backup/snapshot ready**.
+
+Ideally, perform a trial run in a disposable environment, like a VM or a sandbox, to verify that migration functions as expected before you attempt to migrate a system.
+
+
+### Will it upgrade everything I have on my system?
+
+It depends. ELevate will not upgrade arbitrary software, especially one that isn't related to CloudLinux or a supported control panel.
+
+The ELevate project only supports a subset of package repositories it's aware of - that is, package repositories that are included in its configuration files.
+
+Packages from repositories Leapp is unaware of **will not be upgraded**.
+
+It's possible to add missing repositories and packages to ELevate yourself, if you're so inclined. Please check the [Contribution](/cloudlinuxos/elevate/#contribution) section for more information on how to do so.
+
+
+### What packages can I expect to be upgraded?
+
+Aside from CloudLinux and AlmaLinux packages, the CloudLinux Elevate includes the extendable "vendors" mechanism that contains migration data for some frequently used third-party system components.
+
+That migration data is only activated when the corresponding package repositories are present and enabled on the pre-upgrade system.
+
+Some of the vendors shipping by default include:
+
+* Imunify360 and KernelCare
+* EPEL (Extra Packages for Enterprise Linux)
+
+
+### Will it interrupt my server's functionality?
+
+Yes.
+
+One of the major steps of the upgrade process involves rebooting into a custom `initramfs` environment, from which the system's software is upgraded. During that period of time, the system will be mostly non-functional and inaccessible.
+
+This stage may take **up to an hour**, so schedule the upgrade accordingly.
+
+During the preparation stages - that is, when the upgrade process is first *initiated* and before the system is rebooted - the system's services will function normally.
+
+Note that different upgrade scenarios behave somewhat differently during the preparation stage. For example, the cPanel scenario will disable the site functionality from the inital stage up until completion, while the no-panel/custom panel scenario will not.
+
+
+### How long does it take?
+
+Depending on the amount and size of the packages that need to be updated, the upgrade process may take a long time, up to several hours. This time also varies with the machine's resources and the speed of internet connection.
+
+If the machine remains unresponsive for more than 2 hours after rebooting, assume the upgrade process failed during the post-reboot phase, and the machine cannot return to normal functionality automatically.
+
+
+### How do I use it?
+
+Depending on the web panel you have installed on your system, the upgrade process will require different steps.
+
+At the moment, ELevate migration from CloudLinux 7 to CloudLinux 8 is supported on:
+
+* *no panel/custom panel* systems;
+* *cPanel* systems.
+* *DirectAdmin* systems.
+* *Plesk* systems.
+
+
+#### I have a CL7 system with no webpanel/a custom webpanel installed, how do I upgrade to CL8?
+
+In such case, you can upgrade through the Leapp tool directly.
+
+Please refer to the [CloudLinux 7 with no panel/custom panel ELevate Scenario](#elevate-scenario-cloudlinux-7-with-no-panel-or-a-custom-panel) for step-by-step instructions.
+
+#### I have a CL7 system with cPanel installed, how do I upgrade to CL8?
+
+With cPanel present on the machine, you need to run the upgrade process through the `elevate-cpanel` tool.
+
+Please refer to the [ELevate Scenario - CloudLinux 7 with cPanel](#elevate-scenario-cloudlinux-7-with-cpanel) for step-by-step instructions.
+
+#### I have a CL7 system with DirectAdmin installed, how do I upgrade to CL8?
+
+The DirectAdmin panel does not require any additional actions or tools compared to the no-panel upgrade scenario.
+
+You can make use of the [CloudLinux 7 with no panel/custom panel ELevate Scenario](#elevate-scenario-cloudlinux-7-with-no-panel-or-a-custom-panel) to upgrade systems with the DirectAdmin panel much like you would for systems without one.
+
+#### I have a CL7 system with Plesk installed, how do I upgrade to CL8?
+
+Like cPanel, the Plesk panel requires you to make use of an additional tool to perform the upgrade on a system. In this case, you need to use the `cloudlinux7to8` tool [provided by the Plesk team](https://github.com/plesk/cloudlinux7to8).
+
+Please refer to the [ELevate Scenario - CloudLinux 7 with Plesk](#elevate-scenario-cloudlinux-7-with-plesk) for step-by-step instructions.
+
+#### I have a CL7 system with a different panel installed, how do I upgrade to CL8?
+
+Unfortunately, CloudLinux ELevate doesn't support these system configurations yet.
+
+Instead, you can create a new machine with CloudLinux 8 and migrate your system's license and configuration to it.
+
+Please refer to the following documentation links for instructions on how to do so:
+
+* [How to Backup & Migrate All CloudLinux Settings to Another Server](https://cloudlinux.zendesk.com/hc/en-us/articles/115004277894-How-to-Backup-Migrate-All-CloudLinux-Settings-to-Another-Server)
+* [How to Restore PHP Selector Options](https://cloudlinux.zendesk.com/hc/en-us/articles/115004517465)
+* [How to obtain activation keys, register and migrate servers](https://cloudlinux.zendesk.com/hc/en-us/articles/115003888573-How-to-obtain-activation-keys-register-and-migrate-servers)
+
+#### I have a CentOS 7 system I want to migrate to CloudLinux 8, can I use your tool to do so?
+
+Not in a single step. The CloudLinux Elevate tool specifically targets the upgrade path of CloudLinux 7 to CloudLinux 8, and trying to use a different OS as a starting point is unlikely to end well.
+
+If you have a non-CloudLinux OS you wish to upgrade, you have the following options available:
+
+* [Convert your system to CloudLinux 7 normally](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers), then use the CloudLinux Elevate tool to migrate it to CloudLinux 8.
+* If you're using a CentOS 7 system without a panel, use the [AlmaLinux Elevate](https://almalinux.org/elevate/) tool to upgrade it to AlmaLinux 8, then [convert it to CloudLinux normally](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers).
+* If you're using cPanel, you'll need to use the [cPanel Elevate](https://cpanel.github.io/elevate/) tool instead. Use it to upgrade your system to AlmaLinux 8 + cPanel, then [convert it to CloudLinux normally](/cloudlinuxos/cloudlinux_installation/#converting-existing-servers).
+
+:::warning
+Please note that the Elevate variants (AlmaLinux, cPanel) mentioned above are maintained by third parties. As such, should you encounter problems when using them, you should direct your questions/support requests to the maintainers of the tool you're using.
+:::
+
+### I ran into a problem during the upgrade process, what do I do?
+
+Please check the Troubleshooting section directly below.
+
+### The Troubleshooting section doesn't have an issue that I'm having. What now?
+
+First, try to narrow down the most probable source of the issue you've encountered, if possible.
+
+For cPanel-specific issues, [cPanel ELevate issue tracker](https://github.com/cpanel/elevate/issues) is the most appropriate place to report them.
+
+For CloudLinux-specific issues, report them in the [CloudLinux ELevate issue tracker](https://github.com/cloudlinux/elevate/issues) or contact CloudLinux Support with a description of the encountered problem.
+
+For issues with the underlying Leapp framework, report them in the [AlmaLinux Leapp repository issue tracker](https://github.com/AlmaLinux/leapp-repository/issues).
+
+When filing an issue, include:
+- Steps to reproduce the issue
+- All files in `/var/log/leapp`
+- `/var/lib/leapp/leapp.db`
+- journalctl
+- If using the CloudLinux 7 with cPanel scenario, `/var/log/elevate-cpanel.log`
+- If you want, you can also send anything else would you like to provide (e.g. storage info)
+
+**For your convenience you can pack all logs with this command:**
+
+`# tar -czf leapp-logs.tgz /var/log/leapp /var/lib/leapp/leapp.db`
+
+Then you may attach only the `leapp-logs.tgz` file.
+
+For the no-panel scenario: before gathering data, if possible, re-run the *leapp* command that encountered an issue with the `--debug` flag, e.g.: `leapp upgrade --debug`.
+
+
+## Troubleshooting
+
+Here is a list of common problems you may encounter during the upgrade attempt.
+
+### Common issues
+
+These issues may be encountered during any ELevate Scenario.
+
+#### Newest kernel
+
+The preupgrade/upgrade process may halt with the following message:
+> Inhibitor: Newest installed kernel not in use
+
+Make sure your system is running the latest kernel before proceeding with the upgrade. If you updated the system recently, a reboot may be sufficient to do so. Otherwise, edit your Grub configuration accordingly.
+
+
+#### Kernel modules deprecated
+
+Some kernel modules are deprecated in the CloudLinux 8 major versions. To proceed with the upgade, unload them.
+Leapp will advise on the list of modules to be removed.
+
+```
+rmmod floppy pata_acpi btrfs
+```
+
+
+#### Package repository defined multiple times
+
+You may encounter the following error message when attempting to upgrade:
+
+```
+Inhibitor: A YUM/DNF repository defined multiple times
+```
+
+Refer to the `/var/log/leapp/leapp-report.txt` for the details on the repository in question.
+
+To correct the issue, examine your yum reposiory configuration and clear out any dupicate entries before restarting the upgrade process.
+
+
+#### Package upgrades being pulled from incorrect repositories
+
+You may find that some packages on your system are listed in the preupgrade report in the message "Packages not signed by a known packager found on the system".
+
+This may mean two things:
+* that the packages listed are indeed unknown to Leapp, and cannot be included in the upgrade process, or;
+* that the corresponding package repositories were not recognized and the vendors mechanism could not be set up properly as a result.
+
+Make sure that all of the package repositories relevant to the current system state are present and enabled before proceeding with the upgrade.
+That will ensure that the Leapp tool correctly maps the source repositories to the target ones, and includes everything available into the migration process accordingly.
+
+Keep in mind that known vendor repositories must be enabled in order for the packages from them to be included into the upgrade.
+
+
+#### SSHD config default mismatch
+
+If your OpenSSH configuration file does not explicitly state the option PermitRootLogin in sshd_config file, this upgrade inhibitor will apperar.
+
+The option's default is "yes" in RHEL7, but will change in RHEL8 to "prohibit-password", which may affect your ability to log onto this machine after the upgrade.
+
+To prevent this from occuring, set the PermitRootLogin option explicity to preserve the default behaivour after migration:
+
+```
+echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config
+```
+
+Alternatively, configure the SSHD so that the option is present explicitly, without leaving it to the default behaviour.
+
+
+#### Disabling PAM modules
+
+PAM module pam_pkcs11 is no longer available in RHEL-8 since it was replaced by SSSD.
+Leaving this module in PAM configuration may lock out the system.
+
+Allow Leapp to disable the pam_pkcs11 module in PAM configuration by adding an entry to the Leapp answerfile:
+
+```
+sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
+```
+
+#### CLN registration
+
+Should you encounter an issue with the `switch_cln_channel` actor, make sure that your system is registered with the CLN network.
+
+`rhn_check; echo $?`
+
+If it is not, you may want to force a [re-registration.](/cloudlinuxos/cloudlinux_installation/#license-activation)
+
+
+#### CLN channel remains targeting CL8 after an unsuccessful migration
+
+If you roll back a machine after an unsuccessful migration, you may find that your server still pulls package updates from the CLN repository for CL8.
+
+This will be indicated by upgrades pulling packages from the `cloudlinux-x86_64-server-8` repository.
+
+To switch back to the CL7 channel manually, run the following command:
+
+```
+cln-switch-channel -t 7 -o -f
+```
+
+
+#### DNF plugin installation
+
+You may encounter issues with Leapp DNF actors failing with the following message:
+`Cannot obtain data about the DNF configuration.`
+
+To resolve this problem, ensure that the **dnf config-manager plugin** is installed and is functioning properly.
+
+If not, enable the corresponding package repository (e.g. `centos-extras`) and install it.
+
+`dnf install 'dnf-command(config-manager)'`
+
+
+#### DNF transaction failures
+
+The main upgrade transaction is performed while the system is booted into a custom InitRamFS. From there, all the package operations prepared during the previous steps are performed.
+
+While in this state, the system is inaccessble remotely via SSH. However, it can still be accessed through tools such as VNC.
+
+In some cases, the upgrade may encounter an unrecoverable error while running the transaction, which can result in the system remaining in a halfway-upgraded, unusable and partially inaccessible state.
+
+For example, if a package encounters a fatal error inside its `%preun` or `%prein` scriptlets during the upgrade, the transaction and the upgrade process may halt, leaving the system in an unusable state.
+
+It is recommended to remove such packages prior to the upgrade, or, alternatively, add them to the `to_keep` list (see *Transaction Configuration Files* section) to prevent Leapp from attempting to upgrade them.
+
+#### Missing upgrade package files
+
+In some cases, you may find the upgrade process halting at the main upgrade DNF transaction with a list of error messages similar to the following:
+
+```
+2024-01-01 17:24:55.396 DEBUG    PID: 1053 leapp.workflow.RPMUpgrade.dnf_upgrade_transaction: Error opening /var/cache/dnf/almalinux8-baseos-f11d00b8ca777dac/packages/alt-php82-newrelic-10.16.0.5-1.el8.x86_64.rpm: No such file or directory
+2024-01-01 17:24:55.410 DEBUG    PID: 1053 leapp.workflow.RPMUpgrade.dnf_upgrade_transaction: Package "alt-php82-newrelic-10.16.0.5-1.el8.x86_64" from repository "almalinux8-baseos" has incorrect checksum
+```
+
+In the known possible error scenario, this problem occurs when the upgrade packages were downloaded from CLN-provided package repositories, but CLN was then disabled due to a registration/networking error encountered.
+
+Check the version of the dnf-plugin-spacewalk being installed into the isolated upgrade environment in the logs. Its release must be either `cloudlinux.2.leapp.2`, or `cloudlinux.5` and above for the CLN/upgrade integration functionality.
+
+Also, make sure that the following line is present:
+
+```
+leapp.workflow.RPMUpgrade.dnf_upgrade_transaction: Leapp upgrade is running - using cache.
+```
+
+If neither of those appear to be the problem, its source may be different from the known one. Please contact support for further assistance.
+
+
+### ELevate cPanel Scenario issues
+
+These issues can occur during the upgrade on CloudLinux 7 + cPanel systems.
+
+#### Post-reboot dnf upgrade error
+
+In some system configurations, you may encounter an issue with the [stage 4](#stage-4) of the upgrade halting with a message similar to the following:
+
+```
+[INFO] Running: /usr/bin/dnf -y --allowerasing update
+[INFO] Error: Failed to download metadata for repo 'cloudlinux-base': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
+[INFO] Sending notification: Fail to update to CloudLinux 8
+[ERROR] The elevation process failed during stage 4.
+[ERROR]
+[ERROR] You can continue the process after fixing the errors by running:
+[ERROR]
+[ERROR]     /usr/local/cpanel/scripts/elevate-cpanel --continue
+```
+
+That most commonly occurs in two cases:
+* When a package repository configuration file not associated with any RPM packages can no longer be accessed on the post-upgrade system due to the changes in Yum variables, like the OS version;
+* When a package repository configuration file associated with a RPM package was modified manually, and thus, not upgraded automatically during the process.
+
+Check the URL/mirrorlist of the mentioned Yum repository. Make sure it's accessible from the machine.
+If there's a related `.rpmnew` file present, consider replacing the repository config file with it.
+
+#### Missing EA packages after the upgrade
+
+You may discover that some, or all EasyApache packages (with the `ea-*` naming scheme) on your post-upgrade system are missing.
+
+This outcome will be accompanied by an error message in the upgrade log (/var/log/elevate-cpanel.log) akin to the following:
+
+```
+* 2023-03-20 15:10:03 (4265) INFO Running: /usr/local/bin/ea_install_profile --install /etc/cpanel/ea4/profiles/custom/current_state_at_2023-03-20_12:22:49.json
+* 2023-03-20 15:10:03 (4266) INFO
+* 2023-03-20 15:10:17 (4280) INFO  Problem: package ea-apache24-mod_lsapi-1:1.1-64.el8.cloudlinux.x86_64 requires liblsapi < 1:1.1-65, but none of the providers can be installed
+* 2023-03-20 15:10:17 (4280) INFO   - cannot install both liblsapi-1:1.1-64.el8.cloudlinux.x86_64 and liblsapi-1:1.1-65.el8.cloudlinux.x86_64
+* 2023-03-20 15:10:17 (4280) INFO   - cannot install the best candidate for the job
+* 2023-03-20 15:10:17 (4280) INFO The entire output was logged to: /usr/local/cpanel/logs/packman/errors/2023-03-20_15:10:17-1
+```
+
+This happens most frequently when one or more testing repositories were enabled on the pre-upgrade system.
+
+The Leapp framework attempts to upgrade all packages to their latest available versions - which includes versions available from testing repositories.
+
+EasyApache packages are not included in Leapp upgrade procedures - they're removed from the system during the initial upgrade stage and are installed again after Leapp completes the main upgrade transaction. EasyApache packages have strict dependency version requirements, which means that if the installed dependency's version is too recent, it'll need to be downgraded.
+
+However, the tool used to restore the EA packages, `ea_install_profile`, does not perform downgrades automatically and will instead interrupt the restoration process.
+
+To resolve the issue:
+* First, install the packages listed in the log as problematic manually while downgrading their dependencies as needed.
+* Then, run the `ea_install_profile` command with the exact same arguments as shown in the log.
+
+In the above example, you'd need to run:
+
+```
+dnf -y install ea-apache24-mod_lsapi
+/usr/local/bin/ea_install_profile --install /etc/cpanel/ea4/profiles/custom/current_state_at_2023-03-20_12:22:49.json
+```
+
+#### Outdated cPanel version
+
+You may encounter the following error message when attempting to upgrade:
+
+```
+This installation of cPanel *YOUR_CPANEL_VERSION* does not appear to be up to date. Please upgrade cPanel to a most recent version.
+```
+
+You need to have an updated cPanel installation to proceed with the upgrade.
+Please refer to the [Latest cPanel & WHM Builds (All Architectures)](http://httpupdate.cpanel.net/) and ensure you have a cPanel updated to a version from one of the following tiers: STABLE, RELEASE, CURRENT or EDGE.
+
+LTS versions are not supported.
+
+
+#### EasyApache 4 packages
+
+You may encounter the following error message when attempting to upgrade:
+
+```
+[WARN] *** Elevation Blocker detected: ***
+  One or more EasyApache 4 package(s) are not compatible with CloudLinux 8.
+  Please remove these packages before continuing the update.
+  - ea-apache24-mod-unsupported-package
+  - ...
+```
+
+Review and remove the listed EasyApache packages, then restart the process.
+
+
+#### Unsupported third-party components
+
+You may encounter the following error message when attempting to upgrade:
+
+```
+One or more enabled YUM repo are currently unsupported.
+You should disable these repositories and remove packages installed from them
+before continuing the update.
+
+Consider reporting this limitation to https://github.com/cpanel/elevate/issues
+```
+
+`elevate-cpanel` checks for presence of unknown enabled repositories and blocks the migration process if one is found.
+
+The packages from the listed repositories **won't be properly upgraded** if Leapp doesn't contain their data in its configuration files.
+
+It's recommended to follow the provided suggestion and remove the repositories and packages before running the upgrade.
+
+If you'd like to add the configuration data for new repositories and packages to Leapp, please refer to the [Contribution](/cloudlinuxos/elevate/#contribution) section of the manual for information on the proper procedure for doing so.
+
+#### Modified or custom package repositories
+
+CloudLinux Elevate is intended for use with the default CloudLinux repositories. If you have custom/local repositories providing CloudLinux packages, or have disalbed CLN communication, you most likely won't be able to complete the upgrade process.
+
+If you encounter problems in this scenario:
+_ Before restarting the upgrade, restore the stock configuration of repositories.
+_ Re-enable RHN plugins and ensure that the system is registered with CLN.
+_ Make sure there are no repositories that are hardcoded to use a specific major OS version (e.g. 7) instead of $releasever.
+_ Continue with the upgrade process.
+
+
+## Known issues
+
+### Web servers
+The Litespeed web server installation scheme is currently incompatible with the no-panel Elevate configuration.
+
+It can be updated *after* the upgrade is complete, but won't be automatically upgraded with the rest of the system during the ELevate process.
+
+## Contribution
+
+ELevate is developed and built as a tool for RHEL-based distributives, not just CloudLinux specifically.
+
+ELevate supports migrating to/from other distributions and is open for all to contribute to and enhance.
+
+You can find more information and FAQ about the AlmaLinux ELevate this project is built upon at [almalinux.org/elevate](https://almalinux.org/elevate) and [Migration SIG](https://wiki.almalinux.org/sigs/Migration), as well as contribute using the ELevate Contribution Guide.
+
+CloudLinux does not provide support related to integrating third-party repositories or packages into the upgrade process. However, you can add the aforementioned components to the Leapp database yourself.
+
+### Extending CloudLinux Elevate to support new components/system types
+
+Suppose you have a no-panel system with additional software or a system with a custom panel installed.
+The standard CloudLinux Elevate upgrade will not upgrade such a system fully - the components that aren’t known to Elevate (i.e. those that aren’t present in its configuration files) won’t be touched during the upgrade and will remain the same on the post-upgrade system.
+
+Consider package repositories and the corresponding packages that are present on your system. The pre-upgrade/upgrade report will list the unrecognized or unsupported parts of these packages.
+
+To get the report, [run the pre-upgrade procedure](/cloudlinuxos/elevate/#pre-upgrade) first. Check the Elevate pre-upgrade report (`/var/log/leapp/leapp-report.txt`).
+
+Look for unknown/unsigned package reports in the list of the resulting messages.
+
+If you want to upgrade these packages during the Elevate process, you need to integrate them into the Elevate configuration files.
+
+Please check the [Third-party integration](https://github.com/CloudLinux/leapp-repository/tree/cloudlinux#third-party-integration) section in the linked README for instructions on integrating new repositories and packages into the process.
+
+In the typical case, you’ll want to [map](https://github.com/CloudLinux/leapp-repository/tree/cloudlinux#repository-mapping-file) all of your old package repositories (those present in CL7/RHEL7) to the new package repositories that will be present in the new upgraded system (CL8/RHEL8).
+
+When linked like this, the new repositories will be used by Leapp during the upgrade, and any present packages associated with these repositories will be upgraded.
+
+The package signatures should be added to the corresponding file for them to be accepted into the upgrade process.
+
+When there are discrepancies between the packages between the old and new OS versions (e.g. a single package was split into two, or two merged into one), they should be added into the [package migration event list](https://github.com/CloudLinux/leapp-repository/tree/cloudlinux#package-migration-event-list) in order for Elevate to correctly upgrade them during the process.
+
+Note that Elevate only uses the provided information about new repositories during the upgrade. The state of yum/dnf configuration on the system after the upgrade depends on the repository configuration files brought by the updated packages. If your package repository configs aren’t connected to the packages being upgraded, you should consider adding a [custom script](https://github.com/CloudLinux/leapp-repository/tree/cloudlinux#adding-complex-changes-custom-actors-for-migration) to modify them for the new OS version.
+
+If mapping package repositories from old to new (CL7 repositories -> CL8 repositories), as well as mapping the package changes, is not sufficient for a successful upgrade of your system, consider adding [custom Python scripts](https://github.com/CloudLinux/leapp-repository/tree/cloudlinux#adding-complex-changes-custom-actors-for-migration) (called Leapp actors) that handle your upgrade scenario, e.g. configuration migrations, system modifications, etc.
+
+To summarize:
+* [Install CloudLinux Elevate](/cloudlinuxos/elevate/#elevate-scenario-cloudlinux-7-with-no-panel-or-a-custom-panel) and run `leapp preupgrade`.
+* Check the pre-upgrade report (`/var/log/leapp/leapp-report.txt`) for packages that will not be upgraded.
+* For those packages that you want to see upgraded, [extend the Elevate configuration files](https://github.com/CloudLinux/leapp-repository/tree/cloudlinux#third-party-integration) with package repository mappings and package migration events.
+* If required, [add additional custom scripts](https://github.com/CloudLinux/leapp-repository/tree/cloudlinux#adding-complex-changes-custom-actors-for-migration) (Leapp actors) to handle any extra arbitrary actions during the upgrade.
+* Rerun the pre-upgrade procedure to ensure that your changes are integrated correctly, then test the upgrade process as desired.
+
+
+## ELevate Scenario - CloudLinux 7 with no panel or a custom panel (incl. DirectAdmin)
+
+This scenario contains steps on how to upgrade CloudLinux 7 to CloudLinux 8 on no-panel/custom panel systems. 
+
+:::tip 
+ELevating CloudLinux 7 to CloudLinux 8 for **DirectAdmin** is now supported and the elevation process for systems with DirectAdmin **mirrors the procedure used for no-panel or custom panel systems**. More details in [our blog](https://blog.cloudlinux.com/elevating-cloudlinux-7-to-cloudlinux-8-with-directadmin-now-supported).
+:::
+
+1. First of all, make sure that your CloudLinux 7 is fully upgraded and on the latest kernel version.
+
+2. After that, download and install "elevate-release" package to configure necessary RPM repositories:
+
+```
+sudo yum install https://repo.cloudlinux.com/elevate/elevate-release-latest-el7.noarch.rpm
+```
+
+3. Install leapp packages and migration data for the CloudLinux OS.
+
+:::tip Note
+In some cases, e.g. when directed by support, you may want to make use of the beta CloudLinux Leapp packages when running the upgrade.
+
+To do so, enable the `cloudlinux-elevate-updates-testing` repository, brought by the `elevate-release` package, before installing the leapp packages.
+:::
+
+:::tip
+Note that [a valid license](/cloudlinuxos/cloudlinux_installation/#license-activation) must be present for installation to work.
+:::
+
+```
+sudo yum install -y leapp-upgrade leapp-data-cloudlinux
+```
+
+### Pre-upgrade
+
+Start a preupgrade check. In the meanwhile, the Leapp utility creates a special `/var/log/leapp/leapp-report.txt` file that contains possible problems and recommended solutions. No rpm packages will be installed during this phase.
+
+:::danger WARNING
+The preupgrade check will likely fail as the default CloudLinux 7 doesn't meet all requirements for migration. That is expected.
+:::
+
+```
+sudo leapp preupgrade
+```
+
+
+This summary report will help you get a picture of whether it is possible to continue the upgrade.
+
+The preupgrade process may stall with the following message:
+
+```
+Inhibitor: Newest installed kernel not in use
+```
+
+Make sure your system is running the latest kernel before proceeding with the upgrade. If you updated the system recently, a reboot may be sufficient to do so. Otherwise, edit your Grub configuration accordingly.
+
+:::tip Note
+In certain configurations, Leapp generates `/var/log/leapp/answerfile` with true/false questions. Leapp utility requires answers to all these questions in order to proceed with the upgrade.
+:::
+
+Once the preupgrade process completes, the results will be contained in the file `/var/log/leapp/leapp-report.txt`.
+
+It's advised to review the report and consider how the changes will affect your system.
+
+:::danger WARNING
+In particular, pay attention to the packages that will not be upgraded during the transaction.
+
+Should any packages or package repositories that are unknown to Leapp be detected, they will be listed in the report. Consider how leaving the listed items unupgraded will affect the stability of your system.
+
+If the packages listed as unknown in the report are critical for your system, proceeding with the upgrade is **extremely likely** to damage its functionality, up to making the machine unaccessible.
+:::
+
+If you'd like to perform an upgrade on a system with unknown packages/repositories reported, and you're confident about all the potential risks, consider first adding the unknown repositories to Leapp's database, as described [here](https://github.com/CloudLinux/leapp-repository/tree/cloudlinux#third-party-integration).
+
+
+### Transaction Configuration Files
+
+If you want to manually override the framework's upgrade actions for specific packages, you may do so by editing the files contained in `/etc/leapp/transaction/`.
+
+These configuration files have priority over automatic package upgrade resolutions and Package Elevation Service data.
+
+The configuration files are as follows:
+* to_install
+  * Install these packages. Don't remove them or preserve them as-is.
+* to_remove
+  * Remove these packages. Do not attempt to keep them or upgrade them.
+* to_keep
+  * Do not upgrade these packages. Keep them as they are on the system.
+* to_reinstall
+  * Remove these packages during the update, then reinstall them. Mostly useful for packages that have the same version string between major versions, and thus won't be upgraded automatically.
+
+
+### Upgrade
+
+Start an upgrade. You’ll be offered to reboot the system after this process is completed.
+
+
+```bash
+sudo leapp upgrade
+sudo reboot
+```
+
+
+:::tip Note
+The upgrade process after the reboot may take a long time, up to 40-50 minutes, depending on the machine resources. If the machine remains unresponsive for more than 2 hours, assume that the upgrade process has failed during the post-reboot phase.
+If it's still possible to access the machine in some way, for example, through remote VNC access, the logs containing the information on what went wrong are located in this folder: `/var/log/leapp`.
+:::
+
+A new entry in GRUB called ELevate-Upgrade-Initramfs will appear. The system will be automatically booted into it. Observe the update process in the console.
+
+After the reboot, login into the system and check the migration report. Verify that the current OS is the one you need.
+
+
+```bash
+cat /etc/redhat-release
+cat /etc/os-release
+rpm -qa | grep el7 # check if there are unupgraded packages present
+cat /var/log/leapp/leapp-report.txt
+cat /var/log/leapp/leapp-upgrade.log
+```
+
+In addition, check the leapp logs for .rpmnew configuration files that may have been created during the upgrade process. In some cases os-release or yum package files may not be replaced automatically, requiring the user to rename the .rpmnew files manually.
+
+
+## ELevate Scenario - CloudLinux 7 with cPanel
+
+This scenario contains steps on how to upgrade CloudLinux 7 to CloudLinux 8 on systems with cPanel present.
+
+It uses an additional tool to assist with migration of cPanel-related features - the script provided by the cPanel team: [elevate-cpanel](https://github.com/cpanel/elevate).
+
+See the [official cPanel Elevate documentation here](https://cpanel.github.io/elevate/).
+
+### Upgrade process overview
+
+The cPanel upgrade process is divided into multiple stages.
+Each stage is responsible for one part of the upgrade.
+Between stages, a reboot is performed, with one last reboot at the end of the final stage.
+
+#### Stage 1
+
+The elevation process is initiated by installing the `elevate-cpanel` service responsible for controlling the upgrade process between multiple reboots.
+
+#### Stage 2
+
+The current distro packages are updated.
+cPanel services are disabled and the custom upgrade MOTD is set up.
+
+#### Stage 3
+
+The Leapp ELevate package repository is set up and Leapp packages are installed.
+The cPanel packages are prepared for the update.
+
+Some known conflicting packages are removed and some existing configurations are backed up. These packages will be reinstalled later.
+
+The main `leapp upgrade` process is executed.
+
+#### Stage 4
+
+At this stage the machine should be running CloudLinux 8.
+
+cPanel products for the new distro are updated.
+
+The packages that were removed during the previous stage are restored.
+
+#### Stage 5
+
+This is the final stage of the upgrade process.
+Some sanity checks and cleanup tasks are performed.
+
+The `elevate-cpanel` service used during the upgrade process is removed.
+
+A final reboot is performed at the end of this stage.
+
+### Preparing
+
+Make sure your system is fully updated before starting the upgrade process.
+
+```bash
+sudo yum -y update
+```
+
+In addition, make sure your system is running the latest available version of cPanel.
+
+Ensure that you have the package `ea-cpanel-tools >= 1.0-67.el7.cloudlinux` installed.
+You may need to activate the `cloudlinux-ea4-testing` package repository for that version to become accessible.
+By default, it is located at `/etc/yum.repos.d/cloudlinux-ea4-testing.repo`.
+
+Download the cPanel ELevate script.
+
+`wget -O /scripts/elevate-cpanel https://raw.githubusercontent.com/cpanel/elevate/release/elevate-cpanel`
+
+`chmod 700 /scripts/elevate-cpanel`
+
+Run a preupgrade check. No rpm packages will be installed during this phase.
+
+`/scripts/elevate-cpanel --check`
+
+:::tip Note
+In addition to Leapp-created log files and reports, contained in `/var/log/leapp`, cPanel ELevate also creates an additional log file: `/var/log/elevate-cpanel.log`
+
+It's advised to check the aforementioned files for possible problems and recommended solutions.
+:::
+
+:::tip Note
+In some cases, e.g. when directed by support, you may want to make use of the beta CloudLinux Leapp packages when running the upgrade.
+
+To do so, use the --leappbeta flag when running the elevate-cpanel script.
+
+`/scripts/elevate-cpanel --start`
+:::
+
+Once the preupgrade process completes, the results will be contained in `/var/log/leapp/leapp-report.txt` file.
+
+It's advised to review the report and consider how the changes will affect your system.
+
+:::danger WARNING
+In particular, pay attention to the packages that will not be upgraded during the transaction.
+
+Should any packages or package repositories that are unknown to Leapp be detected, they will be listed in the report. Consider how leaving the listed items unupgraded will affect the stability of your system.
+
+If the packages listed as unknown in the report are critical for your system, proceeding with the upgrade is **extremely likely** to damage its functionality, up to making the machine unaccessible.
+:::
+
+### Running
+
+:::warning
+The upgrade process requires a certain amount of system resources to complete.
+
+Machines with RAM lower than 4 Gb can potentially face out-of-memory problems during the update.
+If such a problem occurs during the *initramfs stage* of the process, the machine can end up in an **inaccessible state**.
+
+Please make sure you have enough resources to perform the upgrade safely, and make sure to have a backup of the system prepared before doing so.
+:::
+
+
+Start the upgrade by running the following command:
+
+`/scripts/elevate-cpanel --start`
+
+:::tip Note
+By default, the system will be automatically restarted during the upgrade process when nessesary. You can make the process require manual reboots by adding the switch `--manual-reboots`.
+
+Make sure you know what you're doing when using this switch, as you *must* manually reboot the server between the upgrade phases when using it - otherwise the process will remain incomplete and your system in a half-functional state.
+
+`/scripts/elevate-cpanel --start --manual-reboots`
+:::
+
+The system will reboot several times during the process. While the upgrade is in progress, the system's MOTD will change.
+
+Check the current status of the upgrade process with:
+`/scripts/elevate-cpanel --status`
+
+Monitor the elevation log for issues:
+`/scripts/elevate-cpanel --log`
+
+In case of errors, once they are resolved, you can continue the migration process with:
+`/scripts/elevate-cpanel --continue`
+
+
+:::tip Note
+During one of the later upgrade phases, the system will reboot into a custom initramfs, in which the main package upgrade transaction will take place.
+During this time, the system will be inaccessible through SSH.
+
+
+The upgrade process after the reboot may take a long time, up to 40-50 minutes, depending on the machine resources. If the machine remains unresponsive for more than 2 hours, assume the upgrade process failed during the post-reboot phase.
+If it's still possible to access the machine in some way, for example, through remote VNC access, the logs containing the information on what went wrong are located in this folder: `/var/log/leapp`, as well as here: `/var/log/elevate-cpanel.log`
+:::
+
+
+### Post-upgrade
+
+After the reboot, login into the system and check:
+
+* the status: `/scripts/elevate-cpanel --status`
+* the log: `/var/log/elevate-cpanel.log`
+* the Leapp report: `/var/log/leapp/leapp-report.txt`
+
+
+Verify that the current OS successfully upgraded to the new version.
+
+```
+cat /etc/redhat-release
+cat /etc/os-release
+```
+
+Check the leapp logs for `.rpmnew` configuration files that may have been created during the upgrade process. In some cases files like `/etc/os-release` or yum package files may not be replaced automatically - in particular, when said files were modified - requiring the user to rename the `.rpmnew` files manually.
+
+
+## ELevate Scenario - CloudLinux 7 with Plesk
+
+This scenario contains steps on how to upgrade CloudLinux 7 to CloudLinux 8 on systems with Plesk present.
+
+The process is performed through a tool provifed and maintained by the Plesk team, [cloudlinux7to8](https://github.com/plesk/cloudlinux7to8), with CL Leapp as a component of the process.
+
+See the official Plesk cloudlinux7to8 documentation with additional details at [the project page for cloudlinux7to8](https://github.com/plesk/cloudlinux7to8?tab=readme-ov-file#)
+
+### Preparation
+
+As always, make sure to have a backup of your system prepared before starting the upgrade process.
+
+Ensure that your system is fully updated before starting the upgrade process.
+
+To prepare for the upgrade, download the latest version of the cloudlinux7to8 tool from the [releases page](https://github.com/plesk/cloudlinux7to8/releases/latest):
+
+```
+
+> wget https://github.com/plesk/cloudlinux7to8/releases/download/v1.1.3/cloudlinux7to8-1.1.3.zip
+> unzip cloudlinux7to8-1.1.3.zip
+> chmod 755 cloudlinux7to8
+
+```
+
+### Running
+
+To monitor the conversion process, it is recommended to use the `screen` utility to run the conversion process in a separate session.
+
+```
+> screen -S cloudlinux7to8
+> ./cloudlinux7to8
+```
+
+If the connection is lost, you can reattach to the session with the following command:
+
+```
+> screen -r cloudlinux7to8
+```
+
+The process can also be run in the background:
+
+```
+> nohup ./cloudlinux7to8 &
+```
+
+This will start the conversion process.
+
+During the process, Plesk services will stop, and hosted websites will not be accessible.
+
+During the upgrade process, the system will reboot several times. The primary upgrade transaction, where the Leapp component updates the system to CL8, will be performed in a custom OS environment. The system will be inaccessible via SSH during this time.
+
+### Monitoring and troubleshooting
+
+The conversion process will take some time to complete.
+
+To check the status of the conversion process, use the `--status` flag.
+
+```
+> ./cloudlinux7to8 --status
+```
+
+To monitor the progress of the conversion process in real time, use the `--monitor` flag.
+
+```
+> ./cloudlinux7to8 --monitor
+( stage 3 / action re-installing plesk components  ) 02:26 / 06:18
+```
+
+Aside from the main Leapp logs contained in `/var/log/leapp`, the cloudlinux7to8 tool will create a log file in `/var/log/plesk/cloudlinux7to8.log` that contains additional information about the conversion process.
+
+### Reverting
+
+If the process fails during the initial stages, you can attempt to revert the system to its original state by running the cloudlinux7to8 tool with the `--revert` flag.
+
+```
+> ./cloudlinux7to8 --revert
+```
+
+The cloudlinux7to8 will undo some of the changes it made and restart Plesk services.
+
+Note that the revert process may not be able to fully restore the system to its original state, and you may need to restore from a backup if the system is left in an unusable state.
+
+You cannot use revert to undo the changes after the first reboot triggered by cloudlinux7to8.
+
+Also, the revert does not remove Leapp or packages installed by Leapp. Neither does it free persistent storage disk space reserved by Leapp.
diff --git a/docs/cloudlinuxos/faq/README.md b/docs/cloudlinuxos/faq/README.md
new file mode 100644
index 000000000..ad2f20191
--- /dev/null
+++ b/docs/cloudlinuxos/faq/README.md
@@ -0,0 +1,48 @@
+# FAQ
+
+### What is the CloudLinux subsystem on Ubuntu?
+
+CloudLinux subsystem on Ubuntu is a scope of deb-packages which allows using CloudLinux features on Ubuntu OS.
+The main goal of this subsystem is to allow operating the already existed CloudLinux functionality on another OS.
+
+### How to install the CloudLinux subsystem on Ubuntu?
+
+See [Installation](/installation/).
+
+### Is the CloudLinux subsystem on Ubuntu paid/unpaid?
+
+During the beta period it is free.
+
+### Can I get the ISO for the CloudLinux subsystem on Ubuntu?
+
+As of now, only installation via `ubuntu2cloudlinux.py` is available.
+
+### What control panel can be used with the CloudLinux subsystem on Ubuntu?
+
+As of now, only cPanel is supported. Plesk and DirectAdmin are not supported.
+
+### How can I get support for my CloudLinux subsystem on Ubuntu servers?
+
+Feel free to contact Support via [Support Portal](https://www.cloudlinux.com/support-portal/).
+
+### Can I use Docker with the CloudLinux subsystem on Ubuntu?
+
+You cannot use Docker with the CloudLinux subsystem on Ubuntu in the current version.
+
+### Is control panel integration functionality available in the current release?
+
+Yes, it is available.
+
+### How to set up a PHP-fpm handler for the domain?
+
+Since the PHP-fpm handler is required to use AccelerateWP, you may need to configure it manually.
+
+These are configuration steps:
+
+1. Ensure the PHP-fpm package for the current PHP version is installed or install it.
+
+    * Via MultiPHP Manager
+
+
+2. Enable PHP-fpm handler for domain via MultiPHP Manager
+
diff --git a/docs/cloudlinuxos/features/README.md b/docs/cloudlinuxos/features/README.md
new file mode 100644
index 000000000..552918faf
--- /dev/null
+++ b/docs/cloudlinuxos/features/README.md
@@ -0,0 +1,395 @@
+# Features
+
+Below, you can find the list of supported features with the links to the documentation available.
+
+## LVE limits
+
+* [Understanding limits](https://docs.cloudlinux.com/limits/#understanding-limits)
+* [SPEED limit](https://docs.cloudlinux.com/limits/#speed-limit)
+* [Memory limit](https://docs.cloudlinux.com/limits/#memory-limit)
+* [IO](https://docs.cloudlinux.com/limits/#io)
+* [IOPS](https://docs.cloudlinux.com/limits/#iops)
+* [Entry processes](https://docs.cloudlinux.com/limits/#entry-processes)
+* [Number of processes](https://docs.cloudlinux.com/limits/#number-of-processes)
+* [Inodes](https://docs.cloudlinux.com/limits/#inodes)
+* [Network traffic bandwidth control and accounting system](https://docs.cloudlinux.com/limits/#network-traffic-bandwidth-control-and-accounting-system)
+* [Limits validation](https://docs.cloudlinux.com/limits/#limits-validation)
+* [Compatibility matrix](https://docs.cloudlinux.com/limits/#compatibility-matrix)
+* [Reseller limits](https://docs.cloudlinux.com/limits/#reseller-limits)
+
+## Inode limits
+
+The documentation is available [here](https://docs.cloudlinux.com/limits/#inodes).
+
+## Reseller limits
+
+The documentation is available [here](https://docs.cloudlinux.com/limits/#reseller-limits).
+
+## MySQL Governor
+
+MySQL Governor is software to monitor and restrict MySQL usage in a shared hosting environment. The monitoring is done
+via resource usage statistics per each MySQL thread.
+
+MySQL Governor can also kill off slow SELECT queries.
+
+MySQL Governor has multiple modes of operations, depending on the configuration. It can work in monitor-only mode, or it
+can use different throttling scenarios.
+
+MySQL Governor allows restricting customers who use too many resources. It supports following limits:
+
+|       |       |                                                                                                        |
+|-------|-------|--------------------------------------------------------------------------------------------------------|
+| CPU   | %     | CPU speed relative to one core. 150% would mean one and a half cores                                   |
+| READ  | bytes | bytes read. Cached reads are not counted, only those that were actually read from disk will be counted |
+| WRITE | bytes | bytes written. Cached writes are not counted, only once data is written to disk, it is counted         |
+
+You can set different limits for different periods: current, short, med, long. By default those periods are defined as 1
+second, 5 seconds, 1 minute and 5 minutes. They can be re-defined using
+the [configuration file](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-and-operation). The idea is
+to use larger acceptable values for shorter periods. Like you could allow a customer to use two cores (200%) for one
+second, but only 1 core (on average) for 1 minute, and only 70% within 5 minutes. That would make sure that customer can
+burst for short periods of time.
+
+When a customer is restricted, the customer will be placed into special LVE with ID 3. All restricted customers will be
+placed into that LVE, and you can control the amount of resources available to restricted customers. Restricted
+customers will also be limited to only 30 concurrent connections. This is done so they wouldn't use up all the MySQL
+connections to the server.
+
+### Installation
+
+:::warning Attention!
+MySQL Governor on Ubuntu supports the following only:
+
+* cl-MySQL80 on non-panel system
+* cl-MySQL80 on cPanel
+* cl-MariaDB103 on non-panel system
+  :::
+
+1. Install MySQL Governor
+
+```
+apt  install governor-mysql
+```
+
+2. To use MySQL Governor with
+
+    * cl-MariaDB103
+    ```
+    /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mariadb103
+    ```
+    * cl-MySQL80
+    ```
+    /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mysql80
+    ```
+3. Backup your databases.
+4. Run the cl-MySQL/cl-MariaDB installation.
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --install --yes
+```
+
+In case of installing on cPanel + Ubuntu server, set the following parameter:
+
+
+5. After installation, check that the database server is working properly. If you have any problems,
+   use [Support Portal]().
+6. Configure user mapping to the database. The mapping format is described in
+   the [following section](https://docs.cloudlinux.com/cloudlinux_os_components/#mapping-a-user-to-a-database).
+
+In case a non-panel system the `/etc/container/dbuser-map` should be created and updated with new users by admin.
+
+The format is as follows:
+
+```
+[dbuser_name1] [account_name1] [UID1]
+...
+[dbuser_nameN] [account_nameN] [UIDN]
+```
+
+The control panel should automatically generate such mapping and write it to the `/etc/container/dbuser-map`. Usually,
+it is enough to write a hook when adding, deleting or renaming a database for a user. The control panel should implement
+such a mechanism for MySQL Governor to operate properly. MySQL Governor automatically applies changes from the
+dbuser-map file every five minutes.
+
+7. MySQL Governor configuration can be found in the
+   following [section](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-3).
+8. MySQL Governor CLI tools description can be found in the
+   following [section](https://docs.cloudlinux.com/command-line_tools/#mysql-governor).
+9. Having configured the mapping use `dbtop` to see the current user load on the database (you'd need to make some
+   database queries).
+
+```
+dbtop
+```
+
+10. If the load appears in the dbtop output, then you have successfully configured MySQL Governor.
+
+### How To upgrade database server
+
+You can find the instructions
+in [this documentation](https://docs.cloudlinux.com/cloudlinux_os_components/#upgrading-database-server).
+
+### Uninstalling
+
+To remove MySQL Governor, run the following command:
+
+```
+/usr/share/lve/dbgovernor/mysqlgovernor.py --delete
+```
+
+The script will install the original MySQL server, and remove MySQL Governor.
+
+### Configuration and operation
+
+You can find the instructions
+in [this documentation](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-and-operation).
+
+## Administrator WEB interface (CloudLinux Manager)
+
+The documentation is available [here](https://docs.cloudlinux.com/lve_manager/#cloudlinux-manager).
+
+* [Dashboard](/features/#dashboard)
+* [Current Usage](https://docs.cloudlinux.com/lve_manager/#current-usage)
+* [Users](https://docs.cloudlinux.com/lve_manager/#users)
+* [Statistics](https://docs.cloudlinux.com/lve_manager/#statistics)
+* [Packages](https://docs.cloudlinux.com/lve_manager/#packages)
+* [Options](https://docs.cloudlinux.com/lve_manager/#options)
+* [PHP Selector](https://docs.cloudlinux.com/cloudlinux_os_components/#php-selector)
+    * [Installation instructions](/features/#php-selector-installation-instructions)
+    * [Selector tab](https://docs.cloudlinux.com/lve_manager/#selector-tab)
+    * [Selector tab additional features (cPanel)](https://docs.cloudlinux.com/lve_manager/#selector-tab-additional-features)
+      CloudLinux Manager 6.0.1-2
+    * [PHP Selector troubleshooting (cPanel)](https://docs.cloudlinux.com/lve_manager/#php-selector-troubleshooting)
+      CloudLinux Manager 6.0.1-2
+    * [PHP Selector diagnostic tool and notifications](https://docs.cloudlinux.com/lve_manager/#php-selector-diagnostic-tool-and-notifications)
+      CloudLinux Manager 6.0.1-2
+
+### Dashboard
+
+:::warning Attention!
+MySQL Governor is not available in the current version. We're planning to add it in the upcoming releases.
+:::
+
+Dashboard provides a quick overview of statistics and all administrative information for server administrators.
+
+Go to _CloudLinux Manager_ | _Dashboard_.
+
+
+* End Users hitting limits — number of users reaching their limit in any kind of resource. Data is within the last 24
+  hours.
+* Resellers hitting limits — number of enrolled Resellers that are reaching their limit in any kind of resource. Data is
+  within the last 24 hours.
+* [PHP Selector](https://docs.cloudlinux.com/lve_manager/#php-selector-2) block displays the following information:
+    * Default version — the default version of PHP binaries. Click _Manage_ to change the default version, enable or
+      disable PHP Selector, change the list of supported versions, and choose default modules. You will be redirected to
+      CloudLinux Manager | PHP Selector. PHP Selector (cPanel) has malfunctions warnings
+      about [the most common issues](https://docs.cloudlinux.com/lve_manager/#errors).
+* [CageFS](https://docs.cloudlinux.com/cloudlinux_os_components/#cagefs) block displays the following information:
+    * CageFS status (Enabled/Disabled/Not installed). To manage CageFS, click _Manage_. You will be redirected to
+      CloudLinux Manager | Options | CageFS. Click _Install_ to install CageFS.
+    * Mode displays the current CageFS mode of operation.
+    * End users — displays the number of users with CageFS enabled/all.
+
+## Reseller WEB interface (CloudLinux Manager)
+
+* [Current Usage](https://docs.cloudlinux.com/lve_manager/#current-usage-tab)
+* [Historical Usage](https://docs.cloudlinux.com/lve_manager/#historical-usage-tab)
+* [Users](https://docs.cloudlinux.com/lve_manager/#users-tab)
+* [Statistics](https://docs.cloudlinux.com/lve_manager/#statistics-tab)
+* [Packages](https://docs.cloudlinux.com/lve_manager/#packages-tab)
+
+## User WEB interface
+
+* [Resource Usage](https://docs.cloudlinux.com/lve_manager/#resource-usage-client-plugin)
+* [PHP Selector](https://docs.cloudlinux.com/lve_manager/#php-selector-client-plugin)
+
+## LVE Wrappers
+
+The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#lve-wrappers).
+
+* lve_wrapper
+* lve_suwrapper
+
+## CageFS and running commands inside
+
+The documentation is
+available [here](https://docs.cloudlinux.com/control_panel_integration/#running-commands-inside-cagefs).
+
+* cagefs_enter
+* cagefs_enter_user
+
+## Hardened PHP
+
+* alt-php versions 5.6 - 8.0
+
+## Mod_hostinglimits
+
+LVE is a kernel level technology developed by the CloudLinux team. The technology has common roots with container based
+virtualization and uses cgroups in its latest incarnation. It is lightweight and transparent. The goal of LVE is to make
+sure that no single web site can bring down your web server.
+
+Today, a single site can consume all CPU, IO, Memory resources or Apache processes - and bring the server to a halt. LVE
+prevents that. It is done via collaboration of Apache module, PAM module and kernel.
+
+[mod_hostinglimits](https://docs.cloudlinux.com/cloudlinux_os_components/#hostinglimits-module-for-apache) is an Apache
+module that:
+
+* detects VirtualHost from which the request came;
+* detects if it was meant for CGI or PHP script;
+* puts Apache process used to serve that request into LVE for the user determined via SuexecUserGroup directive for that
+  virtual host;
+* lets Apache to serve the request;
+* removes Apache process from user's LVE.
+
+The kernel makes sure that all LVEs get fair share of the server's resources, and that no customer can use more then the
+limits set for that customer. Today we can limit CPU , Memory (virtual and physical), IO, number of processes as well as
+the number of entry processes (concurrent connections to apache).
+
+Each LVE limits amount of entry processes (Apache processes entering into LVE) to prevent single site exhausting all
+Apache processes. If the limit is reached, then mod_hostinglimits will not be able to place Apache process into LVE, and
+will return error code 508. This way very heavy site would slow down and start returning 508 errors, without affecting
+other users.
+
+* If the site is limited by CPU or IO, then the site will start responding slower.
+* If the site is limited by memory or number of processes limits, then the user will receive 500 or 503 errors that
+  server cannot execute the script.
+
+:::warning Attention!
+In the current version ONLY the following combinations are available: **ea-php81 with php-fpm** and **alt-php with
+suphp, cgi**
+:::
+
+#### ea-php81 with php-fpm
+
+To install, run the following command:
+
+```
+apt install ea-php81*
+```
+
+#### alt-php with suphp, cgi
+
+To install, follow these steps:
+
+1. Remove `mod-ruid2`:
+
+
+2. Install packages (with `alt-php74` as an example):
+
+   ```
+   apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
+   apt install alt-php74
+   ```
+
+#### PHP Selector installation instructions
+
+The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#php-selector).
+
+:::warning Attention!
+Only the following handlers can be used:
+
+* suphp
+* cgi
+  :::
+
+To install, run the following commands:
+
+```
+apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
+apt install cagefs
+cagefsctl –-init
+```
+
+## Symlink owner match protection
+
+The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-enforce-symlinksifowner).
+
+* [fs.enforce_symlinksifowner](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-enforce-symlinksifowner)
+* [fs.symlinkown_gid](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-symlinkown-gid)
+* [fs.process_symlinks_by_task](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-process-symlinks-by-task)
+
+## Link traversal protection
+
+* [fs.protected_symlinks_create](https://docs.cloudlinux.com/cloudlinux_os_kernel/#link-traversal-protection)
+* [fs.protected_hardlinks_create](https://docs.cloudlinux.com/cloudlinux_os_kernel/#link-traversal-protection)
+
+## Tuned profiles
+
+The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_kernel/#tuned-profiles-cloudlinux).
+
+## Apache mod_lsapi
+
+### General requirements
+
+General requirements are
+available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#general-information-and-requirements-9).
+
+### Installation
+
+Installation on cPanel servers with EasyApache 4:
+
+```
+apt install liblsapi liblsapi-dev 
+apt install ea-apache24-mod-lsapi
+/usr/bin/switch_mod_lsapi --setup
+service httpd restart
+```
+
+Installation on servers with no panel:
+
+```
+apt install liblsapi liblsapi-dev 
+apt install mod-lsapi
+/usr/bin/switch_mod_lsapi --setup
+service apache2 restart
+```
+
+### Configuration
+
+Configuration instructions are available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-4).
+
+### Troubleshooting
+
+In case the site responds with the error: 503 Service unavailable.
+
+1. Be sure that /opt has drwxr-xr-x permissions. It can be fixed with the following command:
+
+```
+$ chmod 755 /opt 
+```
+
+2. Change the default folder for mod_lsapi socket:
+
+```
+mkdir /var/mod_lsapi
+chown nobody.nobody /var/mod_lsapi
+chmod 755 /var/mod_lsapi
+```
+
+Add to /etc/apache2/conf.d/lsapi.conf new path:
+
+```
+lsapi_socket_path /var/mod_lsapi
+```
+
+And restart service:
+
+```
+service httpd restart
+```
+
+### Uninstall
+
+Uninstall procedure for cPanel servers with EasyApache 4:
+
+```
+/usr/bin/switch_mod_lsapi --uninstall
+apt remove liblsapi liblsapi-dev ea-apache24-mod-lsapi
+```
+
+Uninstall procedure for servers with no panel:
+
+```
+/usr/bin/switch_mod_lsapi --uninstall
+apt remove liblsapi liblsapi-dev mod-lsapi
+```
diff --git a/docs/shared/for_cloudlinux_partners/README.md b/docs/cloudlinuxos/for_cloudlinux_partners/README.md
similarity index 100%
rename from docs/shared/for_cloudlinux_partners/README.md
rename to docs/cloudlinuxos/for_cloudlinux_partners/README.md
diff --git a/docs/shared/for_cloudlinux_partners/whmcs_saved.md b/docs/cloudlinuxos/for_cloudlinux_partners/whmcs_saved.md
similarity index 100%
rename from docs/shared/for_cloudlinux_partners/whmcs_saved.md
rename to docs/cloudlinuxos/for_cloudlinux_partners/whmcs_saved.md
diff --git a/docs/cloudlinuxos/limits/README.md b/docs/cloudlinuxos/limits/README.md
new file mode 100644
index 000000000..8f4e2a9f6
--- /dev/null
+++ b/docs/cloudlinuxos/limits/README.md
@@ -0,0 +1,763 @@
+---
+sidebarDepth: 4
+---
+
+# Limits
+
+* [Understanding limits](/cloudlinuxos/limits/#understanding-limits)
+* [SPEED limit](/cloudlinuxos/limits/#speed-limit)
+* [Memory limit](/cloudlinuxos/limits/#memory-limit)
+* [IO](/cloudlinuxos/limits/#io)
+* [IOPS](/cloudlinuxos/limits/#iops)
+* [Entry processes](/cloudlinuxos/limits/#entry-processes)
+* [Number of processes](/cloudlinuxos/limits/#number-of-processes)
+* [Inodes](/cloudlinuxos/limits/#inodes)
+* [Network traffic bandwidth control and accounting system](/cloudlinuxos/limits/#network-traffic-bandwidth-control-and-accounting-system)
+* [Limits validation](/cloudlinuxos/limits/#limits-validation)
+* [Compatibility matrix](/cloudlinuxos/limits/#compatibility-matrix)
+* [Reseller Limits](/cloudlinuxos/limits/#reseller-limits)
+* [WEB interface resource limiting modes](/limits/#web-interface-resource-limiting-modes)
+
+CloudLinux OS has support for the following limits:
+
+| |  |  |  | |
+|--|---|--|--|--|
+|Limits | Units | Default Value | Description | Supported Kernels / OS|
+|<span class="notranslate"> [SPEED](/cloudlinuxos/limits/#speed-limit) </span> | % of a core, or HZ | 100% | <span class="notranslate"> CPU </span> speed limit, relative to a single core, or specified in HZ (portable across <span class="notranslate"> CPU </span> s) | all|
+|<span class="notranslate">[CPU](/cloudlinuxos/deprecated/#cpu-limits)</span> [deprecated] | % of <span class="notranslate"> CPU </span> | 25% | <span class="notranslate"> CPU </span> Limit (smallest of <span class="notranslate"> CPU </span> & NCPU is used) | all|
+|[NCPU](/cloudlinuxos/deprecated/#cpu-limits) [deprecated] | number of cores | 1 CORE | Max number of cores (smallest of <span class="notranslate"> CPU </span> & NCPU used) | all|
+|[PMEM](/cloudlinuxos/limits/#physical-memory-limit) | KB | 1024MB | Physical memory limit (RSS field in ps/RES in top). Also includes shared memory and disk cache | all|
+|[VMEM](/cloudlinuxos/limits/#virtual-memory-limit) | KB | 0 | Virtual memory limit (VSZ field in ps/VIRT in top) | all|
+|[IO](/cloudlinuxos/limits/#io) | KB/sec | 1024KB/sec | IO throughput - combines both read & write operations | CL8, CL7, CL6 lve1.1.9+ kernel|
+|[IOPS](/cloudlinuxos/limits/#iops) [lve1.3+] | Operations per second | 1024 | Restricts total number of read/write operations per second. | all|
+|[NPROC](/cloudlinuxos/limits/#number-of-processes) | number | 100 | Max number of processes within LVE | all|
+|[EP](/cloudlinuxos/limits/#entry-processes) | number | 20 | Limit on entry processes. Usually represents max number of concurrent connections to apache dynamic scripts as well as SSH and cron jobs running simultaneously. | all|
+
+
+
+::: warning Note
+It is always better to disable VMEM limits (set them to 0) in your system at all because they are deprecated and are causing unexpected issues.
+:::
+
+Bellow you can find recommendations for your typical shared hosting setup. The recommendations don't depend on the power of your server. They only depend on how "fast" you want your hosting accounts to be.
+
+**Typical Hosting Account**
+
+* <span class="notranslate">SPEED=100%</span>
+* <span class="notranslate">PMEM=1GB</span>
+* <span class="notranslate">VMEM=0</span>
+* <span class="notranslate">IO=1024KB/s</span>
+* <span class="notranslate">IOPS=1024</span>
+* <span class="notranslate">NPROC=100</span>
+* <span class="notranslate">EP=20</span>
+
+**High End Hosting Account**
+
+* <span class="notranslate">SPEED=200%</span>
+* <span class="notranslate">PMEM=2GB</span>
+* <span class="notranslate">VMEM=0</span>
+* <span class="notranslate">IO=4096KB/s</span>
+* <span class="notranslate">IOPS=1024</span>
+* <span class="notranslate">NPROC=150</span>
+* <span class="notranslate">EP=40</span>
+
+## Understanding limits
+
+* [Checking if LVE is installed](/cloudlinuxos/limits/#checking-if-lve-is-installed)
+* [Controlling LVE limits](/cloudlinuxos/limits/#controlling-lve-limits)
+* [Checking LVE usage](/cloudlinuxos/limits/#checking-lve-usage)
+
+LVE is a kernel level technology developed by the CloudLinux team. The technology has common roots with container based virtualization and uses cgroups in its latest incarnation. It is lightweight and transparent. The goal of LVE is to make sure that no single web site can bring down your web server.
+
+Today, a single site can consume all <span class="notranslate"> CPU, IO, Memory</span> resources or Apache processes - and bring the server to a halt. LVE prevents that. It is done via collaboration of Apache module, PAM module and kernel.
+
+[mod_hostinglimits](/cloudlinuxos/cloudlinux_os_components/#hostinglimits-module-for-apache) is Apache module that:
+
+* detects VirtualHost from which the request came;
+* detects if it was meant for CGI or PHP script;
+* puts Apache process used to serve that request into LVE for the user determined via SuexecUserGroup directive for that virtual host;
+* lets Apache to serve the request;
+* removes Apache process from user's LVE.
+
+The kernel makes sure that all LVEs get fair share of the server's resources, and that no customer can use more then the limits set for that customer.
+Today we can limit <span class="notranslate">CPU </span>, <span class="notranslate"> Memory </span> (virtual and physical), IO, number of processes as well as the number of entry processes (concurrent connections to apache).
+
+Each LVE limits amount of entry processes (Apache processes entering into LVE) to prevent single site exhausting all Apache processes. If the limit is reached, then <span class="notranslate">mod_hostinglimits</span> will not be able to place Apache process into LVE, and will return error code 508. This way very heavy site would slow down and start returning 508 errors, without affecting other users.
+
+* If the site is limited by <span class="notranslate"> CPU </span> or <span class="notranslate">IO</span>, then the site will start responding slower.
+* If the site is limited by memory or number of processes limits, then the user will receive 500 or 503 errors that server cannot execute the script.
+
+### Checking if LVE is installed
+
+To use LVE you should have CloudLinux OS kernel installed, and LVE module loaded. You can check the kernel by running the following command:
+
+<div class="notranslate">
+
+```
+uname -r
+```
+</div>
+
+You should see something like 2.6.32-896.16.1.lve1.4.53.el6.x86_64. The kernel should have lve in its name. To see if lve kernel module is loaded run:
+
+<div class="notranslate">
+
+```
+lsmod|grep lve  
+
+lve                    46496  0
+```
+</div>
+
+Starting from kernels lve1.4.x iolimits module is a part of kmod-lve and could not be used separately.
+
+* You can toggle LVE on/off by editing <span class="notranslate">`/etc/sysconfig/lve`</span> and setting <span class="notranslate">`LVE_ENABLE`</span> variable to <span class="notranslate">`yes`</span> or <span class="notranslate">`no`</span>.
+
+    Setting it to <span class="notranslate">`yes`</span> will enable LVE, setting it to <span class="notranslate">`no`</span> will disable LVE.
+
+* You can toggle IO limits by editing <span class="notranslate">`/etc/sysconfig/iolimits`</span> and setting <span class="notranslate">`IO_LIMITS_ENABLED`</span> variable to <span class="notranslate">`yes`</span> or <span class="notranslate">`no`</span>.
+
+You need to reboot the server, after you set this option to make the changes live.
+
+### Controlling LVE limits
+
+The best way to control LVE limits is using <span class="notranslate">LVE Manager</span> in your favorite control panel. Alternatively, you can use command line tool `lvectl` to control limits.
+The limits are saved in <span class="notranslate">`/etc/container/ve.cfg`</span> 
+
+Example:
+
+<div class="notranslate">
+
+```
+<?xml version="1.0" ?>
+<lveconfig>
+ <defaults>
+         <cpu limit="25"/>
+         <ncpu limit="1"/>
+         <io limit="1024"/>
+         <mem limit="262144"/>
+         <other maxentryprocs="200"/>
+         <pmem limit="262144"/>
+         <nproc limit="0"/>
+ </defaults>
+ <lve id="532">
+         <cpu limit="30"/>
+         <ncpu limit="5"/>
+ </lve>
+</lveconfig>
+```
+</div>
+
+Sets <span class="notranslate">CPU</span> limit to 25%, <span class="notranslate">IO</span> limit to 1024KB/s, <span class="notranslate">virtual memory</span> limit to 1GB (memory limit is set as a number of 4096 bytes pages), <span class="notranslate">physical memory</span> limit to 1GB, <span class="notranslate"> CPU</span> cores per LVE to 1, maximum entry processes to 200 and no limit for number of processes for all LVEs. It also sets the limit of 30% and number of processes limit to 5 for LVE with ID 532.
+
+### Checking LVE usage
+
+
+One of the best way to monitor current usage is [lvetop](/cloudlinuxos/command-line_tools/#lvetop):
+
+<div class="notranslate">
+
+```
+lvetop  
+
+         ID     EP    PNO    TNO    CPU    MEM    I/O
+         test    1     2            2     2%    728     0   
+```
+</div>
+
+You can also check the content of <span class="notranslate">`/proc/lve/list`</span> file that has all the data about LVE usage for all LVEs:
+
+<div class="notranslate">
+
+```
+cat /proc/lve/list  
+
+4:LVE        EP        lCPU        lIO        CPU        MEM        IO        lMEM        lEP        nCPU        fMEM        fEP
+0        0        75        25        0        0        0        262144        20        2        0        0
+500        0        75        25        0        0        0        4294967 20        3        2        1        
+700        1        75        25        1403247        202        0        262144        20        2        0        0
+```
+</div>
+
+Additionally, you can use tool [lveps](/cloudlinuxos/command-line_tools/#lveps) to see <span class="notranslate">CPU</span> usage, and processes within LVE.
+
+## SPEED limit
+
+:::tip Note
+<span class="notranslate">lve-utils 1.4+</span>
+:::
+
+<span class="notranslate">CPU SPEED</span> limit allows to set <span class="notranslate">CPU</span> limit in terms of % of a single core, or as a fixed number of Hz.
+
+<span class="notranslate">`--speed=XX%`</span> would set performance relative to one core.
+
+For example:
+
+* <span class="notranslate"> `--speed=50%` </span> would mean 1/2 core.
+* <span class="notranslate"> `--speed=100%` </span> would mean 1 core,
+* <span class="notranslate"> `--speed=150%` </span> would mean 1.5 cores
+
+<span class="notranslate"> `--speed=XXmhz` </span> would automatically detect <span class="notranslate"> CPU </span> speed of each core, and adjust the <span class="notranslate"> CPU </span> scheduler to make sure user cannot go over that limit.
+
+For example, on 1ghz <span class="notranslate"> CPU </span> , setting of <span class="notranslate"> `--speed=2ghz` </span> would mean 2 cores, while on 4ghz <span class="notranslate"> CPU </span> same setting would mean 1/2 of a core.
+
+This should allow hosting companies to set same approximate performance level limits across different hardware using single setting.
+
+:::tip Note
+Note. We strongly recommend setting <span class="notranslate">CPU</span> speed limits not less than 100%. As such limits cause <span class="notranslate">CPU</span> context switching which leads to increased `%sys`.
+:::
+
+## Memory limit
+
+Memory is controlled using virtual (VMEM) and physical (PMEM) memory limits.
+
+### Virtual memory limit
+
+Virtual memory limit corresponds to the amount of memory processes can allocate within LVE. You can see individual process virtual memory usage by monitoring <span class="notranslate">VIRT</span> column in <span class="notranslate"> top </span> output for the process.
+
+When process tries to allocate more memory, CloudLinux OS checks if the new total virtual memory used by all processes within LVE is more then a limit set. In such case CloudLinux OS will prevent memory from being allocated and increments fVMEM counter. In most cases, but not all of them - this causes process to fail. For CGI/PHP scripts it will usually cause 500 and 503 error.
+
+:::tip Note
+It is recommended to disable VMEM limits (set them to 0) in your system at all because they are deprecated in CloudLinux OS 6 and 7 system and can cause unexpected issues.
+:::
+
+### Physical memory limit
+
+Physical memory limit corresponds to the amount of memory actually used by end customer's processes. You can see individual process physical memory usage by monitoring RES column in top output for the process. Because similar processes (like PHP) share a lot of their memory, physical memory usage is often much lower then virtual memory usage.
+
+Additionally physical memory includes shared memory used by the customer, as well as disk cache (*disk cache may not be accounted in the statistics, see [Disable Page Cache accounting](/cloudlinuxos/limits/#disable-page-cache-accounting) below*).
+In case of disk cache – if a user is starting to lack physical memory, the memory used for disk cache will be freed up, without causing any memory faults.
+
+When LVE goes over physical memory limit, CloudLinux OS will first free up memory used for disk cache, and if that is not enough, it will kill some of the processes within that LVE, and increment fPMEM counter. This will usually cause web server to serve 500 and 503 errors. Physical memory limit is a much better way to limit memory for shared hosting.
+
+#### Disable Page Cache accounting
+
+Since kmod-lve 2.0-53 (for CL8) and 2.1-17 (for CL9) we have released the new sysctl param `kernel.memstat_nocache`. 
+
+By default the LVE kernel module includes page cache amount when it accounts a physical memory consumption per-LVE. It can lead to the following case:
+![](/images/cloudlinuxos/limits/PhysicalMemoryUsageDisablePageCacheAccounting.webp)
+
+The page cache stays in the memory after the processes that triggered him ended their work. It potentially confuses end customers.
+
+You can check the statistics by the following CLI command:
+```
+lveps
+```
+or see the statistics in your Hosting Panel web-interface: [Cloudlinux manager -> Statistics](/cloudlinuxos/lve_manager/#statistics).
+
+To make the statistics doesn’t count the page cache you could just enable the new `sysctl` option:
+```
+sysctl -w kernel.memstat_nocache=1
+```
+:::tip Note:
+This option is enabled by default for new customers since the release of kmod-lve 2.0-53 (for CL8) and 2.1-17 (for CL9).
+:::
+
+:::tip Note: 
+Kernel memory accounting is disabled by default on CloudLinux OS 7/8/9 systems due to incompatibility with the kmodlve kernel module. This feature may trigger long timeouts in the kernel in highly loaded systems that can lead to kernel crashes. CloudLinux OS 7 kernel is compiled without it, while in the 8 and 9 systems we use `cgroup.memory=nokmem` kernel parameter in the CL’s tuned profiles and you can enable it by changing our profile (may be overwritten after update) or supporting your own one.
+:::
+
+### Troubleshooting
+
+* [Checking personal users disk cache (If lveinfo shows memory usage but there are no processes there)](/cloudlinuxos/limits/#checking-personal-users-disk-cache-if-lveinfo-shows-memory-usage-but-there-are-no-processes-there)
+
+#### Checking personal users disk cache (If lveinfo shows memory usage but there are no processes there)
+
+If you see no processes under some user, but lve manager keeps telling it is using some memory, then most probably memory is taken by users disk cache. To check personal users disk cache (if lveinfo shows memory usage but not processes there) for CloudLinux OS 6:
+
+<div class="notranslate">
+
+```
+cat /proc/bc/XXX/meminfo
+```
+</div>
+
+On **CloudLinux OS 7 and CloudLinux OS 6 Hybrid** systems, the file is different:
+
+<div class="notranslate">
+
+```
+cat /proc/bc/lveXXX/meminfo
+```
+</div>
+
+Look for this line: <span class="notranslate"> `Cached: 67300 kB` </span>
+
+On **CloudLinux OS 8 and CloudLinux OS 7 Hybrid** systems:
+
+<div class="notranslate">
+
+```
+cat /sys/fs/cgroup/memory/lveXXX/memory.stat
+```
+</div>
+
+Look for this line: <span class="notranslate"> `cache 1662976` </span>
+
+where XXX is a user id, could be found out by:
+
+<div class="notranslate">
+
+```
+id username
+```
+</div>
+
+## IO
+
+IO limits restrict the data throughput for the customer. They are in KB/s. When limit is reached, the processes are throttled (put to sleep). This makes sure that processes within LVE cannot go over the limit,. Yet don't stop working, nor getting killed – they just work slower when the limit is reached.
+
+IO limits are available with kernels **el6.lve1.x** and higher.
+
+The IO limits will only affect <span class="notranslate"> DISK IO</span>, and will have no effect on network. It also doesn't take into consideration any disk cache accesses. So, even if file is loaded from disk cache 1000 times – it will not be counted towards <span class="notranslate">IO</span> limits.
+
+## IOPS
+
+<span class="notranslate">IOPS</span> limits restrict the total number of read/write operations per second. When the limit is reached the read/write operations stop until current second expires.
+
+## Entry processes
+
+<span class="notranslate"> Entry processes </span> limit controls the number of entries into LVE. Each time a process 'enters' into LVE, we increment the counter. Each time process exits LVE, we decrement the counter. We don't count processes that are created inside LVE itself. It is also know as <span class="notranslate"> 'Apache concurrent connections' </span> limit.
+
+The process enter's into LVE when there is a new HTTP request for CGI/PHP.
+
+This limit was created to prevent DoS attacks against web server. One of the fairly popular attacks is to tie up all the Apache connections by hitting some slow page on a server. Once all Apache slots are used up, no one else will be able to connect to the web server, causing it to appear to be down. The issue is worsened by <span class="notranslate"> CPU </span> limits, as once site starts to get slow due to <span class="notranslate"> CPU </span> limit – it will respond to requests slower and slower, causing more and more connections to be tied up.
+
+To solve that, we have created entry processes (often called concurrent connections) limit. It will limit the number of concurrent connections to Apache, causing web server to serve error 508 page (<span class="notranslate"> Resource Limit Reached</span>), once there number of concurrent requests for the site goes above the limit.
+
+**In the case of working with the LiteSpeed web server**, the _Entry processes_ limit implementation differs from the one implemented in Apache.
+
+Therefore, when there is the same load with concurrent requests to Apache and LiteSpeed, the _Entry processes_ limit may differ depending on the web server.
+
+In the case of LiteSpeed the _Entry processes_ limit increases with the number of lsphp master processes, for example in workgroup mode, the web server only starts one lsphp master process, then this process will fork children processes to process requests without increasing the _Entry processes_ limit.
+
+If you'd like to set the concurrent connection limit with LiteSpeed, you can use the standard web server tools like [https://docs.litespeedtech.com/cp/cpanel/antiddos/#connection-throttling](https://docs.litespeedtech.com/cp/cpanel/antiddos/#connection-throttling).
+
+
+## Number of processes
+
+<span class="notranslate"> NPROC </span> controls the total number of processes and threads within LVE. Once the limit is reached, no new process can be created (until another one dies). When that happens <span class="notranslate"> NPROC </span> counter is incremented. Apache might return 500 or 503 errors in such case.
+
+## Inodes
+
+:::tip Note
+Supported on cPanel, Plesk, and DirectAdmin control panels
+:::
+
+<span class="notranslate"> LVE Manager inodes </span> limits extension allows setting <span class="notranslate"> inode </span> limits for the customers. An <span class="notranslate"> inode </span> is a data structure on a file system used to keep information about a file or a folder. The number of <span class="notranslate"> inodes </span> indicates the number of files and folders an account has. <span class="notranslate"> inodes </span> limits work on the level of <span class="notranslate"> disk quota </span> , and will be enabled on <span class="notranslate"> /home </span> partition only.
+
+<span class="notranslate"> LVE Manager </span> allows to set <span class="notranslate"> soft </span> and <span class="notranslate"> hard IO </span> limit.
+
+* <span class="notranslate"> Hard </span> limit prevents a user from writing data to disk.
+
+* <span class="notranslate"> Soft </span> limit can be exceeded for a period of time. The global grace period can be set using: <span class="notranslate"> `edquota -t` </span>.
+
+* You can set <span class="notranslate"> inodes </span> limits using <span class="notranslate"> LVE Manager </span> , the same way you would set any other LVE Limits:
+
+::: tip More about the `edquota` utility usage
+The default grace period is seven days. It means a user or a group will be able to use resources (block size or inodes after the soft limit) for seven days. After seven days they will be denied to use of any additional resources.  
+
+To set a grace period for a user:
+```
+edquota -T [username]
+```
+To set a grace period for a group:
+```
+edquota -T -g [groupname]
+```
+To adjust the global grace period:
+```
+edquota -t
+```
+
+You can find a full manual for this tool [here](https://man7.org/linux/man-pages/man8/edquota.8.html).
+:::
+
+::: tip Note
+We do not collect statistical information on the inodes like we do for other LVE limits.
+:::
+
+The limits can be set on the level of individual [account](/cloudlinuxos/lve_manager/#actions) or [package](/cloudlinuxos/lve_manager/#packages).
+
+Sometimes <span class="notranslate">disk quota</span> breaks, so do <span class="notranslate"> inodes </span> limits. You can reset them through the <span class="notranslate">_Options_</span> tab of <span class="notranslate">LVE Manager</span>:
+
+![](/images/cloudlinuxos/limits/inodelimitsoptions_zoom70.webp)
+
+The same can be achieved using [cloudlinux-config](/cloudlinuxos/command-line_tools/#cloudlinux-config) CLI utility
+
+End users can monitor their inodes usage through cPanel only (not available on Plesk and DirectAdmin):
+
+![](/images/cloudlinuxos/limits/inodescpanel.webp)
+
+End user can also see the usage inside resource usage menu.
+
+::: tip Important Note about Synchronization
+When using inode limits with cPanel, please note that changes made through LVE Manager may not be reflected in cPanel user configuration files (<span class="notranslate">`/var/cpanel/users/*`</span>). This is a known limitation where the actual quota enforcement works correctly, but the user files may show outdated limit values. See [Known cl-quota limitations behaviour](/cloudlinuxos/command-line_tools/#known-cl-quota-limitations-behaviour) and [Troubleshooting](/cloudlinuxos/command-line_tools/#troubleshooting) for more details.
+:::
+
+## Network traffic bandwidth control and accounting system
+
+:::tip Note
+Requires kernel lve1.4.4.el6 or higher, or lve1.4.56.el7 or higher
+:::
+
+Network traffic bandwidth control and accounting systems in CloudLinux OS 6 allows for each LVE container:
+
+* Limiting outgoing network traffic bandwidth
+* Accounting incoming and outgoing network traffic
+
+:::tip Note
+The system supports IPv4 only protocol.
+:::
+
+### How to limit outgoing network traffic
+
+All outgoing IP packets generated inside LVE container are marked with LVE identifier. Traffic control utility tc from iproute2 package uses this marker to set required bandwidth.
+
+:::tip Note
+CloudLinux OS doesn’t limit the network traffic itself, it only marks IP packets with specific LVE id.
+:::
+
+**Example 1:**
+
+1. We create class with <span class="notranslate"> HTB qdiscs </span> and rate <span class="notranslate"> 10kbit </span>:
+
+<div class="notranslate">
+
+```
+tc qdisc add dev eth1 root handle 1: htb
+
+tc class add dev eth1 parent 1: classid 1:1 htb rate 10kbit
+```
+</div>
+
+2. All packets marked with LVE id will be processed by class 1:1 (rate <span class="notranslate"> 10kbit </span>).
+
+<div class="notranslate">
+
+```
+tc filter add dev eth1 parent 1: handle 2121 fw flowid 1:1
+```
+</div>
+
+**Example 2:**
+
+1. As an example we create class with <span class="notranslate"> HTB qdiscs </span> and rate <span class="notranslate">100mbit</span> and class 1:10 will be used by default:
+
+<div class="notranslate">
+
+```
+tc qdisc add dev eth3 root handle 1: htb default 10
+
+tc class add dev eth3 parent 1: classid 1:1 htb rate 100mbit
+```
+</div>
+
+2. For class 1:1 we create two branches with rate 5 <span class="notranslate"> mbit </span> and 10 <span class="notranslate"> kbit </span> accordingly, with classid 1:10 and 1:20.
+
+<div class="notranslate">
+
+```
+tc class add dev eth3 parent 1:1 classid 1:10 htb rate 5mbit
+
+tc class add dev eth3 parent 1:1 classid 1:20 htb rate 10kbit
+```
+</div>
+
+3. All packets marked with LVE id=2121 are processed by 10 kbit class.
+
+<div class="notranslate">
+
+```
+tc filter add dev eth3 protocol ip parent 1: prio 1 handle 2121 fw flowid 1:20
+
+```
+</div>
+
+More info about `tc` and its syntax can be found on the link [http://tldp.org/HOWTO/Traffic-Control-HOWTO/index.html](http://tldp.org/HOWTO/Traffic-Control-HOWTO/index.html)
+
+#### CloudLinux OS 8 specific setup
+
+In order to apply 256 kbit/s limit to LVE 123 (0x7b) through enp0s3, one needs to run the following commands:
+
+```
+tc qdisc add dev enp0s3 root handle 1: htb
+tc class add dev enp0s3 parent 1: classid 1:7b htb rate 256kbit
+tc filter add dev enp0s3 parent 1: handle 1: cgroup
+```
+
+### Traffic accounting
+
+Traffic accounting is performed for each LVE container. Network statistics is collected at <span class="notranslate">`/proc/lve/list`</span> file. Network-related data found at fields:
+
+* <span class="notranslate">`lNETO`</span> - output traffic limit by volume, equals 0*
+* <span class="notranslate">`lNETI`</span> - input traffic limit by volume, equals 0*
+* <span class="notranslate">`NETO`</span> - current outgoing traffic value
+* <span class="notranslate">`NETI`</span> - current incoming traffic value
+
+The data is also collected at <span class="notranslate">`/proc/lve/per-lve/<id>/net_stat`</span>, where `id` is an LVE container identifier.
+
+<span class="notranslate">`net_stat`</span> file contains 4 values in one row:
+
+* Outgoing traffic limit by volume, equals 0*
+* Incoming traffic limit by volume, equals 0*
+* Current outgoing traffic value
+* Current incoming traffic value
+
+:::tip Note
+The current version of CloudLinux OS network control system doesn’t limit network traffic volume for a specific period of time (for example 3GB per day), it limits only network bandwidth.
+
+Network limits are supported only for processes inside LVE. By default it does not limit static content, but only PHP/cgi scripts processed by Apache and processes launched over ssh etc.
+:::
+
+
+## Limits validation
+
+* [Exceptions list (validation is not supported)](/cloudlinuxos/limits/#exceptions-list-validation-is-not-supported)
+* [Existing limits validation](/cloudlinuxos/limits/#existing-limits-validation)
+* [Best practice](/cloudlinuxos/limits/#best-practice)
+
+Starting from <span class="notranslate">**lve-utils**</span> **version 3.1-1**, the validation of EP and NPROC limits is supported. If an administrator sets the NPROC limit less than (EP + 15), the following warning is shown:
+
+<div class="notranslate">
+
+```
+error: You're trying to set invalid LVE limits.
+NPROC limit must be greater than EP + 15 limit, because number of processes and threads within LVE includes
+also Apache processes/threads, SSH sessions and etc, which enter into LVE.
+```
+ </div>
+
+PMEM LVE limit should not be lower than 512 MB.
+    
+Validation does not affect limits operation in any way. Even if invalid limits have been set, they will be applied for users/resellers.
+
+Commands that support validation:
+
+1. <span class="notranslate">`lvectl set`</span>
+
+This command allows validation of an LVE ID which does not have a corresponding UID in the system. I.e., you can set limits for any LVE ID and they can be validated.
+
+
+2. <span class="notranslate">`lvectl set-user`</span>
+
+This command allows validation when setting limits using a user name instead of LVE ID.
+
+
+3. <span class="notranslate">`lvectl set-reseller`</span>
+
+This command supports limits validation both for inactive reseller and active one.
+
+4. <span class="notranslate">`lvectl set-reseller-default`</span>
+
+This command supports validation when setting default limits for a reseller.
+
+
+5. <span class="notranslate">`lvectl package-set`</span>
+
+This command supports limits validation both for packages existing in the system and nonexisting ones.
+
+
+6. The <span class="notranslate">`cloudlinux-package`</span> and <span class="notranslate">`cloudlinux-limits`</span> commands support all validation types described above, and support limits validation and exceptions lists as described below.
+
+#### Exceptions list (validation is not supported)
+
+
+1.    a) When EP limit for a package is greater than a custom NPROC limit for a user included in this package.
+
+ **OR**
+ 
+ b) when NPROC limit for a package is less than a custom EP limit for a user included in this package.
+ 
+
+2.    a) When default EP limit for a hoster is greater than a custom NPROC limit for a user/package which inherits the default limit.
+
+ **OR**
+ 
+ b) When default NPROC limit for a hoster is less than a custom EP limit for a user/package which inherits the default limit.
+ 
+
+3. When using the following commands:
+
+ a) <span class="notranslate">`lvectl set-reseller --all`</span>
+
+ b) <span class="notranslate">`cloudlinux-limits --json enable-reseller-limits --all`</span>
+
+
+#### Existing limits validation
+
+ 
+The automatic validation using <span class="notranslate">`cldiag`</span> utility by cron job is enabled on a server by default. You can disable it in the <span class="notranslate">`/etc/sysconfig/cloudlinux`</span> config file using <span class="notranslate">`ENABLE_CLDIAG`</span> option (**Warning!** This option disables all automatic checks using cldiag!) When calling this utility automatically by cron, it checks all limits existing on the server and send an administrator a report with limits check results. You can use the following command to validate existing limits: <span class="notranslate">`cldiag --check-lve-limits`</span>.
+
+
+The important difference between checking existing and setting limits is that even if validation fails when setting limits (see exceptions list above), checking existing limits will catch invalid limits in any case. I.e. even if a server administrator set invalid limits, validation of existing limits will catch invalid limit in any case.
+
+#### Best practice
+
+Set NPROC limit greater than (EP + 15).
+
+
+
+## Compatibility matrix
+
+
+| |  |  |  |  |  |  | |
+|-|--|--|--|--|--|--|-|
+|<span class="notranslate"> Web Server / PHP </span> | <span class="notranslate"> CPU </span> | <span class="notranslate"> Virtual & Physical Memory </span> | <span class="notranslate"> EP </span> | NPROC | <span class="notranslate"> IO </span> | CageFS | <span class="notranslate"> PHP Selector </span>|
+|Apache / suPHP | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
+|Apache / FCGID | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
+|Apache / CGI | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
+|Apache / PHP-FPM | Yes<sup> 2</sup> | Yes | Yes | Yes | Yes | Yes<sup> 2</sup> | No|
+|Apache / mod_php (DSO) | Yes | No | Yes | Yes | Yes | No | No|
+|Apache / mod_ruid2 | Yes | No | Yes | Yes | Yes | No | No|
+|Apache / MPM ITK | Yes | No | Yes | Yes | Yes | Yes<sup> 1</sup> | No|
+|LiteSpeed | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
+|NGINX / PHP-FPM | Yes<sup> 2</sup> | Yes | No | Yes | Yes | Yes | No|
+|SSH | Yes | Yes | Yes | Yes | Yes | Yes<sup> 2</sup> | Yes|
+|<span class="notranslate">Cron Jobs</span> | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
+|<span class="notranslate">Apache / mod_lsapi</span> | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
+
+1. Requires patched version of MPM-ITK. CL httpd RPM has ITK worker with the patch. Patch is also available at: [https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
+2. PHP binaries from sources other than DirectAdmin/CloudLinux OS require recompile with patches available at: [https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
+
+
+:::tip Note
+Please note that mod_lsapi does not work when php-fpm is enabled because php-fpm is also a PHP Handler just as mod_lsapi.
+:::
+
+:::tip Note
+<span class="notranslate">`mod_lsapi`</span> is an Apache module whilst LiteSpeed is a standalone solution and does not use any of Apache modules (since it provides its own implementation of these modules). Moreover, it is advised to leave your Apache configuration as is just in case you decide to switch back from LiteSpeed.
+:::
+
+
+## Reseller limits
+
+**Reseller limits** is a feature that allows hosters to limit the resources each reseller can operate. Reseller limits put a restriction on the cumulative resources this reseller and his end-users can use at any given moment in time.  
+
+Reseller limits feature also enables hosters to give their resellers controls over the end-user’s resources. Resellers can assign limits to their end-users as they want, even if they are higher than the limits assigned to the reseller. The reseller’s end-users will not be limited by the reseller limits unless their **cumulative usage** goes above the limits the hoster assigned to their reseller.
+
+:::warning
+Reseller cannot manage INODE or MYSQL limits. Neither his own, nor for his users.
+:::
+
+- [Design](/cloudlinuxos/limits/#design)
+- [Requirements](/cloudlinuxos/limits/#requirements)
+- [Configuration](/cloudlinuxos/limits/#configuration)
+    - [Enabling Reseller limits](/cloudlinuxos/limits/#enabling-reseller-limits)
+    - [How to disable Reseller limits](/cloudlinuxos/limits/#how-to-disable-reseller-limits)
+    - [More resources](/cloudlinuxos/limits/#more-resources)
+
+### Design
+
+To understand the quirks of how Reseller Limits operate, we need to look more closely into the four types of users that a typical shared hosting server has:
+
+![](/images/cloudlinuxos/limits/ResellerLimits-diagram.webp)
+
+Reseller himself (green box on the scheme) is a virtual entity. When a hoster enables reseller limits, the entity itself cannot hit the limits. There is usually an end-user with the same username as the reseller that acts as a regular reseller’s end-user. When the hoster sets Reseller limits, he limits the group of end-users he owns, including the reseller's end-user with the same username.  
+
+Resellers can configure their end-users limits differently. There are several scenarios when Reseller limits will get activated:  
+
+- A reseller can assign limits to their end-users that are higher than the limits hoster assigned to this reseller. In this case, the end-user will be limited by reseller limit when he reaches it. 
+- A reseller can assign limits to their end-users that are lower than the limits hoster assigned to this reseller. In this case, the end-user will be limited by his limit and not by the reseller limits when he reaches it.
+- Reseller limits will get activated when all reseller’s resources are consumed by his users at any given moment.
+
+As you probably have already understood, the reseller will technically be able to assign his/her end-users limits higher than his Reseller limits. However, it won’t be possible for the end-users to go over the reseller limits no matter what his individual limit is.
+
+### Requirements
+
+1. CloudLinux OS should be [installed](/cloudlinuxos/cloudlinux_installation/) on the server.
+2. You also need to check that your kernel supports Reseller limits feature
+    * CloudLinux OS 6 and kernels **2.16+**: not supported, you need to [migrate to Hybrid](/cloudlinuxos/cloudlinux_os_kernel/#how-to-migrate-from-the-normal-to-hybrid-channel-cl6h).
+    * CloudLinux OS 6 Hybrid: supported starting from **3.10.0-714.10.2.lve1.5.3.el6h** kernel.
+    * CloudLinux OS 7: supported starting from **3.10.0-714.10.2.lve1.5.3.el7** kernel.
+    * CloudLinux OS 7 Hybrid: supported
+    * CloudLinux OS 8: supported 
+3. lvemanager package version **3.0-18+** and later installed. If you don’t have it, update your system
+
+### Configuration
+
+#### Enabling Reseller limits 
+
+If you have decided to jump on board and enable Reseller limits for your resellers you should do the following:
+
+1. Make sure that you run CloudLinux OS with the kernel and lvemanager that meets the [necessary requirements](/cloudlinuxos/limits/#requirements). 
+2. Log in with a hoster access.
+3. You can create a new reseller account or configure an existing reseller account to have Reseller limits enabled. Consult your control panel documentation on how to do that.
+4. For cPanel servers when creating an account, make sure to tick two checkboxes **Make this account a reseller** and **Make the account own itself** in the _Reseller Settings_ box.
+
+![](/images/cloudlinuxos/limits/ResellerLimits-cPanel.webp)
+
+Selecting **Make the account own itself** makes the reseller full owner of all his accounts, including the end-user account with the same username. This option is integral to making reseller limits work for the reseller account. If you don’t select it, Reseller limits will not be applied. If the reseller account you want to limit with Reseller limits has already existed, you need to make sure it is properly owned. Go to _WHM_ -> _Modify account_ -> find the account with the same username as your reseller -> change the owner to the username of your reseller.
+
+5. Now that preparations are done, go to _CloudLinux OS LVE Manager_ -> _Users_ tab, choose a reseller and click on the pencil icon.
+6. When the pop-up opens, move the slider _Manage Limits_ -> Click _AGREE_  when asked _Are you sure you want to enable limits_ -> assign the limits to that reseller. Finally, click _Save_.
+
+![](/images/cloudlinuxos/limits/ResellerLimits-enabling.webp)
+
+::: tip Note 
+Managing Reseller limits are not available for Solo and Admin editions. More at [Cloudlinux OS editions](/introduction/#cloudlinux-os-editions)
+:::
+ 
+ :::tip 
+When you move a user from one reseller to another on DirectAdmin you need to manually change its package because the packages aren’t moved together with users. If you don’t reassign the package, the limits for the user you have moved will be reset to default. 
+:::
+
+:::tip Note
+DirectAdmin only: when Reseller limits are enabled, reseller's enduser's package is replaced with a `DEFAULT` virtual package that inherits the `default` user's limits (lve and quotas) . \
+lve-utils > 6.3.7 provides a new configuration option - `cl_quota_inodes_inheritance`, which allows to keep the same quotas limits in this case. Add the `cl_quota_inodes_inheritance=1` flag to the `/etc/sysconfig/cloudlinux` configuration file to preserve reseller's enduser's inodes limits when Reseller limits are enabled.
+:::
+
+#### How to disable Reseller limits
+
+1. Go to the _Users_ tab, choose a particular reseller and click on the pencil icon.
+2. In the pop-up move the slider _Manage Limits_. Click _AGREE_ for the question _Are you sure you want to disable limits_. Then click _Save_.
+
+If you disable Reseller limits everything will work the same as before. All the end user limits set by the reseller will be saved. But all custom default reseller limits will be disabled.
+
+
+#### More resources
+
+It is possible that you still have some questions left unanswered about Reseller limits. That’s why we have more knowledge sources that you can check out:
+
+- [FAQ section in our support knowledgebase](https://cloudlinux.zendesk.com/hc/en-us/articles/115005515269-CloudLinux-Reseller-Limits-FAQ)
+- [Reseller limits UI explained](/cloudlinuxos/lve_manager/#reseller-interface)
+
+
+## WEB interface resource limiting modes
+
+Ability to manage the limiting modes of user processes started from web interface (e.g. Node.JS, Ruby and Python Selectors). The configuration allows to disable LVE limiting for some commands or don't limit web commands at all.
+    
+Also, there is a short list of processes, that runs without CageFS in every modes. They are not affecting security, but we are working on removing them from excludes.
+
+The `web_resource_limit_mode` parameter can be added to any section of the configuration file for convenience and better organization. There are no strict requirements on which section it must be placed in, as configuration files ignore sections. However, it is recommended to add the parameter to existing sections or create a new one.
+
+Example of Adding the Parameter to Existing Sections:
+
+    [license_check]
+    email = CP`
+    cpanel_getemail_script = /usr/share/cloudlinux/clgetcpanelemail
+    plesk_getemail_script = /usr/share/cloudlinux/clgetpleskemail
+    web_resource_limit_mode = unlimited
+
+    [cldiag_cron]
+    disabled_cldiag_cron_checkers = check-usepam
+    web_resource_limit_mode = all
+
+    [custom_section]
+    web_resource_limit_mode = unlimited
+    
+Possible parameter values:
+
+* `all`: the default option. All processes will run inside CageFS and with LVE limits being applied.
+* `heavy`: there is a list of processes that are considered lightweight. In this mode, they will be executed inside CageFS, but no resource limits: CPU, IO, memory, and NUMPROC. List of ligthweight processes is defined by CloudLinux and it's guarantied that user can't bypass LVE limits for a long-term.
+    For example, this mode allows a user to execute the `cloudlinux-selector stop` process, even if the user hits the NUMPROC limit.
+* `unlimited`: all processes will run inside CageFS, but ignore CPU, IO, memory, and NUMPROC limits. Not recommended for production usage.
+
+### Requirements:
+
+1. CloudLinux OS should be installed on the server
+2. Packages:
+    * lve-wrappers >= 0.7.2
+    * lvemanager >= 7.5.9
+    * kmod-lve >= 2.0.36
+    * lve >= 2.1.2
\ No newline at end of file
diff --git a/docs/cloudlinuxos/lve_manager/README.md b/docs/cloudlinuxos/lve_manager/README.md
new file mode 100644
index 000000000..e3e2eff14
--- /dev/null
+++ b/docs/cloudlinuxos/lve_manager/README.md
@@ -0,0 +1,2113 @@
+# CloudLinux Manager UI
+
+* [Installation wizard](./#installation-wizard)
+* [CloudLinux Manager](./#cloudlinux-manager)
+* [Inodes limits](/cloudlinuxos/limits/#inodes)
+* [Control panel integration guide](./#control-panel-integration-guide)
+
+<span class="notranslate">CloudLinux Manager</span> is a plugin for most popular control panels including cPanel, Plesk, DirectAdmin, InterWorx, and CyberPanel. It allows you to control and monitor limits, and set limits on per package bases.
+
+<span class="notranslate">CloudLinux Manager</span> is installed by default on most servers. If it is missing you can always install it by running:
+
+<div class="notranslate">
+
+```
+yum install lvemanager
+```
+</div>
+
+## Installation wizard
+
+<div class="notranslate">
+
+* [Overview](./#overview)
+* [Set up](./#set-up)
+* [CloudLinux OS components](./#cloudlinux-os-components)
+  * [CageFS](./#cagefs)
+  * [LSAPI](./#lsapi)
+  * [MySQL Governor](./#mysql-governor)
+  * [Node.js Selector](./#node-js-selector)
+  * [Ruby Selector](./#ruby-selector)
+  * [Python Selector](./#python-selector)
+  * [PHP Selector](./#php-selector)
+* [Installation process and possible errors](./#installation-process-and-possible-errors)
+  * [Wizard fatal error](./#wizard-fatal-error)
+
+#### Overview
+
+<span class="notranslate">CloudLinux OS Installation Wizard </span> allows you to easily install and set up CloudLinux OS components on your server with cPanel, Plesk or DirectAdmin.
+
+#### Set up
+
+As you have CloudLinux OS installed, navigate to <span class="notranslate"> CloudLinux OS CloudLinux Manager </span> in your control panel. CloudLinux OS Installation Wizard starts automatically if `lvemanager` package is installed for the first time (not updated).
+
+![](/images/cloudlinuxos/lve_manager/installationwizardmain_zoom70.webp)
+
+To start setting up your CloudLinux OS, click <span class="notranslate">_Start Wizard_</span>, otherwise click <span class="notranslate">_Skip Wizard_</span>, and you will be redirected to the <span class="notranslate"> CloudLinux Manager Dashboard</span>.
+
+:::tip Note
+Installation statuses of all components are duplicated inside their corresponding boxes on the <span class="notranslate">Dashboard</span>. All <span class="notranslate">Wizard</span> actions are available there as well. <span class="notranslate">Dashboard</span> will be automatically updated as soon as the installation process finishes.
+:::
+
+![](/images/cloudlinuxos/lve_manager/wizard-dashboard_zoom60.webp)
+
+The next step is selecting required components to be installed.
+![](/images/cloudlinuxos/lve_manager/installationwizardstep1_zoom70.webp)
+
+Click <span class="notranslate">_Finish and Install_</span> to complete installation or click <span class="notranslate">_Skip Wizard_</span> to go back to the <span class="notranslate"> Dashboard</span>.
+
+You can find a complete description of the CloudLinux OS components below.
+
+#### CloudLinux OS components
+</div>
+<div class="notranslate">
+
+#### **CageFS**
+
+</div>
+
+A virtualized per-user file system encapsulates each customer into a ‘cage’ preventing them from seeing each other files and viewing sensitive information (e.g., system files)
+
+![](/images/cloudlinuxos/lve_manager/wizardcagefs_zoom90.webp)
+
+Toggle the sliders to enable CageFS by default for new and/or existing users. 
+
+:::tip Note
+CageFS is a requirement for PHP Selector operation.
+:::
+
+<div class="notranslate">
+
+#### **LSAPI**
+
+</div>
+
+It is the fastest and most reliable way to serve PHP pages for Apache web-servers, a drop-in replacement for SuPHP, FCGID, RUID2, and ITK.
+
+![](/images/cloudlinuxos/lve_manager/wizard_lsapi_zoom90.webp)
+
+LSAPI requires CRIU to operate and we also recommend you to use mod_suexec. You can find details in our [documentation](/cloudlinuxos/cloudlinux_os_components/#apache-mod-lsapi-pro).
+
+<div class="notranslate">
+
+#### **MySQL Governor**
+
+</div>
+
+Monitors MySQL usage to throttle abusers, preventing server overload and improving overall performance.
+
+![](/images/cloudlinuxos/lve_manager/wizard_mysqlgovernor_zoom90.webp)
+
+:::tip Note
+<span class="notranslate">MySQL Governor</span> can be automatically installed only with cPanel/WHM and DirectAdmin - use CLI instructions available [here](/cloudlinuxos/command-line_tools/#mysql-governor) in all other cases.
+:::
+
+We recommend you to create a full database backup before the <span class="notranslate"> MySQL Governor </span> installation.
+
+<div class="notranslate">
+
+#### **Node.js Selector**
+
+</div>
+
+Allows end users to create Node.js applications and select the specific version of Node.js and other parameters.
+
+![](/images/cloudlinuxos/lve_manager/wizard_node.jsselector_zoom90.webp)
+
+Here you can choose versions to be installed and the version to be used as default.
+
+<div class="notranslate">
+
+#### **Ruby Selector**
+
+</div>
+
+Allows end users to select the specific version of <span class="notranslate"> Ruby</span> they need. 
+![](/images/cloudlinuxos/lve_manager/wizard_ruby_selector_zoom90.webp)
+
+Here you can choose <span class="notranslate">Ruby</span> versions to be installed.
+
+<div class="notranslate">
+
+#### **Python Selector**
+
+</div>
+
+Allows end users to select the default version of <span class="notranslate">Python</span> and set the required versions for installation.
+
+![](/images/cloudlinuxos/lve_manager/wizard_python_selector_zoom90.webp) 
+
+
+Here you can choose <span class="notranslate">Python</span> versions to be installed.
+
+#### **PHP Selector**
+
+Allows end users to select the specific version of PHP they need, with over 120 PHP extensions to choose from.
+
+![](/images/cloudlinuxos/lve_manager/wizard_php_selector_zoom90.webp)
+
+Go to <span class="notranslate">CloudLinux Manager</span> settings to set up <span class="notranslate"> PHP Selector</span> options and parameters. Read more in the [PHP Selector documentation](/cloudlinuxos/cloudlinux_os_components/#installation-and-update-4). 
+
+:::tip Note
+CageFS should be enabled for PHP Selector to operate.
+:::
+
+When the components to be installed are selected and configured, and installation is started, you will be redirected to the <span class="notranslate">CloudLinux Manager | Dashboard</span>.
+
+#### Installation process and possible errors
+
+Installation status is displayed throughout the process in the <span class="notranslate">Dashboard</span>. Click <span class="notranslate">_Installing_</span> to show modules installation state.
+
+![](/images/cloudlinuxos/lve_manager/wizard_installation_status_zoom70.webp)
+
+All installed modules are displayed on the <span class="notranslate"> Dashboard</span>.
+When installation is completed successfully, you will see the following status.
+
+![](/images/cloudlinuxos/lve_manager/wizardsuccess_zoom90.webp)
+
+If you decide to remove failed module or a module to be installed by clicking the (X) button, a confirmation dialog will appear.
+
+After confirming the action, the module will disappear from the list.
+
+![](/images/cloudlinuxos/lve_manager/wizardinstallremove_zoom90.webp)
+
+If module installation fails, the Installing button changes to <span class="notranslate">_Warning_</span> and the module indicator will turn red.
+
+![](/images/cloudlinuxos/lve_manager/wizard_warning_zoom70.webp)
+
+
+* Click ![](/images/cloudlinuxos/lve_manager/wizard_download_btn.webp) to download the error log.
+* Click ![](/images/cloudlinuxos/lve_manager/wizard_try_again_btn.webp) to try to install a module again.
+* Click ![](/images/cloudlinuxos/lve_manager/wizard_close_btn.webp) to remove a specific module from the installation queue. The module will be displayed on the <span class="notranslate">Dashboard</span> but will not be installed.
+
+If module auto-installation fails, you will see that the module indicator turns yellow.
+
+![](/images/cloudlinuxos/lve_manager/wizardautoinstallationfails_zoom80.webp)
+
+In this case, you can download a log for details and try to install the module again.
+
+#### **Wizard fatal error**
+
+In case of a fatal error, you will see the following warning.
+
+![](/images/cloudlinuxos/lve_manager/wizardbroken_zoom70.webp)
+
+
+* Click ![](/images/cloudlinuxos/lve_manager/wizard_download_btn.webp) to download the error log.
+* Click ![](/images/cloudlinuxos/lve_manager/wizard_try_again_btn.webp) to try to install module(s) again.
+* Click ![](/images/cloudlinuxos/lve_manager/wizard_close_btn.webp) to cancel installation. The canceled modules will be removed from the installation process.
+
+You can contact our support team for further assistance anytime by [submitting a ticket in our helpdesk system](https://cloudlinux.zendesk.com/hc/requests/new).
+
+
+## CloudLinux Manager
+
+* [Notifications color codes](./#notifications-color-codes)
+
+<span class="notranslate">cPanel CloudLinux Manager</span> administrator interface allows monitoring and managing limits for hosts end users, managing packages and monitoring statistics.
+
+Administrator credentials allow controlling limits for host users.
+
+![](/images/cloudlinuxos/lve_manager/lvemanagermainmenu_zoom80.webp)
+
+Log in as administrator to get access to the following functionality:
+
+* <span class="notranslate">Dashboard</span> provides a quick overview of statistics and all administrative information for server administrators.
+* <span class="notranslate">Current usage</span> tab - allows monitoring users resource usage at the moment;
+* <span class="notranslate">Users</span> tab with the list of all users allows viewing and managing all the users limits;
+* <span class="notranslate">Statistics</span> tab displays the statistics of resource usage for proper timeframe or proper users;
+* <span class="notranslate">Options</span> tab - allows setting LVE Faults email notifications for users;
+* <span class="notranslate">Packages</span> allows managing packages limits;
+* <span class="notranslate">PHP Selector</span> tab.
+
+For more details, please go to the [ImunifyAV documentation](https://docs.imunifyav.com/).
+
+<div class="notranslate">
+
+#### Notifications color codes <Badge type="info" text="CloudLinux Manager 5.3.7-1+"/>
+
+In the CloudLinux Manager UI we use the following color codes for notifications:
+
+* ![](/images/cloudlinuxos/lve_manager/pic_warning.webp) warning
+* ![](/images/cloudlinuxos/lve_manager/pic_error.webp) error
+* ![](/images/cloudlinuxos/lve_manager/pic_info.webp) information
+* ![](/images/cloudlinuxos/lve_manager/pic_success.webp) success
+
+The following actions are available in the action notifications (error, success)
+ * follow a link
+ * copy a command
+ * copy a whole traceback
+
+The following actions are available in the system notifications (information, warning):
+* follow a link
+* copy a command
+* copy a whole message
+* mark a notification as “Read”
+* snooze a notification
+
+
+</div>
+
+### Dashboard
+
+:::tip Note
+Available starting from CloudLinux Manager 4.0-26.8
+:::
+
+CloudLinux OS dashboard provides a quick overview of statistics and all administrative information for server administrators.
+
+Go to <span class="notranslate">CloudLinux Manager | Dashboard</span>.
+
+![](/images/cloudlinuxos/lve_manager/dashboard_zoom70.webp)
+
+The <span class="notranslate">CloudLinux OS Dashboard</span> provides the following information:
+
+* <span class="notranslate">End Users hitting limits</span> — number of users reaching their limit in any kind of resource. Data is within the last 24 hours.
+* <span class="notranslate">Resellers hitting limits</span> —  number of enrolled Resellers that are reaching their limit in any kind of resource. Data is within the last 24 hours.
+* <span class="notranslate">[Node.js Selector](./#node-js-selector-2)</span> block displays the following data:
+  * <span class="notranslate">Node.js Selector</span> status (<span class="notranslate">Enabled/Disabled/Not installed</span>) —  displays a current status of the <span class="notranslate">Node.js Selector</span>.
+  
+    * To manage <span class="notranslate">Node.js Selector</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">LVE Manager | Options | Node.js Selector</span>.
+
+    * Click _Install_ to install <span class="notranslate">Node.js Selector</span>, you will be redirected to <span class="notranslate">CloudLinux Manager | Options | Node.js.Selector</span>.
+  * Default version — the current default version of Node.js set in your system. Click <span class="notranslate">_Manage_</span> to change the default version account wide.
+  * <span class="notranslate">Applications</span> —  number of installed/all applications for the account.
+* <span class="notranslate">Ruby Selector</span> block displays the following data:
+  * <span class="notranslate">Ruby Selector</span> status (<span class="notranslate">Enabled/Disabled/Not installed</span>) — displays a current status of the Ruby Selector.
+
+    * To manage <span class="notranslate">Ruby Selector</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Options | Ruby Selector</span>.
+
+    * Click <span class="notranslate">_Install_</span> to install <span class="notranslate">Ruby Selector</span>, you will be redirected to <span class="notranslate">CloudLinux Manager | Options | Ruby Selector</span>.
+
+  * <span class="notranslate">Applications</span> — number of installed/all applications for the account.
+* <span class="notranslate">[PHP Selector](./#php-selector-1)</span> block displays the following data:
+  * <span class="notranslate">Default version</span> — the default version of PHP binaries.
+  Click <span class="notranslate">_Manage_</span> to change the default version, enable or disable <span class="notranslate">PHP Selector</span>, change the list of supported versions, and choose default modules. You will be redirected to <span class="notranslate">CloudLinux Manager | PHP Selector</span>.<br>
+  PHP Selector (cPanel) has malfunctions warnings about [the most common issues](./#errors).
+  ![](/images/cloudlinuxos/lve_manager/PHPSelectorDashboardMalfunction.webp)
+* <span class="notranslate">[Python Selector](./#python-selector-1)</span> block displays the following data:
+  * <span class="notranslate">Python Selector</span> status (<span class="notranslate">Enabled/Disabled/Not installed</span> — displays a current status of the Python Selector.
+  
+    * To manage <span class="notranslate">Python Selector</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Options | Python Selector</span>.
+
+    * Click <span class="notranslate">_Install_</span> to install <span class="notranslate">Python Selector</span>, you will be redirected to <span class="notranslate">CloudLinux Manager | Options | Python Selector</span>.
+  * <span class="notranslate">Applications</span> —  number of installed/all applications for the account.
+* [Reseller Limits](./#reseller-interface) block displays the following data:
+  * <span class="notranslate">Reseller Limits</span> status (<span class="notranslate">Enabled/Disabled</span>). To manage <span class="notranslate">Reseller Limits</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Users</span> tab.
+  * Reseller’s accounts with Reseller Limits/all —  the number of Reseller accounts with Reseller Limits enabled versus the total number of Reseller accounts.
+  * Reseller’s End Users with enabled Reseller Limits/all — the number of end users with Reseller Limits enabled versus all End Users that belong to all resellers.
+* <span class="notranslate">[MySQL Governor](/cloudlinuxos/cloudlinux_os_components/#mysql-governor)</span> block displays the following data:
+  * <span class="notranslate">MySQL Governor</span> status (<span class="notranslate">Enabled/Disabled/Not installed/Skipped</span>). To manage <span class="notranslate">MySQL Governor</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Options | MySQL Governor Mode of Operation</span>. Click <span class="notranslate">_Install_</span> to install <span class="notranslate">MySQL Governor</span>.
+  * <span class="notranslate">[Mode](/cloudlinuxos/cloudlinux_os_components/#modes-of-operation)</span> — displays the <span class="notranslate">MySQL Governor</span> mode of operation. Click <span class="notranslate">_Manage_</span> to change the mode.
+    * <span class="notranslate">Single</span> — single LVE is used for all customers that go over their DB limits (deprecated).
+    * <span class="notranslate">Off</span> — monitor Only, no DB query limits are applied.
+    * <span class="notranslate">All</span> — all queries are run inside user's LVE.
+    * <span class="notranslate">Abusers</span> — only queries that go over DB limits are executed inside that user's LVE (this is the default mode).
+  * <span class="notranslate">Database version</span> —  displays a current version of <span class="notranslate">MySQL/MariaDB/Percona</span> server installed in the system.
+* [CageFS](/cloudlinuxos/cloudlinux_os_components/#cagefs) block displays the following data:
+  * <span class="notranslate">CageFS</span> status (<span class="notranslate">Enabled/Disabled/Not installed</span>). To manage CageFS, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Options | CageFS</span>. Click <span class="notranslate">_Install_</span> to install CageFS.
+  * <span class="notranslate">Mode</span> displays the current CageFS mode of operation.
+  * <span class="notranslate">End users</span> — displays the number of users with CageFS enabled/all.
+* [ModLSAPI](/cloudlinuxos/cloudlinux_os_components/#apache-mod-lsapi-pro) block displays the following data:
+  * Mod_lsapi status (<span class="notranslate">Enabled/Disabled/Not installed</span>). Click <span class="notranslate">_Install_</span> to install Mod_lsapi.
+  * Module version displays the running version of Mod_lsapi.
+  * [Criu_status](/cloudlinuxos/cloudlinux_os_components/#criu-support) displays the status of lsapi_criu:
+    * <span class="notranslate">Running</span> —  means that lsapi_criu is working.
+    * <span class="notranslate">Stopped</span> —  means that lsapi_criu is not working.
+  * <span class="notranslate">Total Domains</span> displays the total number of domains with Mod_lsapi configured as PHP handler.
+  * <span class="notranslate">Criu_version</span> displays the running version of lsapi_criu.
+  * LSAPI with connection pool.
+
+:::tip Note
+* If statistics for server is absent for any reasons, you can update it by pressing the <span class="notranslate">_Refresh_</span> button. This process can last from 10 seconds to one hour depending on your server's performance, number of users and applications.
+* If statistics collection is turned off it is not displayed. If you wish to get daily statistics for your server, please turn it on by adding <span class="notranslate">`cl_statistics_enabled=1`</span> parameter to the <span class="notranslate">`/etc/sysconfig/cloudlinux`</span> file.
+* Data for the Dashboard is collected once per day. If you want to update data manually, press <span class="notranslate">_Refresh_</span>. This process can last from 10 seconds to one hour depending on your server's performance, number of users and applications.
+:::
+
+
+### Current usage
+
+Choose <span class="notranslate">_Current usage_</span> tab to monitor users resource usage at the moment displayed in the table.
+
+<span class="notranslate">Current usage</span> table provides the information on the usage of <span class="notranslate"> Speed, memory, IO, IOPS, Number of Processes</span>, and <span class="notranslate"> Entry Processes</span>.
+
+<span class="notranslate"> Resource usage </span> values are being refreshed every 10 seconds which is set in <span class="notranslate">_Auto-refresh_</span> field. You can refresh the table manually by clicking <span class="notranslate">_Refresh now_</span> or you can freeze the values by clicking pause button. Usage values will not change until the next manual refresh.
+
+Tick <span class="notranslate">_Hide MySQL usage_</span> checkbox to hide the information on MySQL usage.
+
+To expand the list of users click on the number above and in the dropdown choose the number of user to be displayed on the page.
+
+![](/images/cloudlinuxos/lve_manager/man_01_zoom73.webp)
+
+The list of users can be filtered by <span class="notranslate">_Username_</span> and <span class="notranslate">_Domain_</span>.
+
+Hoster can **view** all types of users:
+* <span class="notranslate">End users</span>
+* <span class="notranslate">Resellers</span>
+* <span class="notranslate">Reseller’s end users</span>
+* <span class="notranslate">Reseller’s end users (no Reseller limit)</span>.
+
+But hoster can only **manage**:
+* <span class="notranslate">End users</span>
+* <span class="notranslate">Resellers</span>
+* <span class="notranslate">Reseller’s end users (no Reseller limit)</span>
+
+To manage Reseller’s end users hoster should login as a reseller.
+
+### Users
+
+* [Actions](./#actions)
+* [Group actions for users with enabled CageFS](./#group-actions-for-users-with-enabled-cagefs)
+
+Choose <span class="notranslate">_Users_</span> tab to view the list of all users in the system and manage their limits.
+
+![](/images/cloudlinuxos/lve_manager/userstabhoster_zoom70.webp)
+
+:::tip Note
+A hoster can view the list of resellers’ end users and their limits, but can not manage resellers’ end users limits (if those are set by reseller).
+:::
+
+* Tick <span class="notranslate">_Show users with CageFS enabled_</span> to show users with CageFS file system enabled.
+* Tick <span class="notranslate">_Show only ignored users_</span> to show users with ignored <span class="notranslate">MySQL Governor</span>.
+
+The following filters are available:
+* <span class="notranslate">Manage by</span>
+  * <span class="notranslate">End users</span>
+  * <span class="notranslate">Resellers</span>
+  * <span class="notranslate">Reseller's end users</span>
+  * <span class="notranslate">Reseller's end users (no Reseller limit)</span>
+* <span class="notranslate">Show only</span>
+  * <span class="notranslate">Ignored users</span> - show users with ignored MySQL Governor.
+  * <span class="notranslate">Users with CageFS enabled</span>
+
+Also, you can search user by his <span class="notranslate">Username</span>, <span class="notranslate">domain</span> or <span class="notranslate">LVE ID</span> in the <span class="notranslate">_Search_</span> field.
+
+#### Actions
+
+Click pencil icon in <span class="notranslate">_Actions_</span> column to edit limits for a particular user. The following actions are available:
+
+* Enable/disable <span class="notranslate">CageFS</span>
+* <span class="notranslate">**Reset**</span> - to reset limits to default values
+* Apply <span class="notranslate">**Do not limit**</span> to set the limits to unlimited;
+* Setting the limits values:
+  * <span class="notranslate"> SPEED </span>
+  * <span class="notranslate"> SPEED MYSQL </span>
+  * <span class="notranslate"> VMEM </span>
+  * <span class="notranslate"> PMEM </span> 
+  * <span class="notranslate"> IO </span>
+  * <span class="notranslate"> MySQL IO </span>
+  * <span class="notranslate"> IOPS </span>
+  * <span class="notranslate"> EP </span>
+  * <span class="notranslate"> NPROC </span>
+  * <span class="notranslate"> INODES </span> (hard and soft) (for <span class="notranslate">end users</span> and <span class="notranslate">resellers’ end users (with no Reseller Limits)</span>, if a hoster has enabled <span class="notranslate">_Initial quotas_</span> in cPanel settings).
+
+Click <span class="notranslate">_Save_</span> to save changes or <span class="notranslate">_Cancel_</span> to close the pop-up.
+
+![](/images/cloudlinuxos/lve_manager/actionshoster.webp)
+
+Click on <span class="notranslate">_History_</span> symbol to view the history of a particular user resource usage. Choose time frame to view the history for a particular time period.
+
+![](/images/cloudlinuxos/lve_manager/historyhoster.webp)
+
+#### Group actions for users with enabled CageFS
+
+:::warning Note
+If CageFS is disabled, group actions are not available. See how you can enable CageFS:
+* [Managing users](/cloudlinuxos/cloudlinux_os_components/#managing-users)
+* [CageFS CLI](/cloudlinuxos/command-line_tools/#cagefs)
+* via cPanel CageFS User Manager plugin.
+:::
+
+* **View users with enabled CageFS**
+  
+  To view users with enabled CageFS, click <span class="notranslate">_Show only >> Users with CageFS enabled_</span>
+  ![](/images/cloudlinuxos/lve_manager/CageFSEnabledUsers.webp)
+
+* **Disable CageFS for several users**
+
+  To disable CageFS for several users, do the following.
+
+  * Select a particular user or select all users
+  * Click <span class="notranslate">_CageFS_ >> _Disable_</span>.
+
+  ![](/images/cloudlinuxos/lve_manager/GroupDisableCageFS.webp)
+
+### Statistics
+
+Choose <span class="notranslate">_Statistics_</span> tab to view end users, resellers and resellers’ end users limits usage statistics.
+
+The following parameters can be displayed in the statistics table:
+
+* <span class="notranslate"> SPEED </span> usage per user;
+* <span class="notranslate"> IO </span> usage per user;
+* <span class="notranslate"> EP </span> usage per user;
+* <span class="notranslate"> VMEM </span> usage per user;
+* <span class="notranslate"> PMEM </span> usage per user;
+* <span class="notranslate"> NPROC </span> usage per user;
+* <span class="notranslate"> IOPS </span> usage per user;
+* <span class="notranslate"> MySQL </span> usage per user.
+
+Click <span class="notranslate">_Show_</span> and select columns from the drop-down to set which parameters should be displayed in the table.
+
+Statistics table can be filtered by:
+
+* <span class="notranslate"> Timeframe </span> - to view the statistics for a particular period;
+* <span class="notranslate"> Limit </span> - to view a particular limit type usage only;
+* <span class="notranslate"> Top LVEs </span> - to view top used limits only;
+* <span class="notranslate"> LVE approaching limit </span> - to view the limits that are approaching maximum provided value;
+* <span class="notranslate"> Fault LVE </span> - the limits that have reached the maximum value.
+
+Click <span class="notranslate">_Manage_</span> to choose type of users to be displayed - <span class="notranslate">End users, Resellers, Resellers’ end users</span> or <span class="notranslate">Resellers’ end users (no Reseller limit)</span> by ticking checkbox in the drop-down.
+
+![](/images/cloudlinuxos/lve_manager/statisticstabhoster_zoom70.webp)
+
+Click chart symbol in the <span class="notranslate">_View_</span> column to view the detailed resource usage history for a particular account. Use timeframe drop-down to view the history for a particular period of time.
+
+![](/images/cloudlinuxos/lve_manager/history_charts_zoom70.webp)
+
+### Options
+
+The following sections are available to set the required options:
+
+* <span class="notranslate">[LVE Faults Email Notifications](./#lve-faults-email-notifications)</span> - allows to set the required type of notification
+* <span class="notranslate">[Faults to include](./#faults-to-include)</span> - allows to include required limits to the notifications
+* <span class="notranslate">[Minimum number of Faults to notify](./#minimum-number-of-faults-to-notify)</span> - allows to set a number of faults required for the notification to be sent for hoster, reseller, and user
+* <span class="notranslate">[Inode limits](./#inode-limits)</span> - allows to manage inode limits
+* <span class="notranslate">[User interface settings](./#user-interface-settings)</span> - allows to manage user interface settings
+* <span class="notranslate">[MySQL Governor settings](./#mysql-governor-settings)</span> - allows to manage MySQL Governor settings (if MySQL Governor is installed)
+* <span class="notranslate">[CageFS](./#cagefs-2)</span> - allows to manage CageFS settings
+* <span class="notranslate">[Node.js](./#node-js)</span> - allows to enable/disable and manage Node.js Selector
+* <span class="notranslate">[Python Selector](./#python-selector-section)</span> - allows to enable/disable and manage Python Selector
+
+![](/images/cloudlinuxos/lve_manager/options-general.webp)
+
+#### LVE Faults Email Notifications
+
+Starting from CloudLinux Manager v.7.3.0-1 and LVE-Stats v.4.1.4-1 users can disable in their Resource Usage plugin email notifications about hitting LVE limits by themselves.
+
+To allow users to do so, the administrator should enable the _Notify Customers_ and _Notify Reseller’s Customers_ options.
+
+Unfortunately, it is not possible to disable LVE Faults Email Notifications for all users by default so that users can enable the feature themselves in their interface.
+
+But it is possible to enable LVE Faults Email Notifications for all users by default, so that users can disable the feature themselves in their interface.
+
+A hoster can set email notifications for panel administrator, reseller customer, and resellers’ customers in cases of limits faults. Choose <span class="notranslate">_Options_</span> tab to manage LVE Faults email notifications.
+
+![](/images/cloudlinuxos/lve_manager/lve-faults-email-notifications.webp)
+
+The following types of notification are available:
+
+* **<span class="notranslate">Notify Hoster</span>** - receive notifications on users and its own LVE faults
+* **<span class="notranslate">Notify Reseller</span>** - allows reseller receiving notifications on their user's LVE faults
+* **<span class="notranslate">Notify Customers</span>** - allow host's users receiving notifications on their LVE faults
+* **<span class="notranslate">Notify Reseller's customers</span>** - allows resller's users receiving notifications on their LVE faults
+
+
+#### Faults to include
+
+![](/images/cloudlinuxos/lve_manager/faults-to-include.webp)
+
+Tick checkboxes to include required limits to the notifications:
+
+* **<span class="notranslate">SPEED</span>** - include <span class="notranslate">_SPEED_</span> limit fault to the notification
+* **<span class="notranslate">IO</span>** - include <span class="notranslate">_I/O_</span> limit fault info to the notification
+* **<span class="notranslate">IOPS</span>** - include <span class="notranslate">_IOPS_</span> limit fault info to the notification
+* **<span class="notranslate">Memory</span>** - include <span class="notranslate">_Memory_</span> limit fault info to the notification
+* **<span class="notranslate">Concurrent connections</span>** - include <span class="notranslate">_concurrent connections_</span> limit fault info to the notification
+* **<span class="notranslate">NPROC</span>** - include <span class="notranslate">_NPROC_</span> limit fault info to the notification.
+
+#### Minimum number of Faults to notify
+
+![](/images/cloudlinuxos/lve_manager/minimum-number-of-faults-to-notify.webp)
+
+Set a number of faults required for the notification to be sent for:
+
+* <span class="notranslate">Hoster and Reseller</span>
+* <span class="notranslate">User</span>
+
+Set the frequency of email notifications sending to: 
+
+* <span class="notranslate">Hoster and Reseller</span>
+* <span class="notranslate">User</span>
+
+#### Inode limits
+
+![](/images/cloudlinuxos/lve_manager/inode-limits.webp)
+
+Allows to reset inode limits and show/hide end-user inode usage.
+
+#### User interface settings
+
+![](/images/cloudlinuxos/lve_manager/user-interface-settings.webp)
+
+Allows to manage user interface settings:
+
+* **<span class="notranslate">Hide LVE end user usage statistic</span>** - a user will not be able to see his usage statistic in his web interface
+* **<span class="notranslate">Hide Ruby App in web-interface</span>** - a user will not be able to see Ruby Selector in his web interface
+
+#### MySQL Governor settings
+
+![](/images/cloudlinuxos/lve_manager/mysql-governor-settings.webp)
+
+Allows to manage MySQL Governor settings.
+
+<span class="notranslate">**MySQL Governor Mode of operation**</span>
+
+* <span class="notranslate">**Off**</span> - monitor Only – not throttle customer's queries, only monitor MySQL usage.
+* <span class="notranslate">**Single**</span> - single restricted LVE for all restricted customers – all queries for all restricted customers  well be sharing the same LVE.
+* <span class="notranslate">**Abusers**</span> - use LVE for a user to restrict queries (default mode) –  if a user goes over the limits, all his queries will execute inside his LVE.
+* <span class="notranslate">**All**</span> - always run queries inside user's LVE – limits are applied to both PHP & MySQL queries at the same time.
+
+<span class="notranslate">**MySQL Governor restrict type mode**</span>
+
+* <span class="notranslate">Period</span> – allows to restrict users for a specified time period
+* <span class="notranslate">Limit</span> (default mode) – allows to restrict/automatically unrestrict users that hit limits/don't hit limits during 'unlimit=time'
+
+<span class="notranslate">**Unlimit users automatically in**</span>
+
+Allows to unlimit users automatically if they don't hit the limits during the specified number of seconds/minutes/hours/days.
+
+<span class="notranslate">**Restricted time periods**</span>
+
+User restriction time period for different levels of restriction and the timeout to apply a higher restriction level.
+
+* <span class="notranslate">Level1</span>
+* <span class="notranslate">Level2</span>
+* <span class="notranslate">Level3</span>
+* <span class="notranslate">Level4</span>
+* <span class="notranslate">Timeout</span>
+
+<span class="notranslate">**User maximum connections**</span>
+
+The number of simultaneous connections of a restricted user (in the LVE mode).
+
+<span class="notranslate">**Path to script**</span>
+
+To be triggered when account is restricted.
+
+<span class="notranslate">**MySQL Governor restrict-log file URL and format**</span>
+
+* <span class="notranslate">URL</span> – where the log file is placed in the file system
+* <span class="notranslate">Format</span> – log file format: <span class="notranslate">short</span>, <span class="notranslate">medium</span>, <span class="notranslate">long</span>, <span class="notranslate">very long</span>
+
+<span class="notranslate">**MySQL Governor error-log file URL and logging level**</span>
+
+* <span class="notranslate">URL</span> – where the log file is placed in the file system
+* <span class="notranslate">Level</span> – logging level: error, debug
+
+<span class="notranslate">**Kill slow SELECT queries**</span>
+
+* <span class="notranslate">Kill slow queries</span> – stop running slow select queries
+* <span class="notranslate">URL</span> – log file URL, where killed queries will be saved 
+* <span class="notranslate">Timeout</span> – number of seconds while slow request can be finished, otherwise, it will be canceled
+
+<span class="notranslate">**Gather data for detailed statistics**</span>
+
+Tick if yes.
+
+<span class="notranslate">**Log restricted user's queries**</span>
+
+Tick if yes.
+
+
+#### CageFS
+
+![](/images/cloudlinuxos/lve_manager/options-cagefs.webp)
+
+Allows to manage CageFS settings:
+
+* **CageFS** - enable/disable CageFS
+* **<span class="notranslate">CageFS Skeleton</span>** - click to update CageFS skeleton. See: [Updating CageFS skeleton](/cloudlinuxos/control_panel_integration/#updating-cagefs-skeleton)
+* **<span class="notranslate">New users will be disabled by default in CageFS</span>** - toggle to enable/disable new users in CageFS by default.
+
+#### Node.js
+
+![](/images/cloudlinuxos/lve_manager/options-nodejs.webp)
+
+Allows to enable/disable and manage Node.js Selector.
+
+See more:
+
+* [Node.js Selector UI](./#node-js-selector-2)
+* [Node.js Selector](/cloudlinuxos/cloudlinux_os_components/#node-js-selector)
+
+#### Python Selector section
+
+![](/images/cloudlinuxos/lve_manager/options-python-selector.webp)
+
+Allows to enable/disable and manage Python Selector.
+
+See more:
+
+* [Python Selector UI](./#python-selector-2)
+* [Python Selector](/cloudlinuxos/cloudlinux_os_components/#python-selector)
+
+When you've done with settings, click <span class="notranslate">**Save Changes**</span> to apply changes.
+
+### Packages
+
+<span class="notranslate"> Packages</span> tab allows setting the limits for as many users as you need by editing packages of proper limits. Each account belonging to a proper package adheres to those limits.
+
+:::tip Note
+Limits from the package will not be applied if the package’s owner differs from the owner of the account you’re trying to apply limits to. Default limits will be applied instead.
+:::
+
+Choose <span class="notranslate">_Packages_</span> tab to view and modify:
+
+* limits for user packages (created by hoster);
+* limits for reseller packages (created by hoster);
+* limits for resellers’ end users packages if reseller limits are not set for that reseller (hoster access allows identifying a particular reseller’s end user belonging to a particular reseller (created by reseller)).
+  
+![](/images/cloudlinuxos/lve_manager/packageshostertab_zoom70.webp)
+
+To modify package limits click on a pencil symbol in <span class="notranslate">_Actions_</span> column in a particular package row. The following limits for this package are available for setting:
+
+* <span class="notranslate"> SPEED</span> in percent (%);
+* <span class="notranslate"> Virtual memory (VMEM)</span> (can be set as unlimited by setting 0);
+* <span class="notranslate"> Physical memory (PMEM)</span> (can be set as unlimited by setting 0);
+* <span class="notranslate"> I/O limits (IO)</span> (can be set as unlimited by setting 0);
+* <span class="notranslate"> IOPS</span> limits;
+* <span class="notranslate"> Concurrent connections (EP)</span>;
+* <span class="notranslate"> Number of processes (NPROC)</span> (can be set as unlimited by setting 0);
+* <span class="notranslate"> INODES (hard and soft)</span> (for end users and resellers’ end users (with no Reseller Limits), if a hoster has enabled <span class="notranslate">_Initial quotas_</span> in cPanel settings.)
+
+When limits are set click <span class="notranslate">_Save_</span> to apply changes or <span class="notranslate">_Cancel_</span> to close the window.
+
+
+:::tip Note
+`VE_DEFAULT` package is not a real package, it's a view for default limits. You can modify default limits on a Users tab.
+
+On cPanel limits of package named `default` are applied to users with `default` package assigned.
+:::
+
+
+#### MySQL Governor package limits
+
+Starting from the:
+```
+governor-mysql - 1.2-80
+lvemanager - 7.8.3-1
+lve-utils - 6.4.6-1
+alt-python27-cllib - 3.2.40-1
+```
+The possibility to manage Mysql Governor package limits was added. This can be done via CloudLinux Manager or via command line.
+
+#### How to install
+```
+yum update governor-mysql lvemanager lve-utils alt-python27-cllib
+```
+
+#### Meaning
+
+In all previous versions admin had possibility to manage individual MySQL Governor limits like:
+- SPEED MYSQL
+- MySQL IO
+
+Now admin can manage all those limits for hosting packages and this will increase the convenience of administration.
+
+**All principles** of working with MySQL Governor package limits are the same as for LVE limits:
+
+- Initial limits for package can be settled from the the LVE extension (cPanel only) or they are inherited from the DEFAULT package (user).
+- Non default (updated) package limits will not be  changed in case DEFAULT limits are changed.
+- Users in the package inherit package’s limits  or have individual limits.
+- Individual user limits can be reseted to the package’s limits.
+- In case of reseller’s packages and users Mysql Governor limits can be managed only by admin.
+
+#### Manage MySQL Governor limits
+
+To view the package limits open this page:
+
+![](/images/cloudlinuxos/lve_manager/mysql_packages_limits.webp)
+
+To manage the package limits edit the needed package:
+
+![](/images/cloudlinuxos/lve_manager/mysql_packages_limits_edit.webp)
+
+### PHP Selector
+
+* [Selector tab](./#selector-tab)
+* [Selector tab additional features (cPanel)](./#selector-tab-additional-features)<sup> CloudLinux Manager 6.0.1-2</sup>
+  * [PHP Selector troubleshooting (cPanel)](./#php-selector-troubleshooting)<sup> CloudLinux Manager 6.0.1-2</sup>
+* [PHP Selector diagnostic tool and notifications](./#php-selector-diagnostic-tool-and-notifications)<sup> CloudLinux Manager 6.0.1-2</sup>
+
+#### Selector tab
+
+<span class="notranslate"> Selector</span> tab allows controlling <span class="notranslate">PHP Selector</span> settings.
+
+* In <span class="notranslate">_Selector is_</span> section choose <span class="notranslate">`Enabled`</span> or <span class="notranslate">`Disabled`</span> from the dropdown list to enable or disable <span class="notranslate">PHP Selector</span>.
+* In <span class="notranslate">_Default PHP version_</span> choose a proper PHP version or <span class="notranslate"> Native</span> from dropdown list to apply.
+* In <span class="notranslate">_Hide php extensions for end-user_</span> you can enable/disable the ability for end-user to select PHP extensions in his web interface.
+* In <span class="notranslate">_Supported versions_</span> choose required PHP versions to support.
+
+Choose default modules from the list for a proper PHP version or for native.
+
+![](/images/cloudlinuxos/lve_manager/php_selector.webp)
+
+:::tip Note
+You can also use [PHP Selector CLI](/cloudlinuxos/command-line_tools/#php-selector)
+:::
+
+####  Selector tab additional features <Badge type="info" text="cPanel" /> <Badge type="info" text="CloudLinux Manager 6.0.1-2" />
+
+Go to cPanel admin interface → CloudLinux manager → Selector
+
+![](/images/cloudlinuxos/lve_manager/NewSelector.webp)
+
+<span class="notranslate">_Selector_</span> tab has two sub tabs: <span class="notranslate">_Main settings_</span> and <span class="notranslate">_Domains_</span>.
+
+* <span class="notranslate">_Main settings_</span> sub tab allows to config general settings for PHP Selector
+  * <span class="notranslate">_Selector is_</span>: allows to enable/disable PHP Selector
+  * <span class="notranslate">_Default PHP version_</span>: allows to set PHP version by default
+  * <span class="notranslate">_Hide PHP extensions for end-user_</span>: allows to hide PHP extensions
+  * <span class="notranslate">_Hide "My domains" page for end-user_</span>: allows to disable such tab for end-user
+  * <span class="notranslate">_Supported versions_</span>: allows to select supported PHP versions 
+* <span class="notranslate">_Domains_</span> sub tab contains the list of User-Domain pairs to visualize which PHP Selector is used by a domain
+
+![](/images/cloudlinuxos/lve_manager/Domains.webp)
+
+Admin can filter the list:
+
+![](/images/cloudlinuxos/lve_manager/SelectorFilters.webp)
+
+If an admin clicks <span class="notranslate">_Use PHP selector_</span> in the <span class="notranslate">_Action_</span> table, the PHP version for a domain in MultiPHP Selector is changed to the system default version and <span class="notranslate">`php-fpm`</span> is disabled. Users' websites will use the version set in CloudLinux OS PHP Selector (user interface). Group operation also can be used.
+
+![](/images/cloudlinuxos/lve_manager/UsePHPSelector.webp)
+
+#### PHP Selector troubleshooting <Badge type="info" text="cPanel"/> <Badge type="info" text="CloudLinux Manager 6.0.1-2" />
+
+
+You can see the following errors in the <span class="notranslate">_Domains_</span> tab.
+
+1. <span class="notranslate">PHP Selector cannot be activated for this domain. Initialize CageFS in the Options tab first</span>.
+
+![](/images/cloudlinuxos/lve_manager/Error1.webp)
+
+**Solution**
+
+Initialize CageFS in the Options tab (see [installation instructions](/cloudlinuxos/cloudlinux_os_components/#installation-instructions-for-cpanel-users)).
+
+![](/images/cloudlinuxos/lve_manager/CageFSInit.webp)
+
+2. <span class="notranslate">PHP Selector cannot be activated for this domain. Enable CageFS for this user in the Users tab first</span>.
+
+![](/images/cloudlinuxos/lve_manager/Error2.webp)
+
+**Solution**
+
+Enable CageFS in the Users tab (see [installation instructions](/cloudlinuxos/cloudlinux_os_components/#installation-instructions-for-cpanel-users)).
+
+![](/images/cloudlinuxos/lve_manager/CageFSEnable.webp)
+
+* You can enable CageFS for one user by individual slider (for lve 1001 in the picture above)
+* You can enable CageFS for a group of user by the CageFS button (for lve 1002, 1003 in the picture above)
+
+3. Some PHP related issues need to be resolved in order to enable domain management. Find the list of PHP related issues that prevent domain management above.
+
+![](/images/cloudlinuxos/lve_manager/Error3.webp)
+
+**Solution**
+
+If you cannot see Diagnostic tool notifications, you can restart it. Then you can fix the issues using [these instructions](./#php-selector-diagnostic-tool-and-notifications).
+
+#### PHP Selector diagnostic tool and notifications <Badge type="info" text="CloudLinux Manager 6.0.1-2" />
+
+The diagnostic tool allows to catch some issues. You can start diagnostic by clicking <span class="notranslate">_Run diagnostic_</span> button.
+
+![](/images/cloudlinuxos/lve_manager/RunDiagnostic.webp)
+
+The most popular errors and solutions:
+
+1. Your PHP Handler does not support CLoudLinux OS PHP Selector
+
+![](/images/cloudlinuxos/lve_manager/Issue1.webp)
+   
+**Solution**: install `mod_suexec` (see instructions [here](/cloudlinuxos/cloudlinux_os_components/#installation-5)) and then run the following command:
+
+<div class="notranslate">
+
+```
+cagefsctl --force-update
+```
+</div>
+
+2. Incorrect config file format
+
+![](/images/cloudlinuxos/lve_manager/Issue2.webp)
+       
+**Solution**: correct the file format via SSH.
+
+3. Some domains have neither PHP version selected in MultiPHP Manager no system default version or have `php-fpm` enabled.
+
+![](/images/cloudlinuxos/lve_manager/Issue3.webp)
+
+**Solution**: see [installation instructions](/cloudlinuxos/cloudlinux_os_components/#installation-instructions-for-cpanel-users) for cPanel users
+
+4. MultiPHP system default version is not ea-php
+
+![](/images/cloudlinuxos/lve_manager/Issue4.webp)
+
+**Solution**: see [installation instructions](/cloudlinuxos/cloudlinux_os_components/#installation-instructions-for-cpanel-users) for cPanel users
+
+In the CloudLinux Manager v.6.0.6-1 the diagnostic tool can not catch problems with CageFS. See [installation instructions](/cloudlinuxos/cloudlinux_os_components/#installation-instructions-for-cpanel-users) for cPanel users.
+
+
+
+
+### Python Selector
+
+* [How to enable/disable Python Selector]( ./#how-to-enable-disable-python-selector)
+* [How to manage Python Selector](./#how-to-manage-python-selector)
+* [Enable and disable particular Python version](./#enable-and-disable-particular-python-version)
+* [Install and delete particular Python version](./#install-and-delete-particular-python-version)
+* [Make a particular Python version as a default](./#make-a-particular-python-version-as-a-default)
+* [Applications column](./#applications-column)
+
+Hoster interface allows to enable and disable Python Selector and manage individual Python versions.
+
+Go to <span class="notranslate">CloudLinux Manager → Options Tab → Python Selector</span>.
+
+A list of installed Python versions is displayed. There are several columns in the list.
+* <span class="notranslate">Version</span> — displays Python version.
+* <span class="notranslate">Path</span> — Python package location.
+* <span class="notranslate">Applications</span> — number of applications that use this Python version. Click on an application number to go to the list of applications.
+* <span class="notranslate">Enabled</span> — displays if particular Python version is enabled.
+* <span class="notranslate">Actions</span> — allows to install, delete, and make default a particular Python version.
+
+To display all changes immediately click <span class="notranslate">_Refresh_</span>.
+
+![](/images/cloudlinuxos/lve_manager/PythonGeneral.webp) 
+
+#### How to enable/disable Python Selector
+
+To enable Python Selector move a slider to <span class="notranslate">_Enable_</span> and complete the action by clicking <span class="notranslate">_Agree_</span> or click <span class="notranslate">_Cancel_</span> to close the popup.
+To disable Python Selector move a slider back to <span class="notranslate">_Disable_</span>.
+
+:::tip Note
+If you disable Python, all users won't be able to manage their applications
+:::
+
+![](/images/cloudlinuxos/lve_manager/PythonEnableDisable.webp)
+
+::: tip Note
+Python Selector icon in end user interface is hidden when Python is disabled.
+:::
+
+![](/images/cloudlinuxos/lve_manager/PythonEndUserIcon.webp)
+
+#### How to manage Python Selector 
+
+In the list of installed Python versions you can enable and disable, install and delete, and set a particular Python version as a default.
+ 
+#### Enable and disable particular Python version
+ 
+To enable particular Python version do the following:
+
+* Move a disabled slider in the <span class="notranslate">Enabled</span> column for a particular Python version.
+* In the confirmation popup click <span class="notranslate">_Agree_</span> to save changes or <span class="notranslate">_Cancel_</span> to close popup.
+
+![](/images/cloudlinuxos/lve_manager/PythonEnabled.webp)
+
+To disable particular Python version do the following:
+
+* Move an enabled slider in the <span class="notranslate">Enabled</span> column for a particular Python version.
+* In the confirmation popup click <span class="notranslate">_Agree_</span> to save changes or <span class="notranslate">_Cancel_</span> to close popup.
+ 
+#### Install and delete particular Python version
+ 
+To install particular Python version do the following:
+
+* Click <span class="notranslate">_Install_</span> button in the Actions column for a particular Python version.
+* In the confirmation popup click <span class="notranslate">_Agree_</span> to save changes or <span class="notranslate">_Cancel_</span> to close popup.
+ 
+To delete particular Python version do the following:
+
+* Click <span class="notranslate">_Bin_</span> icon in the <span class="notranslate">Actions</span> column for a particular Python version.
+* In the confirmation popup click <span class="notranslate">_Agree_</span> to start uninstalling process. Or close popup without changes by clicking <span class="notranslate">_Cancel_</span> button.
+
+:::tip Note
+It is impossible:
+* to remove default Python version
+* to remove version with applications
+* to install or remove version if another installation/uninstalling process is running
+:::
+
+![](/images/cloudlinuxos/lve_manager/PythonInstall.webp)
+
+#### Make a particular Python version as a default
+
+:::tip Note
+You can set a particular Python version as a default version in the CloudLinux OS [installation wizard](./#cloudlinux-installation-wizard) during the first installation.
+:::
+
+To make a particular Python version as a default version, do the following:
+
+* Click <span class="notranslate">_Double-Tick_</span> icon in the Actions column for a particular Python version.
+* In the confirmation popup click <span class="notranslate">_Agree_</span> to save changes or <span class="notranslate">_Cancel_</span> to close popup.
+ 
+:::tip Note
+It is impossible to make disabled Python version as a default version
+:::
+
+![](/images/cloudlinuxos/lve_manager/PythonChangeDefaultVersion.webp)
+
+#### Applications column
+ 
+To view and operate with the list of domains with Python versions click a number in the <span class="notranslate">_Applications_</span> column for a particular Python version. A section with a list of Domains for particular Python version will be displayed.
+
+![](/images/cloudlinuxos/lve_manager/PythonDomains.webp)
+
+Domains are displayed by three. To load more domains click <span class="notranslate">_Load More_</span> button.
+ 
+To change Python version for a particular application do the following:
+
+* Click <span class="notranslate">_Double-Arrow_</span> icon in the <span class="notranslate">_Actions_</span> column in a particular application row. A confirmation popup will be displayed.
+* In the popup choose Python version from a dropdown.
+* Click <span class="notranslate">_Change_</span> to confirm the action or <span class="notranslate">_Cancel_</span> to close the popup.
+* To refresh state of applications in current version you can click <span class="notranslate">_Refresh_</span>.
+ 
+:::tip Note
+All packages of the application(s) will be re-installed.
+:::
+
+:::tip Note
+You can also use [Python Selector CLI](/cloudlinuxos/command-line_tools/#hoster)
+:::
+
+See also: [Python Selector client plugin](./#python-selector-client-plugin)
+
+
+### Node.js Selector
+
+* [How to enable/disable Node.js](./#how-to-enable-disable-node-js)
+* [How to manage Node.js](./#how-to-manage-node-js)
+* [Enable and disable particular Node.js version](./#enable-and-disable-particular-node-js-version)
+* [Install and delete particular Node.js version](./#install-and-delete-particular-node-js-version)
+* [Make a particular Node.js version as a default](./#make-a-particular-node-js-version-as-a-default)
+* [Applications column](./#applications-column-2)
+* [Application error log](./#application-error-log)
+
+
+Hoster interface allows to enable and disable Node.js, and manage individual Node.js versions.
+
+Go to <span class="notranslate"> _CloudLinux Manager → Options Tab → Node.js Section_ </span>. A list of installed Node.js versions is displayed. There are several columns in the list.
+
+* <span class="notranslate"> Version </span> — displays Node.js version.
+* <span class="notranslate"> Path </span> — Node.js package location.
+* <span class="notranslate"> Applications </span> — number of applications that use this Node.js version. Click on a digit to go to the list of applications.
+* <span class="notranslate"> Enabled </span> — displays if particular Node.js version is enabled.
+* <span class="notranslate"> Actions </span> — allows to install, delete, and make default a particular Node.js version.
+
+To display all changes immediately click <span class="notranslate"> _Refresh_ </span> link.
+
+![](/images/cloudlinuxos/lve_manager/nodejsgeneral_zoom70.webp)
+
+#### How to enable/disable Node.js
+
+* To enable Node.js move the slider to <span class="notranslate">_Enable_</span>.
+* To disable Node.js move the slider back to <span class="notranslate">_Disable_</span>. 
+
+::: tip Note
+If you disable Node.js, its version for all your applications will not be changed, but you can not add a new application to this version.
+:::
+
+![](/images/cloudlinuxos/lve_manager/nodejsslider_zoom70.webp)
+
+::: tip Note
+<span class="notranslate">Node.js Selector</span> icon in end user interface is hidden when Node.js is disabled.
+:::
+
+![](/images/cloudlinuxos/lve_manager/nodejsselectorlogo_zoom70.webp)
+
+#### How to manage Node.js
+
+The list of installed Node.js versions allows to enable and disable, install and delete, and set a particular Node.js version as a default.
+
+#### Enable and disable particular Node.js version
+
+To enable particular Node.js version do the following:
+* Move a disabled slider in the <span class="notranslate"> _Enabled_ </span> column for a particular Node.js version.
+* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to save changes or <span class="notranslate"> _Cancel_ </span> to close pop-up.
+
+![](/images/cloudlinuxos/lve_manager/nodejsenable_zoom70.webp)
+
+To disable particular Node.js version do the following:
+* Move an enabled slider in the <span class="notranslate"> _Enabled_ </span> column for a particular Node.js version.
+* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to save changes or <span class="notranslate"> _Cancel_ </span> to close pop-up.
+
+#### Install and delete particular Node.js version
+
+To install particular Node.js version do the following:
+* Click <span class="notranslate"> _Install_ </span> button in the <span class="notranslate"> _Actions_ </span> column for a particular Node.js version.
+* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to save changes or <span class="notranslate"> _Cancel_ </span> to close pop-up.
+
+To delete particular Node.js version do the following:
+* Click <span class="notranslate"> _Bin_ </span> icon in the <span class="notranslate"> _Actions_ </span> column for a particular Node.js version.
+* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to start uninstall process.
+* Or just close a pop-up without any changes.
+
+::: warning Note
+It is impossible:  
+* to remove default Node.js version;
+* to remove version with applications;
+* to install or remove version if another installation/uninstall process is running.
+:::
+
+![](/images/cloudlinuxos/lve_manager/nodejsconfirmation_zoom70.webp)
+
+#### Make a particular Node.js version as a default
+
+To make a particular Node.js version as a default do the following:
+* Click <span class="notranslate"> _Double-Tick_ </span> icon in the <span class="notranslate"> _Actions_ </span> column for a particular Node.js version.
+* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to save changes or <span class="notranslate"> _Cancel_ </span> to close pop-up.
+
+::: tip Note
+It is impossible to make a disabled version default.
+:::
+
+
+![](/images/cloudlinuxos/lve_manager/nodejsmakedefault_zoom70.webp)
+
+#### Applications column
+
+To view and operate with the list of domains with Node.js versions click on a number in the <span class="notranslate"> _Applications_ </span> column for a particular Node.js version. A section with a list of Domains for particular Node.js version will be displayed.
+
+![](/images/cloudlinuxos/lve_manager/nodejsselectordomains_zoom70.webp)
+
+Domains are displayed by three. To load more domains click on <span class="notranslate"> _Load More_ </span> button.
+
+
+To change Node.js version for a particular application do the following:
+* Click <span class="notranslate"> _Double-Arrow_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a particular application row. A confirmation pop-up will be displayed.
+* In the pop-up choose Node.js version from a drop-down.
+* Click <span class="notranslate"> _Change_ </span> to confirm the action or <span class="notranslate"> _Cancel_ </span> to close the pop-up.
+* To refresh state of applications in current version you can click <span class="notranslate"> _Refresh_ </span> link. 
+
+:::tip Note
+All packages of the application(s) will be re-installed.
+:::
+
+:::tip Note
+You can also use [Node.js Selector CLI](/cloudlinuxos/command-line_tools/#hoster-2)
+:::
+
+See also: [Node.js Selector client plugin](./#node-js-selector-client-plugin)
+
+#### Application error log
+
+Since <span class="notranslate">alt-mod-passenger</span> version 5.3.7-3 we have included support for the PassengerAppLogFile directive.
+<div class="notranslate">
+
+``` 
+Syntax: PassengerAppLogFile path
+Default: PassengerAppLogFile path-to-passenger-log-file
+Context: virtual host, htaccess
+```
+</div>
+ 
+By default, <span class="notranslate">Passenger</span> log messages are all written to the Passenger log file. With this option, you can have the app specific messages logged to a different file in addition. In <span class="notranslate"> alt-mod-passenger </span>, you can use it in the context of a virtual host or in the htaccess file.
+
+See also: [Node.js Selector CLI tools](/cloudlinuxos/command-line_tools/#node-js-selector).
+
+### Website monitoring tool and Slow Site analyzer
+
+* [Website monitoring tab](./#website-monitoring-tab)
+* [Main](./#main)
+* [PHP Slow Site analyzer](./#php-slow-site-analyzer)
+* [Settings](./#settings)
+* [What is the density threshold?](./#what-is-the-density-threshold)
+* [Email notifications](./#email-notifications)
+* [The cloudlinux-ssa-manager CLI utility](/cloudlinuxos/command-line_tools/#the-cloudlinux-ssa-manager-utility)
+* [The wmt-api CLI utility](/cloudlinuxos/command-line_tools/#the-wmt-api-utility)
+* [FAQ](./#faq)
+
+**Website monitoring tool** is a new tool that collects the statistics of the domains' availability and responsiveness, as well as errors that occur when accessing these domains. An admin can get email reports with the statistics. The website monitoring tool uses the simple curl request like `curl http://domain.com` to get domains’ statistics.
+
+**PHP Slow Site analyzer** is a new tool that generates daily reports for the server administrator with information about the top N slow PHP-based domains and URLs. Slow Site analyzer tracks all PHP-based requests and selects slow ones by certain rules.   
+
+:::tip Note
+Slow Site analyzer is not available for CloudLinux OS Legacy (Shared) 6.
+:::
+ 
+**Installation**
+
+To install the tool, run the following command:
+
+```
+yum update lvemanager
+```
+
+:::warning Warning
+For now, there is no any possibility to remove the `alt-php-ssa` and `cl-web-monitoring-tool` packages so that the _Website monitoring_ tab will be removed. This possibility will be added in the future releases.
+
+You can turn off the _Website monitoring_, _PHP Sites Analyzer_ in the _[Settings](./#settings)_ subtab, so sites statistics will stop collecting and there will be no additional load on the server.
+:::
+
+#### Website monitoring tab
+
+You can configure the Website monitoring tool and Slow Site analyzer and view the daily reports in the CloudLinux Manager -> Website monitoring tab.
+
+There are Main, PHP Site analyzer, and Settings subtabs here.
+
+#### Main
+
+This subtab views the latest report (for the previous day) of the Website monitoring tool.
+
+![](/images/cloudlinuxos/lve_manager/WebsiteMonitoringMain.webp)
+
+Remember that report is created every 24 hours and all changes in configuration (the _Settings_ tab) or in the list of domains will be applied for the next 24 hours (from midnight).
+
+* **Total number of requests** - requests that were sent to all domains, existing on the servers
+* **Successful requests** - the number of requests for all domains with ![](/images/cloudlinuxos/lve_manager/Code200.webp)
+* **Requests with errors** - the number of requests for all domains which status code is not 200
+* **Not started requests due to short check interval** - this metric is used to adjust configuration. If it is not equal 0, an admin should increase the value of Requests sending interval, because the tool does not fit into this interval to send requests to all domains.
+* **Slowest websites in 24h and Websites with most errors in 24h** - in these sections you can find the number of domains that was exposed here.
+
+  ![](/images/cloudlinuxos/lve_manager/TopSlow.webp)
+
+
+#### PHP Slow Site analyzer
+
+:::tip Note
+The Slow Site analyzer is not available for CloudLinux OS Legacy (Shared) 6.
+:::
+
+![](/images/cloudlinuxos/lve_manager/WebsiteMonitoringPHPSiteAnalyzer.webp)
+
+This is an example of a report from the Slow Site analyzer. The report shows the number of slow requests per domain and its URLs and the average duration of each slow URL.
+
+You can find the explanation of the **Slow requests density in period** [here](./#what-is-the-density-threshold).
+
+
+#### Settings
+
+Here, an admin can configure the Website monitoring and the PHP Site analyzer.
+
+:::tip Note
+All settings which was changed after starting Website monitoring and Slow site analyzer will be applied for the next 24h (from midnight).
+:::
+
+To enable or disable **Website monitoring**, use the following slider.
+
+![](/images/cloudlinuxos/lve_manager/WebsiteMonitoringSlider.webp)
+
+* **Enable summary notifications** - turn on/off summary daily email report notifications
+* **Enable alert notifications** - turn on/off immediate alert email notifications
+* **Domains and URLs Ignore List** - domains and URLs that will not be requested and displayed in reports; supported formats: `example.com, http://example.com`
+* **Top N slow websites to show** - this number (N) will be used to select the top N domains from the list of all domains, sorted by response duration (Slowest websites list). And this number also will be used to select the top N domains from the list of all domains, sorted by amount of errors (Websites with most errors list).
+* **Check every X minutes** - this is a period in minutes between requests to the same domain.
+* **Time allowed for response** - if there is no answer from the website for this period of time, the Website Monitoring tool will regard this behaviour as the `HTTP 408` error.
+* **Concurrent requests limit** - how many concurrent requests can be done by the Website Monitoring tool.
+
+To enable or disable the **Slow site analyzer**, use the following slider.
+
+:::tip Note
+Slow Site analyzer is not available for CloudLinux OS Legacy (Shared) 6.
+:::
+
+![](/images/cloudlinuxos/lve_manager/WebsiteMonitoringSlider1.webp)
+
+* **Enable Autotracing** - turn on/off Autotracing;
+* **Enable summary notifications** - turn on/off summary daily email report notifications;
+* **Top N slow websites to show** - Set the number of top slow websites to show in the “PHP Sites Analyzer“ report;
+* **Top slow URLs** - this number (N) will be used to select the top N URLs for each domain, marked as slow;
+* **Slow request duration** - the duration of a request in seconds. If the request duration was less than specified in this setting then this request will not be marked as slow;
+* **Slow requests number** - number of slow requests in the period of time to mark the URL as a slow one;
+* **Analysis time** - the period of time in hours required to analyze slow requests;
+* **Enable slow requests density threshold** - turn on/off slow requests density threshold;
+* **Slow requests density threshold** - can be in the interval [0..1], by default it is 0.8. The **density threshold** can be disabled. And the **Domains and URLs Ignore List** can be specified;
+* **Domains and URLs Ignore List** - domains and URLs that will not be displayed in reports;
+
+#### What is the density threshold?
+
+We try to find the most interesting requests for the optimisation from all number of requests to domains during 24 hours. The _Density threshold_ parameter helps to find the most visited URLs and the most popular requests. 
+
+A density threshold is a numerical measure of some type of correlation, meaning the power of the statistical relationship between slow requests and all requests to the domain. If this parameter is enabled then the resulting table will contain slow requests that have exceeded the specified threshold. Requests with the highest density are usually the most distributed per day and are considered valuable to users, thus interesting for optimization.
+
+Slow requests that represent bursts of activity and are weakly related to all activity per domain typically have a low density and will be weeded out.
+
+#### Email notifications
+
+Email notifications are created by the Web monitoring tools. 
+
+**Example of the Web monitoring tools report**.
+
+![](/images/cloudlinuxos/lve_manager/EmailNotifications.webp)
+
+**Example of the PHP Slow site analyzer report**.
+
+![](/images/cloudlinuxos/lve_manager/SlowSiteAnalyzerEmailNotifications.webp)
+
+
+#### FAQ
+
+Q: Does this feature consume a lot server resources for collecting website and PHP data? If I enable it can this slow down the server?
+
+A: The load depends on the number of websites and the Website monitoring tool settings. Basically, the Website monitoring should not create a significant load and you can keep it always on.
+
+---
+
+Q: Can I change the default value to 10, for example for the "Top N slow websites to show" setting?
+
+A: This number is simply the number of the slowest responding sites. All sites are sampled during the day. When generating a report, all sites' responses are sorted by response time from highest to lowest, and to make the report readable, only the first N sites are taken. You can specify N as all existing sites or only the 5 slowest. This number does not affect the server load, it only affects the report that will be visible in the UI or emailed to the administrator.
+
+---
+
+Q: What would you recommend: to enable the Website monitoring tool for some days and then disable or I can keep it always turned on?
+
+A: The load depends on the number of websites and the Website monitoring tool settings. Basically, the Website monitoring tool should not create a significant load and you can keep it always on.
+
+### Reseller interface
+
+Reseller interface is designed to manage limits for resellers’ end users, to monitor statistics and the history of resource usage and to modify reseller’s end user packages limits.
+
+Log in under a particular reseller credentials to have access to the following functionality:
+
+* <span class="notranslate">[Current Usage](./#current-usage-tab)</span> tab - allows to monitor resellers’ end users resource usage at the moment;
+* <span class="notranslate"> [Historical Usage](./#historical-usage-tab)</span> tab - allows to control resellers’ end users resource usage history;
+* <span class="notranslate"> [Users](./#users-tab)</span> tab with the list of all resellers’ end users allows to view and manage all the reseller’s end user limits;
+* <span class="notranslate"> [Statistics](./#statistics-tab)</span> tab displays the statistics of resource usage for particular timeframe or particular reseller's end user;
+* <span class="notranslate"> [Options](./#options-tab)</span> tab allows to set LVE Faults email notifications.
+* <span class="notranslate"> [Packages](./#packages-tab)</span> tab allows to manage reseller’s end user packages limits.
+
+:::warning
+Reseller can manage all his end users via Reseller Interface. Reseller cannot manage <span class="notranslate"> INODE </span> or <span class="notranslate"> MYSQL </span> limits, neither his own nor for his users.
+:::
+
+<div class="notranslate">
+
+#### Current Usage tab
+
+</div>
+
+Current usage table provides the information on the usage of the following:
+* <span class="notranslate"> SPEED (All)</span>
+* <span class="notranslate">memory (MEM)</span>
+* data throughput <span class="notranslate">(IO)(All)</span>
+* read/write operations per second (<span class="notranslate">IOPS</span>)
+* <span class="notranslate">number of processes (PNO)</span>
+* <span class="notranslate">entry processes (EP)</span>
+
+Resource usage data is being refreshed every 10 seconds which is set by default in <span class="notranslate">_Auto-refresh_</span> field. You can set <span class="notranslate">_Auto-refresh time_</span> by choosing the value from the drop-down.
+
+You can refresh the table manually by clicking <span class="notranslate">_Refresh now_</span> or you can freeze the values by clicking <span class="notranslate">_pause_</span> button.
+
+Usage values will not change until the next manual refresh. To unfreeze click on <span class="notranslate">_unpause_</span> button. The countdown will continue.
+
+:::warning
+Reseller cannot manage <span class="notranslate">INODE</span> or MYSQL limits. Neither his own, nor for his users.
+:::
+
+The bottom line star in the table displays the total reseller resource usage. It means, that all the usage of resellers’ end users and of his own is displayed as a summary for each parameter.
+
+
+![](/images/cloudlinuxos/lve_manager/currentusagetabresellerr_zoom70.webp)
+
+<div class="notranslate">
+
+#### Historical Usage tab
+
+</div>
+
+Choose <span class="notranslate">_Historical Usage_</span> tab to view reseller and resellers’ end users resource usage history and faults. The list of users can be filtered by <span class="notranslate">_Timeframe_</span>.
+
+When reseller’s end user reaches the limits set by hoster for the reseller, this will be displayed on the chart. 
+
+:::tip Note
+In this case reseller’s end user would not necessarily reaches his limits set by the reseller. These faults are not displayed on the chart.
+:::
+
+On the <span class="notranslate">_Historical Usage_</span> page the reseller is also able to see the list of <span class="notranslate">_Top 5 Reseller’s end users_</span> (based on resource usage, for the same period as charts/overall usage). Click <span class="notranslate">_History_</span> in the <span class="notranslate">_Actions_</span> column to view resource usage statistics for particular user.
+
+Click <span class="notranslate">_LVE Statistics_</span> on the top of the <span class="notranslate">Top 5</span> list to go to the <span class="notranslate">_Statistics_</span> page to view or manage the rest of users.
+
+![](/images/cloudlinuxos/lve_manager/historicalusageresellertab_zoom70.webp)
+
+<div class="notranslate">
+
+#### Users tab
+
+</div>
+
+Choose <span class="notranslate">_Users_</span> tab to view and manage the list of all resellers’ end users and resource usage limits provided for them. The following limits are available for the resellers’ end users:
+
+* <span class="notranslate">SPEED</span>
+* <span class="notranslate">PMEM</span>
+* <span class="notranslate">IO</span>
+* <span class="notranslate">IOPS</span>
+* <span class="notranslate">EP</span>
+* <span class="notranslate">NPROC</span>
+
+You can filter the list by <span class="notranslate">_Username_, _Domain_, _LVE ID_.</span>
+
+Tick <span class="notranslate">_Show only ignored users_</span> to display only users with <span class="notranslate">MySQL Governor</span> disabled.
+
+![](/images/cloudlinuxos/lve_manager/userstabreseller_zoom70.webp)
+
+<div class="notranslate">
+
+#### Actions column
+
+</div>
+
+Click on a pencil icon in <span class="notranslate">_Actions_</span> column to edit limits for a particular user. The following actions are available:
+
+* Click <span class="notranslate">Reset</span> to reset limits to default values.
+* Click <span class="notranslate">Apply</span> for <span class="notranslate">Do not limit</span> to set unlimited resources to a user.
+* Set values for <span class="notranslate"> PEED, PMEM, IO, IOPS, EP</span>, and NPROC and click <span class="notranslate">_Save_</span> to save changes or <span class="notranslate">_Cancel_</span> to close the window.
+
+![](/images/cloudlinuxos/lve_manager/userstabpopup_zoom70.webp)
+
+<div class="notranslate">
+
+#### Statistics tab
+
+</div>
+
+Choose <span class="notranslate">_Statistics_</span> tab to view resource usage limits statistics.
+
+<span class="notranslate">_Statistics_</span> table can be filtered by <span class="notranslate">_Timeframe_, _Limit_, _Top LVEs_, _LVE approaching limit_, _Fault LVE_</span>.
+
+The following parameters are displayed:
+
+* <span class="notranslate"> SPEED</span> per user;
+* <span class="notranslate"> PMEM</span> usage per user;
+* <span class="notranslate"> IO</span> usage per user;
+* <span class="notranslate"> EP</span> usage per user;
+* <span class="notranslate"> NPROC</span> usage per user;
+* <span class="notranslate"> IOPS</span> usage per user.
+
+![](/images/cloudlinuxos/lve_manager/statisticstabreseller_zoom70.webp)
+
+
+Use <span class="notranslate">_Charts_</span> in the <span class="notranslate">_View_</span> column to view detailed resource usage charts for a particular period of time.
+
+For example, 7 days period chart.
+
+![](/images/cloudlinuxos/lve_manager/sevendayschartresellers_zoom70.webp)
+
+<div class="notranslate">
+
+
+#### Options tab
+
+</div>
+
+Choose <span class="notranslate">_Options_</span> tab to set user email notifications for resellers’ end users.
+
+In <span class="notranslate">_LVE Faults email notifications_</span> section tick appropriate checkboxes to set the required type of notification.
+
+Starting from CloudLinux Manager v.7.3.0-1 and LVE-Stats v.4.1.4-1 users can disable in their Resource Usage plugin email notifications about hitting LVE limits by themselves.
+
+To allow users to do so, the reseller should enable the _Notify Customers_ and _Notify Reseller’s Customers_ options.
+
+Unfortunately, it is not possible to disable LVE Faults Email Notifications for all users by default so that users can enable the feature themselves in their interface.
+
+But it is possible to enable LVE Faults Email Notifications for all users by default, so that users can disable the feature themselves in their interface.
+
+
+![](/images/cloudlinuxos/lve_manager/optionsresellernotify_zoom70.webp)
+
+* <span class="notranslate">_Notify me on users faults_</span> - notify reseller when his users have exceeded limits.
+* <span class="notranslate">_Notify Customers_</span> - notify resellers’ end users when they have exceeded limits.
+* <span class="notranslate">_Notify me when I hit my limits_</span> - notify reseller when overall resource usage limits are reached.
+
+In <span class="notranslate">_Faults to include_</span> section tick checkboxes to include particular limits to email notifications.
+
+![](/images/cloudlinuxos/lve_manager/options02_zoom70.webp)
+
+In <span class="notranslate">_Minimum number of Faults to notify_</span> section enter the number of faults required for the notification to be sent for reseller and customer. You can also set the reseller notification frequency.
+
+Set the frequency of sending the reseller email notifications in <span class="notranslate">_Notify Reseller Every ... days/hours/minutes/seconds_</span> section.
+
+![](/images/cloudlinuxos/lve_manager/options03_zoom70.webp)
+
+Click <span class="notranslate">_Save Changes_</span> to apply changes.
+
+<div class="notranslate">
+
+#### Packages tab
+
+</div>
+
+Choose <span class="notranslate">_Packages_</span> tab to view and modify limits for reseller’s packages.
+
+![](/images/cloudlinuxos/lve_manager/packagesreseller_zoom70.webp)
+
+Click pencil icon in a package row to set the following limits for a package:
+
+* <span class="notranslate">SPEED</span> limit;
+* <span class="notranslate">Physical memory (PMEM)</span> (can be set as unlimited by setting 0);
+* <span class="notranslate">I/O</span> limits;
+* <span class="notranslate">IOPS</span> limits;
+* <span class="notranslate">Concurrent connections (EP)</span> limits.
+
+When limits are set click <span class="notranslate">_Save_</span> to apply changes.
+
+
+
+
+### LVE plugins branding
+
+:::tip Note
+Requires <span class="notranslate">CloudLinux Manager</span> 2.0-33+
+:::
+
+It is possible to apply branding to the LVE Plugins in cPanel end users’ interface. To brand the cPanel end users'  interface please do the following:
+
+* Create a script that will patch <span class="notranslate">CloudLinux Manager</span> files (with branding data, for example, image and logo) after every update of <span class="notranslate">`lvemanager rpm`</span> package;
+
+* Locate this script in <span class="notranslate">`/usr/share/l.v.e-manager/branding_script`</span>;
+
+* Make this script executable by running the command:
+
+<div class="notranslate">
+
+```
+chmod a+x /usr/share/l.v.e-manager/branding_script
+```
+</div>
+
+When done, the branding script will be executed while every update of <span class="notranslate">lvemanager</span> package and all branding changes will be applied in the end user’s interface.
+
+:::tip Note
+Modifying the <span class="notranslate">CloudLinux Manager WHM</span> plugin (<span class="notranslate">`/usr/local/cpanel/whostmgr/docroot/cgi/CloudLinux.cgi`</span>) via <span class="notranslate">`branding_script`</span> is not allowed.
+:::
+
+
+### User message for PHP version
+
+Since version 1.0-4 <span class="notranslate">CloudLinux Manager</span> acquired a feature of adding user messages to PHP versions*. To add a message, you should create a file in <span class="notranslate">`/opt/alt/phpXX/name_modifier`</span> with a message that you want to be shown to a user.
+
+For example, if you need to add the following message <span class="notranslate">`Don't use this PHP version`</span> to PHP version 4.4, you should create the following file:
+
+<div class="notranslate">
+
+```
+/opt/alt/php44/name_modifier:
+
+echo 'Don`t use this php version' > /opt/alt/php44/name_modifier
+```
+</div>
+
+As a result, <span class="notranslate">CloudLinux Manager</span> will automatically pick up this message and will show it in web-interface to administrator (see Figure 1.1 for cPanel, Figure 1.2 for DirectAdmin) and to user (see Figure 2.1 for cPanel, Figure 2.2 for DirectAdmin). You can add messages to other PHP versions this way as well.
+
+| |
+|:---:|
+|![](/images/cloudlinuxos/lve_manager/PHP_version_message_cPanel_admin.webp)|
+| Figure 1.1 cPanel CloudLinux Manager (administrator)| 
+
+
+| |
+|:---:|
+|![](/images/cloudlinuxos/lve_manager/PHP_version_message_DirectAdmin_admin.webp)|
+| Figure 1.2 DirectAdmin CloudLinux Manager (administrator)| 
+
+
+| |
+|:---:|
+|![](/images/cloudlinuxos/lve_manager/PHP_version_message_cPanel_user.webp)|
+| Figure 2.1 cPanel CloudLinux Manager (user)|
+
+
+| |
+|:---:|
+|![](/images/cloudlinuxos/lve_manager/PHP_version_message_DirectAdmin_user.webp)|
+| Figure 2.2 DirectAdmin CloudLinux Manager (user)| 
+
+:::tip Note
+*For cPanel and DirectAdmin only.
+:::
+
+## Client plugins
+
+* [Resource Usage client plugin](./#resource-usage-client-plugin)
+* [Dashboard](./#dashboard-2)
+* [Current Usage](./#current-usage-3)
+  * [Current Usage table](./#current-usage-table)
+  * [Filters](./#filters)
+  * [Charts](./#charts)
+  * [Usage](./#usage)
+* [Snapshot](./#snapshot)
+  * [Server processes snapshots](./#server-processes-snapshots)
+  * [Process list](./#process-list)
+  * [Database queries (cPanel only)](./#database-queries-cpanel-only)
+  * [HTTP queries](./#http-queries)
+* [Python Selector client plugin](./#python-selector-client-plugin)
+  * [How to manage an application](./#how-to-manage-an-application)
+  * [Create application](./#create-application)
+  * [Start application](./#start-application)
+  * [Stop application](./#stop-application)
+  * [Restart application](./#restart-application)
+  * [Remove application](./#remove-application)
+  * [Edit application](./#edit-application)
+  * [Migrate application](./#migrate-application)
+* [Node.js Selector client plugin](./#node-js-selector-client-plugin)
+  * [How to manage application](./#how-to-manage-application)
+  * [Start application](./#start-application-2)
+  * [Stop application](./#stop-application-2)
+  * [Restart application](./#restart-application-2)
+  * [Remove application](./#remove-application-2)
+  * [Edit application](./#edit-application-2)
+* [Ruby Selector client plugin](./#ruby-selector-client-plugin)
+* [PHP Selector client plugin](./#php-selector-client-plugin)
+  * [PHP Selector. My Domains tab (cPanel)](./#php-selector-my-domains-tab) <sup>CloudLinux Manager 6.0.1-2</sup>
+* [CloudLinux Manager options](./#cloudlinux-manager-options)
+  * [Changing settings manually](./#changing-settings-manually)
+  * [Changing settings in the config file](./#changing-settings-in-the-config-file)
+
+### Resource Usage client plugin
+
+Client resource usage plugin for cPanel, Plesk, and DirectAdmin allows host’s end users to view and monitor resource usage.
+
+
+Go to your control panel and click _CPU and concurrent connection usage_.
+
+![](/images/cloudlinuxos/lve_manager/client_resource_usage.webp)
+
+Here you can see three tabs:
+
+* **<span class="notranslate">Dashboard</span>**: displays the general condition of your site. If your site is limited, this displays on the Dashboard.
+* **<span class="notranslate">Current usage</span>**: here you can find full information on the resource usage displayed in charts and tables.
+* **<span class="notranslate">Snapshot</span>**: server snapshots with processes list and database and HTTP queries.
+
+![](/images/cloudlinuxos/lve_manager/RU-dashboard.webp)
+
+#### Dashboard
+
+Go to the <span class="notranslate">_Dashboard_</span> tab to see the general condition of your site.
+If your site is limited, you can see this on the <span class="notranslate">_Dashboard_</span> with the resource you are limited over.
+To see detailed information about resource usage, click <span class="notranslate">_Details_</span>.
+
+If your site is not limited, you will see the plain <span class="notranslate">Dashboard</span>.
+
+![](/images/cloudlinuxos/lve_manager/RU-no-issues.webp)
+
+#### Current Usage
+
+Go to the <span class="notranslate">_Current Usage_</span> tab to see the detailed information about resource usage on your server.
+
+![](/images/cloudlinuxos/lve_manager/RU-current-usage.webp)
+
+:::tip Note
+It's possible to add the <span class="notranslate">`normalized_user_cpu = N`</span> value to the <span class="notranslate">`/etc/sysconfig/cloudlinux`</span> file. So you can see for example CPU Usage X/200 (%) in the scenario where a user's LVE CPU limit is 200%. If the value is equal to `Y`, CPU Usage cannot get greater than 100%.
+:::
+
+
+#### Current Usage table
+
+The <span class="notranslate">_Current Usage_</span> table displays resource usage.
+
+:::warning Warning
+**<span class="notranslate">Inodes</span>** usage is displayed if it is enabled and **<span class="notranslate">Inodes</span>** limits are set for the user. cPanel only.
+:::
+
+![](/images/cloudlinuxos/lve_manager/RU-current-usage-table.webp)
+
+* **<span class="notranslate">Description</span>**: resource name
+* **<span class="notranslate">Usage</span>**: resource usage value
+* **<span class="notranslate">Limit</span>**: resource usage limit
+* **<span class="notranslate">Fault</span>**: number of faults
+
+#### Filters
+
+You can filter charts and the Usage table by timeframe and time unit (day, hour, minute).
+
+#### Charts
+
+The following resources are displayed in charts:
+
+* <span class="notranslate">CPU</span>
+* <span class="notranslate">Virtual Memory</span>
+* <span class="notranslate">Physical Memory</span>
+* <span class="notranslate">Input/Output</span>
+* <span class="notranslate">Io operations</span>
+* <span class="notranslate">Entry Processes</span>
+* <span class="notranslate">Processes</span>
+  
+All charts have the color legend:
+
+* Green — average resource usage
+* Red — limit set for this parameter
+* Blue — database
+* Green-cyan — faults (limit violations)
+  
+You can also see the Faults chart with all faults for all resources.
+
+![](/images/cloudlinuxos/lve_manager/RU-faults-chart.webp)
+
+#### Usage
+
+The <span class="notranslate">_Usage_</span> table displays information on each resource usage sorted by timeframe and time unit.
+
+![](/images/cloudlinuxos/lve_manager/RU-usage-table.webp)
+
+* **<span class="notranslate">From-To</span>**: period
+* **<span class="notranslate">A</span>**: average
+* **<span class="notranslate">L</span>**: limit
+* **<span class="notranslate">F</span>**: faults
+
+Use controls below the table to navigate through it.
+
+#### Snapshot
+
+Go to the <span class="notranslate">_Snapshot_</span> tab to see server snapshots with processes list and database and HTTP queries.
+
+![](/images/cloudlinuxos/lve_manager/RU-snapshots.webp)
+
+You can choose a date and a snapshot to display in the table.
+
+#### Server process snapshots
+
+When a CloudLinux OS user hits LVE limits, appropriate faults are generated and the [lvestats](/cloudlinuxos/cloudlinux_os_components/#lve-stats-2) package generates a server process snapshot. The snapshot is a list of running applications and a list of running MySQL queries right after the faults happened.
+
+Snapshots allow users to investigate the reason of accounts hitting their limits. Several snapshots are generated for each incident. An incident is a state when multiple faults are generated in a given time period. The time period is configurable. By default, if faults are generated within a period of 300 seconds, we consider them to be a single incident.
+
+The snapshot configuration options are available in
+
+<div class="notranslate">
+
+```
+/etc/sysconfig/lvestats.config/SnapshotSaver.cfg
+```
+</div>
+
+* <span class="notranslate">`period_between_incidents = 300`</span> by default, time in seconds
+* <span class="notranslate">`snapshots_per_minute = 2`</span> by default, maximum number of snapshots per minute
+* <span class="notranslate">`max_snapshots_per_incident = 10`</span> by default, maximum number of snapshots for an incident
+
+To access <span class="notranslate">**Snapshots**</span> you can also use [lve-read-snapshot](/cloudlinuxos/command-line_tools/#lve-read-snapshot) utility.
+
+:::tip Note
+The list of processes in a snapshot is close but not similar to the real processes list when faults were generated. It happens because of delay when the faults are happened and the snapshot is taken by the system.
+:::
+
+The list of MySQL queries is an output of a query:
+
+<div class="notranslate">
+
+```
+SELECT command, time, info FROM information_schema.processlist
+
+WHERE user = '%username';
+```
+</div>
+
+#### Process list
+
+Displays information on processes in the selected snapshot.
+
+* **<span class="notranslate">PID</span>**: process ID
+* **<span class="notranslate">CMD</span>**: what command was run
+* **<span class="notranslate">CPU</span>**: CPU usage
+* **<span class="notranslate">MEM</span>**: memory usage
+  
+#### Database queries (cPanel only)
+
+Displays information on database queries in the selected snapshot.
+
+![](/images/cloudlinuxos/lve_manager/RU-db-queries.webp)
+
+#### HTTP queries
+
+Displays information on HTTP queries in the selected snapshot.
+
+![](/images/cloudlinuxos/lve_manager/RU-HTTP-queries.webp)
+
+
+#### Turning On / Off email notifications per user
+
+:::warning The following packages are required:
+* lvemanager-7.3.0-1
+* lve-stats-4.1.4-1
+:::
+
+A user can disable LVE-Stats notifications about hitting LVE limits by himself.
+
+The feature is available via **Resource Usage client plugin** | **Options** | **LVE Stats Email Notifications**
+
+![](/images/cloudlinuxos/lve_manager/TurningOnOffNotifications.webp)
+
+### Python Selector client plugin
+
+:::tip Note
+Python Selector icon in end user interface is hidden when Python is disabled
+:::
+
+![](/images/cloudlinuxos/lve_manager/PythonEndUserIcon.webp)
+
+End User interface allows end users to setup and manage Python for their web applications.
+
+Go to <span class="notranslate">cPanel → Software Section → Setup Python App</span>.
+ 
+Web Applications page is displayed.
+
+![](/images/cloudlinuxos/lve_manager/PythonEUWebApp.webp)
+
+There are several columns in the list:
+
+* <span class="notranslate">App URI</span> — application URI including the domain.
+* <span class="notranslate">App Root Directory</span> — application root directory relative to user's home.
+* <span class="notranslate">Status — started/stopped</span> — displays if an application is running or not and version of the application.
+* <span class="notranslate">Actions</span> — allows to migrate, start, restart, stop, edit, and remove a particular application.
+
+#### How to manage an application
+
+#### Create application
+
+:::warning
+**NB!** 
+Do not use "python37", "python38", "python311" (i.e. **"python{version number}"**) as names for your applications as this causes unexpected errors.
+:::
+
+1. Click <span class="notranslate">_Create Application_</span> to create an application. The Create Application tab opens.
+
+    ![](/images/cloudlinuxos/lve_manager/PythonCreateApp1.webp)
+
+2. Specify the following:
+    * <span class="notranslate">Python version</span> — select from the dropdown (required);
+    * <span class="notranslate">Application root</span> — physical address to your application on a server that corresponds with its URI (required);
+    * <span class="notranslate">Application URL</span> —  HTTP/HTTPS link to your application (optional);
+    * <span class="notranslate">Application startup file</span> — the file where WSGI callable object is located. It is required for application to run. Default is <span class="notranslate">`passenger_wsgi.py`</span>;
+    * Application Entry point — WSGI callable object for your application (optional). Default is <span class="notranslate">`application`</span>;
+    * <span class="notranslate">Passenger log file</span> — starting from CloudLinux Manager 5.1.0-2 you can set paths to Passenger logs for Python applications via UI (or using [cloudlinux-selector utility](/command-line_tools/#new-python-selector)).
+3. Optionally, add environment variable. To do so, click <span class="notranslate">_Add Variable_</span> and specify variable name and value, then click the <span class="notranslate">_Done_</span> or <span class="notranslate">_Cancel_</span> to close an adding form.
+
+To delete or edit environment variable, click <span class="notranslate">_Bin_</span> or <span class="notranslate">_Pencil_</span> for the required variable.
+
+![](/images/cloudlinuxos/lve_manager/PythonEnvVar.webp)
+
+#### Start application
+ 
+To start a stopped application do the following:
+
+* Click <span class="notranslate">_Start_</span> in the <span class="notranslate">_Actions_</span> column in a stopped application row.
+* When an action is completed a <span class="notranslate">_Start_</span> changes to <span class="notranslate">_Stop_</span>.
+ 
+#### Stop application
+ 
+To stop a started application do the following:
+
+* Click <span class="notranslate">_Stop_</span> icon in the <span class="notranslate">_Actions_</span> column in a started application row.
+* When an action is completed a <span class="notranslate">_Stop_</span> changes to <span class="notranslate">_Start_</span>.
+
+![](/images/cloudlinuxos/lve_manager/PythonStartStopApp.webp)
+
+#### Restart application
+ 
+To restart a started application do the following:
+
+* Click <span class="notranslate">_Restart_</span> in the <span class="notranslate">_Actions_</span> column in a started application row. A current row is blocked and when a process is completed it will be unblocked.
+ 
+#### Remove application
+ 
+To remove application do the following:
+
+* Click <span class="notranslate">_Bin_</span> in the <span class="notranslate">_Actions_</span> column in a particular application row.
+* In the confirmation popup click <span class="notranslate">_Agree_</span> to start removing or <span class="notranslate">_Cancel_</span> to close the popup.
+* When an action is completed an application will be removed from the <span class="notranslate">_Web Applications_</span> table and a confirmation popup will be displayed.
+
+![](/images/cloudlinuxos/lve_manager/PythonRestartRemove.webp)
+
+#### Edit application
+ 
+To edit application do the following:
+
+* Click the <span class="notranslate">_Pencil_</span> in the <span class="notranslate">_Actions_</span> column in a particular application row. A particular application tab opens.
+
+![](/images/cloudlinuxos/lve_manager/PythonSelectorEditApp.webp)
+
+The following actions are available:
+
+* Restart application — click <span class="notranslate">_Restart_</span>.
+* Stop application — click <span class="notranslate">_Stop App_</span>.
+* Remove application — click <span class="notranslate">_Destroy_</span> and confirm the action in a popup.
+* Change Python version — choose Python version from a dropdown.
+* Change Application root — specify in a field a physical address to the application on a server that corresponds with its URI.
+* Change Application URL — specify in a field an HTTP/HTTPS link to the application.
+* Open Application URL — click the <span class="notranslate">_Open_</span>.
+* Change Application startup file — specify as <span class="notranslate">`NAME.py`</span> file.
+* Change Application Entry point — specify WSGI callable object for your application.
+* Passenger log file — starting from CloudLinux Manager 5.1.0-2 you can set paths to Passenger logs for Python applications via UI (or using [cloudlinux-selector](/cloudlinuxos/command-line_tools/#new-python-selector) utility).
+* Run pip install command — click <span class="notranslate">_Run pip install_</span> to install the package(s) described in the configuration file.
+* Add Configuration files — click <span class="notranslate">_Add_</span> and specify all required information.
+* Edit available configuration file — click <span class="notranslate">_Edit_</span>, the file opens in a new popup.
+* Remove available configuration file from the list — click <span class="notranslate">_Remove_</span> and confirm the action or click <span class="notranslate">_Cancel_</span> to close the popup.
+* Add Environment variables — click <span class="notranslate">_Add Variable_</span> and specify a name and a value.
+  
+Click <span class="notranslate">_Save_</span> to save all changes or <span class="notranslate">_Cancel_</span> to close the tab.
+
+#### Migrate application
+
+For details see [How to migrate an application to the new Python Selector](/cloudlinuxos/cloudlinux_os_components/#how-to-migrate-an-application-to-the-new-python-selector)
+
+
+:::tip Note
+You can also use [Python Selector CLI](/cloudlinuxos/command-line_tools/#end-user)
+:::
+
+### Node.js Selector client plugin
+
+:::tip Note
+<span class="notranslate">Node.js Selector</span> icon in end user interface is hidden when Node.js is disabled.
+:::
+
+![](/images/cloudlinuxos/lve_manager/Node.jsClientPlugin.webp)
+
+End User interface allows end users to setup and manage Node.js for their web applications.  
+Go to <span class="notranslate">_cPanel → Software Section → Setup Node.js App_</span>.
+
+<span class="notranslate">_Web Applications_</span> page is displayed.
+
+![](/images/cloudlinuxos/lve_manager/nodejsusermain_zoom70.webp)
+
+There are several columns in the list.
+* <span class="notranslate"> App URI </span> — application URI including the domain.
+* <span class="notranslate"> App Root Directory </span> — application root directory relative to user's home.
+* <span class="notranslate"> Mode </span> — can be production or development.
+* <span class="notranslate"> Status </span> — started/stopped — displays if an application is running or not and version of application.
+* <span class="notranslate"> Actions </span> — allows to start, restart, stop, edit, and remove a particular application.
+
+#### How to manage application
+
+#### Start application
+
+To start a stopped application do the following:
+* Click <span class="notranslate"> _Start_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a stopped application row.
+* When an action is completed a <span class="notranslate"> _Start_ </span> icon changes to <span class="notranslate"> _Stop_ </span> icon.
+
+#### Stop application
+
+To stop a started application do the following:
+* Click <span class="notranslate"> _Stop_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a started application row.
+* When an action is completed a <span class="notranslate"> _Stop_ </span> icon changes to <span class="notranslate"> _Start_ </span> icon.
+
+![](/images/cloudlinuxos/lve_manager/nodejsuseruistartstop_zoom70.webp)
+
+#### Restart application
+
+To restart started application do the following:
+* Click <span class="notranslate"> _Restart_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a started application row. A current row is blocked and when a process is completed it will be unblocked.
+
+#### Remove application
+
+To remove application do the following:
+* Click <span class="notranslate"> _Bin_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a particular application row.
+* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to start removing or <span class="notranslate"> _Cancel_ </span> to close pop-up.
+* When an action is completed an application will be removed from the <span class="notranslate"> _Web Applications_ </span> table and a confirmation pop-up will be displayed.
+
+![](/images/cloudlinuxos/lve_manager/nodejsuseruirestartremove_zoom70.webp)
+
+#### Edit application
+
+To edit application do the following:
+* Click <span class="notranslate"> _Pencil_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a particular application row. A particular application tab opens.
+
+![](/images/cloudlinuxos/lve_manager/Node.js-Selector-edit-app.webp)
+
+The following actions are available:
+* Restart application — click <span class="notranslate"> _Restart_ </span> button.
+* Stop Node.js — click <span class="notranslate"> _Stop Node.js_ </span> button.
+* Run JavaScript script — click <span class="notranslate"> _Run JS Script_ </span> button to run a command specified in the <span class="notranslate"> Scripts </span> section of the <span class="notranslate"> package.json </span> file. Specify the name of the script to run plus any parameters then click <span class="notranslate"> Ok </span> .
+* Remove application — click <span class="notranslate"> _Delete_ </span> button and confirm the action in a pop-up.
+* Change Node.js version — choose Node.js version from a drop-down.
+* Change Application mode — choose application mode from a drop-down. Available modes are <span class="notranslate"> _Production_ </span> and <span class="notranslate"> _Development_ </span> .
+* Application root — specify in a field a physical address to the application on a server that corresponds with its URI.
+* Application URL — specify in a field an HTTP/HTTPS link to the application.
+* Application startup file — specify as <span class="notranslate"> NAME.js file </span>.
+* Passenger log file — starting from CloudLinux Manager 5.1.0-2 you can set paths to Passenger logs for Node.js applications via UI (or using [cloudlinux-selector](/cloudlinuxos/command-line_tools/#node-js-selector) utility).
+* Run <span class="notranslate"> npm install command </span> — click <span class="notranslate"> _Run npm install_ </span> button to install the package(s) described in the <span class="notranslate"> package.json </span> file.
+* Add Environment variables — click <span class="notranslate"> _Add Variable_ </span> and specify a name and a value.
+
+:::tip Note
+You can also use [Node.js Selector CLI](/cloudlinuxos/command-line_tools/#end-user-2)
+:::
+
+### Ruby Selector client plugin
+
+End user interface allows end users to setup and manage Ruby for their web applications.
+
+Go to <span class="notranslate">_cPanel → Software Section → Setup Ruby App_</span>.
+
+![](/images/cloudlinuxos/lve_manager/RubyClientPluginStart.webp)
+
+Setup Ruby application page is displayed.
+
+![](/images/cloudlinuxos/lve_manager/RubyClientPlugin1.webp)
+
+Here you can do the following:
+
+* Setup a new application.
+* View/edit/restart/remove the existing application.
+
+### PHP Selector client plugin
+
+End user interface allows end users to select and manage PHP extensions and options for the particular PHP version.
+
+Go to <span class="notranslate">_cPanel → Software Section → Select PHP Version_</span>.
+
+![](/images/cloudlinuxos/lve_manager/PHPSelectorClientPlugin.webp)
+
+PHP Extensions page opens.
+
+![](/images/cloudlinuxos/lve_manager/php_selector_customer.webp)
+
+Here you can choose extensions for the particular PHP version, the current PHP version and reset to default.
+
+To manage PHP options, click <span class="notranslate">_Switch to PHP options_</span>.
+
+![](/images/cloudlinuxos/lve_manager/php_selector_options.webp)
+
+All changes are saved automatically.
+
+* <span class="notranslate">`allow_url_fopen`</span>. Allows PHP file functions to retrieve data from remote locations over FTP or HTTP. This option is a great security risk, thus do not turn it on without necessity.
+* <span class="notranslate">`display_errors`</span>. Determines whether errors should be printed to the screen as part of the output or if they should not be shown to a user.
+* <span class="notranslate">`error_reporting`</span>. The error reporting level.
+* <span class="notranslate">`file_uploads`</span>. Allows uploading files over HTTP.
+* <span class="notranslate">`include_path`</span>. The list of directories where scripts look for files (similar to system's PATH variable). To separate directories, use a colon (`:`) For example: <span class="notranslate">`.:/dir/inc:/usr/lib/php`</span>
+* <span class="notranslate">`log_errors`</span>. Tells whether to log errors. By default, errors are logged in the server's error log. Use the error_log directive to specify the path to your own log file.
+* <span class="notranslate">`mail.force_extra_parameters`</span>. Additional parameters for the mail() function used to send mail. For example, to use your custom Sendmail configuration: <span class="notranslate">`-C /dir/conf.cf`</span>
+* <span class="notranslate">`max_execution_time`</span>. The maximum time in seconds a script is allowed to run before it is terminated.
+* <span class="notranslate">`max_input_time`</span>. The maximum time in seconds a script is allowed to parse input data.
+* <span class="notranslate">`memory_limit`</span>. The maximum amount of memory in bytes a script is allowed to allocate. Set the value to -1 to have no memory limit (not recommended). Use shortcuts for byte values: K (kilo), M (mega), and G (giga). For example, 128M.
+* <span class="notranslate">`open_basedir`</span>. The list of directories used to limit the files that can be opened by PHP. If the file is outside the specified directories, PHP scripts will refuse to open it. To separate directories, use a colon. For example: <span class="notranslate">`/dir/upload:/usr/tmp`</span>.
+* <span class="notranslate">`post_max_size`</span>. The maximum size in bytes of data that can be posted with the POST method. Typically, should be larger than <span class="notranslate">`upload_max_filesize`</span> and smaller than <span class="notranslate">`memory_limit`</span>. Use shortcuts for byte values: K (kilo), M (mega), and G (giga). For example, 16M.
+* <span class="notranslate">`session.save_path`</span>. The directory where PHP writes session data (files). For example: <span class="notranslate">`/dir/tmp`</span>
+* <span class="notranslate">`short_open_tag`</span>. Allows the short form of the PHP open tag.
+* <span class="notranslate">`upload_max_filesize`</span>. The maximum size in bytes of an uploaded file. Use shortcuts for byte values: K (kilo), M (mega), and G (giga). For example, 128M.
+
+#### PHP Selector. My Domains tab <Badge type="info" text="cPanel" /> <Badge type="info" text="CloudLinux Manager 6.0.1-2" />
+
+The <span class="notranslate">_My Domains_</span> tab contains a list of user’s domains to visualize which PHP Selector is used by domain.
+
+![](/images/cloudlinuxos/lve_manager/MyDomainsTab.webp)
+
+A user can configure a domain to use CloudLinux OS <span class="notranslate">PHP Selector</span>.
+
+1. Click <span class="notranslate">_Use PHP Selector_</span>
+  
+![](/images/cloudlinuxos/lve_manager/UsePHPSelector1.webp)
+
+2. Set a version in <span class="notranslate">PHP Selector</span>
+
+![](/images/cloudlinuxos/lve_manager/SetVersion.webp)
+
+:::tip Note
+If `php-fpm` is enabled for a domain the only administrator can set it to <span class="notranslate">_disable_</span>.
+:::
+
+
+### CloudLinux Manager options
+
+You can change CloudLinux Manager settings for a server manually via cPanel/WHM or, if you have many servers, you can change CloudLinux Manager settings for them in the config file.
+
+####  Changing settings manually
+
+* Log in to cPanel, go to WHM, choose CloudLinux OS and click <span class="notranslate">_Options_</span>.
+* Change settings.
+
+#### Changing settings in the config file
+
+You can modify the following options in the config file <span class="notranslate">`/var/cpanel/cpanel.config`</span> directly for example via Puppet.
+
+| | |
+|-|-|
+|<span class="notranslate">`lve_hideextensions`</span>| Hides (when =1) range of php extensions for user in <span class="notranslate"> Select PHP </span> version|
+|<span class="notranslate">`lve_hideuserstat  `</span>| Hides (when =1) LVE statistics in <span class="notranslate">cPanel Stats Bar (UI)</span>|
+|<span class="notranslate">`lve_showinodeusage`</span>| Displays (when =1) used inodes in cPanel (UI)|
+|<span class="notranslate">`lve_hide_selector`</span>| Turns off <span class="notranslate">UI PHP Selector</span> (Select <span class="notranslate">PHP Version</span> option)|
+|<span class="notranslate">`lve_enablerubyapp`</span>|Displays (when =1) Ruby Selector in user’s interface (UI)|
+
+
+:::warning Note
+It is not allowed to change <span class="notranslate">`lve_enablepythonapp`</span> option in the config file directly.
+:::
+
+You can use <span class="notranslate">`cloudlinux-selector`</span> utility to change <span class="notranslate">`lve_enablepythonapp`</span> option:
+
+<div class="notranslate">
+
+```
+cloudlinux-selector set --json --interpreter=python --selector-status=enabled
+```
+</div>
+
+Or you can change it via <span class="notranslate">WHM -> CloudLinux Manager -> Options -> Python Selector -> Python</span>
+
+After modifying the config files directly, you should execute the following command to apply changes:
+
+<div class="notranslate">
+
+```
+/usr/share/l.v.e-manager/utils/dynamicui.py --sync-conf=all
+```
+</div>
+
+
+## cPanel LVE Extension
+
+* [Add Package Extension](./#add-package-extension)
+* [Edit Package Extensions](./#edit-package-extensions)
+
+:::tip Note
+<span class="notranslate">CloudLinux Manager</span> 1.0-9.8+
+:::
+
+<span class="notranslate"> cPanel LVE Extension </span> allows to control LVE limits for packages via cPanel hosting packages control interface and via <span class="notranslate"> cPanel WHM API </span> . It simplifies integration with existing billing systems for cPanel (like WHMCS for example).
+
+#### Add Package Extension
+
+To add LVE Settings to standard cPanel package, go to <span class="notranslate">_Packages_</span> | <span class="notranslate">_Add a Package_</span>.
+
+:::tip Note
+You can find the information on how to add a package in official cPanel documentation on the link: [https://documentation.cpanel.net/display/ALD/Add+a+Package](https://documentation.cpanel.net/display/ALD/Add+a+Package)
+:::
+
+![](/images/cloudlinuxos/lve_manager/lve-extension_01.webp)
+
+
+Tick <span class="notranslate">_LVE Settings_</span> in the bottom of the page to open <span class="notranslate">_LVE Settings_</span> form.
+
+![](/images/cloudlinuxos/lve_manager/lve-extension_02.webp)
+
+You can specify the following options:
+
+:::tip Note
+Your changes to <span class="notranslate">_LVE Settings_</span> will appear in the system after a little while.
+:::
+
+| | |
+|-|-|
+|<span class="notranslate">Speed Settings</span> | Maximum CPU usage for an account. Must be in the range 1 - 100 (but obligatory > 0 ) if old format is used; use `%` or <span class="notranslate">`Mhz\Ghz`</span> to set <span class="notranslate">`CPU`</span> limit as speed; Type <span class="notranslate">`DEFAULT`</span> to use default value.|
+|<span class="notranslate"> Memory Settings </span> |`Pmem` - Maximum physical memory usage for an account. `Vmem` - Maximum virtual memory usage for an account. Must be a positive number. Postfix allowed only in `KGMT`. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` for unlimited resource.|
+|<span class="notranslate"> Max entry proc Settings </span> | Maximum number of entry processes (concurrent connections) for an account. Must be a positive number. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` for unlimited resource.|
+|<span class="notranslate"> Nproc Settings </span> | Maximum number of processes usage for an account. Must be a positive number. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` for unlimited resource.|
+|<span class="notranslate"> IO Settings </span> | Maximum <span class="notranslate">I/O (input/output)</span> usage speed for an account. Is measured in <span class="notranslate">`Kb/s`</span>. Must be a positive number. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` for unlimited resource.|
+|<span class="notranslate"> IOPS Settings </span> | Maximum <span class="notranslate">`IOPS`</span> (input/output operations per second) usage for an account. Must be a positive number. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` to unlimited resource.|
+
+![](/images/cloudlinuxos/lve_manager/lve-extension_03.webp) 
+
+Click <span class="notranslate">_Add_</span> to apply your changes.
+
+#### Edit Package Extensions
+
+You can edit limits in any convenient for you way - in <span class="notranslate">_Edit a Package_</span> section, in the  <span class="notranslate">CloudLinux Manager </span> or even via WHM API.
+
+<span class="notranslate">**Edit a Package**</span>
+
+To edit package extensions, go to <span class="notranslate"> _Packages_</span> | <span class="notranslate">_Edit a Package_</span>. Choose a package from the <span class="notranslate">_Package_</span> list and click <span class="notranslate">_Edit_</span>.
+
+![](/images/cloudlinuxos/lve_manager/lve-extension_04.webp)
+
+<span class="notranslate">**CloudLinux Manager**</span>
+
+To edit package extensions, go to <span class="notranslate">CloudLinux Manager</span> | <span class="notranslate">Server Configuration</span> | <span class="notranslate"> CloudLinux OS CloudLinux Manager</span> | <span class="notranslate"> Packages</span> and click pencil (edit) icon.
+
+![](/images/cloudlinuxos/lve_manager/lve-extension_05.webp)
+
+<span class="notranslate">**WHM API**</span>
+
+To learn how to work with package extensions limits using WHM API, please read the official cPanel documentation: [https://documentation.cpanel.net/display/SDK/Guide+to+Package+Extensions+-+Data+Behavior+and+Changes](https://documentation.cpanel.net/display/SDK/Guide+to+Package+Extensions+-+Data+Behavior+and+Changes)
+
+#### Control panel integration guide
+
+[Here](/cloudlinuxos/control_panel_integration/) you will find the instructions and common techniques used to integrate your software with CloudLinux OS.
diff --git a/docs/cloudlinuxos/max_webserver/README.md b/docs/cloudlinuxos/max_webserver/README.md
new file mode 100644
index 000000000..f505cf37a
--- /dev/null
+++ b/docs/cloudlinuxos/max_webserver/README.md
@@ -0,0 +1,124 @@
+
+# MAx Web Server (BETA)
+---
+
+MAx Web Server sets up NGINX hosting on the server and automatically converts `.htaccess` files into corresponding NGINX 
+configuration.
+
+It seamlessly integrates with the LSAPI NGINX module,
+which allows for better performance and resource usage.
+
+:::tip  
+MAx Web Server is supported on cPanel servers only, running CloudLinux OS 8 and later.
+:::
+
+## Installation
+
+To use MAx Web Server, first install the `max_webserver` package:
+
+```
+dnf --enablerepo=cloudlinux-updates-testing install max_webserver
+```
+
+## Convert to NGINX hosting
+
+After `max_webserver` package is installed, you can switch to NGINX by running:
+
+```
+apache2max_webserver setup
+```
+
+Note that this may take a while, so we recommend running this command in a `tmux` or `screen` session.
+
+Any websites previously using LSAPI will be automatically switched to NGINX hosting with the LSAPI NGINX module.
+Websites using PHP-FPM will be switched to NGINX hosting with PHP-FPM.
+PHP websites using other handlers will be proxied to Apache.
+
+After conversion is complete, no further action is required.
+The monitoring subsystem, when detecting a change to an `.htaccess` runs conversions to NGINX configuration.
+So you can continue using `.htaccess` files as usual.
+
+:::tip  
+Do not attempt to stop the Apache service or remove Apache packages after switching to NGINX.
+The Apache service provides a safety net for websites that cannot be converted to NGINX.
+:::
+
+## Switch back to Apache hosting
+
+To switch back to Apache, run:
+
+```
+apache2max_webserver reset
+```
+
+This command removes NGINX from your system and restores Apache configuration.
+
+## Force use of Apache for a single website
+
+To force individual website to be served by Apache, run:
+
+```
+apache2max_webserver proxy -d <domain>
+```
+
+For example, `apache2max_webserver proxy -d example.com`.
+
+
+## Disable forced use of Apache for a single website
+
+To disable forcing individual website to be served by Apache:
+
+```
+apache2max_webserver unproxy -d <domain>
+```
+
+Note that Apache may still serve the website, if:
+* conversion of its `.htaccess` files fails in any way
+* unsupported handler is used. MAx Web Server only supports PHP-FPM and MOD_LSAPI handlers
+
+## List proxied websites
+
+To list websites that are forced to be served by Apache:
+
+```
+apache2max_webserver list-proxied
+```
+
+This command lists all websites that are forced to be served by Apache and the reason for that.
+
+## Other notes
+
+MAx Web Server automatically converts `.htaccess` files to NGINX configuration, stored under the directory `/etc/nginx`
+as `apache2nginx.conf` and files prefixed with `apache2nginx-`.
+
+Please don't modify these files manually, as they will be overwritten by the monitoring subsystem.
+
+Instead, if you want to augment the NGINX configuration, you can do any of the following:
+
+* Work with your `.htaccess` files like usually, and let MAx Web Server automatically convert them to respective NGINX configuration
+* Add files according to `ea-nginx` files conventions. Please refer to the [cPanel documentation](https://docs.cpanel.net/knowledge-base/web-services/nginx-with-reverse-proxy/).
+
+## Frequently Asked Questions 
+
+**Q: Is MAx Web Server available on all editions?**<br />
+A: Yes, it is. However, **AccelerateWP** (*which provides more benefit in pair with MAx Web Server*) is available only for CloudLinux OS Shared PRO/Admin/Solo editions (not Legacy).
+
+**Q: What happens if the conversion from Apache to NGINX fails?**<br />
+A: In such cases, the system will automatically switch to proxy-pass mode on NGINX.
+
+**Q: Which PHP handlers are supported?**<br />
+A: MAx Web Server supports LSAPI and FPM PHP handlers, which can be managed via WHM/cPanel's MultiPHP Manager.
+
+**Q: How can I diagnose and report proxy-pass issues?**<br />
+A: Use the following commands:
+* Run apache2max_webserver list-proxied to identify proxied websites and reasons.
+* Check logs with:
+```
+cat /var/log/max_webserver.log | grep username | grep WARNING
+```
+or more specifically:
+```
+cat /var/log/max_webserver.log | grep user.com | grep proxy_pass
+```
+**Q: If one site on an account uses proxy-pass, does it affect other sites?**<br />
+A: No. Only the sites that couldn’t be converted will use proxy-pass. Successfully converted sites will operate via NGINX.
diff --git a/docs/cloudlinuxos/shared-pro/README.md b/docs/cloudlinuxos/shared-pro/README.md
new file mode 100644
index 000000000..9d9db1ef8
--- /dev/null
+++ b/docs/cloudlinuxos/shared-pro/README.md
@@ -0,0 +1,3027 @@
+---
+sidebarDepth: 3
+---
+# CloudLinux OS Pro Components
+
+## Introduction
+
+CloudLinux OS Shared Hosting Pro was developed with shared hosting in mind. It’s a state-of-the-art operating system that gives shared hosting providers what they need: advanced automation, deep-look performance analytics, and centralized monitoring tools.
+
+It includes additional tools to expand the functionality.
+
+To activate the CloudLinux OS Shared Pro you have to purchase a Shared Pro license first, or upgrade the existing one from the [cln.cloudlinux.com](https://cln.cloudlinux.com) then activate a license on a server using the [same instructions](https://docs.cloudlinux.com/cloudlinuxos/cloudlinux_installation/#license-activation) just with a new key.
+
+:::tip Info
+Apart from the functionality described in this documentation section, the Shared Pro edition includes all the [CloudLinux Shared OS features](/cloudlinuxos/cloudlinux_os_components/#cloudlinux-os-components).
+:::
+
+## AccelerateWP
+
+### Getting started
+
+AccelerateWP carries a suite of optimization features that can be enabled and automatically configured for the end user's site.
+
+There are AccelerateWP, AccelerateWP Premium and AccelerateWP CDN feature suites.
+
+AccelerateWP suite is always enabled when AccelerateWP is turned on. Choose whether you want to offer AccelerateWP Premium 
+offer AccelerateWP Premium or CDN (Content Delivery Network) for your users (by opting in) and click "Turn on" to start exploring AccelerateWP. 
+
+:::tip Note
+AccelerateWP Free suite is enabled by default on all new servers. Proceed to [suites configuration](/cloudlinuxos/shared-pro/accelerate-wp/#suites-usage-statistics) if your server has AccelerateWP already turned on.
+:::
+
+##### Activate AccelerateWP for a single server
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminPaidPremium.webp)
+
+
+
+:::tip Note
+By default, AccelerateWP Premium suite includes Object Cache (which is not billable per user). If the option to allow billable optimization features is selected in CLN, the additional premium features will be included in the suite.
+:::
+
+
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminNonPaidPremium.webp)
+
+
+Enable AccelerateWP Free for all users on the server via [CLI](#enable-acceleratewp-free)
+
+Enable AccelerateWP Premium for all users on the server via [CLI](#enable-acceleratewp-premium)
+
+Once the AccelerateWP suite is enabled by an administrator,
+end-users will see an AccelerateWP tab in their control panel interface and be able to activate the optimization feature.
+
+When AccelerateWP CDN suite is enabled by the administrator, end-users will get 1 GB of CDN traffic and be able to activate
+the feature to use until the limit is reached. Once the 1GB limit is reached - the end-user will be suggested to extend the CDN limit by
+purchasing a CDN plan using [WHMCS or 3'd party billing](#whmcs-billing).
+
+When the AccelerateWP Premium suite is enabled by the administrator, 
+end-users will see the free Object Caching feature in their interface.
+If current [CloudLinux license](/cln/dashboard/#acceleratewp-features-management-for-regular-customers) gives access to billable features - end-users will see Image Optimization and Critical CSS features as well.
+but cannot activate the feature unless they purchase the feature using [WHMCS or 3'd party billing](#whmcs-billing).
+
+##### Activate AccelerateWP Free on all servers via Centralized Monitoring
+
+It is possible to activate AccelerateWP Free on all compatible servers via the [Centralized Monitoring UI](https://cm.cloudlinux.com) 
+or via the [CLN UI](https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring). 
+Once Activate button is clicked - AccelerateWP Free will be set up automatically on all compatible servers within couple of minutes.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/CMInstallationProd.webp)
+
+##### Activate AccelerateWP Premium on all servers via Centralized Monitoring
+
+Starting from ```lve-utils-6.5.11-1``` it is possible to activate AccelerateWP Premium via Centralized Monitoring as well.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/CMInstallationPremium.webp)
+
+AccelerateWP Premium will be activated on all compatible servers once activation button is clicked and upgrade url is provided.
+Before using AccelerateWP Premium features - all end-users will be requested to upgrade to Premium plan using provided upgrade url.
+
+:::tip Note
+The list of AccelerateWP Premium features depends on current CloudLinux License, if it does not provide access to
+billable features (Image Optimization, Critical CSS) - only Object Cache will be available
+:::
+
+
+##### AccelerateWP suite
+This is a basic suite which includes [AccelerateWP base feature](https://user-docs.cloudlinux.com/wpos-plugin/#acceleratewp-feature-wordpress-optimization-plugin): 
+a WordPress optimization plugin that provides full page caching, GZIP compression and some other useful optimizations.
+
+**AccelerateWP suite limitations**
+* the website must be on an Apache or LiteSpeed web server;
+* the website must be on a server with CloudLinuxOS Shared Pro, Solo, or Admin license
+* the website must use PHP version 7.3 or higher.
+* the WordPress version must be 5.8 and higher.
+* no other WordPress Caching plugins must be installed.
+* WordPress should not be running in Multisite mode.
+
+##### AccelerateWP Premium suite
+
+Starting from ```accelerate-wp-1.9-18``` - AccelerateWP Premium suite includes both free and billable optimization features. 
+The available features depend on the CloudLinux license installed on the server.
+
+For more information on how to set up a CloudLinux license with AccelerateWP Premium billable features, see
+[Setup CloudLinux license with AccelerateWP Premium billable features](/cln/dashboard/#acceleratewp-features-management-for-regular-customers)
+
+**Free features**
+* Object Caching;
+
+**Billable features**
+* Image Optimization;
+* Critical CSS;
+
+Once a server is licensed with CloudLinux and has paid features enabled, 
+both free and billable features become available. 
+If the license does not include paid features, only free features will be accessible.
+
+[Object Caching feature](/user-docs/user-docs-shared-pro-cloudlinux/#acceleratewp-premium-object-caching-feature).
+
+The Object Caching mechanism stores database query results in additional storage for quick access. 
+This mechanism is beneficial in cases if a website needs to process multiple pages per second as 
+requests come in and may be helpful in cases when full-page caching cannot be used, e.g. on personalized pages.
+
+[Image Optimization feature](/user-docs/user-docs-shared-pro-cloudlinux/#image-optimization)
+
+[Critical CSS feature](/user-docs/user-docs-shared-pro-cloudlinux/#css-files)
+
+**Premium suite limitations**
+
+* the website must be on an Apache or a LiteSpeed web server;
+* the website must be on a server with CloudLinuxOS Shared Pro, Solo, or Admin license
+* the website must use one of the following PHP handlers:
+  * [php-fpm](https://blog.cpanel.com/how-to-use-php-fpm-with-cpanel/)
+  * [lsapi](/cloudlinuxos/cloudlinux_os_components/#apache-mod-lsapi-pro)
+* the website must use PHP version 7.2 or higher.
+* the WordPress version must be 3.7 and higher.
+* no other WordPress Caching plugins must be installed.
+* the [Snuffleupagus](https://snuffleupagus.readthedocs.io/) must be turned off.
+* WordPress should not be running in Multisite mode.
+
+### Administrator interface
+
+##### Overview
+
+:::tip Note
+Resellers' users are not allowed to use AccelerateWP features.
+:::
+
+In the _CloudLinux Manager → AccelerateWP_ tab an administrator has the opportunity to provide end-users with a suite of features, which on its turn could be activated by end-users.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminPaidPremium.webp)
+
+Once the feature suite is enabled by the administrator, end-users will see an AccelerateWP tab in their control panel interface and be able to activate the optimization feature.
+
+#### Suites usage statistics
+When AccelerateWP is enabled, the AccelerateWP usage statistics are shown.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPStats.webp)
+
+It includes:
+* `Active Users` block with the total number of users and number of users who have activated the optimization feature/total users
+* `Wordpress sites on server` block with a total number of WordPress sites and WordPress sites optimized by the feature
+* statistics table
+
+Each row in the statistics table represents a particular user.
+
+The first column `#of Wordpress sites` shows the total number of user's WordPress sites.
+
+The second column `AccelerateWP` shows a number of user's WordPress sites, optimized by the feature.
+
+To enable premium features, click on the "Activate premium features" link and select the options you want. To integrate functions with billing, you must specify the base URL for the purchase of the function by end users.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPAdminPaidPremium.webp)
+
+In case both AccelerateWP and AccelerateWP Premium feature suites are enabled, 
+the statistics are extended with AccelerateWP Premium metrics.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPStatsPremium.webp)
+
+Please notice the `AccelerateWP Premium` rows in the `Active Users` and the `Wordpress sites on server` 
+blocks, and also the `AccelerateWP Premium` column in the statistics table.
+
+:::tip Note
+Newly created users will be accounted for 10 min after adding. 
+If you want to get updated statistics immediately, use the "Rescan users websites" button.
+:::
+
+#### Filters
+You may use the following filters to browse AccelerateWP statistics slices.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPFilters.webp)
+
+* `Users with WordPress sites only` filter will show statistics for users who already have WordPress sites; users without WordPress installations will be hidden
+* `Users with AccelerateWP only` filter will show statistics for users who utilize the AccelerateWP optimization feature; users who did not activate AccelerateWP feature will be hidden
+* `Users with AccelerateWP Premium only` filter will show statistics for users who utilize the AccelerateWP Premium (Object Caching) feature; users who did not activate the AccelerateWP Premium feature will be hidden
+* `Users with CDN Free only` filter will show statistics for users who utilize the AccelerateWP CDN feature
+* `Users with CDN Pro only` filter will show statistics for users who utilize the AccelerateWP CDN Pro feature
+
+
+### AccelerateWP CLI
+
+CLI commands for managing AccelerateWP are provided by those utilities:
+
+- `cloudlinux-awp-admin` - for administrator-side actions;
+- `cloudlinux-awp-user` - for user-side actions;
+
+[Smart Advice CLI for managing optimization advices](/cloudlinuxos/shared-pro/x-ray/#smart-advice-cli-commands)
+
+Starting from `accelerate-wp-1.6-6` AccelerateWP CLI utilities provide CLI versioning which is defined via `--api-version` option. 
+
+:::tip Note
+It is highly recommended to specify CLI version explicitly via --api-version, otherwise CLI will rely on default settings, 
+which cannot guarantee backward compatability.
+:::
+
+<!----><a name="quick-start-guide-cli"></a>
+#### Frequently used commands
+
+##### Find all enabled premium users
+*Note: this can also be viewed from the **AccelerateWP** tab in CloudLinux Manager*
+```
+cloudlinux-awp-admin get-stat
+```
+
+##### Enable AccelerateWP Free
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp --allowed-for-all
+```
+
+:::tip
+Free CDN can only be installed based on SmartAdvice. The 1GB free CDN available only if Advice was given to the site. You can try to trace site via X-Ray, then the Advice might appear but it depends on the current rules for CDN Advice. Thus, the SmartAdvice can decide whenther CDN is not needed for some sites, therefore advice will not appear there. If there is no Advice, it means that that site does not need that type of optimization.
+
+SmartAdvice may determine that certain websites don't require CDN resulting in the absence of Advice for you. If no Advice is provided, it indicates that the particular site doesn't necessitate that specific optimization.
+:::
+
+##### Enable AccelerateWP Premium
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --visible-for-all
+```
+
+##### Enable AccelerateWP Premium for free for all users:
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --allowed-for-all
+```
+
+##### Set Premium Upgrade URL
+```
+cloudlinux-awp-admin set-options --upgrade-url "https://plan.upgrade/splash" 
+```
+
+##### Enable AccelerateWP CDN free
+
+**All users**
+```
+cloudlinux-awp-admin set-suite --suites accelerate_wp_cdn --allowed-for-all
+```
+
+**Single user or group of users**
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_cdn --allowed --users=<username1>,<username2>
+```
+
+##### Enable AccelerateWP CDN 50GB (example)
+*Important note: each of these users will become billable to you as soon as you grant this entitlement*
+
+**All users**
+```
+cloudlinux-awp-admin set-suite --suites accelerate_wp_cdn_pro --attrs='{"traffic_limit": "50 GB"}' --allowed-for-all
+```
+
+**Single user or group of users**
+```
+cloudlinux-awp-admin set-suite --suites accelerate_wp_cdn_pro --attrs='{"traffic_limit": "50 GB"}' --allowed --users <username>,<username2>
+```
+
+##### Revoke access to CDN
+
+**All users**
+```
+cloudlinux-awp-admin set-suite --suites accelerate_wp_cdn_pro --disallowed-for-all
+```
+
+**Single user or group of users**
+```
+cloudlinux-awp-admin set-suite --suites accelerate_wp_cdn_pro --disallowed --users <username>,<username2>
+```
+
+##### Set Upgrade URL for CDN
+```
+cloudlinux-awp-admin set-options --suite accelerate_wp_cdn_pro --upgrade-url="https://plan.upgrade/cdn-boost"
+```
+
+##### Grant users access to ALL premium features
+*Note - this is the most common and fundamentally the same as the users upgrading using the WHMCS plugin - you will only be billed for the users that activate at least one premium feature*
+
+**All users**
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --allowed-for-all
+```
+
+**Single user or group of users**
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --allowed --users=<username1>,<username2>
+```
+
+##### Completely disallow access to premium features (including premium SmartAdvice)
+**All users**
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --disallowed-for-all
+```
+
+**Single user or group of users**
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --disallowed --users=<username1>,<username2>
+```
+
+##### Enable all features
+Use the cloudlinux-awp-admin enable-feature CLI command to ensure the best performance for every WordPress user. This CLI command scans the server for all WordPress sites, then activates the AccelerateWP feature suite. Activation is skipped for any sites with existing page caching or feature incompatibilities.
+*Note: Please make sure your AccelerateWP version is >= 1.2-2 before proceeding.*
+Scan the server in background mode and activate AccelerateWP on those WordPress sites where it is possible:
+```
+cloudlinux-awp-admin enable-feature --all
+```
+
+##### Check feature activation status
+```
+cloudlinux-awp-admin enable-feature --status
+```
+
+
+#### cloudlinux-awp-admin
+
+```
+cloudlinux-awp-admin --api-version <api_version> <command>
+```
+
+supported commands for `--api-version 1`:
+
+- `set-suite` - manage optimization suites;
+- `set-options` - manage server wide settings;
+- `get-report` - get per user information about optimization suites statuses (allowed/disallowed) and usage of specific suites;
+- `generate-report` - generate information, that is obtained via `get-report` command;
+- `get-stat` - get total information about suites statuses (allowed/disallowed/visible) and usage of optimization features;
+- `enable-feature` - activate free AccelerateWP feature to all users on the server;
+- `object-cache-banner` - manage Redis Object Cache Pro banner visibility in WordPress (hide or show banner for specific WordPress site);
+
+All CLI responses contain `result` field which says was call successful or not.
+- `{"result": "success"}`  - in case of successful call
+- `{"result": "ERROR_STRING"}` - in case of unsuccessful call, `result` contains string with error details. 
+Response also could have `context` field to provide additional error info, e.g: username, optimization suite or feature, etc.
+Example:
+```
+{
+    "context": {
+        "suite": "accelerate_wp_cdn"
+    },
+    "result": "Suite %(suite)s is not visible for users and so cannot be allowed in billing. Activate the suite on server first. Contact your hoster if you don`t have an access to the server.",
+    "timestamp": 1691136964.3719108
+}
+```
+
+##### Manage AccelerateWP optimization suites
+
+`--api-version 1`
+
+supported suites:
+- `accelerate_wp` - AccelerateWP Free features;
+- `accelerate_wp_premium` - AccelerateWP Premium features;
+- `accelerate_wp_cdn` - AccelerateWP CDN 1 GB;
+- `accelerate_wp_cdn_pro` - AccelerateWP CDN Pro (50GB by default);
+
+supported actions for specific user(s):
+- `--allowed` - make features of optimization suite ALLOWED to be activated by end-user;
+- `--disallowed` - make features optimization suite DISALLOWED to be activated by end-user;
+
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suites=<suites_comma_separated> --users=<usernames_comma_separated> (--allowed | --disallowed) [--attrs=<json_string>]
+```
+
+Examples of CLI commands to disable undesired optimization suite(s) for a single user.
+
+To disable the AccelerateWP suite:
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suites=accelerate_wp --disallowed --users=<username>
+```
+
+To disable the AccelerateWP Premium suite:
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suites=accelerate_wp_premium --disallowed --users=<username>
+```
+
+To disable the AccelerateWP CDN suite:
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suite=accelerate_wp_cdn --disallowed --users=<username>
+```
+
+To disable the AccelerateWP CDN Pro suite:
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suite=accelerate_wp_cdn_pro --disallowed --users=<username>
+```
+
+To enable CDN Pro for a particular user:
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suites accelerate_wp_cdn_pro --allowed --users=<username>
+```
+
+To disable all suites:
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suites=accelerate_wp,accelerate_wp_premium,accelerate_wp_cdn,accelerate_wp_cdn_pro --disallowed --users=<username>
+```
+
+To define CDN traffic limit for AccelerateWP CDN Pro optimization suite (50GB limit is by default):
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suites accelerate_wp_cdn_pro --allowed --users username1 --attrs='{"traffic_limit": "100 GB"}'
+```
+
+supported traffic limits:
+- `50 GB` - default traffic limit, if no `--attrs` passed on `set-suite`;
+- `100 GB`
+- `250 GB`
+- `500 GB`
+- `1 TB`
+- `2.5 TB`
+- `5 TB`
+- `10 TB`
+
+For *_all_* users on the server:
+
+Supported actions for all users:
+- `--allowed-for-all` - make features of optimization suite ALLOWED to be activated for all end-users (and newly created);
+- `--disallowed-for-all` - make features optimization suite DISALLOWED to be activated for all end-users (and newly created);
+- `--visible-for-all` - make features of optimization suite VISIBLE for all end-users (and newly created);
+
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suites=<suites_comma_separated> (--allowed-for-all | --disallowed-for-all | --visible-for-all)
+```
+
+Example of command to enable CDN Pro for all users:
+```
+cloudlinux-awp-admin --api-version 1 set-suite --suites accelerate_wp_cdn_pro --users all --allowed-for-all
+```
+
+##### Manage AccelerateWP server wide settings
+
+`cloudlinux-awp-admin --api-version <api_version> set-options`
+
+`--api-version 1`
+
+```
+cloudlinux-awp-admin --api-version 1 set-options (--icon-visible=<on/off>) | (--object-cache-banner-visible=<on/off>) | (--suite="feature_suite" --upgrade-url="link_to_url") | (--features="optimization_features_comma_separated" --feature-visible=<on/off>)
+```
+
+To make AccelerateWP icon visible or invisible in end-user UI:
+
+```
+cloudlinux-awp-admin --api-version 1 set-options --icon-visible=on
+```
+
+```
+cloudlinux-awp-admin --api-version 1 set-options --icon-visible=off
+```
+
+To change the display of promotional materials for all new installations of the Redis Object Cache module by default, 
+you need to set the visibility setting
+
+```
+cloudlinux-awp-admin --api-version 1 set-options --object-cache-banner-visible=on
+```
+
+```
+cloudlinux-awp-admin --api-version 1 set-options --object-cache-banner-visible=off
+```
+
+To make specific AccelerateWP feature visible or invisible to all users:
+
+:::tip Note
+Added in accelerate-wp >= 1.6-6
+:::
+
+supported features:
+- `critical_css`
+- `image_optimization`
+- `object_cache`
+- `cdn`
+
+```
+cloudlinux-awp-admin --api-version 1 set-options --feature-visible=on --features="<features_comma_separated>"
+```
+
+```
+cloudlinux-awp-admin --api-version 1 set-options --feature-visible=off --features="<features_comma_separated>"
+```
+
+
+To set subscription upgrade url for specific AccelerateWP optimization suite:
+
+for AccelerateWP Premium
+```
+cloudlinux-awp-admin --api-version 1 set-options --suite accelerate_wp_premium --upgrade-url="http://mybilling1.com"
+```
+
+for AccelerateWP CDN Pro
+```
+cloudlinux-awp-admin --api-version 1 set-options --suite accelerate_wp_cdn_pro --upgrade-url="http://mybilling2.com"
+```
+
+##### Generate AccelerateWP suites report for all users on server
+
+`--api-version 1`
+
+```
+ cloudlinux-awp-admin --api-version <api_version> generate-report (--all | --status)
+```
+
+Start report generation:
+
+```
+ cloudlinux-awp-admin --api-version 1 generate-report --all
+```
+
+It starts data collection in background, so check status of generation by separate command:
+
+```
+ cloudlinux-awp-admin --api-version 1 generate-report --status
+```
+
+Rely on `scan_status` key to ensure scanning is over, for example if it is still in progress:
+```
+ {
+    "last_scan_time": 1690198116,
+    "result": "success",
+    "scan_status": "in_progress",
+    "timestamp": 1690199148.6370175,
+    "total_users_scanned": 0,
+    "total_users_to_scan": 1
+}
+```
+
+##### AccelerateWP suites statistics
+
+`--api-version 1`
+
+```
+cloudlinux-awp-admin --api-version <api_version> get-report (--all | --users=<usernames_comma_separated>)
+```
+
+Get suites statistics for all users:
+```
+cloudlinux-awp-admin --api-version 1 get-report --all
+```
+
+or for a particular user:
+```
+cloudlinux-awp-admin --api-version 1 get-report --users=<username>
+```
+
+This CLI command returns the following information:
+* total number of users in the report -- `total_users_count`
+* total number of websites in the report -- `total_wordpress_count`
+* total number of users with particular suite enabled -- `total_users_count_active`
+* total number of websites with particular suite enabled -- `total_sites_count_active`
+* number of websites with a particular suite enabled per each user in the report -- `*_sites_count` in the `users` list
+* suites visibility status per each user in the report -- `suites` in the `users` list
+  * possible values for visibility status are: `visible`, `allowed`, `disabled`
+
+The example output for a single user is given below:
+
+```
+{
+    "last_scan_time": 1681198804,
+    "result": "success",
+    "timestamp": 1681203383.3503218,
+    "total_sites_count_active": {
+        "accelerate_wp": 1,
+        "accelerate_wp_premium": 0
+    },
+    "total_users_count": 1,
+    "total_users_count_active": {
+        "accelerate_wp": 1,
+        "accelerate_wp_premium": 0
+    },
+    "total_wordpress_count": 2,
+    "users": [
+        {
+            "accelerate_wp_active_sites_count": 1,
+            "accelerate_wp_premium_sites_count": 0,
+            "suites": {
+                "accelerate_wp": {
+                    "source": "manual",
+                    "status": "allowed"
+                },
+                "accelerate_wp_premium": {
+                    "source": "default",
+                    "status": "visible"
+                }
+            },
+            "username": "user16",
+            "wp_sites_count": 2
+        }
+    ]
+}
+```
+
+##### AccelerateWP features statistics
+
+Get overall AccelerateWP features usage statistics for a server with:
+
+`--api-version 1`
+
+```
+cloudlinux-awp-admin --api-version 1 get-stat
+```
+
+This CLI command returns the following information:
+* number of `allowed_users` in `total` and per feature
+* number of `visible_users` in `total` and per feature
+* number of `allowed_suites` per suite
+* number of sites with enabled features in `total` and per feature -- `enabled_sites`
+* number of users with visible features in `total` and per feature -- `visible_users`
+* features which are currently allowed -- `features_allowed_by_default`
+* features which are currently visible -- `features_visible_by_default`
+
+The example output is given below:
+
+```
+{
+    "accelerate_wp_suite_enabled_premium_suite_disallowed": 0,
+    "accelerate_wp_suite_enabled_premium_suite_visible": 0,
+    "allowed_suites": {
+        "accelerate_wp": 1,
+        "accelerate_wp_cdn_free": 1,
+        "accelerate_wp_cdn_pro": 0,
+        "accelerate_wp_premium": 1
+    },
+    "allowed_users": {
+        "cdn_free": 1,
+        "cdn_pro": 0,
+        "critical_css": 1,
+        "image_optimization": 1,
+        "object_cache": 1,
+        "site_optimization": 1,
+        "total": 1
+    },
+    "enabled_sites": {
+        "cdn_free": 0,
+        "cdn_pro": 0,
+        "critical_css": 1,
+        "image_optimization": 0,
+        "object_cache": 0,
+        "site_optimization": 0,
+        "total": 1
+    },
+    "enabled_suites": {
+        "accelerate_wp": 0,
+        "accelerate_wp_cdn_free": 0,
+        "accelerate_wp_cdn_pro": 0,
+        "accelerate_wp_premium": 1
+    },
+    "enabled_users": {
+        "cdn_free": 0,
+        "cdn_pro": 0,
+        "critical_css": 1,
+        "image_optimization": 0,
+        "object_cache": 0,
+        "site_optimization": 0
+    },
+    "features_allowed_by_default": [
+        "cdn",
+        "critical_css",
+        "image_optimization",
+        "object_cache",
+        "site_optimization"
+    ],
+    "features_visible_by_default": [
+        "cdn",
+        "critical_css",
+        "image_optimization",
+        "object_cache",
+        "site_optimization"
+    ],
+    "is_accelerate_wp_flag_enabled": false,
+    "is_accelerate_wp_icon_enabled": true,
+    "result": "success",
+    "timestamp": 1690979440.5282295,
+    "upgrade_urls": {
+        "accelerate_wp_cdn_pro": null,
+        "accelerate_wp_premium": null
+    },
+    "visible_users": {
+        "cdn_free": 1,
+        "cdn_pro": 0,
+        "critical_css": 1,
+        "image_optimization": 1,
+        "object_cache": 1,
+        "site_optimization": 1,
+        "total": 1
+    }
+}
+
+```
+
+##### Activate free AccelerateWP for all WordPress sites on the server
+`--api-version 1`:
+
+```
+cloudlinux-awp-admin --api-version 1 enable-feature (--all | --status)
+```
+
+Use the that command to ensure the best performance for every end-user. CLI command
+scans a server for all WordPress sites and activates the AccelerateWP
+free feature suite. It can take up to 2 minutes for a single site. 
+CLI command skips activation for WordPress sites with page caching or feature incompatibilities.
+
+:::tip Note
+Please make sure your AccelerateWP version is >= 1.2-2 before proceeding.
+:::
+
+Scan the server in background mode and activate free AccelerateWP plugin
+on those WordPress sites where it is possible:
+```
+cloudlinux-awp-admin --api-version 1 enable-feature --all
+```
+The output will state the number of users for the scan and the
+progress state of the process.
+
+Check activation status:
+```
+cloudlinux-awp-admin --api-version 1 enable-feature --status
+```
+The output will be either:
+* Activation is still in progress,
+* Activation is done. The message will state how many users
+were initially for the scan, a number of WordPress sites with
+successfully activated suite and the total number of WordPress sites
+scanned.
+
+##### AccelerateWP disable Redis Object Cache Pro banner
+
+`--api-version 1`
+
+```
+cloudlinux-awp-admin --api-version 1 object-cache-banner (--enable | --disable) (--all | --users=<usernames_comma_separated>)
+```
+
+Depending on the server settings, the `WP_REDIS_DISABLE_BANNERS` constant will be defined in the `wp-config.php` 
+file when the module is activated, which affects the display of promotional materials.
+
+To change the `WP_REDIS_DISABLE_BANNERS` constant for previously installed modules, you need to run a process to update the constant:
+
+Hide on websites where the module is installed
+- for all users:  
+  ```cloudlinux-awp-admin --api-version 1 object-cache-banner --all --disable```
+- for specific users (users separated by commas):  
+  ```cloudlinux-awp-admin --api-version 1 object-cache-banner --users foo,bar --disable```
+- for current user (run under the user):  
+  ```cloudlinux-awp-user --api-version 1 object-cache-banner --all --disable```
+- for a specific website (run under the user):  
+  ```cloudlinux-awp-user --api-version 1 object-cache-banner --wp-path "" --domain "demo.com" --disable```
+
+Display on websites where the module is installed
+- for all users:  
+  ```cloudlinux-awp-admin --api-version 1 object-cache-banner --all --enable```
+- for specific users (users separated by commas):  
+  ```cloudlinux-awp-admin --api-version 1 object-cache-banner --users foo,bar --enable```
+- for current user (run under the user):  
+  ```cloudlinux-awp-user --api-version 1 object-cache-banner --all --enable```
+- for a specific website (run under the user):  
+  ```cloudlinux-awp-user --api-version 1 object-cache-banner --wp-path "" --domain "demo.com" --enable```
+
+If the banner was previously disabled/enabled for the user/website, 
+then for its subsequent activation of the ObjectCache module, the general settings at the server level will be applied. 
+This means that for each user/website we do not store an individual banner disable/enable setting.
+
+
+##### SmartAdvice email reminders
+
+This section outlines the process of managing email notifications from the SmartAdvice plugins. It applies to all users and it is a global (server-wide) setting.  
+
+_Sending reminder notifications for not activated advices once a month:_  
+```
+cloudlinux-awp-admin --api-version 1 set-options --smart-advice-reminders=<on/off>
+```
+  
+
+#### cloudlinux-awp-user
+
+```
+cloudlinux-awp-user --api-version=<api_version> <command>
+```
+
+supported commands:
+- `enable` - activate specific optimization feature on WordPress site;
+- `disable` - deactivate specific optimization feature on WordPress site;
+- `get` - get information of optimization features on all user`s WordPress sites;
+
+Use the following CLI command **_on behalf of a user_**
+
+All CLI responses contain `result` field which says was call successful or not.
+- `{"result": "success"}`  - in case of successful call
+- `{"result": "ERROR_STRING"}` - in case of unsuccessful call, `result` contains string with error details
+
+##### Enable optimization feature
+
+`--api-version 1`
+
+supported features:
+
+- `accelerate_wp`
+- `object_cache`
+- `critical_css`
+- `image_optimization`
+
+```
+cloudlinux-awp-user --api-version 1 enable --feature <feature> --wp-path <path_to_wordpress> --domain <user_domain> [--ignore-errors]
+```
+
+Use `--ignore-errors` to ignore WordPress site web-checks after enabling optimization features.
+
+example of enabling Object Caching feature
+```
+cloudlinux-awp-user --api-version 1 enable --feature object_cache --wp-path "userwordpresssite" --domain username1.com
+```
+
+Please, make sure `--wp-path` is same as in `"path"` key of `cloudlinux-awp-user get` json output.
+
+Successful response example of enabling feature:
+rely on `feature.enabled` field to identify that feature was enabled
+```
+{
+    "feature": {
+        "enabled": true
+    },
+    "result": "success",
+    "timestamp": 1690975273.8860605
+}
+```
+
+##### Disable optimization feature
+
+`--api-version 1`
+
+supported features:
+
+- `accelerate_wp`
+- `object_cache`
+- `critical_css`
+- `image_optimization`
+
+```
+cloudlinux-awp-user --api-version 1 disable --feature <feature> --wp-path <path_to_wordpress> --domain <user_domain>
+```
+
+example of disabling Object Caching feature
+```
+cloudlinux-awp-user --api-version 1 disable --feature object_cache --wp-path "userwordpresssite" --domain username1.com
+```
+
+Please, make sure `--wp-path` is same as in `"path"` key of `cloudlinux-awp-user get` json output.
+
+
+Successful response example of enabling feature:
+rely on `feature.enabled` field to identify that feature was enabled
+```
+{
+    "feature": {
+        "enabled": true,
+        "visible": true
+    },
+    "result": "success",
+    "timestamp": 1690975273.8860605
+}
+```
+
+##### AccelerateWP features detailed statistics
+
+`--api-version 1`
+
+```
+cloudlinux-awp-user --api-version 1 get
+```
+
+The command reports:
+* features allowed for a user -- `allowed_features`
+* all user's websites `docroots` with features information per each `wps`, which includes:
+  * status of each feature -- if the feature is `enabled`, if the feature is `visible`
+  * issues detected (if any) for each feature
+* subscription status (for premium features) -- `subscription`
+* features visible for a user -- `visible_features`
+
+The example output is given below:
+
+```
+{
+    "allowed_features": {
+        "accelerate_wp": [],
+        "accelerate_wp_premium": []
+    },
+    "docroots": [
+        {
+            "domains": [
+                "user0.com"
+            ],
+            "php_handler": "fastcgi",
+            "php_version": "plesk-php73-fastcgi",
+            "wps": [
+                {
+                    "features": {
+                        "accelerate_wp": {
+                            "enabled": false,
+                            "issues": [
+                                {
+                                    "context": {
+                                        "plugins": "WP Rocket"
+                                    },
+                                    "description": "Found conflicting plugins: %(plugins)s.",
+                                    "fix_tip": "Deactivate and uninstall the conflicting plugin using the WordPress administration interface.",
+                                    "header": "Conflicting plugins are enabled",
+                                    "type": "incompatibility"
+                                }
+                            ],
+                            "visible": true
+                        },
+                        "object_cache": {
+                            "enabled": false,
+                            "issues": [
+                                {
+                                    "context": {
+                                        "blog_url": "https://blog.cloudlinux.com/",
+                                        "supported_handlers": "php-fpm, lsapi"
+                                    },
+                                    "description": "Website uses unsupported PHP handler. Currently supported handler(s): %(supported_handlers)s.",
+                                    "fix_tip": "Please, set or ask your system administrator to set one of the supported PHP handlers for the domain: %(supported_handlers)s. Or keep watching our blog: %(blog_url)s for supported handlers list updates.",
+                                    "header": "Unsupported PHP handler",
+                                    "type": "incompatibility"
+                                }
+                            ],
+                            "visible": true
+                        }
+                    },
+                    "path": "wordpress",
+                    "version": "6.2"
+                }
+            ]
+        },
+        {
+            "domains": [
+                "sub.user0.com"
+            ],
+            "php_handler": "fastcgi",
+            "php_version": "plesk-php73-fastcgi",
+            "wps": []
+        }
+    ],
+    "max_cache_memory": "64mb",
+    "result": "success",
+    "subscription": {
+        "object_cache": "no"
+    },
+    "timestamp": 1681200081.765476,
+    "upgrade_url": null,
+    "used_memory": null,
+    "visible_features": {
+        "accelerate_wp": [
+            "accelerate_wp"
+        ],
+        "accelerate_wp_premium": [
+            "object_cache"
+        ]
+    }
+}
+```
+
+### Configure redis extension for alt-php
+
+Object cache optimization feature requires several php extensions to be enabled, so there is a script 
+`/usr/share/cloudlinux/wpos/enable_redis_for_alt_php.py` which does configuration of
+required modules: `redis`, `igbinary`, `json`.
+
+By default, it modifies global php.ini and enables required extensions there.
+
+Starting from `accelerate-wp >= 1.6-7` - to prevent this script of modifying 
+global php.ini - create marker file: `/var/clwpos/admin/do_not_modify_global_php.flag`.
+In that case, additional custom php ini with required php extension will be created and global php.ini remains unmodified.
+
+### Billing Integration (upsell automation for premium features)
+The premium features of AccelerateWP are intended to generate revenue for CloudLinux hosting customers by adding high-end performance value to WordPress that meets or exceeds the value of premium WordPress Hosting/Managed WordPress market leaders. AccelerateWP premium features are suggested to hosting end-users (and WordPress administrators) when substantial data supports a significant performance boost will be achived upon activation. 
+
+#### Setting the upgrade URL
+When a premium feature is suggested to the user/admin through our SmartAdvice utility, they will be prompted to upgrade. The upgrade URL is where the user will be sent when they click "upgrade" and this is customizable per server (or fleet). There are 2 common upgrade packaging models that will dictate how this URL is set and you will need to make this decision and configure the upgrade URL before offering AccelerateWP premium. The 2 packaging models are:
+1. Include AccelerateWP Premium features in your highest tier hosting plans
+2. Offer as an add-on subscription to existing hosting plans
+
+Once you have made this decision, you will need to integrate your billing platform.
+
+#### WHMCS billing
+
+If you use WHMCS, AccelerateWP Premium billing integration is quite simple. CloudLinux developed its own WHMCS plugin which provides this out of the box. 
+View our [documentation](/cln/whmcs_advantage/) to learn how to install and use the plugin.
+
+#### Other billing integration
+
+As AccelerateWP Premium is a feature that works on a subscription basis, we made it possible for hosters to integrate their existing billing systems with our plugin and sell the 
+feature for their users.
+
+When AccelerateWP Premium is enabled in the admin interface, users get a proposal to upgrade their subscription.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPUpgradeNoLink.webp)
+
+When a user upgrades the subscription to the plan with AccelerateWP support, billing must execute the following command on the server:
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --allowed --source=BILLING_OVERRIDE --users=<username>
+```
+
+This command makes two things:
+- allow the user to install the plugin, bypassing the upgrade window;
+- reports premium as being used to CLN, starting the billing cycle for the hoster.
+
+
+When the user terminates or downgrades the plan, the following command must be executed by the billing system:
+```
+cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --default --source=BILLING_OVERRIDE --users=<username>
+```
+
+### Setup upgrade URL for AccelerateWP Premium
+
+The upgrade window can be customized with a link to the plan upgrade page, which can be set using the CLI command:
+
+```
+cloudlinux-awp-admin set-options --upgrade-url https://plan.upgrade/splash
+```
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPUpgradeLink.webp)
+
+AccelerateWP automatically appends GET parameters when the link is displayed.
+
+```
+https://plan.upgrade/splash/?m=acceleratewp&action=provisioning&username=democom&domain=demo.com&server_ip=10.51.0.10
+```
+
+| Parameter | Value        | Description                                              |
+|-----------|--------------|----------------------------------------------------------|
+| m         | acceleratewp | Constant.                                                |
+| action    | provisioning | Constant.                                                |
+| username  | democom      | Customer's account name.                                 |
+| domain    | demo.com     | Customer's account primary domain.                       |
+| server_ip | 10.51.0.10   | Primary IP of the server where AccelerateWP is installed |
+
+Parameters can be used to determine the billing account of the user in order to display the proper page. 
+WHMCS plugin already has an automatic redirect to the upgrade page, there is only needed to set upgrade-url 
+to the root of your WHMCS instance.
+
+```
+cloudlinux-awp-admin set-options --upgrade-url https://whmcs.mydomain.zone/
+```
+
+Upgrade URL is opened in a modal browser window and will be automatically closed
+when AccelerateWP receives a callback about the successful upgrade.
+
+The callback is already implemented in the WHMCS plugin, but if you are using some other billing,
+you should add the following code on the page which appears when a user successfully upgrades the subscription.
+
+    <script>
+    if(window.opener && !window.opener.closed) {
+        window.opener.postMessage('PAYMENT_SUCCESS', '*');
+    }
+    </script>
+
+
+In order to remove the link, just set the upgrade URL to the empty one.
+
+```
+cloudlinux-awp-admin set-options --upgrade-url ''
+```
+
+### Disable AccelerateWP Premium
+
+If you would like to stop using AccelerateWP Premium, 
+click on the `manage` link and remove the `Premium Features` checkbox.
+AccelerateWP will be still available for your users.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPDisablePremiumOnly.webp)
+
+### Disable AccelerateWP
+
+If you would like to stop using AccelerateWP completely, toggle the `AccelerateWP` back.
+Both AccelerateWP and AccelerateWP Premium will be turned off.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPDisable.webp)
+
+This operation will:
+* disable the AccelerateWP tab in the users' control panel interface
+* disable all AccelerateWP optimization suites
+* deactivate all optimization features for all users
+
+This operation will NOT:
+* cancel the subscription made by the user in WHMCS or other billing. The user's subscription stays 
+  alive and the user will still be charged in the billing system unless the hoster manually makes a refund
+
+
+### Logs
+The main AccelerateWP log is located at
+* `/var/log/clwpos/main.log`
+
+
+In case AccelerateWP Premium is active, the auxiliary monitoring daemon `clwpos_monitoring` is also activated. Its log is located at
+* `/var/log/clwpos/daemon.log`
+
+
+### FAQ
+
+#### With which panel can I use AccelerateWP?
+
+AccelerateWP is compatible with cPanel, Plesk, and DirectAdmin, and it also [supports custom control panel integration](https://blog.cloudlinux.com/acceleratewp-is-now-supporting-custom-control-panel-integration).
+
+
+#### Is it possible to use AccelerateWP on a non-control panel server?
+
+Yes, if a custom integration mechanism is used: [custom control panel integration](https://blog.cloudlinux.com/acceleratewp-is-now-supporting-custom-control-panel-integration).
+
+#### Do you plan to enable support of the Nginx server?
+
+This is a part of our very long-term plans, thus not expected in the nearest future.
+
+#### How will it help my customers?
+
+AccelerateWP is a complex solution to help your customers increase their WordPress site performance. AccelerateWP brings number of optimization features, like object caching, css and js preprocessing and website preloading.
+
+#### How could I monitor Redis instances while using the AccelerateWP Premium suite?
+
+The Redis process is started for a user after activating the AccelerateWP Premium Object Caching feature for at least one WordPress site.
+It is killed after AccelerateWP Premium Object Caching has been deactivated for all user's websites.
+
+Look through the processes list to check the Redis status for a particular user:
+```
+ ps aux | grep redis  
+
+ awpuser  2662517  0.0  0.5 101096  8512 ?        Sl   15:33   0:00 /opt/alt/redis/bin/redis-server unixsocket:/home/awpuser/.clwpos/redis.sock
+```
+In case if AccelerateWP Premium is active, the auxiliary monitoring daemon `clwpos_monitoring` is also activated. It checks Redis instances each 5 minutes, starts new instances, restart failed ones and kills the “garbage” instances if needed.
+Check daemon status using `service clwpos_monitoring status` and its main log: `/var/log/clwpos/daemon.log`.
+
+#### My users are complaining that their features are not installed automatically after a subscription upgrade
+This can be caused by several reasons. Either your customer's website was detected to be malfunctioning
+or there was an issue with the environment when the feature was installed 
+(e.g. bad internet connectivity with the WordPress market).
+
+First, try to enable the feature manually using the AccelerateWP interface. 
+Most likely you will find a human-readable error message there.
+
+Next, you can try to dive into `/var/log/clwpos/daemon.log` and find the reason why the `enable` command failed.
+Here is an example of a successful feature installation for reference:
+
+
+    2023-02-14 11:01:14,696: (clwpos.daemon_base) [INFO] Running cloudlinux-awp-user enable --feature object_cache --domain wpujj.com --wp-path
+    2023-02-14 11:01:15,081: (clwpos.daemon_base) [INFO] Command succeded with output:
+    `CompletedProcess(args=['/bin/cagefs_enter.proxied', 'cloudlinux-awp-user', 'enable', '--feature', 'object_cache', '--domain', 'wpujj.com', '--wp-path', ''], returncode=0, 
+    stdout='{\n "context": {\n "domain": "wpujj.com",\n "feature": "object_cache"\n  },\n  "result": "success",\n "timestamp": 1676372475.044419,\n \n}\n', stderr='')`
+    2023-02-14 11:01:15,086: (clwpos.daemon_base) [INFO] background process finished: pid=415368
+
+Also, some useful notes may be present in the user's log located at `/home/<username>/.clwpos/main.log`.
+
+If the issue persists, or you cannot resolve it yourself, 
+contact CloudLinux support and attach `/var/log/clwpos/daemon.log` and `/home/<username>/.clwpos/main.log` 
+for further investigation.
+
+
+### Troubleshooting
+
+#### End-users of AccelerateWP Premium feature encounter Redis extension is not installed for selected php version
+In order to make use of the AccelerateWP Premium Object Caching feature, the loaded Redis extension is required for the end-user's website.
+End-users will not be able to activate the Object Caching feature until the Redis extension configuration is incomplete.
+
+Corresponding incompatibility warning will be displayed in the control panel's User interface:
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPNoRedis.webp)
+
+The Redis extensions are configured for all installed and supported PHP versions automatically:
+* right after the AccelerateWP Premium suite is enabled
+* by cron once a day
+
+or you can trigger the utility manually:
+```
+/usr/sbin/enable_redis_for_panel_php
+```
+
+All errors will be displayed in standard output and logged into `/var/log/clwpos/main.log`.
+
+
+**Ensuring the EA-PHP Redis extension is configured correctly**
+
+1. Check Redis extension package is installed by running the following command
+
+    ```
+    rpm -q ea-phpXY-php-redis
+    ```
+    Install the corresponding extension if it is not present:
+    ```
+    yum install ea-phpXY-php-redis
+    ```
+    Consider the example for checking out and installing the Redis extension for `ea-php74`: 
+    ```
+    rpm -q ea-php74-php-redis
+    yum install ea-php74-php-redis
+    ```
+2. Check Redis `ini` file is present by running the following command:
+    ```
+    ls /opt/cpanel/ea-phpXY/root/etc/php.d/ | grep 50-redis
+    ```
+    Consider the example for checking out Redis extension for `ea-php74`: 
+    ```
+    ls /opt/cpanel/ea-php74/root/etc/php.d/ | grep 50-redis
+    ```
+    Try reinstalling the package if `ini` file is missing.
+3. Make sure the Redis module is loaded under a specific user by running the following command:
+    ```
+    su -c "php -m | grep redis" <username>
+    ```
+
+
+**Ensuring the ALT-PHP Redis extension is configured correctly**
+
+1. Check if `redis.so` is present for a particular alt-php version:
+    ```
+    ls /opt/alt/phpXY/usr/lib64/php/modules | grep redis.so
+    ```
+    Consider the example for checking alt-php74 redis.so:
+    ```
+    ls /opt/alt/php74/usr/lib64/php/modules | grep redis.so
+    redis.so
+    ```
+2. If the Redis module is missing:
+   
+   a. Install the `alt-phpXY-pecl-ext` package manually
+   b. Run the Redis configuration script `/usr/share/cloudlinux/wpos/enable_redis_for_alt_php.py`
+      
+   All errors will be displayed in standard output and logged into `/var/log/clwpos/main.log`.
+3. If the Redis module is present for a particular php version, but the incompatibility issue persists, re-check the following:
+    
+    a. Make sure the Redis module is loaded under user:
+    ```
+    su -c "php -m | grep redis" <username>
+    ```
+    b. Check the required extensions are enabled in `php.ini`:
+    ```
+    cat /opt/alt/phpXY/etc/php.ini | grep redis.so
+    cat /opt/alt/phpXY/etc/php.ini | grep json.so
+    cat /opt/alt/phpXY/etc/php.ini | grep igbinary.so
+    ```
+    
+    c. Enable missing extensions manually.
+
+
+#### End-users of AccelerateWP encounter PHP-related issues during feature activation
+End-users may encounter PHP-related errors while activating the AccelerateWP features.
+
+![](/images/cloudlinuxos/shared-pro/accelerate-wp/AWPBrokenPHP.webp)
+
+The general examples of possible reasons are:
+* broken PHP binaries
+* missing PHP files
+* etc.
+
+To check that this issue is caused by PHP itself, call any PHP command, for example:
+```
+/opt/cpanel/ea-php80/root/usr/bin/php -i
+```
+And make sure that installed `ea-php80` packages are not broken using
+`rpm -V <package_name>`.
+
+Reinstall broken packages if found.
+
+Consider the example issue (presented at the picture above) with broken `mbstring.so` for `ea-php80`:
+```
+/opt/cpanel/ea-php80/root/usr/bin/php -i
+Segmentation fault (core dumped)  
+
+rpm -V ea-php80 
+
+rpm -V ea-php80-php-mbstring
+S.5....T.    /opt/cpanel/ea-php80/root/usr/lib64/php/modules/mbstring.so
+......G..  a /usr/lib/.build-id/9c/38ed78a6d401ff6dce059ccea51c95870d98c5  
+
+yum reinstall ea-php80-php-mbstring
+```
+
+## Centralized Monitoring
+
+### Description
+
+<span class="notranslate">Centralized Monitoring</span> is a tool that allows hosting administrators to monitor load for all their servers and users.
+
+<span class="notranslate">Centralized Monitoring</span> allows you to:
+
+* View system metrics for all clients’ end servers
+* View the LVE statistics per user for all clients’ end servers
+* Enable AccelerateWP Free on all compatible servers
+
+### Installation
+
+:::tip Note
+Make sure that `cm.cloudlinux.com` is available on your end server.
+:::
+
+1. Make sure you have a CloudLinux OS Shared Pro subscription.
+2. Make sure you have installed the latest **lve-utils** package. You can install or update it with the following commands:
+    * installation
+    ```
+    yum install lve-utils
+    ```
+    * update
+    ```
+    yum update lve-utils
+    ```
+3. Log in to the [https://cm.cloudlinux.com/](https://cm.cloudlinux.com/) using CLN credentials (if you are already logged in via CLN, authorization via CM is not necessary, it uses SSO).
+4. Activate statistics collection on all your servers via the [Centralized Monitoring UI](https://cm.cloudlinux.com) or via the [CLN UI](https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring). Optionally, activate the [AccelerateWP Free](/cloudlinuxos/shared-pro/#acceleratewp-suite)* for all of your compatible servers.
+    ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMInstallationProd.webp) Additionally, it is possible to activate the [AccelerateWP Premium](/cloudlinuxos/shared-pro/#acceleratewp-premium-suite)* for all compatible servers.
+    ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMInstallationPremium.webp)
+5. Within couple minutes after the activation, statistics collection and sending to the central server, [AccelerateWP Free](/cloudlinuxos/shared-pro/#acceleratewp-suite)* and [AccelerateWP Premium](/cloudlinuxos/shared-pro/#acceleratewp-premium-suite) * will be set up automatically: all required packages and components will be installed. For new, just registered servers, actions can take up to 5 hours.
+6. Make sure you have activated statistics collection (see paragraph 4) otherwise you will not be able to set up your servers. For instant set up of a registered server after statistics collection was enabled, run the following commands for all servers:
+    ```
+    rhn_check	
+    /usr/share/cloudlinux/cl_plus/manage_clplus enable
+    ```
+    **Note**: If the `rhn_check` command is not found, run the following command:
+    ```
+    yum install/update rhn-check rhn-setup
+    ```
+   AccelerateWP Premium activation support was added in ```lve-utils-6.5.11-1```.
+7. After 5 hours (or after the manual setup), check that statistics for all registered servers is collected via [https://cm.cloudlinux.com/#/servers](https://cm.cloudlinux.com/#/servers). And check that user statistics on the servers is collected via [https://cm.cloudlinux.com/#/users](https://cm.cloudlinux.com/#/users).
+    :::tip Note
+    User statistics will be available only for users that were loaded starting from connecting the server to the Centralized Monitoring.
+    :::
+
+
+\* AccelerateWP Free activation also automatically installs and configures 
+[Autotracing](/cloudlinuxos/command-line_tools/#x-ray-autotracing) on server.
+
+
+### Centralized Monitoring: mode without session expired
+
+Users can monitor server’s or user’s load for a long time using the mode without session expired.
+
+To turn on the mode without session expired, follow the next steps:
+
+1. Log in to the [cln.cloudlinux.com](https://cln.cloudlinux.com/console/) via your account
+2. Open the [cm.cloudlinux.com](https://cm.cloudlinux.com/#/servers) in a new browser tab/window (please, use the same browser as in step 1)
+3. Use the toggle to turn on/off 10 min auto logout
+
+    ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/AutoLogout.webp)
+
+Your session in the [cln.cloudlinux.com](https://cln.cloudlinux.com/console/) will expire in 10 min. But your session in the [cm.cloudlinux.com](https://cm.cloudlinux.com/#/servers) will not expire while your browser tab remains open.
+
+
+### Centralized Monitoring user interface
+
+
+You can access <span class="notranslate">Centralized Monitoring</span> in your [CLN account](https://cln.cloudlinux.com/).
+Click <span class="notranslate">C-Monitoring</span> in the left menu.
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMCLNAccount.webp)
+
+#### Servers
+
+
+This page contains the list of all clients’ end servers. The server appears in the list after finishing [Installation](./#installation-2). By default, there is a descending sort by CPU usage.
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAllServers.webp)
+
+The following values are available for each server:
+
+* <span class="notranslate">**Load Avg 15m**</span> – average system load for the last 15 min
+* <span class="notranslate">**CPU Usage**</span> – CPU usage for the last 15 min (the number of cores can be found in the hint)
+* <span class="notranslate">**Memory Usage**</span> – free available memory, the second value is the total memory for the last 15 min
+* <span class="notranslate">**IO read/write**</span> – disk read bytes/disk written bytes for the last 15 min
+
+:::tip Note
+The values are calculated using a 15 min time period but the metric state is updated automatically every minute by default or you can choose from one of the predefined periods.
+:::
+
+* <span class="notranslate">**Idle state**</span> – there were no statistics for the server for the last minute. 
+* <span class="notranslate">**N/A state**</span> – there were no statistics for the server for the last 30 days. This can happen if a new server was added but statistics sending was not configured.
+
+There is no pagination on the <span class="notranslate">_All servers_</span> page and all columns can be sorted by absolute value.
+Use the search tool to operate with the data.
+
+#### Servers details
+
+To get the detailed statistics for the server via charts, click a desired server line in the table.
+All charts are auto-refreshed and there is an ability to select the period for metrics data to be updated for the chart.
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUPdates.webp)
+
+:::warning Note
+We store the metrics data for one month only.
+:::
+
+#### Charts for server metrics
+
+#### Visualization of the most popular server states
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMostPopularStates.webp)
+
+#### Disk space usage
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskSpaceUsage.webp)
+
+#### Open file descriptor/Context switches
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMOpenFileDescriptorContextSwitches.webp)
+
+#### System load 1m , 5m, 15m
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMSystemLoad.webp)
+
+#### CPU usage (total, system, user, iowait, steal)
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMSCPUUsag.webp)
+
+#### Network traffic usage
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMNetworkTrafficUsage.webp)
+
+#### Disk space usage
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskSpaceUsageBasics.webp)
+
+#### Memory usage (total, used, available)
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMemoryUsage.webp)
+
+#### Time spent doing I/Os
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMTimeSpentDoingIO.webp)
+
+#### Disk IOps Completed
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskIOpsCompleted.webp)
+
+#### Disk read/write data
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskReadWriteData.webp)
+
+#### Disk read/write time
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMDiskReadWriteTime.webp)
+
+#### Apache connections (number)/Number of requests per minute/Max connections
+
+
+:::warning Note
+In the current version, we collect these metrics for the cPanel end servers only. We are planning to add other panels support soon.
+:::
+
+:::warning Note
+In the current version, we collect these metrics only for Apache (NOT for LiteSpeed, Nginx, etc.). The charts will be empty for LiteSpeed, Nginx, etc..
+:::
+
+#### MySQL queries
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMySQLQueries.webp)
+
+MySQL queries collector gets number of queries executed on the server per minute. It takes data from the MySQL server variable "Questions". You may manually check variable value by executing query `SHOW GLOBAL STATUS LIKE 'Questions';`. For more information about MySQL server variables - please, see MySQL documentation.
+
+#### The most loaded server users for the last minute
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMMostLoadedUsers.webp)
+
+We calculate the user’s load by LVE statistics that we collect on the end server.
+The idle state for the user means that the LVE statistics were not collected for the last minute for some reason.
+
+In each cell there are current usage/limit values for the basic LVE limits:
+
+* CPU Usage
+* Entry Processes
+* Physical Memory Usage
+* IOPS
+* IO Usage
+* Number of Processes
+* MySQL CPU
+* MySQL IO
+
+In the hint, there is a number of faults for each limit. The values in the columns are underlined (it is red if load-to-limit ratio >=90%  and it is yellow if load-to-limit ratio >= 50%). For the current implementation, the only sort by the load-to-limit ratio is available.
+By default, there is a descending sort by the CPU usage column.
+
+When sorting by a column, the lines with the load-to-limit ratio >=90% for this column will have the red background color, and lines with the load-to-limit ratio >=50% for this column will have the yellow background color.
+
+:::tip Note
+The users with unlimited resources (∞) will be at the bottom of the table. 
+:::
+
+#### Users
+
+This page contains all users for the all server of the client and their LVE statistics for the last minute. You can select the number of users on this page and search by user’s data.
+
+The description of this page is the same as [*The most loaded server users for the last minute*](./#the-most-loaded-server-users-for-the-last-minute) of the top 5 loaded users.
+
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUsers.webp)
+
+User’s metrics data can be sorted by the load-to-limit ratio and by the absolute value.
+
+The absolute value is used to analyse the load produced by unlimited users.
+
+The value of the load-to-limit ratio is convenient to use in the analysis of how many resources the users consume and whether they need to change the limits.
+
+The values like this ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMvalue.webp) means that the resource is unlimited and 500.2 MB is the current usage of it.
+
+Metrics data of _Idle users_ is not used in the sorting, so such users always will be at the end of the list.  The sorting can be done for only one metric.
+
+#### Charts for Users metrics 
+
+:::warning Note
+We store the metrics data for one month only.
+:::
+
+On the user details page, the admin can find the charts for all LVE limits.
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMUsersCharts.webp)
+
+
+### Alert Manager
+
+Alert Manager allows you to create a server or user alert for selected metrics and email the triggered events.
+
+#### Alert Manager page
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager1.webp)
+
+The Alert Manager page contains a table with the following:
+
+* **Alert name** - a unique alert name
+* **Tracking metric** - a name of a server/user metric which will trigger the alert notification
+* **# of servers** - number of servers on which the metric will be tracked
+  * click ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager2.webp) to view a list of servers host names
+* **# of users** - number of users for which the metric will be tracked
+  * click ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager2.webp) to view a list of users names
+* **Value** - a condition for the alert rule which will be applied to the tracking metrics
+* **Email** - email to send the triggered events notifications
+* **Type** - a type of the alert rule
+* **# of triggered events** - the number of events from the time, when alert rule was created
+  * ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager3.webp) the event is still firing
+* **Time  of the last trigger** - the time of last triggered event, it is the time in your browser time zone
+* **Actions** - click ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager4.webp) to edit and ![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager5.webp) to delete the alert rule
+
+**Color Codes**
+
+* **Red** color means that the event with the condition "more than" is still firing.
+* **Green** color means that the event with the condition "less than" is still firing.
+
+#### Creating an alert
+
+To create a new alert, click the _Create alert_ button.
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager7.webp)
+
+Next, fill out the opened popup.
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager6.webp)
+
+* **Name of alert** - a unique alert name
+* **Alert type** - an admin can create a **user** or a **server** alert. [What is the difference between them?](./#difference-between-the-server-alert-and-the-user-alert)
+* **Select user/server** - admin will see such dropdown depending on a [case of alert creating](./#cases-of-alert-creating)
+* **Notify me** - the condition of the alert trigger
+* **Duration** - how much time the condition should be actual to trigger the notification
+* **Notify me on email** - the email to send notifications
+
+#### Editing an alert
+
+An admin can edit any field in the Alert except the Alert type.
+
+#### Difference between the server alert and the user alert
+
+The **server alert** is used to track the state of the  whole server, it does not track user state on the server.
+The **server alert** tracks the next list of metrics:
+
+1. Context switches
+2. System load (1m)
+3. System load (5m)
+4. System load (15m)
+5. CPU Basic (total)
+6. CPU Basic (system)
+7. CPU Basic (user)
+8. CPU Basic (iowait)
+9. CPU Basic (steal)
+10. Network Traffic Basic (`eht0_receive`)
+11. Network Traffic Basic (`eht0_transmit`)
+12. Network Traffic Basic (`ehtN_receive`)
+13. Network Traffic Basic (`ehtN_transmit`)
+14. Disk Space Used Basic (`mountpoint: <0>`)
+15. Disk Space Used Basic (`mountpoint: <1>`)
+16. Disk Space Used Basic (`mountpoint: <N>`)
+17. Memory Basic (available)
+18. Memory Basic (used)
+19. Time spent Doing I/Os
+20. Disk IOps Writes Completed
+21. Disk IOps Reads Completed
+22. Disk Read Data
+23. Disk Write Data
+24. Disk Read Time
+25. Disk Write Time
+26. Apache connections
+27. Number of requests per minute
+28. MySQL queries
+29. Hardware Temperature (`chip<0>`)
+30. Hardware Temperature (`sensor<0>`)
+31. Hardware Temperature (`chip<N>`)
+32. Hardware Temperature (`sensor<N>`)
+33. Open File Description
+
+During creating a server alert an admin should select the type of metrics as the first step. The list of servers will be collected according to the availability of these metrics on the server.
+
+For example, for now, we do not collect Apache metrics for non-cPanel servers, so you will get only cPanel servers as a list of servers for these metrics.
+
+We're planning to implement support for other panels/web servers in the next releases.
+
+:::tip Small limitation
+We collect the server list according to having their statistics in our database (this behavior will be changed in the next releases).
+:::
+
+For example, if server state is N/A or idle more than 24 hours, it will not be visible in the list for the alert.
+
+The **user alert** tracks the next list of LVE metrics:
+
+1. CPU Usage (current usage)
+2. CPU Usage (faults)
+3. Entry Processes (current usage)
+4. Entry Processes (faults)
+5. Physical Memory Usage (current usage)
+6. Physical Memory Usage (faults)
+7. IOPS (current usage)
+8. IOPS (faults)
+9. IO Usage (current usage)
+10. IO Usage (faults)
+11. Number of Processes (current usage)
+12. Number of Processes (faults)
+13. MySQL CPU (current usage)
+14. MySQL CPU (faults)
+15. MySQL IO (current usage)
+
+:::tip Small limitation
+We collect the server list according to having their statistics in our database (this behavior will be changed in the next releases).
+:::
+
+For example, if the user state is N/A or idle more than 24 hours, it will not be visible in the list for the alert.
+
+#### Cases of alert creating
+
+* Creating a server alert for the selected metrics for one server
+* Creating a server alert for the selected metrics for all servers (the default value)
+  
+In this two cases, you will not see the dropdown for selecting users because the metrics will track the server state. 
+
+* Creating a user alert for one user, so admin can select a server and a user.
+* Creating a user alert for all users on several servers/all servers (in this case admin can't select users - all users will be selected automatically)
+
+#### What is the Firing state of the alert?
+
+This is the state of an alert that has been active for longer than the configured threshold duration.
+
+
+#### Alert notifications
+
+![](/images/cloudlinuxos/shared-pro/centralized-monitoring/CMAlertManager8.webp)
+
+* **Alert name** - the link to the alert page
+* **Firing target** - the link to the server details page
+
+
+
+### FAQ
+
+#### How can I disable collecting and sending statistics on a client’s server?
+
+Run this command:
+
+<div class="notranslate">
+
+```
+/usr/share/cloudlinux/cl_plus/manage_clplus disable
+```
+</div>
+
+
+#### Where can I view all my servers load?
+
+You can find all your servers load in your CM personal account here: [https://cm.cloudlinux.com/#/servers](https://cm.cloudlinux.com/#/servers) or in your CLN personal account here: [https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring](https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring).
+
+
+#### Where can I view all my users load?
+
+You can find all your users load in your CM personal account here: [https://cm.cloudlinux.com/#/users](https://cm.cloudlinux.com/#/users) or in your CLN personal account here: [https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring](https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring)
+
+
+#### Where can I view a server load details for a period?
+
+Click the desired server in the server list in the UI.
+
+#### Where can I view a user load details for the period?
+
+Click the desired user in the user list in the UI.
+
+#### How long are statistics stored in the central database?
+
+30 days.
+
+#### How can I change the charts period on the details page?
+
+Choose the desired period in the upper right corner or select it directly on the chart.
+
+#### I don’t understand how to read the user load chart.
+
+The user load chart contains three lines:
+
+* limit
+* current load
+* count of faults
+  
+Limit and current load are drawing regarding the left vertical axis, the count of faults is drawing regarding the right vertical axis. You can focus on a particular line by clicking a required legend.
+
+
+### Troubleshooting
+
+#### I can't see a server statistics
+
+1. Check that your server is registered by key or by IP license of the CloudLinux+ account, i.e., it should be seen in the list of servers in your CLN account here: [https://cln.cloudlinux.com/console/auth/login](https://cln.cloudlinux.com/console/auth/login)
+2. Check that the following required packages are installed on the end server:
+* <span class="notranslate">`cl-end-server-tools`</span> >= 1.0.7-1
+* <span class="notranslate">`cl-node-exporter`</span> >= 1.1.0-2
+* <span class="notranslate">`rhn-client-tools`</span>
+    * CloudLinux OS 6 >= 1.1.15-3.el6.cloudlinux.26
+    * CloudLinux OS 7 >= 2.0.2-31.el7.clouldinux
+    * CloudLinux OS 8 >= 2.8.16-14.module_el8.1.0+6074+9dc6073e.cloudlinux.2
+* <span class="notranslate">`lve-stats`</span> >= 3.0.7-2
+* <span class="notranslate">`lve-utils`</span> >= 4.2.21-2
+* <span class="notranslate">`alt-python27-cllib`</span> >= 2.1.13-1
+* `lvemanager` >= 6.2.10-1
+3. Check that service collecting and sending statistics is running:
+
+<div class="notranslate">
+
+```
+service cl_plus_sender status
+```
+</div>
+
+4. Check that log of the <span class="notranslate">_cl_plus_sender_</span> service doesn't contain errors:
+   
+<div class="notranslate">
+
+```
+/var/log/clplus_sender.log
+```
+</div>
+
+#### Where can I view the events log on the client's server?
+
+You can view the events log on the client's server here: 
+
+<div class="notranslate">
+
+```
+/var/log/clplus_sender.log
+```
+</div>
+
+#### Can I get monitoring metrics from LiteSpeed, Nginx or other (Not Apache) web server?
+
+Starting from end-server-tools-1.0.7, it supports collecting and sending statistics from the Apache and LiteSpeed web servers.
+
+LiteSpeed is supported on cPanel and DirectAdmin control panels.
+
+Each minute the statistics collection daemon checks which web server is started. If LiteSpeed is started, the daemon will collect data from it, otherwise, it checks if Apache is started.
+
+When the daemon detects that the server is changed, it writes the following line into the statistics collection daemon log `/var/log/clplus_sender.log`:
+
+```
+2020-10-09 17:25:31,462: (CL+_sender_daemon) [INFO] Apache/Litespeed collector: Using Apache
+```
+or
+
+```
+2020-10-09 18:13:03,897: (CL+_sender_daemon) [INFO] Apache/Litespeed collector: Using Litespeed
+```
+
+If the daemon can't detect either Apache or LiteSpeed, it writes to the log the following:
+
+```
+2020-10-09 17:33:38,399: (CL+_sender_daemon) [INFO] Apache/Litespeed collector: Apache or Litespeed stopped or absent, collector will not work
+```
+
+The statistics collection daemon reacts to the server changing automatically, no need to restart it.
+
+:::warning Warning
+Please note that the daemon checks the server type once in a minute, so the data sent on a minute of switching can be unreliable.
+:::
+
+#### Logging data sent to pushgateway to the statistics collection daemon log
+
+Starting from `cl-end-server-tools` v.1.0.6-1, the statistics collection daemon allows to log data sent to pushgateway to its log `/var/log/clplus_sender.log`.
+
+To start logging, run the following command: 
+
+```
+touch /var/lve/cmt_debug_logging
+```
+
+To stop logging, run the following command: 
+
+```
+rm -f /var/lve/cmt_debug_logging
+```
+
+You don't need to restart the daemon after starting/stopping logging. The presence of a control file is evaluated "on the fly".
+
+:::warning Warning
+Use this logging with caution because when it is enabled, the size of the daemon log `/var/log/clplus_sender.log` will increase each minute minimum on 3-4 KB. The actual increase size depends on the number of active users' processes on a server.
+:::
+
+### Known issues
+
+* MySQL Governor statistics in some cases is collected incorrectly
+* Sorting by MySQL Governor statistics ignores idle users
+* Sorting from the search result set does not work
+* Sorting by ratio for unlimited users works incorrectly
+
+## X-Ray
+
+### Description
+
+:::warning Warning!
+<span class="notranslate">X-Ray</span> is available out of the box for cPanel, Plesk, and DirectAdmin. For other control panels you should implement integration as described [here](/control_panel_integration/#how-to-integrate-x-ray-with-a-control-panel)
+:::
+
+<span class="notranslate">X-Ray</span> is a tool developed for website performance monitoring and performance issues detection.
+
+<span class="notranslate">X-Ray</span> can gather and visualize information about top N slowest system functions, external requests, software modules and database queries of the client’s website.
+
+### Known limitations
+<span class="notranslate">X-Ray</span> is not compatible with Opcahce JIT optimization.
+Once <span class="notranslate">X-Ray</span> tracing task is running for the site the Opcache JIT optimization will be disabled until tracing task completed.
+
+### Installation
+
+:::tip Note
+X-Ray Autotracing is installed and enabled by default on all new compatible servers.
+:::
+
+1. Make sure you have CloudLinux OS Shared Pro subscription (only non-reseller accounts apply)
+
+2. Make sure you have installed **LVE Manager version 6.2 or later**. You can install or update it with the following commands:
+   * installation
+
+   <div class="notranslate">
+
+    ```
+    yum install lvemanager
+    ```
+    </div>
+
+    * update
+   
+   <div class="notranslate">
+
+    ```
+    yum update lvemanager
+    ```
+    </div>
+3. X-Ray will be activated on all your servers during 4 hours. You will see the X-Ray tab in the LVE Manager UI.
+
+4. For instant activation, run the following command:
+
+   <div class="notranslate">
+
+    ```
+    rhn_check
+    ```
+    </div>
+
+    If the `rhn_check` command is not found, run the following command:
+
+    <div class="notranslate">
+
+    ```
+    yum install rhn-check rhn-setup
+    ```
+    </div>
+
+5. Then install the <span class="notranslate">`alt-php-xray`</span> package
+
+    * Via user interface
+        * Go to the <span class="notranslate">_X-Ray_</span> tab.
+        * Click <span class="notranslate">_Install_</span> to start installation.
+
+        ![](/images/cloudlinuxos/shared-pro/x-ray/XRayUI.webp)
+
+    * Via SSH by running the following command:
+  
+    <div class="notranslate">
+
+    ```
+    yum install lvemanager alt-php-xray
+    ```
+    </div>
+
+6. After installation, use the <span class="notranslate">_Start tracing_</span> button to create your first tracing task for a slow site.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayStartTracing.webp)
+
+### X-Ray serverwide mode
+
+With X-Ray v0.6-11 we introduced global X-Ray mode which enables tracing extension for all PHP versions on the servers. This
+mode allows your customers to [override PHP versions](https://cloudlinux.zendesk.com/hc/en-us/articles/115004537805-Different-PHP-versions-per-directories-using-mod-lsapi) 
+in different folders and trace websites located in those folders.
+
+In order to enable this mode, type the following command:
+```
+cloudlinux-xray-manager enable-serverwide-mode
+```
+
+In order to get back to default:
+```
+cloudlinux-xray-manager disable-serverwide-mode
+```
+
+Enable and disable commands do not stop or remove tracing tasks.
+
+
+### X-Ray phpinfo mode
+
+With X-Ray v0.6-18 we introduced new X-Ray mode which gathers website php version using information from phpinfo. This
+mode allows your customers to [override PHP versions](https://cloudlinux.zendesk.com/hc/en-us/articles/115004537805-Different-PHP-versions-per-directories-using-mod-lsapi)
+
+:::warning
+In order to use this mode, websites should be reachable through http or https.
+:::
+
+In order to enable this mode, type the following command:
+```
+touch /opt/cloudlinux/flags/enabled-flags.d/xray-per-domain-php-version-mode.flag
+```
+
+In order to get back to default:
+```
+rm -f /opt/cloudlinux/flags/enabled-flags.d/xray-per-domain-php-version-mode.flag
+```
+
+### How to manage X-Ray
+
+X-Ray provides several options for monitoring domain requests speed: Manual Tracing task, X-Ray Autotracing and Continuous tracing.
+
+* **Manual Tracing task** is a task that you can create for a specific URL to collect server requests. The task will end either after a specified number of requests to the URL or after a specified time (maximum after two days). It is not possible here to automatically email a report but it is possible to export the report in PDF and send to a user.
+
+* **Autotracing task** is a task that will be created automatically at the end of each day for slow URLs that were found during that day by the [PHP Slow Site Analyzer](/lve_manager/#website-monitoring-tool-and-slow-site-analyzer) (SSA).
+Need to be enabled separately, see [How to enable X-Ray Autotracing](/cloudlinux-os-plus/#how-to-enable-x-ray-autotracing).
+
+* **Continuous tracing** is a task that initiates daily hourly tracing requests for a specified domain and email a monitoring report. Continuous task can't stop automatically, you need to stop it manually. In fact, continuous task allows to automatically create a tracing task for each new day, with the ability to get a report for the past day.
+
+#### Tracing tasks tab
+
+The *Tracing tasks* tab contains a list of all tracing tasks created both manually and automatically via continuous tasks.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayTracingTaskCreated.webp)
+
+The *Created* column shows how a task was created – automatically (by continuous task) or manually.
+
+#### Continuous tracing tab
+
+:::warning Warning
+To use Continuous task, update your LVE Manager and alt-PHP-X-Ray packages to versions lvemanager-6.2.9-1 and alt-php-xray-0.2-1 by running the following command:
+```
+yum update lvemanager alt-php-xray
+```
+::: 
+
+The *Continuous tracing* tab contains a list of continuous tasks for which tracing tasks will be created automatically for a new day for a specific domain.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTasksList.webp)
+
+### Managing tracing task
+
+#### Creating a new tracing task
+
+1. Go to the <span class="notranslate">_X-Ray_</span> tab
+2. Click the <span class="notranslate">_Start tracing_</span> button to create a new task
+3. In the opened popup specify a website URL to trace
+4. Click the <span class="notranslate">_Run_</span> button
+5. Tracing will run in the default mode. In the default mode <span class="notranslate">X-Ray</span> traces the first 20 requests for a specified URL
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayTracingTask.webp)
+
+* <span class="notranslate">**URL**</span> should be a valid URL of the domain which exists on the current hosting server. The URL field supports wildcard matching. To learn more about wildcard matching, click _How to use special characters_.
+* <span class="notranslate">**Advanced settings**</span> allow you to set an IP address and tracing options: by time or by number of queries.
+
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayAdvanced.webp)
+
+**Advanced settings**
+
+* <span class="notranslate">**Client’s IP**</span>: it is an IPv4 address of a machine to trace. For example, if you have a production website that processes requests from different IP addresses and you do not want to add these requests to the tracing task. So, you can set a specific IP address and <span class="notranslate">X-Ray</span> will analyze requests only from this specific IP address.
+Record for
+* <span class="notranslate">**Time period**</span>: how much time <span class="notranslate">X-Ray</span> collect the requests (2 days max)
+* <span class="notranslate">**Requests**</span>: the amount of requests that <span class="notranslate">X-Ray</span> will collect
+
+After creating, the task appears in the list of tracing tasks.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayTrcingTaskList.webp)
+
+#### Viewing tracing tasks list
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayTrcingTaskList1.webp)
+
+Tasks created *Manually* are simply tracing tasks.
+
+#### Tracing status
+
+A tracing task can have the following statuses:
+
+* <span class="notranslate">**Running**</span> – tracing is in progress
+* <span class="notranslate">**Stopped**</span> – tracing was stopped by administrator
+* <span class="notranslate">**On hold**</span> – the same URL already exists in the lists. Task processing will not start automatically. Administrator should start it manually.
+* <span class="notranslate">**Completed**</span> – period of time is finished or number of requests is reached.
+
+#### Collected requests for tracing task
+
+:::warning Warning!
+Collected requests are available in the UI for 30 days.
+:::
+
+Click ![](/images/cloudlinuxos/shared-pro/x-ray/XRayView.webp) to open a list of collected requests.
+
+#### Tracing tasks
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayCollectedRequests.webp)
+
+The slowest request is highlighted.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRaySlowestRequest.webp)
+
+* <span class="notranslate">**Total**</span> displays how many requests were collected according to tasks requirements.
+* <span class="notranslate">**Pending**</span> displays how many of collected requests are not visible in the table yet.
+* <span class="notranslate">**Throttled**</span> displays the number of requests during the execution of which the LVE limits were exceeded.
+* <span class="notranslate">**Slow**</span> displays the number of requests lasting more than one second.
+
+There are filters for the request types and the indicator of a filter used now.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/FilterIndicator.webp)
+
+If slow requests were not detected during the tracing task, the following is displayed. Here, you can also view all requests.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/RecordedSession.webp)
+
+
+<span class="notranslate">X-Ray</span> collects the following data for each request:
+
+* <span class="notranslate">**Top issues**</span> – the slowest items of a request
+* <span class="notranslate">**Software modules/plugins**</span> by execution time (only for WordPress plugins)
+* <span class="notranslate">**Database queries**</span> by execution time 
+* <span class="notranslate">**External requests**</span> by execution time
+* <span class="notranslate">**Other system functions**</span> by execution time 
+
+#### Software modules/plugins
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRaySoftwareModulesPlugins.webp)
+
+The <span class="notranslate">_Software modules/plugins_</span> section displays the following data:
+
+* <span class="notranslate">**Software type**</span> – a type a module/plugin. For now, <span class="notranslate">X-Ray</span> can analyze only WordPress software
+* <span class="notranslate">**Software module**</span> – a name of the WordPress plugin
+* <span class="notranslate">**Duration**</span> – plugin execution time
+* <span class="notranslate">**Duration (%)**</span> – plugin execution time as a percentage of the total duration of the request
+
+#### Database queries
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayDatabaseQueries.webp)
+
+The <span class="notranslate">_Database queries_</span> section displays the following data:
+
+* <span class="notranslate">**Query**</span> – the executed SQL-query
+* <span class="notranslate">**File**</span> – the file and the line of the executed query and backtrace
+* <span class="notranslate">**Software module**</span> – a WordPress plugin name from which the request was completed. If the request does not belong to any of the WordPress plugin, the name of the function that executed the given request is displayed
+* <span class="notranslate">**Calls**</span> – the number of identical SQL queries
+* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
+ 
+#### External requests
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayExternalRequests.webp)
+
+The <span class="notranslate">_External requests_</span> section displays the following data:
+
+* <span class="notranslate">**URL**</span> – the URL of the executed request
+* <span class="notranslate">**File**</span> – the file and the line of the executed request and backtrace
+* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
+ 
+#### System functions
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRaySystemFunctions.webp)
+
+The <span class="notranslate">_System functions_</span> section displays the following data:
+
+* <span class="notranslate">**Function**</span> – the executed function
+* <span class="notranslate">**File**</span> – the file and the line of the executed request
+* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
+
+#### Stopping tracing task
+
+Click ![](/images/cloudlinuxos/shared-pro/x-ray/XRayStop.webp) to stop the tracing task.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayStopped.webp)
+
+The tracing task status will be changed to <span class="notranslate">**Stopped**</span>. Data will not be collected anymore but you can see already collected information or continue tracing later by clicking ![](/images/cloudlinuxos/shared-pro/x-ray/XRayStart.webp).
+
+#### Deleting tracing task 
+
+Click ![](/images/cloudlinuxos/shared-pro/x-ray/XRayDelete.webp) to delete the tracing task.
+
+:::warning Warning!
+When you have deleted a tracing task, all collected data will be unavailable.
+:::
+
+### Managing continuous tasks
+
+#### Creating a new continuous task
+
+1. Click the *Create continuous tracing*  button 
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayCreateContinuousTaskBtn.webp)
+
+2. Specify URL in the *Domain* field and email in the *Email for reports* field and click the *Create* button.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayCreateContinuousTaskForm.webp)
+
+3. You can see a new task in the *Continuous tracing* tab in the X-Ray UI.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTab.webp)
+
+4. If you stop a continuous tracing task, a new task for the next 24 hours will not be created. The task for the current day will be finished at midnight and the report will be emailed.
+
+5. If you delete a continuous tracing task, the task for the current day will be finished at midnight and the report will be emailed.
+
+#### Viewing continuous tasks list
+
+You can find a list of continuous tracing tasks in the _Continuous tracing_ tab.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksList.webp)
+
+You can find automatically created tasks in the _Tracing tasks_ tab marked as _Automatically_ in the _Created_ column.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksListCreated.webp)
+
+The [statuses for automatically created tasks](/cloudlinux-os-plus/#tracing-status) are the same as for tracing task.
+
+To view detailed info about an automatically created task, click ![](/images/cloudlinuxos/shared-pro/x-ray/XRayView1.webp). You will get requests grouped by hour.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksListGrouped.webp)
+
+Click to a group to open a list of the requests.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTracingTasksRequestsList.webp)
+
+The following data is collected for each request:
+
+* Software modules/plugins by execution time (only for WordPress plugins)
+* Database queries by execution time
+* External requests by execution time
+* Other system functions by execution time
+
+#### Stopping automatic tracing task
+
+Stopping automatic tracing task (a part of continuous tracing task) affects only the automatic tracing task for the current day. A new task for the next day will be created at the end of the day.
+
+To stop the continuous tracing task completely, see [Creating a new continuous task, paragraph 4](/cloudlinux-os-plus/#creating-a-new-continuous-task).
+
+
+#### Deleting automatic tracing task
+
+Deleting automatic tracing task (a part of continuous tracing task) affects only the automatic tracing task for the current day. A new task for the next day will be created at the end of the day.
+
+To delete the continuous tracing task completely, see [Creating a new continuous task, paragraph 5](/cloudlinux-os-plus/#creating-a-new-continuous-task).
+
+
+#### Continuous task daily report
+
+1. Users get daily reports on their emails. An example of a report is shown below:
+
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportExample.webp)
+
+2. Click the link in the email to show the detailed report:
+
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportCollectedRequests.webp)
+
+3. You can view requests grouped by hour:
+
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportByHourRequests.webp)
+
+4. You can also view the detailed information about request:
+
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayContinuousTaskDaylyReportRequestDetails.webp)
+
+
+### X-Ray Autotracing
+
+X-Ray Autotracing automatically creates tracing tasks for slow URLs that were found during a day by the [PHP Slow Site Analyzer](/lve_manager/#website-monitoring-tool-and-slow-site-analyzer) (SSA).
+
+:::warning Warning
+To use X-Ray Autotracing, update your alt-php-ssa and alt-php-xray packages to versions alt-php-ssa-0.2-1 and alt-php-xray-0.4-1 or higher by running the following command:
+```
+yum update alt-php-ssa alt-php-xray --enablerepo=cloudlinux-updates-testing
+```
+:::
+
+#### How to enable X-Ray Autotracing
+
+To enable X-Ray Autotracing, run the following commands via SSH:
+
+```
+/usr/sbin/cloudlinux-ssa-manager enable-ssa
+/usr/sbin/cloudlinux-autotracing enable --all
+```
+
+Check [CLI documentation](/command-line_tools/#x-ray-autotracing) for a description of the `/usr/sbin/cloudlinux-autotracing` CLI utility.
+
+#### Requirements
+
+* CloudLinux OS Shared Pro or CloudLinux OS Solo or CloudLinux OS Admin
+* alt-php-ssa > 0.2-1 version
+* alt-php-xray > 0.4-1 version
+* Enabled PHP SSA on the server
+
+#### Autotracing Interface
+
+A new tab for Autotracing tasks was added to the X-Ray UI:
+
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayAutotracingtaskstab.webp)
+
+
+#### Autotracing FAQ
+
+Q: Why are the slow URLs in the Slow Site Analyzer report different from those on which the autotracing tasks were created?
+
+A: Because the autotracing decision module uses rules and thresholds different from Slow Site Analyzer, which are configured by the CloudLinux team.
+
+Q: How often autotracing tasks will be generated?
+
+A: Once a day at the same time as a Slow Site Analyzer report.
+
+### X-Ray Smart Advice
+
+Smart advice is a new feature of X-Ray that is designed to find and propose solutions to fix performance issues and speed up the performance of a sites.
+
+:::tip Note
+Smart Advice will work only for CloudLinux OS Shared Pro servers with cPanel Control Panel for now.
+
+At the moment, Smart Advise is focused only on WordPress sites.
+:::
+
+:::warning Warning
+To use X-Ray Smart Advice, update your alt-php-ssa and alt-php-xray packages to versions alt-php-ssa-0.2-3 and alt-php-xray-0.5-1 or higher by running the following command:
+```
+yum update alt-php-ssa alt-php-xray lve-utils lvemanager --enablerepo=cloudlinux-updates-testing
+```
+:::
+
+#### How to enable X-Ray Smart Advice
+
+:::warning Attention!
+If you'd like to try Smart Advice and AccelerateWP you should participate in the Beta tester program. To become a beta tester, please send your request at our Beta program page with the signup form [here](https://www.cloudlinux.com/wp-performance/). Once you submit the request, we will send you a confirmation email with program details and terms of use.
+:::
+
+#### Requirements
+
+* CloudLinux OS Shared Pro or CloudLinux OS Solo
+* alt-php-xray > 0.5-1 version
+* lve-utils > 6.3.2-1 version
+* lvemanager > 7.6.1-1 version
+* cloudlinux-site-optimization-module > 0.1-1 version
+
+We Recommend:
+
+* Enable [X-Ray Autotracing](cloudlinux-os-plus/#x-ray-autotracing) on the server
+* Use alt-php-ssa > 0.2-3 version
+
+#### How X-Ray Smart Advice works
+
+The main process of looking for advice is X-Ray tracing tasks. The best way for doing this is to enable X-Ray Autotracing. 
+This will allow you to most effectively find Smart Advice for sites that have performance issues without your manual participation. 
+You can find information on how to enable X-Ray Autotracing [here](/cloudlinux-os-plus/#how-to-enable-x-ray-autotracing).
+On the other hand, you can create tracing tasks manually or use continuous X-Ray but we suggest you use X-Ray Autotracing for this purpose.
+
+:::tip Note
+Advice will not be generated by old tracing tasks.
+:::
+
+While the tracing task is running, X-Ray will look for places where advice can be applied. New advice will be displayed on the *Smart Advice* tab. 
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceMainTab.webp)
+
+After the X-Ray finds advice you will see new advice in the *Review* status on the *Smart Advice* tab. 
+Then you may use the *Details* button to see which URLs were found by X-Ray that will be speed up by that advice and use *Quick Action* to enable advice for a site.
+
+Example of details:
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceDetails.webp)
+
+After you apply the advice by using *Quick Action*, the status will change to the *Applied*.
+
+If a long time has passed since the last time the advice was updated for a site, it will be moved to the *Outdated* status. 
+
+:::tip Note
+New X-Ray task may update *Outdated* advice if X-Ray finds performance issues that may be fixed by that advice. Then the status of advice becomes *Review*.
+:::
+
+If the process of applying advice fails you will see an error log with a detailed error, you may try to fix it manually and try again or [contact our support team for help](https://cloudlinux.zendesk.com/hc/en-us). 
+
+Example when an error appears during advice applying:
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRaySmartAdviceError.webp)
+
+#### Smart Advice FAQ
+
+Q: Why I can't see new advice on the *Smart Advice* tab?
+
+A: For the generating of advice, it is necessary to run X-Ray tracing tasks, the best way to do it without manual interaction is to use X-Ray Autoracing. You can find more information on how to enable X-Ray Autotracing [here](/cloudlinux-os-plus/#how-to-enable-x-ray-autotracing).
+
+#### Smart Advice CLI commands
+
+CLI commands for managing feature advices
+
+- `cl-smart-advice` - for managing advices;
+
+Starting from `alt-php-xray-0.5-25` Smart Advice CLI utilities provide CLI versioning which is defined via `--api-version` option. 
+
+:::tip Note
+It is highly recommended to specify CLI version explicitly via --api-version, otherwise CLI will rely on default settings, 
+which cannot guarantee backward compatability.
+:::
+
+```
+cl-smart-advice --api-version <api_version> <command>
+```
+
+supported commands for `--api-version=1`:
+
+- `list` - shows list of all advices;
+- `apply` - applies specific advice;
+- `rollback` - rollbacks specific advice;
+
+##### Advices list
+
+`--api-version=1`
+
+```
+cl-smart-advice --api-version=<api_version> list
+```
+
+For each advice in the list the CLI command returns the following information:
+* `metadata`, which includes information about `username`, `domain` and `website` for which the advice is issued
+* `advice` information:
+  * its identifier `id` (id, that should be used in apply and rollback commands)
+  * its `type` (optimization feature identifier)
+  * its `status` - current status: `review` or `applied`
+  * `module_name` - name of optimization feature
+  * `is_premium` - if advice is for optimization feature from AccelerateWP Premium suite
+  * `subscription` - info about optimization suite subscription (only if advice requires subscription)
+  * `description` and `detailed_description` - human-readable descriptions of advice
+  * other internal informational fields
+* `result` - result of command: it may have `success` or error details
+
+Successful output example of  `cl-smart-advice --api-version=1 list`:
+
+```
+{
+  "data": [
+    {
+      "created_at": "2023-04-11T07:33:48.191870+00:00",
+      "updated_at": "2023-04-11T07:33:48.191870+00:00",
+      "metadata": {
+        "username": "user16",
+        "domain": "user16.com",
+        "website": "/wordpress"
+      },
+      "advice": {
+        "id": 23484,
+        "type": "OBJECT_CACHE",
+        "status": "review",
+        "description": "Turn on Object Caching",
+        "is_premium": true,
+        "module_name": "object_cache",
+        "subscription": {
+          "status": "no",
+          "upgrade_url": null
+        },
+        "total_stages": 0,
+        "completed_stages": 0,
+        "detailed_description": "To improve site performance, enable the Object Caching We recommend applying the advice if you see it frequen
+tly for the most valuable URLs of your site."
+      }
+    },
+    {
+      "created_at": "2023-04-11T07:33:48.297784+00:00",
+      "updated_at": "2023-04-11T08:51:42.362117+00:00",
+      "metadata": {
+        "username": "user16",
+        "domain": "user16.com",
+        "website": "/wordpress"
+      },
+      "advice": {
+        "id": 23485,
+        "type": "SITE_OPTIMIZATION",
+        "status": "applied",
+        "description": "Turn on AccelerateWP feature",
+        "is_premium": false,
+        "module_name": "accelerate_wp",
+        "total_stages": 0,
+        "completed_stages": 0,
+        "detailed_description": "To improve site performance, enable the AccelerateWP optimization feature. We recommend applying the advice if you see it frequently for the most valuable URLs of your site."
+      }
+    }
+  ],
+  "result": "success",
+  "timestamp": 1681203110
+}
+```
+
+Failed output example of `cl-smart-advice --api-version=1 list`:
+```
+{"result": "Malformed API response"}
+```
+
+##### Apply advice
+
+`--api-version=1`
+
+```
+cl-smart-advice --api-version=<api_version> apply --advice_id=<id_of_advice> [ --accept_license_terms ] [ --ignore-errors ]
+```
+`--accept_license_terms` - accept license terms on applying CDN type advice;
+`--ignore-errors` - ignore WordPress site web-checks after enabling optimization features;
+
+`advice_id` from `cl-smart-advice --api-version=<api_version> list` output
+
+Successful output example of `cl-smart-advice --api-version=1 apply --advice_id=12345`:
+```
+{
+    "feature": {
+        "enabled": true
+    },
+    "result": "success",
+    "timestamp": 1690806590.0494235
+}
+```
+
+* `feature`: status of optimization to be applied via advice
+  * `enabled`: true or false value meaning feature is enabled or not
+* `result`:  result of command: it may have `success` or error details
+
+Failed output example of `cl-smart-advice --api-version=1 apply --advice_id=12345`:
+```
+{"result": "Malformed API response"}
+```
+
+##### Rollback advice
+
+`--api-version=1`
+
+```
+cl-smart-advice --api-version=<api_version> rollback --advice_id=<id_of_advice>
+```
+
+`advice_id` from `cl-smart-advice --api-version=<api_version> list` output
+
+Successful output example of `cl-smart-advice --api-version=1 rollback --advice_id=12345`:
+```
+{
+    "feature": {
+        "enabled": false,
+        "visible": true
+    },
+    "result": "success",
+    "timestamp": 1690806844.9735684
+}
+
+```
+
+* `feature`: status of optimization to be applied via advice
+  * `enabled`: true or false value meaning feature is enabled or not
+  * `visible`: true or false value meaning feature is visible or not
+* `result`:  result of command: it may have `success` or error details
+
+Failed output example of `cl-smart-advice --api-version=1 rollback --advice_id=12345`:
+```
+{"result": "Malformed API response"}
+```
+
+### Advanced performance analytics
+
+By enabling this feature, X-Ray will add JavaScript profiling code to each WordPress site during the tracing process. This will allow X-Ray to provide highly detailed insights into each website’s performance (greatly enhancing the quality and accuracy of SmartAdvice). The performance metrics that will be collected include TTFB (Time To First Byte), Total Blocking Time, First Contentful Paint, and more. The profiling code does not collect any user or visitor data nor sensitive data of any kind. The sole purpose of this profiling code is to gather performance-related metrics to better optimize the website.
+
+#### How to enable/disable via UI
+
+You can manage the setting in several interfaces:  
+
+**X-Ray settings:**
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.ui.xray.webp)
+
+**AccelerateWP settings:**  
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.ui.awp.webp)
+
+#### How to enable/disable via CLI
+
+```
+cloudlinux-xray-manager advanced-metrics --enable
+```  
+
+```
+cloudlinux-xray-manager advanced-metrics --disable
+```
+
+#### How it works
+
+To start advanced performance monitoring, you can enable tracing tasks that involve adding a JavaScript snippet to the bottom of your WordPress page. This snippet facilitates performance monitoring and allows X-Ray to gather valuable insights.
+
+Once tracing tasks are enabled, the JavaScript snippet will periodically send POST requests to our secure analytics service.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.request.webp)
+
+These requests capture anonymous data about page load time and resources.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayAdvancedMetrics.data.webp)
+
+
+### End-user X-Ray plugin
+
+:::warning Warning
+To use the end-user X-Ray plugin, update your LVE Manager and X-Ray packages to the `lvemanager-6.3.9-1` (or later) and `alt-php-xray-0.3-1` (or later) by running the following command:
+```
+yum update lvemanager alt-php-xray
+```
+:::
+
+#### How to enable/disable the end-user X-Ray plugin
+
+You can hide or show the end-user X-Ray plugin icon by ticking or unticking the proper checkbox in the LVE Manager.
+
+Go to _LVE Manager → Options Tab → User interface settings_.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/HideXRayAppCheckbox.webp)
+
+:::tip Note
+The X-Ray plugin icon in the end-user interface is hidden when the checkbox is ticked.
+:::
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayAppUIIcon.webp)
+
+#### How to manage the end-user X-Ray plugin
+
+The web interface of the end-user X-Ray plugin is almost the same as the X-Ray administrator interface.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUI.webp)
+
+But there are some differences and they are described further.
+
+* End-users can create tasks only for their domains from the drop-down list:
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIStart.webp)
+* To specify URL or wildcard, end-users should use the input field next to the domain:
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUiSpecifyURL.webp)
+
+You can read about all other basic interface elements and managing tracing tasks in the [Managing tracing task section](/cloudlinux-os-plus/#managing-tracing-task).
+
+:::tip Note
+Tracing tasks created by an end-user will also be displayed in the administrator interface and administrators can manage the end-user's tasks the same way as they manage their own. At the same time, tasks created by the administrator or other end-users will not be displayed in the UI of the current user.
+:::
+
+#### End-user X-Ray plugin limitations
+
+* The end-user X-Ray plugin does not support creating continuous tasks.
+* The end-user has a limit of tracing tasks running at a time. Before starting the next task, the end-user should wait for the completion of the previous ones or forcefully stop the running ones. Otherwise, the user will get the next error:
+    
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIError.webp)
+    :::tip Note
+    The current limit is one tracing task per user. 
+    :::
+* The administrator and the end-user can’t run the tracing task for the same Domain/URL at the same time. Once, the administrator started a specific tracing task, the end-user will not be able to duplicate it. And the same is true for the administrators – they will just see the running task for the specific domain and see the notification that they're trying to create a tracing task with a duplicated URL.
+* If continuous tracing is enabled for the domain, the end-user will not be able to create a new task for this domain because the same rule works - it will be a duplicate of the existing tracing tasks. The next warning will appear:
+    
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserUIWarning.webp)
+
+    To solve this, the existing running tasks for the same Domain/URL should be stopped or completed. You can find more details about this in the [FAQ](/cloudlinux-os-plus/#what-should-i-do-if-i-see-the-warning-task-is-duplicated-by-url).
+
+* If a user's tracing task was created for a domain which is using the FPM handler there's an additional limitation.  To avoid  frequent reloads of the particular FPM service, **Start tracing** ,  **Stop tracing** or  **Continue tracing** action would be blocked in case if the latest reload of a corresponding FPM service was done less than 1 minute ago.  
+If a user gets such an error message - it means that  1 reload  in  1 minute for a particular FPM service has been already done.  Just try performing the same operation once again in a while.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/XRayEndUserFPMerror.webp)
+    
+### X-Ray automated throttling detection
+
+:::tip Note
+**CPU throttling detection** is available since `alt-php-xray-0.3-2` and `lvemanager-xray-0.5-2`.
+
+**IO/IOPS throttling detection** is available since `alt-php-xray-0.3-7` and `lvemanager-xray-0.7-1`.
+
+- `kmod-lve-2.0-23` (and later) for CloudLinux OS 8 or CloudLinux OS 7 hybrid
+- `kernel-1.5-58` (and later) for CloudLinux OS 7 or CloudLinux OS 6 hybrid
+
+are also required to utilize the feature of **IO/IOPS throttling detection**.
+:::
+
+:::warning Warning
+X-Ray automated throttling detection feature is not supported for CloudLinux OS 6
+:::
+
+The X-Ray automated throttling detection system checks if the account exceeds LVE limits by CPU or by IO/IOPS during the HTTP request execution. Requests with exceeded LVE limits are indicated in both X-Ray Administrator and X-Ray User plugins.
+
+If CPU limiting was detected for a particular request, it is indicated in the X-Ray UI that the system itself has slowed down the request processing due to CPU throttling and this is apparently not a performance issue in the PHP code.
+
+If limiting by IO and IOPS in total was detected for a particular request, it is indicated in the X-Ray UI in the same manner, except for the cause of slowing down the request -- IO throttling.
+
+The case of both limiting for the request is also possible.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/CPUIOLimiting.webp)
+
+Requests with exceeded LVE limits are also marked in the request detailed view.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/RequestDetails.webp)
+
+Requests with exceeded LVE limits are marked in the PDF report as well.
+
+![](/images/cloudlinuxos/shared-pro/x-ray/PDFReport.webp)
+
+
+### X-Ray client
+
+<span class="notranslate">X-Ray</span> client is a PHP extension named <span class="notranslate">`xray.so`</span>. It analyzes the processing time of the entire request and its parts and then sends the data to the <span class="notranslate">X-Ray</span> agent.
+
+#### List of supported PHP versions
+
+The list of currently supported PHP versions:
+
+|                                                                                                                                                                                                                                                     |                                                                                                                                                                                                      |                                                                                                                                                                                                 |                                                                                                                                                                                                 |                                                                                                                                                          |
+|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **ALT PHP**:                                                                                                                                                                                                                                        | **EA PHP**:                                                                                                                                                                                          | **Plesk PHP**                                                                                                                                                                                   | **DirectAdmin PHP**                                                                                                                                                                             | **Other panels PHP**                                                                                                                                     |
+| <ul><li>alt-php54</li><li>alt-php55</li><li>alt-php56</li><li>alt-php70</li><li>alt-php71</li><li>alt-php72</li><li>alt-php73</li><li>alt-php74</li><li>alt-php80</li><li>alt-php81</li><li>alt-php82</li><li>alt-php83</li><li>alt-php84</li></ul> | <ul><li>ea-php54</li><li>ea-php55</li><li>ea-php56</li><li>ea-php70</li><li>ea-php71</li><li>ea-php72</li><li>ea-php73</li><li>ea-php74</li><li>ea-php80</li><li>ea-php81</li><li>ea-php82</li></ul> | <ul><li>php54</li><li>php55</li><li>php56</li><li>php70</li><li>php71</li><li>php72</li><li>php73</li><li>php74</li><li>php80</li><li>php81</li><li>php82</li><li>php83</li><li>php84</li></ul> | <ul><li>php54</li><li>php55</li><li>php56</li><li>php70</li><li>php71</li><li>php72</li><li>php73</li><li>php74</li><li>php80</li><li>php81</li><li>php82</li><li>php83</li><li>php84</li></ul> | <ul><li>54</li><li>55</li><li>56</li><li>70</li><li>71</li><li>72</li><li>73</li><li>74</li><li>80</li><li>81</li><li>82</li><li>83</li><li>84</li></ul> |
+
+:::warning Warning!
+<span class="notranslate">[php-zts](/cloudlinux_os_components/#how-to-configure-alt-php72-zts-to-use-with-php-selector)</span> and [custom PHPs, rolled in selector](/cloudlinux_os_components/#roll-your-own-php), are not supported
+:::
+
+### Functions that X-Ray client can hook
+
+#### Database queries
+
+* Functions from the [MySQL](https://www.php.net/manual/ru/book.mysql.php) extension:
+    * <span class="notranslate">`mysql_query`</span>
+    * <span class="notranslate">`mysql_db_query`</span>
+    * <span class="notranslate">`mysql_unbuffered_query`</span>
+* Functions from the [MySQLi](https://www.php.net/manual/ru/book.mysqli.php) extension:
+    * <span class="notranslate">`mysqli_query`</span>
+    * <span class="notranslate">`mysqli::query`</span>
+    * <span class="notranslate">`mysqli_multi_query`</span>
+    * <span class="notranslate">`mysqli::multi_query`</span>
+    * <span class="notranslate">`mysqli_real_query`</span>
+    * <span class="notranslate">`mysqli::real_query`</span>
+* Functions from the [PDO](https://www.php.net/manual/ru/book.pdo.php) extension:
+    * <span class="notranslate">`PDO::exec`</span>
+    * <span class="notranslate">`PDO::query`</span>
+    * <span class="notranslate">`PDOStatement::execute`</span>
+
+#### External requests
+
+* Function [curl_exec](https://www.php.net/manual/ru/function.exec)
+
+#### System PHP functions
+
+It may be any PHP system function which can be related to a PHP engine or other PHP extension, for example <span class="notranslate">`fopen()`</span> or <span class="notranslate">`json_encode()`</span>. A list of these functions can be found [here](https://www.php.net/manual/en/indexes.functions.php).
+
+#### Configuration Options
+
+<div class="notranslate">
+
+#### xray.enabled
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.enabled=On/Off`</span>
+
+**Default**: <span class="notranslate">On</span>
+
+**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: Enable or disable <span class="notranslate">X-Ray</span> extension from php.ini
+
+-----
+
+<div class="notranslate">
+
+#### xray.database_queries
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.database_queries=[number]`</span>
+
+**Default**: 20
+
+**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: The number of the slowest SQL queries which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
+
+-----
+
+<div class="notranslate">
+
+#### xray.external_requests
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.external_requests=[number]`</span>
+
+**Default**: 20
+
+**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: The number of the slowest external requests (the curl_exec function) which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
+
+-----
+
+<div class="notranslate">
+
+#### xray.system_functions
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.system_functions=[number]`</span>
+
+**Default**: 20
+
+**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: The number of the slowest system functions which will be sent to the <span class="notranslate">X-Ray</span> agent. 
+The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
+
+-----
+
+<div class="notranslate">
+
+#### xray.backtrace_depth
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.backtrace_depth=[number]`</span>
+
+**Default**: 10
+
+**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: The backtrace depth to the main() function which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 20. If the variable value is more, the default value will be used.
+
+-----
+
+<div class="notranslate">
+
+#### xray.processor
+
+</div>
+
+
+**Syntax**: <span class="notranslate">`xray.processor=[processor_name]`</span>
+
+**Default**: <span class="notranslate">xray</span>
+
+**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: Tells the <span class="notranslate">X-Ray</span> client which processor to use. The new processors may be added in the future. The default processor is xray which means to send data to the <span class="notranslate">X-Ray</span> agent.
+
+-----
+
+<div class="notranslate">
+
+#### xray.tasks
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.tasks=host:uri:ip:id`</span>
+
+**Default**: <span class="notranslate">no value</span>
+
+**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: The current tracing tasks for the given PHP request. This directive is added automatically by the <span class="notranslate">X-Ray</span> manager when creating a task. It is not allowed to edit manually, as <span class="notranslate">X-Ray</span> may stop working.
+
+-----
+
+<div class="notranslate">
+
+#### xray.to_file
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.to_file=On/Off`</span>
+
+**Default**: <span class="notranslate">Off</span>
+
+**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: Only for debug purposes. Writes to a file data which is sent to the processor.
+
+-----
+
+<div class="notranslate">
+
+#### xray.debug
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.debug=On/Off`</span>
+
+**Default**: <span class="notranslate">Off</span>
+
+**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: Only for debug purposes. Enables debug output during request processing. In the On mode can slow down the domain.
+
+-----
+
+<div class="notranslate">
+
+#### xray.debug_file
+
+</div>
+
+**Syntax**: <span class="notranslate">`xray.debug_file=[path_to_file]`</span>
+
+**Default**: <span class="notranslate">`/tmp/xray-debug.log`</span>
+
+**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
+
+**Description**: Only for debug purposes. Specifies a file for logging debug information.
+
+
+### X-Ray agent 
+
+
+This is a service that receives data from the <span class="notranslate">X-Ray</span> client and sends it to the remote storage.
+
+#### Managing X-Ray service
+
+The <span class="notranslate">X-Ray</span> agent is managed by the <span class="notranslate">`service`</span> utility.
+
+* To start the <span class="notranslate">X-Ray</span> agent, run the following command:
+
+    <div class="notranslate">
+
+    ```
+    service xray-agent start
+    ```
+    </div>
+
+* To stop the <span class="notranslate">X-Ray</span> agent, run the following command:
+
+    <div class="notranslate">
+
+    ```
+    service xray-agent stop
+    ```
+    </div>
+
+* To restart the <span class="notranslate">X-Ray</span> agent, run the following command:
+
+    <div class="notranslate">
+
+    ```
+    service xray-agent restart
+    ```
+    </div>
+
+
+### FAQ
+
+#### Does X-Ray affect website performance?
+
+<span class="notranslate">X-Ray</span> affects website performance. Our tests show 5-10 % overhead from a website loading time with <span class="notranslate">X-Ray</span> tracing enabled.
+<span class="notranslate">X-Ray</span> allows you to find website performance issues and should not be enabled permanently. If your website is very slow, you can enable <span class="notranslate">X-Ray</span> to find the cause and then disable it.
+
+
+#### My customers [override php versions](https://cloudlinux.zendesk.com/hc/en-us/articles/115004537805-Different-PHP-versions-per-directories-using-mod-lsapi) in different folders and X-Ray does not trace those websites, what should I do?
+
+You should turn on the [X-Ray serverwide mode](#x-ray-serverwide-mode) or the [X-Ray phpinfo mode](#x-ray-phpinfo-mode).
+
+
+#### What should I do if I see the warning "Task is duplicated by URL"?
+
+This warning means that you already have a task to trace this URL in the list of your tracing tasks. If you see this warning, a new task can be created only with the <span class="notranslate">_On hold_</span> status and you will be able to run it only when the previous task with the same URL will be completed.
+
+Note that the URL field supports wildcard matching and you can have a case when <span class="notranslate">X-Ray</span> is tracing the <span class="notranslate">`URL=domain.com/*`</span> and you are trying to create a new task with <span class="notranslate">`URL=domain.com/xray.php`</span>. In this case, you will see that warning because the `*` URLs array includes <span class="notranslate">`xray.php`</span>.
+
+#### I started a tracing task and made requests to URL but did not see any results in the UI. What should I do?
+
+1. <span class="notranslate">X-Ray</span> may not send data if a site uses a caching plugin, as the caching plugin is outputting HTML, thus there are no PHP scripts to examine. We encountered such issues with sites that use <span class="notranslate">LSCache</span> and <span class="notranslate">WP Super Cache</span> plugins. Check that your site does not use caching plugins. If so, disable it while tracing a site to get information from <span class="notranslate">X-Ray</span>. Moreover, it can also be because of caching on server side, for example NGINX Cache. Or when using CDN because requests are processed from another host. In such cases, during tracing, caching must also be disabled.
+2. If you set a client’s IP when creating the tracing task, check that your requests come to the server with this IP via phpinfo (since there may be NAT between your local machine and the server).
+   
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayPHPInfoRemoteAddr.webp)
+
+3. Check that <span class="notranslate">**xray**</span> extension is enabled for the domain. To do so, go to the <span class="notranslate">`phpinfo()`</span> page and make a request. In the phpinfo output try to find the following section:
+   
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayPHPInfo.webp)
+
+If you cannot see that section, try to restart PHP processes for that user (the simplest way is to restart Apache) and check that you can see the <span class="notranslate">**xray**</span> extension.
+
+4. If you can see the <span class="notranslate">**xray**</span> extension in the phpinfo, check that <span class="notranslate">X-Ray</span> agent service is running with the service xray-agent status command. If it is not running, start it with the <span class="notranslate">`service xray-agent start`</span> command.
+
+5. If, after checking the previous items, the issue persists, [contact our support team](https://cloudlinux.zendesk.com/hc/en-us/requests/new).
+
+#### What to do if X-Ray is not found in the phpinfo() page?
+
+If you managed to create a tracing task, this means that the <span class="notranslate">`xray.ini`</span> file was created in a system. Therefore, there may be two reasons why it did not appear in the phpinfo page of the domain.
+
+1. PHP process wasn't reloaded after adding the xray.ini. To solve this, you should restart the Apache or fpm service for the domain on which the tracing was started. At the moment, this is done automatically by the <span class="notranslate">X-Ray</span> manager after creating the task.
+2. Your domain uses a PHP version different from the one which was detected by the <span class="notranslate">X-Ray</span> manager. To solve this, check the scan dir for additional ini files for your domain.
+
+    ![](/images/cloudlinuxos/shared-pro/x-ray/XRayScanDir.webp)
+
+    Then check the <span class="notranslate">`ini_location`</span> that was passed to the <span class="notranslate">X-Ray</span> manager by running the following command:
+
+    <div class="notranslate">
+
+    ```
+    cat /usr/share/alt-php-xray/manager.log | grep ini_location
+    ```
+    </div>
+
+    Find your tracing task in the output and check that the <span class="notranslate">`xray.ini`</span> exists in this directory, also check that the `ini` path is the same in the phpinfo page output and in the <span class="notranslate">`ini_location`</span> directive for your tracing task. If they are the same, you should reload your PHP. If they are different that means that the <span class="notranslate">X-Ray</span> manager could not correctly determine the PHP version your domain uses. In this case, contact our support team at [https://cloudlinux.zendesk.com/hc/requests/new](https://cloudlinux.zendesk.com/hc/requests/new).
+
+
+#### I use LiteSpeed, X-Ray is enabled and it is shown in the phpinfo() page but does not collect data when sending requests to a site. What to do?
+
+Check for the <span class="notranslate">`CacheLookup on`</span> option in the `htaccess` file for your domain.
+If the option is there, LiteSpeed processes requests bypassing the PHP X-Ray extension.
+In this case, to get tracing information, you should remove the <span class="notranslate">`CacheLookup on`</span> option.
+
+#### What is the proper format for the URL?
+
+All of the examples below are correct:
+
+* `http://domain.com`
+* `http://domain.com/`
+* `https://domain.com`
+* `https://domain.com/`
+
+You can use any of them with a prefix `www.` and it is also correct.
+
+#### What packages are required for X-Ray?
+
+Required packages:
+
+* `lvemanager` >= 6.2.10-1
+* `alt-php-xray` >= 0.2-1
+
+## Link server to CLN account (available only for resellers and activated by demand)
+
+**Why do we need a server linking to CLN?**  
+One of the main CloudlinuxOS Shared Pro features is Centralized Monitoring. In case when a customer uses the license provided by the reseller the server registered with such license will be linked to the reseller's CLN account. As a result, customers cannot see the data in Centralized Monitoring. To allow a customer to see the data in such a case we implemented an ability to link the server to the customer's own CLN account.
+
+**Who can use it?**  
+Only customers who use CloudlinuxOS Shared Pro licenses provided by resellers can use this feature.
+However, it's crucial to understand when linking is appropriate.
+
+The primary users for this feature are customers of license-only resellers. If you acquired your license this way, you can link the server to your CLN account. By doing so, you acknowledge that it is your responsibility to only link servers that belong to the same owner.
+
+:::warning Сonditions under which linking is not advisable!
+Some partners use a single account to manage servers they own directly alongside servers they resell to various clients. To avoid mixing data and granting unintended access, these distinct groups of servers should not be linked to one end-customer account.
+:::
+
+:::tip Info
+If you are a reseller and interested in this feature, please leave your request on [our feature portal](https://features.cloudlinux.com/).
+:::
+
+**How to link a server?** 
+If your server is linkable you will see in the Cloudlinux Manager UI (Dashboard tab) the component with input field which allows linking the server to CLN.
+
+![](/images/cm-ui-component.png)
+
+To link the server, it is required to perform the following:
+
+1. Create a CLN account if you do not have one [https://cln.cloudlinux.com/console/register/customer](https://cln.cloudlinux.com/console/register/customer).
+2. Log into your CLN account and copy the linking token. If you click the “Get the token” button you will be redirected to [https://cln.cloudlinux.com/console/profile/details](https://cln.cloudlinux.com/console/profile/details) where can copy the token
+3. Paste the token into the “Enter token” input and click the “Link server” button
+
+After these steps you server will be linked. And you will see it in the Centralized Monitoring.
+
+![](/images/linked-server-centralized-monitoring.png)
+
+### CLI utility /usr/sbin/cl-link-to-cln 
+
+We can also bind a server from the command line. To do this can be used `/usr/sbin/cl-link-to-cln` utility.
+
+```
+/usr/sbin/cl-link-to-cln --help  
+Usage: cl-link-to-cln [options]
+Options:
+  -h, --help            show this help message and exit
+  -t TOKEN, --linking-token=TOKEN
+                        Token to link the server
+  -s, --linking-status  Show if status linked or not
+```
+
+To link we have to:
+
+1. Check if the server can be linked:
+```
+/usr/sbin/cl-link-to-cln --linking-status  
+{
+    "result": "success",
+    "timestamp": 1698670480.3382068,
+    "linked": false,
+    "linkable": true
+}
+```
+
+* **linked (boolean)** field define if server is already linked
+* **linkable (boolean)** field define if server can be linked
+
+2. Link the server with the command:
+```
+/usr/sbin/cl-link-to-cln --linking-token=TOKEN
+```
+
+Token you can find here [https://cln.cloudlinux.com/console/profile/details](https://cln.cloudlinux.com/console/profile/details).
diff --git a/docs/introduction/README.md b/docs/introduction/README.md
index b99e3283a..e69de29bb 100644
--- a/docs/introduction/README.md
+++ b/docs/introduction/README.md
@@ -1,209 +0,0 @@
-# Introduction
-
-[[toc]]
-
-## CloudLinux OS editions
-
-|**Features**|**CloudLinux OS Solo**|**CloudLinux OS Admin**|**CloudLinux OS Shared**|**CloudLinux OS Shared Pro**|
-|:-:|:-:|:-:|:-:|:-:|
-|Maximum amount of hosting accounts|1|5|unlimited|unlimited|
-|Resource Limits (LVE)|No|**Yes***|**Yes**|**Yes**|
-|Cage FS|**Yes**|**Yes**|**Yes**|**Yes**|
-|MySQL Governor|No|No|**Yes**|**Yes**|
-|PHP Selector|**Yes**|**Yes**|**Yes**|**Yes**|
-|Other Selectors (Python, Node.js, Ruby)|No|**Yes****|**Yes****|**Yes****|
-|HardenedPHP|**Yes**|**Yes**|**Yes**|**Yes**|
-|Apache mod_lsapi PRO|**Yes**|**Yes**|**Yes**|**Yes**|
-|SecureLinks|No|**Yes**|**Yes**|**Yes**|
-|Website monitoring tool|**Yes**|**Yes**|**Yes**|**Yes**|
-|Website monitoring alerts|**Yes**|No|No|No|
-|Slow Site analyzer|**Yes**|**Yes**|**Yes**|**Yes**|
-|PHP X-Ray|**Yes**|**Yes**|No|**Yes**|
-|Centralized Monitoring|No|No|No|**Yes**|
-|AccelerateWP|**Yes**|**Yes**|No|**Yes**|
-|Support 24/7|**Yes**|**Yes**|**Yes**|**Yes**|
-
-\* Limits are disabled by default.
-
-\** Python/Node.js/Ruby Selectors are available only for cPanel, DirectAdmin servers, and servers with custom panel with own integration.
-
-### CloudLinux OS Solo
-CloudLinux OS Solo is designed for installation on VPS or VDS servers. 
-This edition has major difference against all other, so you should look for the detailed docs 
-[here](/introduction/).
-
-
-### CloudLinux OS Admin
-
-CloudLinux OS Admin is designed for shared hosting providers who want to flawlessly migrate their 
-big shared hosting customer to individual VPS with same CloudLinux features as on Shared hosting. 
-At the same time you will be able to separate such a user's websites if necessary and isolate them 
-with CageFS for efficient and extra security.
-
-Also it may be suitable for a little server with less than 5 customers on it, but be careful, 
-there is no migration to Shared edition available.
-
-Most of the features of CloudLinux OS Shared are available in this edition, with a small differences:
-
-- lve limits are set to unlimited by default (can be changed in CloudLinux Manager at any time)
-- MySQL Governor is not available in this edition
-- the license itself does not allow more than 5 users to be hosted on server.
-
-### CloudLinux OS Shared (Pro)
-
-CloudLinux OS Shared is designed for shared hosting providers. 
-It isolates each customer into a separate “Lightweight Virtualized Environment” (LVE), 
-which allocates and limits server resources, like memory, CPU and the number of simultaneous connections, 
-for each web hosting tenant. This ensures that tenants cannot jeopardize the stability of your servers, 
-causing all sites to slow down or even come to a halt. CloudLinux OS Shared also “cages” tenants from one another 
-to avoid security breaches. This way, unstable scripts or malware are not able to sprawl across your customer sites, 
-causing severe harm.
-
-Purchasing CloudLinux OS Shared Pro license extends your CloudLinux OS Shared 
-functionality with even more useful [features](/shared-pro/). 
-
-
-## CloudLinux OS components
-
-**CloudLinux Manager**
-
-LVE is a Lightweight Virtualized Environment.
-CloudLinux Manager allows you to maintain fine-tuned control over your resources, 
-including CPU, IO rate, memory, inodes, numbers of processes, and concurrent connections, 
-that any single account can use. Now you can limit resource abuse, while allowing good customers to use what they need.
-
-[See more](/lve_manager/).
-
-**CageFS**
-
-CageFS is a virtualized, per-user file system that uniquely encapsulates each customer, 
-preventing users from seeing each other and viewing sensitive information. CageFS prevents a large number of attacks, 
-including most privilege escalation and information disclosure attacks. It is completely transparent to your customers, 
-without any need for them to change their scripts.
-
-[See more](/cloudlinux_os_components/#cagefs).
-
-**MySQL Governor**
-
-:::tip Note
-This component is not available in CloudLinux OS Admin edition.
-:::
-
-MySQL Governor tracks CPU and disk IO usage for every user in real time and throttles MySQL queries by using LVE limits. By using the [dbtop](/command-line_tools/#dbtop) utility, it is possible to see the database usage on a per-customer basis, ensuring that the system admin always know what is going on.
-
-[See more](/cloudlinux_os_components/#mysql-governor).
-
-**PHP Selector**
-
-PHP Selector allows end users to select the specific version of PHP they need. It allows ultimate flexibility by offering all 
-popular versions of PHP, with more than 120 PHP extensions to choose from.
-
-[See more](/cloudlinux_os_components/#php-selector).
-
-**Ruby Selector**
-
-Ruby Selector allows end users to choose the Ruby version for applications and install additional modules 
-to the application environment. Ruby Selector uses `mod_passenger` for delivering optimum performance.
-
-[See more](/cloudlinux_os_components/#ruby-selector).
-
-**Python Selector**
-
-Python Selector allows end users to choose the Python version for applications and install additional modules. 
-Python Selector uses `mod_passenger` to get the best performance from Python applications.
-
-[See more](/cloudlinux_os_components/#python-selector).
-
-**Node.js Selector**
-
-Node.js Selector is a CloudLinux OS Shared component that allows each user to easily create Node.js applications, 
-choose Node.js version and other parameters for applications based on their needs.
-
-[See more](/cloudlinux_os_components/#node-js-selector).
-
-**Apache mod_lsapi PRO**
-
-Mod_lsapi PRO is the fastest PHP handler for Apache. It is a drop-in replacement for SuPHP, FCGID, RUID2, and ITK. 
-It has a low memory footprint and understands `.htaccess` PHP directives.
-
-[See more](/cloudlinux_os_components/#apache-mod-lsapi-pro).
-
-**Reseller limits**
-
-Reseller limits is a feature that allows hosters to set limits for the resources each Reseller can operate with. 
-Server admin also provides controls on what resources each end user will have. Reseller limits set by a hoster 
-limit the total amount of resources resellers’ end users can consume altogether.
-
-When a hoster has set reseller limits for the particular reseller he provides the reseller with an ability to 
-set limits for his end users within the Reseller Interface.
-
-[See more](/cloudlinux_os_components/#reseller-limits).
-
-**LVE-stats 2**
-
-VE-stats 2 collects LVE usage statistics (CPU, memory, disk space usage) 
-and allows to collect the usage data.
-
-[See more](/cloudlinux_os_components/#lve-stats-2).
-
-## CloudLinux 9 beta
-
-The first release of CloudLinux 9 is available as Shared and Shared Pro editions.\
-Admin and Solo editions temporarily unavailable to install or activate because of no panel/custom panel release only.\
-Other editions support will be extended once major control panels add support of CL9.
-
-### CloudLinux 9 beta limitations
-
-In the non-panel environment, for now, we can guarantee all of the following CloudLinux Shared components functionality:
-
-* LVE limits
-* LVE Stats
-* MySQL Governor
-* CageFS
-* PHP Selector
-* HardenedPHP
-* Apache mod_lsapi PRO
-
-Due to integration restrictions with some panels, we are unable to retrieve panel-related information
-(e.g. a list of domains or handlers used).\
-As a result, we are currently unable to provide the following components:
-
-* PHP X-Ray
-* Slow Site Analyzer
-* Website Monitoring Tool
-* Ruby selector
-* Centralized Monitoring
-
-For the custom panel installations, once integration with the CloudLinux components is set, the following components
-will work in the CloudLinux OS 9 environment:
-
-* LVE limits
-* LVE Stats
-* MySQL Governor
-* CageFS
-* PHP Selector
-* HardenedPHP
-* Python Selector
-* NodeJS Selector
-* Apache mod_lsapi PRO
-* PHP X-Ray
-* Slow Site Analyzer
-* Reseller limits
-
-
-## CloudLinux OS life cycle
-
-CloudLinux OS follows the life cycle policy of RHEL. 
-Using a supported operating system is critical to maintaining a stable server environment.
-
-Currently, the following versions are available and supported:
-
-| |  | |
-|-|--|-|
-|Operating System | Release Date| End of Life and Support|
-|CloudLinux OS Shared 6 | Feb 1, 2011 | Nov 30, 2020 ([ELS until June 30, 2024](/cln/billing/#cloudlinux-os-6-extended-lifecycle-support)) |
-|CloudLinux OS Shared 7 | Apr 1, 2015 | Jun 30, 2024 |
-|CloudLinux OS Shared (Pro) 8 | Mar 17, 2020 | May 31, 2029 |
-|CloudLinux OS Solo (8) | Mar 17, 2020 | May 31, 2029 |
-|CloudLinux OS Admin (8) | Mar 17, 2020 | May 31, 2029 |
-|CloudLinux OS Shared (Pro) 9 | Jan 17, 2023 | May 31, 2032 |
diff --git a/docs/introduction/admin/README.md b/docs/introduction/admin/README.md
new file mode 100644
index 000000000..cc5065af8
--- /dev/null
+++ b/docs/introduction/admin/README.md
@@ -0,0 +1,59 @@
+# CloudLinux OS Admin Introduction
+
+## Description
+
+CloudLinux OS Admin is designed for shared hosting providers who want to flawlessly migrate their 
+big shared hosting customer to individual VPS with same CloudLinux features as on Shared hosting. 
+At the same time you will be able to separate such a user's websites if necessary and isolate them 
+with CageFS for efficient and extra security.
+Also it may be suitable for a little server with less than 5 customers on it.
+
+Most of the features of CloudLinux OS Legacy (Shared) are available in this edition, with a small differences:
+
+- lve limits are set to unlimited by default (can be changed in CloudLinux Manager at any time)
+- MySQL Governor is not available in this edition
+- the license itself does not allow more than 5 users to be hosted on server.
+
+:::tip Note
+The CloudLinux OS Admin plan does not include the MySQL Governor
+:::
+
+## Components
+
+CloudLinux OS Admin is very close to the regular CloudLinux Legacy (Shared) edition, which means that 
+99% of components described in this documentations are available for CloudLinux OS Admin.
+
+The exclusions are:
+
+ - [MySQL Governor](/cloudlinuxos/control_panel_integration/#mysql-governor) is not available
+ - [X-Ray](/cloudlinuxos/shared-pro/#x-ray) is available like with CloudLinux Shared Pro
+ - [Accelerate WP](/cloudlinuxos/shared-pro/#acceleratewp) is available like with CloudLinux Shared Pro
+
+The rest of the components are similar to CloudLinux OS Legacy (Shared).  
+
+## Licensing 
+
+### Installation process
+
+CloudLinux OS Admin installation process is the same as for other editions – use the [installation guide](/cloudlinuxos/cloudlinux_installation) for detailed instructions. The only difference is to purchase a CloudLinux OS Admin license from [cln.cloudlinux.com](https://cln.cloudlinux.com).
+
+:::tip Note
+The CloudLinux OS Admin can be installed and compatible only with AlmaLinux OS 8+.
+:::
+
+### Switch license
+
+You can convert your existing CloudLinux OS Solo installation to CloudLinux OS Admin.
+
+1. Obtain new key from [CLN](https://cln.cloudlinux.com)
+2. Run `rhnreg_ks --force --activationkey=<new_key>`
+
+You can pass `--migrate-silently` argument to skip confirmation.
+
+## FAQ
+
+**Q**: *Is it possible to convert my existing CloudLinux OS Legacy (Shared) server into CloudLinux OS Admin?*<br>
+**A**: Yes, for CloudLinux 8 and higher it is possible to convert CloudLinux OS Legacy (Shared) to any other edition like CloudLinux OS Admin, Solo, Shared Pro. For CloudLinux 7 it is only possible to convert it into Shared Pro.
+
+**Q**: *Is Centralized Monitoring supported on CloudLinux OS Admin?*<br>
+**A**: No, Centralized Monitoring only works with CloudLinux OS Shared Pro license.
\ No newline at end of file
diff --git a/docs/introduction/cloudlinux-os-editions/README.md b/docs/introduction/cloudlinux-os-editions/README.md
new file mode 100644
index 000000000..8d6f27991
--- /dev/null
+++ b/docs/introduction/cloudlinux-os-editions/README.md
@@ -0,0 +1,139 @@
+# Introduction to CloudLinux OS 
+
+* [CloudLinux OS editions](/introduction/cloudlinux-os-editions/)
+    * [CloudLinux OS Solo](/introduction/solo/)
+    * [CloudLinux OS Admin](/introduction/admin/)
+    * [CloudLinux OS Shared (Pro)](/cloudlinuxos/shared-pro/)
+* [CloudLinux OS components](/introduction/cloudlinux-os-editions/#cloudlinux-os-components)
+* [CloudLinux OS life cycle](/introduction/cloudlinux-os-editions/#cloudlinux-os-life-cycle)
+
+## CloudLinux OS editions
+
+|**Features**|**CloudLinux OS Solo**|**CloudLinux OS Admin**| **CloudLinux OS Legacy (Shared)** |**CloudLinux OS Shared Pro**|
+|:-:|:-:|:-:|:------------------------:|:-:|
+|Maximum amount of hosting accounts|1|5|        unlimited         |unlimited|
+|Resource Limits (LVE)|No*|**Yes****|         **Yes**          |**Yes**|
+|Reseller Limits|No limits at all|No|         **Yes**          |**Yes**|
+|Cage FS|**Yes**|**Yes**|         **Yes**          |**Yes**|
+|MySQL Governor|No|No|         **Yes**          |**Yes**|
+|PHP Selector|**Yes**|**Yes**|         **Yes**          |**Yes**|
+|Python/Node.js Selectors|**Yes*****|**Yes*****|        **Yes*****        |**Yes*****|
+|Ruby Selector|No|**Yes*****|        **Yes*****        |**Yes*****|
+|HardenedPHP|**Yes**|**Yes**|         **Yes**          |**Yes**|
+|Apache mod_lsapi PRO|**Yes**|**Yes**|         **Yes**          |**Yes**|
+|SecureLinks|No|**Yes**|         **Yes**          |**Yes**|
+|Website monitoring tool|**Yes**|**Yes**|         **Yes**          |**Yes**|
+|Website monitoring alerts|**Yes**|**Yes**|         **Yes**          |**Yes**|
+|Slow Site analyzer|**Yes**|**Yes**|         **Yes**          |**Yes**|
+|PHP X-Ray|**Yes**|**Yes**|            No            |**Yes**|
+|Centralized Monitoring|No|No|            No            |**Yes**|
+|AccelerateWP|**Yes**|**Yes**|            No            |**Yes**|
+|Support 24/7|**Yes**|**Yes**|         **Yes**          |**Yes**|
+
+\* Only inodes limits are available.
+
+\** LVE limits are disabled by default.
+
+\*** Python/Node.js/Ruby Selectors are available only for cPanel, DirectAdmin servers, and servers with custom panel with own integration.  
+
+## CloudLinux OS components
+
+**CloudLinux Manager**
+
+LVE is a Lightweight Virtualized Environment.
+CloudLinux Manager allows you to maintain fine-tuned control over your resources,
+including CPU, IO rate, memory, inodes, numbers of processes, and concurrent connections,
+that any single account can use. Now you can limit resource abuse, while allowing good customers to use what they need.
+
+[See more](/cloudlinuxos/lve_manager/).
+
+**CageFS**
+
+CageFS is a virtualized, per-user file system that uniquely encapsulates each customer,
+preventing users from seeing each other and viewing sensitive information. CageFS prevents a large number of attacks,
+including most privilege escalation and information disclosure attacks. It is completely transparent to your customers,
+without any need for them to change their scripts.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#cagefs).
+
+**MySQL Governor**
+
+:::tip Note
+This component is not available in the CloudLinux OS Admin edition.
+:::
+
+MySQL Governor tracks CPU and disk IO usage for every user in real time and throttles MySQL queries by using LVE limits. By using the [dbtop](/command-line_tools/#dbtop) utility, it is possible to see the database usage on a per-customer basis, ensuring that the system admin always know what is going on.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#mysql-governor).
+
+**PHP Selector**
+
+PHP Selector allows end users to select the specific version of PHP they need. It allows ultimate flexibility by offering all
+popular versions of PHP, with more than 120 PHP extensions to choose from.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#php-selector).
+
+**Ruby Selector**
+
+Ruby Selector allows end users to choose the Ruby version for applications and install additional modules
+to the application environment. Ruby Selector uses `mod_passenger` for delivering optimum performance.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#ruby-selector).
+
+**Python Selector**
+
+Python Selector allows end users to choose the Python version for applications and install additional modules.
+Python Selector uses `mod_passenger` to get the best performance from Python applications.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#python-selector).
+
+**Node.js Selector**
+
+Node.js Selector is a CloudLinux OS component that allows each user to easily create Node.js applications,
+choose Node.js versions and other parameters for applications based on their needs.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#node-js-selector).
+
+**Apache mod_lsapi PRO**
+
+Mod_lsapi PRO is the fastest PHP handler for Apache. It is a drop-in replacement for SuPHP, FCGID, RUID2, and ITK.
+It has a low memory footprint and understands `.htaccess` PHP directives.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#apache-mod-lsapi-pro).
+
+**Reseller limits**
+
+Reseller limits is a feature that allows hosters to set limits for the resources each Reseller can operate with.
+The server admin also provides controls on what resources each end user will have. Reseller limits set by a hoster
+limit the total amount of resources resellers’ end users can consume altogether.
+
+When a hoster has set reseller limits for the particular reseller he provides the reseller with an ability to
+set limits for his end users within the Reseller Interface.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#reseller-limits).
+
+**LVE-stats 2**
+
+LVE-stats 2 collects LVE usage statistics (CPU, memory, disk space usage),
+and allows to collect the usage data.
+
+[See more](/cloudlinuxos/cloudlinux_os_components/#lve-stats-2).
+
+## CloudLinux OS life cycle
+
+CloudLinux OS follows the life cycle policy of RHEL.
+Using a supported operating system is critical to maintaining a stable server environment.
+
+Currently, the following versions are available and supported:
+
+| |  | |
+|-|--|-|
+|Operating System (all editions) | Release Date| End of Life and Support|
+|CloudLinux OS 6 | Feb 1, 2011 | Nov 30, 2020 ([ELS until June 30, 2024](/cln/billing/#cloudlinux-os-6-extended-lifecycle-support)) |
+|CloudLinux OS 7 | Apr 1, 2015 | Jun 30, 2024 (ELS until June 30, 2026) |
+|CloudLinux OS 8 | Mar 17, 2020 | May 31, 2029 |
+|CloudLinux OS 9 | Jan 17, 2023 | May 31, 2032 | 
+
+:::tip 
+We retain the ability to produce critical updates for CL6 for at least the next 3 months. This period may extend to 6 or 12 months, depending on emerging necessities. More [here](https://blog.cloudlinux.com/end-of-life-announcement-for-cloudlinux-os-6). 
+:::
diff --git a/docs/introduction/solo/README.md b/docs/introduction/solo/README.md
new file mode 100644
index 000000000..9cfbd0b10
--- /dev/null
+++ b/docs/introduction/solo/README.md
@@ -0,0 +1,245 @@
+# CloudLinux OS Solo Introduction 
+
+## What is CloudLinux OS Solo
+
+CloudLinux OS Solo is designed for installation on VPS or dedicated servers with a single hosting account for any number of websites.
+
+Unlike [CloudLinux OS Legacy (Shared)](/introduction/), this edition is not designed for Shared Hosting usage and it does not include any [LVE-related](/cloudlinuxos/lve_manager/) features.
+
+We provide the CloudLinux OS Solo with pre-installed features, but for grafical interface, please install a control panel on your server.
+
+:::warning
+Currently supported OS version is CloudLinux OS Solo 8+ only. Therefore, for now, there is no possibility to use CloudLinux OS Solo on servers with OS version 6 and 7.
+Please refer to the [currently supported OS versions](/introduction/#cloudlinux-os-solo-lifecycle).
+:::
+
+### Benefits
+
+We believe that this distribution will be useful for you if: 
+1. as a site owner you have different performance issues with websites hosted. 
+   CloudLinux OS Solo provides a set of tools for website monitoring and performance tracking out-of-box;
+2. as a service provider you sell VPS servers and some of your customers require OS with extensive features 
+   for better security, support, and performance.
+
+In any case we provide you [24/7 professional support](https://cloudlinux.zendesk.com/)
+to resolve any issues related to CloudLinux OS, its unique components and kernel.
+
+### CloudLinux OS Solo Features
+ 
+We've pre-installed a couple of useful features in our distribution. The complete list of supported features is available in the [table above](/solo/introduction/#cloudlinux-os-editions-comparison).
+
+* **CloudLinux Manager**
+
+  CloudLinux Manager is a plugin which allows you to control all the
+  CloudLinux settings from an easy-to-use web UI integrated into your control panel. 
+  
+  The sub-modules you can find in CloudLinux Manager are Website Monitoring tool, PHP Slow Site analyzer, and X-Ray.
+
+  [See more](/solo/manager/).
+
+* **Website Monitoring tool**
+
+  Website Monitoring tool is a tool that allows you to track your websites uptime 
+  and receive notifications about problems with access.
+
+  Website Monitoring tool can gather and display information regarding the slowest websites on the server, 
+  notify by emails about errors happened on websites and send you daily website performance reports.
+
+  [See more](/cloudlinuxos/lve_manager/#website-monitoring-tab).
+
+* **PHP Slow Site analyzer**
+
+  PHP Slow Site analyzer (SSA) is a tool that generates daily reports for the server administrator 
+  with information about the top N slow PHP-based URLs for all domains.
+
+  The Slow Site analyzer tracks all PHP-based requests and selects slow ones by specific rules.
+
+  [See more](/cloudlinuxos/lve_manager/#php-slow-site-analyzer).
+
+* **X-Ray**
+
+  X-Ray is a tool developed for website performance monitoring and performance issues detection.
+
+  X-Ray can gather and visualize information about top slowest system functions, external requests, 
+  software modules and database queries of the client’s PHP website.
+
+  [See more](/cloudlinuxos/shared-pro/#x-ray).
+
+### How can I try your distribution before paying for it?
+
+We provide trial licenses for 30 days. You can get your trial key in two ways:
+
+1. On the CloudLinux OS Solo main page, see [CloudLinux OS Solo](https://lp.cloudlinux.com/cloudlinux-os-solo).
+2. In the CloudLinux Manager plugin, see the [Getting trial key](/solo/manager/#activation) section.
+
+
+The trial key must be entered during installation.
+
+### CloudLinux OS Solo Lifecycle
+
+CloudLinux OS Solo has the same life cycle policy as RHEL. 
+Using a supported operating system is critical to maintaining a stable server environment.
+
+Currently, the following version are supported:
+
+|Operating System | Release Date| End of Life and Support|
+|-|--|-|
+|CloudLinux OS Solo 8 | Jun 1, 2021 | May 31, 2029 |
+
+### What's next
+
+1. The [Installation](/cloudlinuxos/cloudlinux_installation/) section contains information about how to install this OS.
+2. The [landing page](https://lp.cloudlinux.com/cloudlinux-os-solo) contains the instructions about how to buy license or get trial. 
+
+## Licensing
+
+### Getting license
+
+You will need a trial or payed activation key to be able to use your CloudLinux OS Solo server. 
+Please [refer to this page](https://lp.cloudlinux.com/cloudlinux-os-solo) to find information on how to get activation key.
+
+The activation key looks like: `CLSOLO-d34463a182fede4f4d7e140f1841bcf2`
+
+Use it to [activate your system](/solo/activation/#license-activation) 
+or to [convert server to CloudLinux](/solo/installation/#converting-existing-servers) server.
+
+:::warning
+The CloudLinux OS Solo activation key is used ONLY for registration CloudLinux OS Solo 8.
+Trying use it for registration CloudLinux OS Legacy (Shared) 6/7/8 or converting from CentOS 6/7/ 8 to CloudLinux OS Legacy 6/7/8 cause errors.
+:::
+
+:::tip Note
+Activation gives you access to the [CloudLinux Manager](/solo/manager/#cloudLinux_manager) features and system updates. 
+:::
+
+### License activation
+
+There are several ways to register your server with CloudLinux Network:
+
+using the activation key by following commands:
+
+```
+yum install rhn-setup --enablerepo=cloudlinux-base
+/usr/sbin/rhnreg_ks --activationkey=<activation key>
+```
+
+using IP-based licensing:
+
+```
+yum install rhn-setup --enablerepo=cloudlinux-base
+/usr/sbin/clnreg_ks
+``` 
+
+## FAQ
+
+[[toc]]
+
+### What is the difference between CloudLinux Solo and CloudLinux OS Legacy (Shared)?
+
+CloudLinux OS Solo is not designed for shared hosting usage and it does not include any [LVE-related](/cloudlinuxos/lve_manager/) features. 
+
+CloudLinux OS Solo provides a set of tools for website monitoring and performance tracking out-of-box. [Read more](/solo/manager/).
+
+### Can I convert CloudLinux Solo to CloudLinux Legacy?
+
+Yes, you can follow the [instruction](/cloudlinuxos/cloudlinux_installation/#switch-license).
+
+### Is the CloudLinux OS Solo paid/unpaid?
+
+You should purchase a license to use CloudLinux OS Solo.
+
+### Where can I get the latest ISO of CloudLinux OS Solo?
+
+You can download the latest ISO and use it to install CloudLinux OS Solo on your server using [this link](https://repo.cloudlinux.com/cloudlinux/8/iso/x86_64/).
+
+### How can I get the CloudLinux OS Solo trial license?
+
+Please refer to [this page](https://cloudlinux.com/trial) to find information on how to get the trial license and the activation key.
+
+### How many servers can I use with the trial license?
+
+The number of servers is unlimited.
+
+### What control panel can be used with CloudLinux OS Solo?
+
+For the current implementation, we recommend using cPanel Solo, Plesk, DirectAdmin or Webuzo.
+
+### How can I get support for my CloudLinux OS Solo servers?
+
+Please feel free to ask your questions [here](https://cloudlinux.zendesk.com/hc/en-us/).
+
+### Can I convert to CloudLinux OS Solo from another OS?
+
+You can convert CentOS/AlmaLinux OS to CloudLinux OS Solo. Please refer to [this instruction](/solo/installation/#converting-existing-servers).
+
+### What is the Website Monitoring tool intended for?
+
+The Website Monitoring tool is intended for monitoring the domain main page generation time and errors occurring when requesting the main page (the main tab).
+
+* The administrator can get the list of the slowest requests during 24 hours (the PHP Slow Site analyzer tab).
+* The administrator can receive the daily reports with the list of the slow requests.
+* The administrator receives instant emails if the domain main page is unavailable.
+
+You can read more about the Website Monitoring tool [here](/cloudlinuxos/lve_manager/#website-monitoring-tab).
+
+### What is the X-Ray tool intended for?
+
+The X-ray tool is intended for deep analysis of slow request cause. The X-ray tool can provide information about software modules and plugins execution time, database queries, system functions and external requests execution time.
+
+It can be used by the administrator and by the user.
+
+You can read more about the X-Ray tool [here](/solo/manager/#x-ray).
+
+### Will the Website Monitoring Tool (WMT) work with the LiteSpeed and Nginx web servers?
+
+Yes, they will.
+
+### Why I don't receive emails from the Website Monitoring tool?
+
+Please verify your cPanel firewall settings.
+
+### Can I use other CloudLinux products (Imunify360, KernelCare) with CloudLinux OS Solo?
+
+Yes, it is possible.
+
+### Can I register my CloudLinux OS Legacy (Shared) 6/7/8 with CloudLinux OS Solo trial key?
+
+No, you cannot.
+
+### Can I convert CentOS 6,7 to CloudLinux OS Solo 8+ using the cldeploy script?
+
+No, you cannot. Only CentOS 8/AlmaLinux 8+ can be converted.
+
+### Does CloudLinux OS Solo work with LiteSpeed?
+
+**CloudLinux OS Solo is not officially supported or tested with LiteSpeed at this time.** While it may work in some cases, we do not guarantee compatibility and cannot provide official support for this configuration. Use of CloudLinux OS Solo with LiteSpeed is at your own discretion and may result in unexpected behavior or limitations.
+
+### What is the process of upgrading if the customer adds more users to the server and will have to upgrade? (i.e., upgrading from CloudLinux OS Solo to CloudLinux OS Legacy (Shared))
+
+Follow the edition switching [procedure](/cloudlinuxos/cloudlinux_installation/#switch-license).
+
+### How to set up PHP-fpm handler for the domain?
+
+Since the PHP-fpm handler is required to use AccelerateWP, you may need to configure it manually.
+
+These are configuration steps:
+
+1. Ensure the PHP-fpm package for the current PHP version is installed or install it.
+
+    * **Manual installation**
+    
+    Run the following command:
+    ```
+    yum -y install ea-phpXY-php-fpm
+    ```
+    Where `XY` - is required PHP version, for instance `ea-php74-php-fpm`
+
+    * **Via MultiPHP Manager**
+
+    ![](/images/solo/faq/InstallationViaMultiPHPManager.webp)
+
+
+2. Enable PHP-fpm handler for domain via MultiPHP Manager
+
+![](/images/solo/faq/EnablePHPFpm.webp)
+
diff --git a/docs/shared-pro/.DS_Store b/docs/shared-pro/.DS_Store
deleted file mode 100644
index 82455c348..000000000
Binary files a/docs/shared-pro/.DS_Store and /dev/null differ
diff --git a/docs/shared-pro/README.md b/docs/shared-pro/README.md
deleted file mode 100644
index 27e236090..000000000
--- a/docs/shared-pro/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# CloudLinux OS Shared Pro
\ No newline at end of file
diff --git a/docs/shared-pro/accelerate-wp/.DS_Store b/docs/shared-pro/accelerate-wp/.DS_Store
deleted file mode 100644
index d126a2d31..000000000
Binary files a/docs/shared-pro/accelerate-wp/.DS_Store and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/README.md b/docs/shared-pro/accelerate-wp/README.md
deleted file mode 100644
index e357af854..000000000
--- a/docs/shared-pro/accelerate-wp/README.md
+++ /dev/null
@@ -1,672 +0,0 @@
-
-# AccelerateWP
-
-## Get started
-
-AccelerateWP carries a suite of optimization features that can be enabled and automatically configured for the end-user's site.
-
-There are AccelerateWP and AccelerateWP Premium feature suites.
-
-AccelerateWP suite is always enabled when AccelerateWP is turned on. Choose whether you want to offer AccelerateWP Premium 
-for your users and click "Turn on" to start exploring AccelerateWP. 
-
-![](./images/AWPGettingStarted.png)
-
-Once the AccelerateWP suite is enabled by administrator,
-end-users will see an AccelerateWP tab in their cPanel interface and be able to activate the optimization feature.
-
-When AccelerateWP Premium suite enabled by administrator, 
-end-users will see the Object Caching feature in their interface, 
-but cannot install the plugin unless they purchase the feature using [WHMCS or 3'd party billing](./#whmcs-billing).
-
-### AccelerateWP suite
-This is a basic suite which includes [AccelerateWP base feature](https://user-docs.cloudlinux.com/wpos-plugin/#acceleratewp-feature-wordpress-optimization-plugin): 
-a WordPress optimization plugin that provides full page caching, GZIP compression and some other useful optimizations.
-
-**AccelerateWP suite limitations**
-* the website must be served with Apache web server;
-* the website must use PHP version 7.2 or higher.
-* the WordPress version must be 5.6 and higher.
-* the other WordPress Caching plugins must not be installed.
-* the WordPress should not run in Multisite mode.
-
-### AccelerateWP Premium suite
-
-:::warning Attention
-This feature is free of charge only during the beta testing period. 
-Afterwards it will be charged. Beta testing period ends no earlier than March 2023.
-:::
-
-This is a premium suite which includes [Object Caching feature](https://user-docs.cloudlinux.com/wpos-plugin/#acceleratewp-premium-object-caching-feature).
-
-The Object Caching mechanism stores database query results in additional storage for quick access. 
-This mechanism is really helpful in case if website needs to process multiple pages per second as 
-requests come in and may be helpful in case when full page caching cannot be used, e.g. on personalized pages.
-
-**Premium suite limitations**
-
-* the website must be served with Apache web server;
-* the website must use one of the following PHP handlers:
-  * [php-fpm](https://blog.cpanel.com/how-to-use-php-fpm-with-cpanel/)
-  * [lsapi](/shared/cloudlinux_os_components/#apache-mod-lsapi-pro)
-* the website must use ea-PHP version 7.4 or 8.0.
-* the WordPress version must be 3.7 and higher.
-* the other WordPress Caching plugins must not be installed.
-* the [Snuffleupagus](https://snuffleupagus.readthedocs.io/) must be turned off.
-* the WordPress should not run in Multisite mode.
-
-
-## Limitations
-There are the following requirements to use AccelerateWP:
-* the server must have CloudLinux Shared PRO license;
-* the server must be powered with cPanel or Plesk.
-
-
-## Administrator interface
-
-### Overview
-In the _CloudLinux Manager → AccelerateWP_ tab an administrator has the opportunity to provide end-users with a suite of features, which on its turn could be activated by end-users.
-To provide best experience,
-[activate free features for all end-users](./#activate-free-acceleratewp-for-all-wp-sites-on-the-server).
-
-![](./images/AWPAdmin.png)
-
-By toggling the `Enable AccelerateWP for all users` an administrator provides end-users with AccelerateWP feature.
-Once the feature suite is enabled by administrator, end-users will see an AccelerateWP tab in their control panel interface and be able to activate the optimization feature.
-
-### Suites usage statistics
-When AccelerateWP is enabled, the AccelerateWP usage statistics is shown.
-
-![](./images/AWPStats.png)
-
-It includes:
-* `Active Users` block with total number of users and number of users who has activated the optimization feature/total users
-* `Wordpress sites on server` block with total number of WordPress sites and WordPress sites optimized by the feature
-* statistics table
-
-Each row in the statistics table represents a particular user.
-
-The first column `#of Wordpress sites` shows total number of user's WordPress sites.
-
-The second column `AccelerateWP` shows number of user's WordPress sites, optimized by the feature.
-
-In case if both AccelerateWP and AccelerateWP Premium feature suites are enabled, 
-the statistics is extended with AccelerateWP Premium metrics.
-
-![](./images/AWPStatsPremium.png)
-
-Please notice the `AccelerateWP Premium` rows in the `Active Users` and the `Wordpress sites on server` 
-blocks, and also the `AccelerateWP Premium` column in statistics table.
-
-:::tip Note
-Newly created users will be accounted for 10 min after adding. 
-If you want to get updated statistics immediately, use the "Rescan users websites" button.
-:::
-
-### Filters
-You may use the following filters to browse AccelerateWP statistics slices.
-
-![](./images/AWPFilters.png)
-
-* `Users with WordPress sites only` filter will show statistics for users which already have WordPress sites; users without WordPress installations will be hidden
-* `Users with AccelerateWP only` filter will show statistics for users who utilizes the AccelerateWP optimization feature; users who did not activated AccelerateWP feature will be hidden
-* `Users with AccelerateWP Premium only` filter will show statistics for users who utilizes AccelerateWP Premium (Object Caching) feature; users who did not activated AccelerateWP Premium feature will be hidden
-
-
-## Activate free AccelerateWP for all WordPress sites on the server
-Use the `cloudlinux-awp-admin enable-feature` CLI command to
-ensure the best performance for every end-user. CLI command
-scans a server for all WordPress sites and activates the AccelerateWP
-feature suite. It can take up to 2 minutes for a single site. CLI command skips activation for WordPress sites with
-page caching or feature incompatibilities.
-
-:::tip Note
-Please make sure your AccelerateWP version is >= 1.2-2 before proceed.
-:::
-
-Scan the server in background mode and activate AccelerateWP
-on those WordPress sites where it is possible:
-```
-cloudlinux-awp-admin enable-feature --all
-```
-The output will state the number of users for the scan and the
-progress state of the process.
-
-Check activation status:
-```
-cloudlinux-awp-admin enable-feature --status
-```
-The output will be either:
-* Activation is still in progress,
-* Activation is done. The message will state how many users
-were initially for the scan, a number of WordPress sites with
-successfully activated suite, and the total number of WordPress sites
-scanned.
-
-## Disable AccelerateWP for a particular user
-Use CLI commands to disable undesired optimization suites for a single user.
-
-To disable AccelerateWP suite:
-```
-cloudlinux-awp-admin set-suite --suites=accelerate_wp --disallowed --users=<username>
-```
-
-To disable AccelerateWP Premium suite:
-```
-cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --disallowed --users=<username>
-```
-
-To disable both suites:
-```
-cloudlinux-awp-admin set-suite --suites=accelerate_wp,accelerate_wp_premium --disallowed --users=<username>
-```
-
-## Useful AccelerateWP CLI commands
-Use CLI commands to check AccelerateWP features status.
-
-If you are also interested in Smart Advice CLI command, they could be found [here](./#useful-smart-advice-cli-commands).
-
-:::warning Warning!
-This is an experimental feature. The backwards compatibility is not guaranteed.
-:::
-
-
-### AccelerateWP suites statistics
-
-Get suites statistics for all users:
-```
-cloudlinux-awp-admin get-report --all
-```
-
-or for a particular user:
-```
-cloudlinux-awp-admin get-report --users=<username>
-```
-
-This CLI command returns the following information:
-* total number of users in the report -- `total_users_count`
-* total number of websites in the report -- `total_wordpress_count`
-* total number of users with particular suite enabled -- `total_users_count_active`
-* total number of websites with particular suite enabled -- `total_sites_count_active`
-* number of websites with particular suite enabled per each user in the report -- `*_sites_count` in the `users` list
-* suites visibility status per each user in the report -- `suites` in the `users` list
-  * possible values for visibility status are: `visible`, `allowed`, `disabled`
-
-The example output for a single user is given below:
-
-```
-{
-    "last_scan_time": 1681198804,
-    "result": "success",
-    "timestamp": 1681203383.3503218,
-    "total_sites_count_active": {
-        "accelerate_wp": 1,
-        "accelerate_wp_premium": 0
-    },
-    "total_users_count": 1,
-    "total_users_count_active": {
-        "accelerate_wp": 1,
-        "accelerate_wp_premium": 0
-    },
-    "total_wordpress_count": 2,
-    "users": [
-        {
-            "accelerate_wp_active_sites_count": 1,
-            "accelerate_wp_premium_sites_count": 0,
-            "suites": {
-                "accelerate_wp": {
-                    "source": "manual",
-                    "status": "allowed"
-                },
-                "accelerate_wp_premium": {
-                    "source": "default",
-                    "status": "visible"
-                }
-            },
-            "username": "user16",
-            "wp_sites_count": 2
-        }
-    ]
-}
-```
-
-### AccelerateWP features statistics
-
-Get overall AccelerateWP features usage statistics for a server with:
-
-```
-cloudlinux-awp-admin get-stat
-```
-
-This CLI command returns the following information:
-* number of `allowed_users` in `total` and per feature
-* number of sites with enabled features in `total` and per feature -- `enabled_sites`
-* number of users with visible features in `total` and per feature -- `visible_users`
-* features which are currently allowed -- `features_allowed_by_default`
-* features which are currently visible -- `features_visible_by_default`
-
-The example output is given below:
-
-```
-{
-    "allowed_users": {
-        "object_cache": 0,
-        "site_optimization": 1,
-        "total": 1
-    },
-    "enabled_sites": {
-        "object_cache": 0,
-        "site_optimization": 1,
-        "total": 1
-    },
-    "features_allowed_by_default": [
-        "site_optimization"
-    ],
-    "features_visible_by_default": [
-        "object_cache",
-        "site_optimization"
-    ],
-    "is_accelerate_wp_flag_enabled": false,
-    "is_accelerate_wp_icon_enabled": true,
-    "result": "success",
-    "timestamp": 1681208259.19426,
-    "visible_users": {
-        "object_cache": 22,
-        "site_optimization": 22,
-        "total": 23
-    }
-}
-```
-
-### AccelerateWP features detailed statistics
-
-AccelerateWP features detailed statistics is available in user's environment only.
-
-Use the following CLI command **_on behalf of a user_**:
-
-```
-cloudlinux-awp-user get
-```
-
-The command reports:
-* features allowed for a user -- `allowed_features`
-* all user's websites `docroots` with features information per each `wps`, which includes:
-  * status of each feature -- if the feature is `enabled`, if the feature is `visible`
-  * issues detected (if any) for each feature
-* subscription status (for premium features) -- `subscription`
-* features visible for a user -- `visible_features`
-
-The example output is given below:
-
-```
-{
-    "allowed_features": {
-        "accelerate_wp": [],
-        "accelerate_wp_premium": []
-    },
-    "docroots": [
-        {
-            "domains": [
-                "user0.com"
-            ],
-            "php_handler": "fastcgi",
-            "php_version": "plesk-php73-fastcgi",
-            "wps": [
-                {
-                    "features": {
-                        "accelerate_wp": {
-                            "enabled": false,
-                            "issues": [
-                                {
-                                    "context": {
-                                        "plugins": "WP Rocket"
-                                    },
-                                    "description": "Found conflicting plugins: %(plugins)s.",
-                                    "fix_tip": "Deactivate and uninstall the conflicting plugin using the WordPress administration interface.",
-                                    "header": "Conflicting plugins are enabled",
-                                    "type": "incompatibility"
-                                }
-                            ],
-                            "visible": true
-                        },
-                        "object_cache": {
-                            "enabled": false,
-                            "issues": [
-                                {
-                                    "context": {
-                                        "blog_url": "https://blog.cloudlinux.com/",
-                                        "supported_handlers": "php-fpm, lsapi"
-                                    },
-                                    "description": "Website uses unsupported PHP handler. Currently supported handler(s): %(supported_handlers)s.",
-                                    "fix_tip": "Please, set or ask your system administrator to set one of the supported PHP handlers for the domain: %(supported_handlers)s. Or keep watching our blog: %(blog_url)s for supported handlers list updates.",
-                                    "header": "Unsupported PHP handler",
-                                    "type": "incompatibility"
-                                }
-                            ],
-                            "visible": true
-                        }
-                    },
-                    "path": "wordpress",
-                    "version": "6.2"
-                }
-            ]
-        },
-        {
-            "domains": [
-                "sub.user0.com"
-            ],
-            "php_handler": "fastcgi",
-            "php_version": "plesk-php73-fastcgi",
-            "wps": []
-        }
-    ],
-    "max_cache_memory": "64mb",
-    "result": "success",
-    "subscription": {
-        "object_cache": "no"
-    },
-    "timestamp": 1681200081.765476,
-    "upgrade_url": null,
-    "used_memory": null,
-    "visible_features": {
-        "accelerate_wp": [
-            "accelerate_wp"
-        ],
-        "accelerate_wp_premium": [
-            "object_cache"
-        ]
-    }
-}
-```
-
-## WHMCS billing
-
-CloudLinux developed it's own WHMCS plugin 
-which provides you AccelerateWP billing integration out of the box. 
-Check out [the documentation](/cln/whmcs_awp_plugin/#cloudlinux-whmcs-awp-plugin) to find how to install and use the plugin.
-
-## Other billing integration
-
-As AccelerateWP Premium is the feature that works on subscription basis, 
-we made it possible for hosters to integrate their existing billing systems with our plugin and sell the 
-feature for their users.
-
-When AccelerateWP Premium is enabled in admin interface, users get proposal to upgrade their subscription.
-
-![](./images/AWPUpgradeNoLink.png)
-
-When user upgrades the subscription to the plan with AccelerateWP support, 
-billing must execute the following command on the server:
-```
-cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --allowed --source=BILLING_OVERRIDE --users=<username>
-```
-
-This command makes two things:
-- allow user to install plugin, bypassing the upgrade window;
-- reports premium as being used to CLN, starting the billing cycle for hoster.
-
-
-When user terminates or downgrades plan, the following command must be executed by the billing system:
-```
-cloudlinux-awp-admin set-suite --suites=accelerate_wp_premium --default --source=BILLING_OVERRIDE --users=<username>
-```
-
-## Setup upgrade URL for AccelerateWP Premium
-
-The upgrade window can be customized with link to the plan upgrade page, which can be set using CLI command:
-
-```
-cloudlinux-awp-admin set-options --upgrade-url https://plan.upgrade/splash
-```
-
-![](./images/AWPUpgradeLink.png)
-
-AccelerateWP automatically appends GET parameters when the link is displayed.
-
-```
-https://plan.upgrade/splash/?m=acceleratewp&action=provisioning&username=democom&domain=demo.com&server_ip=10.51.0.10
-```
-
-| Parameter | Value        | Description                                              |
-|-----------|--------------|----------------------------------------------------------|
-| m         | acceleratewp | Constant.                                                |
-| action    | provisioning | Constant.                                                |
-| username  | democom      | Customer's account name.                                 |
-| domain    | demo.com     | Customer's account primary domain.                       |
-| server_ip | 10.51.0.10   | Primary IP of the server where AccelerateWP is installed |
-
-Parameters can be used to determine the billing account of the user in order to display proper page. 
-WHMCS plugin already has automatic redirect to upgrade page, there is only needed to set upgrade-url 
-to the root of your WHMCS instance.
-
-```
-cloudlinux-awp-admin set-options --upgrade-url https://whmcs.mydomain.zone/
-```
-
-Upgrade URL is opened in modal browser window and will be automatically closed
-when AccelerateWP receives callback about successful upgrade.
-
-Callback is already implemented in WHMCS plugin, but if you are using some other billing,
-you should add the following code on the page which appears when user successfully upgrades subscription.
-
-    <script>
-    if(window.opener && !window.opener.closed) {
-        window.opener.postMessage('PAYMENT_SUCCESS', '*');
-    }
-    </script>
-
-
-In order to remove the link, just set upgrade url to the empty one.
-
-```
-cloudlinux-awp-admin set-options --upgrade-url ''
-```
-
-## Disable AccelerateWP Premium
-
-If you would like to stop using AccelerateWP Premium, 
-click on the `manage` link and remove `Premium Features` checkbox.
-AccelerateWP will be still available for your users.
-
-![](./images/AWPDisablePremiumOnly.png)
-
-## Disable AccelerateWP
-
-If you would like to stop using AccelerateWP completely, toggle the `AccelerateWP` back.
-Both AccelerateWP and AccelerateWP Premium will be turned off.
-
-![](./images/AWPDisable.png)
-
-This operation will:
-* disable AccelerateWP tab in users' control panel interface
-* disable all AccelerateWP optimization suites
-* deactivate all optimization features for all users
-
-This operation will NOT:
-* cancel the subscription made by user in WHMCS or other billing. User's subscription stays 
-  alive and user will still be charged in billing system unless hoster manually makes a refund
-
-
-## Logs
-The main AccelerateWP log is located at
-* `/var/log/clwpos/main.log`
-
-
-In case if AccelerateWP Premium is active, the auxiliary monitoring daemon `clwpos_monitoring` is also activated. Its log is located at
-* `/var/log/clwpos/daemon.log`
-
-
-## FAQ
-
-### With which panel can I use AccelerateWP?
-
-Currently AccelerateWP is compatible with cPanel and Plesk only.
-
-If you are interested in supporting DirectAdmin control panel, please record your demand on our feature portal respectively:
-* [AccelerateWP for DirectAdmin](https://features.cloudlinux.com/c/15-acceleratewp-for-directadmin?utm_medium=social&utm_source=portal_share)
-
-
-### Is it possible to use AccelerateWP on a non-control panel server?
-
-No, AccelerateWP is compatible with cPanel and Plesk only.
-
-### Do you plan to enable support of Nginx server?
-
-This is a part of our very long term plans, thus not expected in the nearest future.
-
-### How will it help my customers?
-
-AccelerateWP is a complex solution to help your customers increase their WordPress site performance. AccelerateWP brings number of optimization features, like object caching, css and js preprocessing and website preloading.
-
-### How could I monitor Redis instances while using AccelerateWP Premium suite?
-
-Redis process is started for a user after activating AccelerateWP Premium Object Caching feature for at least one Wordpress site.
-It is killed after AccelerateWP Premium Object Caching has been deactivated for all user's websites.
-
-Look through the processes list to check Redis status for a particular user:
-```
- $ ps aux | grep redis
- awpuser  2662517  0.0  0.5 101096  8512 ?        Sl   15:33   0:00 /opt/alt/redis/bin/redis-server unixsocket:/home/awpuser/.clwpos/redis.sock
-```
-In case if AccelerateWP Premium is active, the auxiliary monitoring daemon `clwpos_monitoring` is also activated. It checks Redis instances each 5 minutes, starts new instances, restart failed ones and kills the “garbage” instances if needed.
-Check daemon status using `service clwpos_monitoring status` and its main log: `/var/log/clwpos/daemon.log`.
-
-## My users are complaining that their feature are not installed automatically after subscription upgrade
-This can be caused by several reasons. Either your customer's website was detected to have malfunctions
-or there was an issue with environment when feature was installed 
-(e.g. bad internet connectivity with wordpress market).
-
-First, try to enable feature manually using AccelerateWP interface. 
-Most likely you will find human-readable error message there.
-
-Next, you can try to dive into `/var/log/clwpos/daemon.log` and find the reason why the `enable` command failed.
-Here is an example of successful feature installation for reference:
-
-
-    2023-02-14 11:01:14,696: (clwpos.daemon_base) [INFO] Running cloudlinux-awp-user enable --feature object_cache --domain wpujj.com --wp-path
-    2023-02-14 11:01:15,081: (clwpos.daemon_base) [INFO] Command succeded with output:
-    `CompletedProcess(args=['/bin/cagefs_enter.proxied', 'cloudlinux-awp-user', 'enable', '--feature', 'object_cache', '--domain', 'wpujj.com', '--wp-path', ''], returncode=0, stdout='{\n    "context": {\n        "domain": "wpujj.com",\n        "feature": "object_cache"\n    },\n    "result": "success",\n    "timestamp": 1676372475.044419,\n \n}\n', stderr='')`
-    2023-02-14 11:01:15,086: (clwpos.daemon_base) [INFO] background process finished: pid=415368
-
-Also, some useful notes may be present in user's log located at `/home/<username>/.clwpos/main.log`.
-
-If the issue persists, or you cannot resolve it yourself, 
-contact CloudLinux support and attach `/var/log/clwpos/daemon.log` and `/home/<username>/.clwpos/main.log` 
-for further investigation.
-
-
-## Troubleshooting
-
-### End-users of AccelerateWP Premium feature encounter Redis extension is not installed for selected php version
-In order to make use of AccelerateWP Premium Object Caching feature, the loaded Redis extension is required for the end-user's website.
-End-users will not be able to activate the Object Caching feature until Redis extension configuration is incomplete.
-
-Corresponding incompatibility warning will be displayed in control panel's User interface:
-
-![](./images/AWPNoRedis.png)
-
-The Redis extensions are configured for all installed and supported PHP versions automatically:
-* right after the AccelerateWP Premium suite is enabled
-* by cron once a day
-
-or you can trigger the utility manually:
-```
-/usr/sbin/enable_redis_for_panel_php
-```
-
-All errors will be displayed in standard output and logged into `/var/log/clwpos/main.log`.
-
-
-**Ensuring the EA-PHP Redis extension is configured correctly**
-
-1. Check Redis extension package is installed by running the following command
-
-    ```
-    rpm -q ea-phpXY-php-redis
-    ```
-    Install the corresponding extension if it is not present:
-    ```
-    yum install ea-phpXY-php-redis
-    ```
-    Consider the example for checking out and installing Redis extension for `ea-php74`: 
-    ```
-    rpm -q ea-php74-php-redis
-    yum install ea-php74-php-redis
-    ```
-2. Check Redis `ini` file is present by running the following command:
-    ```
-    ls /opt/cpanel/ea-phpXY/root/etc/php.d/ | grep 50-redis
-    ```
-    Consider the example for checking out Redis extension for `ea-php74`: 
-    ```
-    ls /opt/cpanel/ea-php74/root/etc/php.d/ | grep 50-redis
-    ```
-    Try reinstalling the package if `ini` file is missing.
-3. Make sure Redis module is loaded under specific user by running the following command:
-    ```
-    su -c "php -m | grep redis" <username>
-    ```
-
-
-**Ensuring the ALT-PHP Redis extension is configured correctly**
-
-1. Check if `redis.so` is present for a particular alt-php version:
-    ```
-    ls /opt/alt/phpXY/usr/lib64/php/modules | grep redis.so
-    ```
-    Consider the example for checking alt-php74 redis.so:
-    ```
-    ls /opt/alt/php74/usr/lib64/php/modules | grep redis.so
-    redis.so
-    ```
-2. If the Redis module is missing:
-   
-   a. Install the `alt-phpXY-pecl-ext` package manually
-   b. Run the Redis configuration script `/usr/share/cloudlinux/wpos/enable_redis_for_alt_php.py`
-      
-   All errors will be displayed in standard output and logged into `/var/log/clwpos/main.log`.
-3. If the Redis module is present for a particular php version, but the incompatibility issue persists, re-check the following:
-    
-    a. Make sure the Redis module is loaded under user:
-    ```
-    su -c "php -m | grep redis" <username>
-    ```
-    b. Check the required extensions are enabled in `php.ini`:
-    ```
-    cat /opt/alt/phpXY/etc/php.ini | grep redis.so
-    cat /opt/alt/phpXY/etc/php.ini | grep json.so
-    cat /opt/alt/phpXY/etc/php.ini | grep igbinary.so
-    ```
-    
-    c. Enable missing extensions manually.
-
-
-### End-users of AccelerateWP encounter PHP-related issues during feature activation
-End-users may encounter PHP-related errors while activating the AccelerateWP features.
-
-![](./images/AWPBrokenPHP.png)
-
-The general examples of possible reasons are:
-* broken PHP binaries
-* missing PHP files
-* etc.
-
-To check that this issue is caused by PHP itself, call any PHP command, for example:
-```
-/opt/cpanel/ea-php80/root/usr/bin/php -i
-```
-And make sure that installed `ea-php80` packages are not broken using
-`rpm -V <package_name>`.
-
-Reinstall broken packages if found.
-
-Consider the example issue (presented at the picture above) with broken `mbstring.so` for `ea-php80`:
-```
-# /opt/cpanel/ea-php80/root/usr/bin/php -i
-Segmentation fault (core dumped)
-# rpm -V ea-php80
-# rpm -V ea-php80-php-mbstring
-S.5....T.    /opt/cpanel/ea-php80/root/usr/lib64/php/modules/mbstring.so
-......G..  a /usr/lib/.build-id/9c/38ed78a6d401ff6dce059ccea51c95870d98c5
-# yum reinstall ea-php80-php-mbstring
-```
\ No newline at end of file
diff --git a/docs/shared-pro/accelerate-wp/images/AWPAdmin.png b/docs/shared-pro/accelerate-wp/images/AWPAdmin.png
deleted file mode 100644
index dc9e8cf79..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPAdmin.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPBrokenPHP.png b/docs/shared-pro/accelerate-wp/images/AWPBrokenPHP.png
deleted file mode 100644
index 41ab367ec..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPBrokenPHP.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPDisable.png b/docs/shared-pro/accelerate-wp/images/AWPDisable.png
deleted file mode 100644
index 7372711b0..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPDisable.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPDisablePremiumOnly.png b/docs/shared-pro/accelerate-wp/images/AWPDisablePremiumOnly.png
deleted file mode 100644
index d3e2a03cc..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPDisablePremiumOnly.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPFilters.png b/docs/shared-pro/accelerate-wp/images/AWPFilters.png
deleted file mode 100644
index 2b7d3d3c1..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPFilters.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPGettingStarted.png b/docs/shared-pro/accelerate-wp/images/AWPGettingStarted.png
deleted file mode 100644
index 9bf1561ac..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPGettingStarted.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPNoRedis.png b/docs/shared-pro/accelerate-wp/images/AWPNoRedis.png
deleted file mode 100644
index 903b43202..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPNoRedis.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPStats.png b/docs/shared-pro/accelerate-wp/images/AWPStats.png
deleted file mode 100644
index 2f70ecd31..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPStats.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPStatsPremium.png b/docs/shared-pro/accelerate-wp/images/AWPStatsPremium.png
deleted file mode 100644
index 7543dfd6b..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPStatsPremium.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPUpgradeLink.png b/docs/shared-pro/accelerate-wp/images/AWPUpgradeLink.png
deleted file mode 100644
index e1662470a..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPUpgradeLink.png and /dev/null differ
diff --git a/docs/shared-pro/accelerate-wp/images/AWPUpgradeNoLink.png b/docs/shared-pro/accelerate-wp/images/AWPUpgradeNoLink.png
deleted file mode 100644
index 804f104f0..000000000
Binary files a/docs/shared-pro/accelerate-wp/images/AWPUpgradeNoLink.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/.DS_Store b/docs/shared-pro/centralized-monitoring/.DS_Store
deleted file mode 100644
index 95e835427..000000000
Binary files a/docs/shared-pro/centralized-monitoring/.DS_Store and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/README.md b/docs/shared-pro/centralized-monitoring/README.md
deleted file mode 100644
index 5d0fa52ab..000000000
--- a/docs/shared-pro/centralized-monitoring/README.md
+++ /dev/null
@@ -1,533 +0,0 @@
-# Centralized Monitoring
-
-## Description
-
-<span class="notranslate">Centralized Monitoring</span> is a tool that allows hosting administrators to monitor load for all their servers and users.
-
-<span class="notranslate">Centralized Monitoring</span> allows you to:
-
-* View system metrics for all clients’ end servers
-* View the LVE statistics per user for all clients’ end servers
-
-## Installation
-
-:::tip Note
-Make sure that `cm.cloudlinux.com` is available on your end server.
-:::
-
-1. Make sure you have a CloudLinux OS Shared Pro subscription.
-2. Make sure you have installed the **lve-utils** package version 4.2.21-2 or later. You can install or update it with the following commands:
-    * installation
-    ```
-    yum install lve-utils
-    ```
-    * update
-    ```
-    yum update lve-utils
-    ```
-3. Log in to the [https://cm.cloudlinux.com/](https://cm.cloudlinux.com/) using CLN credentials (if you are already logged in via CLN, authorization via CM is not necessary, it uses SSO).
-4. Activate statistics collection on all your servers via the Centralized Monitoring UI ([https://cm.cloudlinux.com](https://cm.cloudlinux.com)) or via the CLN UI [https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring](https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring).
-    ![](./images/CMInstallationProd.png)
-5. Within 5 hours from the activation, statistics collection and sending to the central server will be set up automatically: all required packages and components will be installed. For new, just registered servers, statistics collection and sending will be set up automatically within 5 hours.
-6. Make sure you have activated statistics collection (see paragraph 4) otherwise you will not be able to set up your servers. For instant set up of a registered server after statistics collection was enabled, run the following commands for all servers:
-    ```
-    # rhn_check	
-    # /usr/share/cloudlinux/cl_plus/manage_clplus enable
-    ```
-    **Note**: If the `rhn_check` command is not found, run the following command:
-    ```
-    # yum install/update rhn-check rhn-setup
-    ```
-7. After 5 hours (or after the manual setup), check that statistics for all registered servers is collected via [https://cm.cloudlinux.com/#/servers](https://cm.cloudlinux.com/#/servers). And check that user statistics on the servers is collected via [https://cm.cloudlinux.com/#/users](https://cm.cloudlinux.com/#/users).
-    :::tip Note
-    User statistics will be available only for users that were loaded starting from connecting the server to the Centralized Monitoring.
-    :::
-
-
-## Centralized Monitoring: mode without session expired
-
-Users can monitor server’s or user’s load for a long time using the mode without session expired.
-
-To turn on the mode without session expired, follow the next steps:
-
-1. Log in to the [cln.cloudlinux.com](https://cln.cloudlinux.com/console/) via your account
-2. Open the [cm.cloudlinux.com](https://cm.cloudlinux.com/#/servers) in a new browser tab/window (please, use the same browser as in step 1)
-3. Use the toggle to turn on/off 10 min auto logout
-
-    ![](./images/AutoLogout.png)
-
-Your session in the [cln.cloudlinux.com](https://cln.cloudlinux.com/console/) will expire in 10 min. But your session in the [cm.cloudlinux.com](https://cm.cloudlinux.com/#/servers) will not expire while your browser tab remains open.
-
-
-## Centralized Monitoring user interface
-
-
-You can access <span class="notranslate">Centralized Monitoring</span> in your [CLN account](https://cln.cloudlinux.com/).
-Click <span class="notranslate">C-Monitoring</span> in the left menu.
-
-![](./images/CMCLNAccount.png)
-
-### Servers
-
-
-This page contains the list of all clients’ end servers. The server appears in the list after finishing [Installation](./#installation-2). By default, there is a descending sort by CPU usage.
-
-![](./images/CMAllServers.png)
-
-The following values are available for each server:
-
-* <span class="notranslate">**Load Avg 15m**</span> – average system load for the last 15 min
-* <span class="notranslate">**CPU Usage**</span> – CPU usage for the last 15 min (the number of cores can be found in the hint)
-* <span class="notranslate">**Memory Usage**</span> – free available memory, the second value is the total memory for the last 15 min
-* <span class="notranslate">**IO read/write**</span> – disk read bytes/disk written bytes for the last 15 min
-
-:::tip Note
-The values are calculated using a 15 min time period but the metric state is updated automatically every minute by default or you can choose from one of the predefined periods.
-:::
-
-* <span class="notranslate">**Idle state**</span> – there were no statistics for the server for the last minute. 
-* <span class="notranslate">**N/A state**</span> – there were no statistics for the server for the last 30 days. This can happen if a new server was added but statistics sending was not configured.
-
-There is no pagination on the <span class="notranslate">_All servers_</span> page and all columns can be sorted by absolute value.
-Use the search tool to operate with the data.
-
-### Servers details
-
-To get the detailed statistics for the server via charts, click a desired server line in the table.
-All charts are auto-refreshed and there is an ability to select the period for metrics data to be updated for the chart.
-
-![](./images/CMUPdates.png)
-
-:::warning Note
-We store the metrics data for one month only.
-:::
-
-### Charts for server metrics
-
-### Visualization of the most popular server states
-
-![](./images/CMMostPopularStates.png)
-
-### Disk space usage
-
-![](./images/CMDiskSpaceUsage.png)
-
-### Open file descriptor/Context switches
-
-![](./images/CMOpenFileDescriptorContextSwitches.png)
-
-### System load 1m , 5m, 15m
-
-![](./images/CMSystemLoad.png)
-
-### CPU usage (total, system, user, iowait, steal)
-
-![](./images/CMSCPUUsag.png)
-
-### Network traffic usage
-
-![](./images/CMNetworkTrafficUsage.png)
-
-### Disk space usage
-
-![](./images/CMDiskSpaceUsageBasics.png)
-
-### Memory usage (total, used, available)
-
-![](./images/CMMemoryUsage.png)
-
-### Time spent doing I/Os
-
-![](./images/CMTimeSpentDoingIO.png)
-
-### Disk IOps Completed
-
-![](./images/CMDiskIOpsCompleted.png)
-
-### Disk read/write data
-
-![](./images/CMDiskReadWriteData.png)
-
-### Disk read/write time
-
-![](./images/CMDiskReadWriteTime.png)
-
-### Apache connections (number)/Number of requests per minute/Max connections
-
-
-:::warning Note
-In the current version, we collect these metrics for the cPanel end servers only. We are planning to add other panels support soon.
-:::
-
-:::warning Note
-In the current version, we collect these metrics only for Apache (NOT for LiteSpeed, Nginx, etc.). The charts will be empty for LiteSpeed, Nginx, etc..
-:::
-
-### MySQL queries
-
-![](./images/CMMySQLQueries.png)
-
-MySQL queries collector gets number of queries executed on the server per minute. It takes data from the MySQL server variable "Questions". You may manually check variable value by executing query `SHOW GLOBAL STATUS LIKE 'Questions';`. For more information about MySQL server variables - please, see MySQL documentation.
-
-### The most loaded server users for the last minute
-
-![](./images/CMMostLoadedUsers.png)
-
-We calculate the user’s load by LVE statistics that we collect on the end server.
-The idle state for the user means that the LVE statistics were not collected for the last minute for some reason.
-
-In each cell there are current usage/limit values for the basic LVE limits:
-
-* CPU Usage
-* Entry Processes
-* Physical Memory Usage
-* IOPS
-* IO Usage
-* Number of Processes
-* MySQL CPU
-* MySQL IO
-
-In the hint, there is a number of faults for each limit. The values in the columns are underlined (it is red if load-to-limit ratio >=90%  and it is yellow if load-to-limit ratio >= 50%). For the current implementation, the only sort by the load-to-limit ratio is available.
-By default, there is a descending sort by the CPU usage column.
-
-When sorting by a column, the lines with the load-to-limit ratio >=90% for this column will have the red background color, and lines with the load-to-limit ratio >=50% for this column will have the yellow background color.
-
-:::tip Note
-The users with unlimited resources (∞) will be at the bottom of the table. 
-:::
-
-### Users
-
-This page contains all users for the all server of the client and their LVE statistics for the last minute. You can select the number of users on this page and search by user’s data.
-
-The description of this page is the same as [*The most loaded server users for the last minute*](./#the-most-loaded-server-users-for-the-last-minute) of the top 5 loaded users.
-
-
-![](./images/CMUsers.png)
-
-User’s metrics data can be sorted by the load-to-limit ratio and by the absolute value.
-
-The absolute value is used to analyse the load produced by unlimited users.
-
-The value of the load-to-limit ratio is convenient to use in the analysis of how many resources the users consume and whether they need to change the limits.
-
-The values like this ![](./images/CMvalue.png) means that the resource is unlimited and 500.2 MB is the current usage of it.
-
-Metrics data of _Idle users_ is not used in the sorting, so such users always will be at the end of the list.  The sorting can be done for only one metric.
-
-### Charts for Users metrics 
-
-:::warning Note
-We store the metrics data for one month only.
-:::
-
-On the user details page, the admin can find the charts for all LVE limits.
-
-![](./images/CMUsersCharts.png)
-
-
-## Alert Manager
-
-Alert Manager allows you to create a server or user alert for selected metrics and email the triggered events.
-
-### Alert Manager page
-
-![](./images/CMAlertManager1.png)
-
-The Alert Manager page contains a table with the following:
-
-* **Alert name** - a unique alert name
-* **Tracking metric** - a name of a server/user metric which will trigger the alert notification
-* **# of servers** - number of servers on which the metric will be tracked
-  * click ![](./images/CMAlertManager2.png) to view a list of servers host names
-* **# of users** - number of users for which the metric will be tracked
-  * click ![](./images/CMAlertManager2.png) to view a list of users names
-* **Value** - a condition for the alert rule which will be applied to the tracking metrics
-* **Email** - email to send the triggered events notifications
-* **Type** - a type of the alert rule
-* **# of triggered events** - the number of events from the time, when alert rule was created
-  * ![](./images/CMAlertManager3.png) the event is still firing
-* **Time  of the last trigger** - the time of last triggered event, it is the time in your browser time zone
-* **Actions** - click ![](./images/CMAlertManager4.png) to edit and ![](./images/CMAlertManager5.png) to delete the alert rule
-
-**Color Codes**
-
-* **Red** color means that the event with the condition "more than" is still firing.
-* **Green** color means that the event with the condition "less than" is still firing.
-
-### Creating an alert
-
-To create a new alert, click the _Create alert_ button.
-
-![](./images/CMAlertManager7.png)
-
-Next, fill out the opened popup.
-
-![](./images/CMAlertManager6.png)
-
-* **Name of alert** - a unique alert name
-* **Alert type** - an admin can create a **user** or a **server** alert. [What is the difference between them?](./#difference-between-the-server-alert-and-the-user-alert)
-* **Select user/server** - admin will see such dropdown depending on a [case of alert creating](./#cases-of-alert-creating)
-* **Notify me** - the condition of the alert trigger
-* **Duration** - how much time the condition should be actual to trigger the notification
-* **Notify me on email** - the email to send notifications
-
-### Editing an alert
-
-An admin can edit any field in the Alert except the Alert type.
-
-### Difference between the server alert and the user alert
-
-The **server alert** is used to track the state of the  whole server, it does not track user state on the server.
-The **server alert** tracks the next list of metrics:
-
-1. Context switches
-2. System load (1m)
-3. System load (5m)
-4. System load (15m)
-5. CPU Basic (total)
-6. CPU Basic (system)
-7. CPU Basic (user)
-8. CPU Basic (iowait)
-9. CPU Basic (steal)
-10. Network Traffic Basic (`eht0_receive`)
-11. Network Traffic Basic (`eht0_transmit`)
-12. Network Traffic Basic (`ehtN_receive`)
-13. Network Traffic Basic (`ehtN_transmit`)
-14. Disk Space Used Basic (`mountpoint: <0>`)
-15. Disk Space Used Basic (`mountpoint: <1>`)
-16. Disk Space Used Basic (`mountpoint: <N>`)
-17. Memory Basic (available)
-18. Memory Basic (used)
-19. Time spent Doing I/Os
-20. Disk IOps Writes Completed
-21. Disk IOps Reads Completed
-22. Disk Read Data
-23. Disk Write Data
-24. Disk Read Time
-25. Disk Write Time
-26. Apache connections
-27. Number of requests per minute
-28. MySQL queries
-29. Hardware Temperature (`chip<0>`)
-30. Hardware Temperature (`sensor<0>`)
-31. Hardware Temperature (`chip<N>`)
-32. Hardware Temperature (`sensor<N>`)
-33. Open File Description
-
-During creating a server alert an admin should select the type of metrics as the first step. The list of servers will be collected according to the availability of these metrics on the server.
-
-For example, for now, we do not collect Apache metrics for non-cPanel servers, so you will get only cPanel servers as a list of servers for these metrics.
-
-We're planning to implement support for other panels/web servers in the next releases.
-
-:::tip Small limitation
-We collect the server list according to having their statistics in our database (this behavior will be changed in the next releases).
-:::
-
-For example, if server state is N/A or idle more than 24 hours, it will not be visible in the list for the alert.
-
-The **user alert** tracks the next list of LVE metrics:
-
-1. CPU Usage (current usage)
-2. CPU Usage (faults)
-3. Entry Processes (current usage)
-4. Entry Processes (faults)
-5. Physical Memory Usage (current usage)
-6. Physical Memory Usage (faults)
-7. IOPS (current usage)
-8. IOPS (faults)
-9. IO Usage (current usage)
-10. IO Usage (faults)
-11. Number of Processes (current usage)
-12. Number of Processes (faults)
-13. MySQL CPU (current usage)
-14. MySQL CPU (faults)
-15. MySQL IO (current usage)
-
-:::tip Small limitation
-We collect the server list according to having their statistics in our database (this behavior will be changed in the next releases).
-:::
-
-For example, if the user state is N/A or idle more than 24 hours, it will not be visible in the list for the alert.
-
-### Cases of alert creating
-
-* Creating a server alert for the selected metrics for one server
-* Creating a server alert for the selected metrics for all servers (the default value)
-  
-In this two cases, you will not see the dropdown for selecting users because the metrics will track the server state. 
-
-* Creating a user alert for one user, so admin can select a server and a user.
-* Creating a user alert for all users on several servers/all servers (in this case admin can't select users - all users will be selected automatically)
-
-### What is the Firing state of the alert?
-
-This is the state of an alert that has been active for longer than the configured threshold duration.
-
-
-### Alert notifications
-
-![](./images/CMAlertManager8.png)
-
-* **Alert name** - the link to the alert page
-* **Firing target** - the link to the server details page
-
-
-
-## FAQ
-
-### How can I disable collecting and sending statistics on a client’s server?
-
-Run this command:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/cl_plus/manage_clplus disable
-```
-</div>
-
-
-### Where can I view all my servers load?
-
-You can find all your servers load in your CM personal account here: [https://cm.cloudlinux.com/#/servers](https://cm.cloudlinux.com/#/servers) or in your CLN personal account here: [https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring](https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring).
-
-
-### Where can I view all my users load?
-
-You can find all your users load in your CM personal account here: [https://cm.cloudlinux.com/#/users](https://cm.cloudlinux.com/#/users) or in your CLN personal account here: [https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring](https://cln.cloudlinux.com/console/cloudlinux/centralized-monitoring)
-
-
-### Where can I view a server load details for a period?
-
-Click the desired server in the server list in the UI.
-
-### Where can I view a user load details for the period?
-
-Click the desired user in the user list in the UI.
-
-### How long are statistics stored in the central database?
-
-30 days.
-
-### How can I change the charts period on the details page?
-
-Choose the desired period in the upper right corner or select it directly on the chart.
-
-### I don’t understand how to read the user load chart.
-
-The user load chart contains three lines:
-
-* limit
-* current load
-* count of faults
-  
-Limit and current load are drawing regarding the left vertical axis, the count of faults is drawing regarding the right vertical axis. You can focus on a particular line by clicking a required legend.
-
-
-## Troubleshooting
-
-### I can't see a server statistics
-
-1. Check that your server is registered by key or by IP license of the CloudLinux+ account, i.e., it should be seen in the list of servers in your CLN account here: [https://cln.cloudlinux.com/console/auth/login](https://cln.cloudlinux.com/console/auth/login)
-2. Check that the following required packages are installed on the end server:
-* <span class="notranslate">`cl-end-server-tools`</span> >= 1.0.7-1
-* <span class="notranslate">`cl-node-exporter`</span> >= 1.1.0-2
-* <span class="notranslate">`rhn-client-tools`</span>
-    * CloudLinux OS Shared 6 >= 1.1.15-3.el6.cloudlinux.26
-    * CloudLinux OS Shared 7 >= 2.0.2-31.el7.clouldinux
-    * CloudLinux OS Shared 8 >= 2.8.16-14.module_el8.1.0+6074+9dc6073e.cloudlinux.2
-* <span class="notranslate">`lve-stats`</span> >= 3.0.7-2
-* <span class="notranslate">`lve-utils`</span> >= 4.2.21-2
-* <span class="notranslate">`alt-python27-cllib`</span> >= 2.1.13-1
-* `lvemanager` >= 6.2.10-1
-3. Check that service collecting and sending statistics is running:
-
-<div class="notranslate">
-
-```
-service cl_plus_sender status
-```
-</div>
-
-4. Check that log of the <span class="notranslate">_cl_plus_sender_</span> service doesn't contain errors:
-   
-<div class="notranslate">
-
-```
-/var/log/clplus_sender.log
-```
-</div>
-
-### Where can I view the events log on the client's server?
-
-You can view the events log on the client's server here: 
-
-<div class="notranslate">
-
-```
-/var/log/clplus_sender.log
-```
-</div>
-
-### Can I get monitoring metrics from LiteSpeed, Nginx or other (Not Apache) web server?
-
-Starting from end-server-tools-1.0.7, it supports collecting and sending statistics from the Apache and LiteSpeed web servers.
-
-LiteSpeed is supported on cPanel and DirectAdmin control panels.
-
-Each minute the statistics collection daemon checks which web server is started. If LiteSpeed is started, the daemon will collect data from it, otherwise, it checks if Apache is started.
-
-When the daemon detects that the server is changed, it writes the following line into the statistics collection daemon log `/var/log/clplus_sender.log`:
-
-```
-2020-10-09 17:25:31,462: (CL+_sender_daemon) [INFO] Apache/Litespeed collector: Using Apache
-```
-or
-
-```
-2020-10-09 18:13:03,897: (CL+_sender_daemon) [INFO] Apache/Litespeed collector: Using Litespeed
-```
-
-If the daemon can't detect either Apache or LiteSpeed, it writes to the log the following:
-
-```
-2020-10-09 17:33:38,399: (CL+_sender_daemon) [INFO] Apache/Litespeed collector: Apache or Litespeed stopped or absent, collector will not work
-```
-
-The statistics collection daemon reacts to the server changing automatically, no need to restart it.
-
-:::warning Warning
-Please note that the daemon checks the server type once in a minute, so the data sent on a minute of switching can be unreliable.
-:::
-
-### Logging data sent to pushgateway to the statistics collection daemon log
-
-Starting from `cl-end-server-tools` v.1.0.6-1, the statistics collection daemon allows to log data sent to pushgateway to its log `/var/log/clplus_sender.log`.
-
-To start logging, run the following command: 
-
-```
-touch /var/lve/cmt_debug_logging
-```
-
-To stop logging, run the following command: 
-
-```
-rm -f /var/lve/cmt_debug_logging
-```
-
-You don't need to restart the daemon after starting/stopping logging. The presence of a control file is evaluated "on the fly".
-
-:::warning Warning
-Use this logging with caution because when it is enabled, the size of the daemon log `/var/log/clplus_sender.log` will increase each minute minimum on 3-4 KB. The actual increase size depends on the number of active users' processes on a server.
-:::
-
-## Known issues
-
-* MySQL Governor statistics in some cases is collected incorrectly
-* Sorting by MySQL Governor statistics ignores idle users
-* Sorting from the search result set does not work
-* Sorting by ratio for unlimited users works incorrectly
-
diff --git a/docs/shared-pro/centralized-monitoring/images/AutoLogout.png b/docs/shared-pro/centralized-monitoring/images/AutoLogout.png
deleted file mode 100644
index 64afa3e9c..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/AutoLogout.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAlertManager1.png b/docs/shared-pro/centralized-monitoring/images/CMAlertManager1.png
deleted file mode 100644
index 3086cdade..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAlertManager1.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAlertManager2.png b/docs/shared-pro/centralized-monitoring/images/CMAlertManager2.png
deleted file mode 100644
index dac49b18b..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAlertManager2.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAlertManager3.png b/docs/shared-pro/centralized-monitoring/images/CMAlertManager3.png
deleted file mode 100644
index 00bae4f00..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAlertManager3.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAlertManager4.png b/docs/shared-pro/centralized-monitoring/images/CMAlertManager4.png
deleted file mode 100644
index ce0583d58..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAlertManager4.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAlertManager5.png b/docs/shared-pro/centralized-monitoring/images/CMAlertManager5.png
deleted file mode 100644
index b4777847c..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAlertManager5.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAlertManager6.png b/docs/shared-pro/centralized-monitoring/images/CMAlertManager6.png
deleted file mode 100644
index 64166de11..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAlertManager6.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAlertManager7.png b/docs/shared-pro/centralized-monitoring/images/CMAlertManager7.png
deleted file mode 100644
index 16be0c8e3..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAlertManager7.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAlertManager8.png b/docs/shared-pro/centralized-monitoring/images/CMAlertManager8.png
deleted file mode 100644
index 3de8103f9..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAlertManager8.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMAllServers.png b/docs/shared-pro/centralized-monitoring/images/CMAllServers.png
deleted file mode 100644
index 57606ca68..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMAllServers.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMCLNAccount.png b/docs/shared-pro/centralized-monitoring/images/CMCLNAccount.png
deleted file mode 100644
index 80fc3a865..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMCLNAccount.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMDiskIOpsCompleted.png b/docs/shared-pro/centralized-monitoring/images/CMDiskIOpsCompleted.png
deleted file mode 100644
index a78481b66..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMDiskIOpsCompleted.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMDiskReadWriteData.png b/docs/shared-pro/centralized-monitoring/images/CMDiskReadWriteData.png
deleted file mode 100644
index ed9dadb8b..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMDiskReadWriteData.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMDiskReadWriteTime.png b/docs/shared-pro/centralized-monitoring/images/CMDiskReadWriteTime.png
deleted file mode 100644
index 0c1f60905..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMDiskReadWriteTime.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMDiskSpaceUsage.png b/docs/shared-pro/centralized-monitoring/images/CMDiskSpaceUsage.png
deleted file mode 100644
index 4de2268d9..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMDiskSpaceUsage.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMDiskSpaceUsageBasics.png b/docs/shared-pro/centralized-monitoring/images/CMDiskSpaceUsageBasics.png
deleted file mode 100644
index 36c44da6e..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMDiskSpaceUsageBasics.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMInstallationProd.png b/docs/shared-pro/centralized-monitoring/images/CMInstallationProd.png
deleted file mode 100644
index 048cff808..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMInstallationProd.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMMemoryUsage.png b/docs/shared-pro/centralized-monitoring/images/CMMemoryUsage.png
deleted file mode 100644
index 21ca31cb1..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMMemoryUsage.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMMostLoadedUsers.png b/docs/shared-pro/centralized-monitoring/images/CMMostLoadedUsers.png
deleted file mode 100644
index 3d4c4b2b0..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMMostLoadedUsers.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMMostPopularStates.png b/docs/shared-pro/centralized-monitoring/images/CMMostPopularStates.png
deleted file mode 100644
index 7552f1ea1..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMMostPopularStates.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMMySQLQueries.png b/docs/shared-pro/centralized-monitoring/images/CMMySQLQueries.png
deleted file mode 100644
index 1c771a27c..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMMySQLQueries.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMNetworkTrafficUsage.png b/docs/shared-pro/centralized-monitoring/images/CMNetworkTrafficUsage.png
deleted file mode 100644
index 99608a8fb..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMNetworkTrafficUsage.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMOpenFileDescriptorContextSwitches.png b/docs/shared-pro/centralized-monitoring/images/CMOpenFileDescriptorContextSwitches.png
deleted file mode 100644
index af429ecb0..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMOpenFileDescriptorContextSwitches.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMSCPUUsag.png b/docs/shared-pro/centralized-monitoring/images/CMSCPUUsag.png
deleted file mode 100644
index 7dfb165af..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMSCPUUsag.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMSystemLoad.png b/docs/shared-pro/centralized-monitoring/images/CMSystemLoad.png
deleted file mode 100644
index 2e77616cc..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMSystemLoad.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMTimeSpentDoingIO.png b/docs/shared-pro/centralized-monitoring/images/CMTimeSpentDoingIO.png
deleted file mode 100644
index 5c7b30a99..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMTimeSpentDoingIO.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMUPdates.png b/docs/shared-pro/centralized-monitoring/images/CMUPdates.png
deleted file mode 100644
index 39b90e086..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMUPdates.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMUsers.png b/docs/shared-pro/centralized-monitoring/images/CMUsers.png
deleted file mode 100644
index 2bce007dc..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMUsers.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMUsersCharts.png b/docs/shared-pro/centralized-monitoring/images/CMUsersCharts.png
deleted file mode 100644
index 74c1f22bb..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMUsersCharts.png and /dev/null differ
diff --git a/docs/shared-pro/centralized-monitoring/images/CMvalue.png b/docs/shared-pro/centralized-monitoring/images/CMvalue.png
deleted file mode 100644
index 791647b5f..000000000
Binary files a/docs/shared-pro/centralized-monitoring/images/CMvalue.png and /dev/null differ
diff --git a/docs/shared-pro/shared/faq/README.md b/docs/shared-pro/shared/faq/README.md
deleted file mode 100644
index c93d689dc..000000000
--- a/docs/shared-pro/shared/faq/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# FAQ
-
-### What is the CloudLinux subsystem on Ubuntu?
-
-CloudLinux subsystem on Ubuntu is a scope of deb-packages which allows using CloudLinux features on Ubuntu OS.
-The main goal of this subsystem is to allow operating the already existed CloudLinux functionality on another OS.
-
-### How to install the CloudLinux subsystem on Ubuntu?
-
-See [Installation](/installation/).
-
-### Is the CloudLinux subsystem on Ubuntu paid/unpaid?
-
-During the beta period it is free.
-
-### Can I get the ISO for the CloudLinux subsystem on Ubuntu?
-
-As of now, only installation via `ubuntu2cloudlinux.py` is available.
-
-### What control panel can be used with the CloudLinux subsystem on Ubuntu?
-
-As of now, only cPanel is supported. Plesk and DirectAdmin are not supported.
-
-### How can I get support for my CloudLinux subsystem on Ubuntu servers?
-
-Feel free to contact Support via [Support Portal](https://www.cloudlinux.com/support-portal/).
-
-### Can I use other CloudLinux products (Imunify360, KernelCare) with the CloudLinux subsystem on Ubuntu?
-
-During the first beta release you cannot use other CloudLinux products (Imunify360, KernelCare) with the CloudLinux
-subsystem on Ubuntu We're planning to add them in the upcoming releases.
-
-### Can I use Docker with the CloudLinux subsystem on Ubuntu?
-
-You cannot use Docker with the CloudLinux subsystem on Ubuntu in the current version.
-
-### Is control panel integration functionality available in the current release?
-
-Yes, it is available.
-
-### How to set up a PHP-fpm handler for the domain?
-
-Since the PHP-fpm handler is required to use WP Optimization Suite, you may need to configure it manually.
-
-These are configuration steps:
-
-1. Ensure the PHP-fpm package for the current PHP version is installed or install it.
-
-    * Via MultiPHP Manager
-
-
-2. Enable PHP-fpm handler for domain via MultiPHP Manager
-
diff --git a/docs/shared-pro/shared/features/README.md b/docs/shared-pro/shared/features/README.md
deleted file mode 100644
index 6af98adf2..000000000
--- a/docs/shared-pro/shared/features/README.md
+++ /dev/null
@@ -1,395 +0,0 @@
-# Features
-
-Below, you can find the list of supported features with the links to the documentation available.
-
-## LVE limits
-
-* [Understanding limits](https://docs.cloudlinux.com/limits/#understanding-limits)
-* [SPEED limit](https://docs.cloudlinux.com/limits/#speed-limit)
-* [Memory limit](https://docs.cloudlinux.com/limits/#memory-limit)
-* [IO](https://docs.cloudlinux.com/limits/#io)
-* [IOPS](https://docs.cloudlinux.com/limits/#iops)
-* [Entry processes](https://docs.cloudlinux.com/limits/#entry-processes)
-* [Number of processes](https://docs.cloudlinux.com/limits/#number-of-processes)
-* [Inodes](https://docs.cloudlinux.com/limits/#inodes)
-* [Network traffic bandwidth control and accounting system](https://docs.cloudlinux.com/limits/#network-traffic-bandwidth-control-and-accounting-system)
-* [Limits validation](https://docs.cloudlinux.com/limits/#limits-validation)
-* [Compatibility matrix](https://docs.cloudlinux.com/limits/#compatibility-matrix)
-* [Reseller limits](https://docs.cloudlinux.com/limits/#reseller-limits)
-
-## Inode limits
-
-The documentation is available [here](https://docs.cloudlinux.com/limits/#inodes).
-
-## Reseller limits
-
-The documentation is available [here](https://docs.cloudlinux.com/limits/#reseller-limits).
-
-## MySQL Governor
-
-MySQL Governor is software to monitor and restrict MySQL usage in a shared hosting environment. The monitoring is done
-via resource usage statistics per each MySQL thread.
-
-MySQL Governor can also kill off slow SELECT queries.
-
-MySQL Governor has multiple modes of operations, depending on the configuration. It can work in monitor-only mode, or it
-can use different throttling scenarios.
-
-MySQL Governor allows restricting customers who use too many resources. It supports following limits:
-
-|       |       |                                                                                                        |
-|-------|-------|--------------------------------------------------------------------------------------------------------|
-| CPU   | %     | CPU speed relative to one core. 150% would mean one and a half cores                                   |
-| READ  | bytes | bytes read. Cached reads are not counted, only those that were actually read from disk will be counted |
-| WRITE | bytes | bytes written. Cached writes are not counted, only once data is written to disk, it is counted         |
-
-You can set different limits for different periods: current, short, med, long. By default those periods are defined as 1
-second, 5 seconds, 1 minute and 5 minutes. They can be re-defined using
-the [configuration file](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-and-operation). The idea is
-to use larger acceptable values for shorter periods. Like you could allow a customer to use two cores (200%) for one
-second, but only 1 core (on average) for 1 minute, and only 70% within 5 minutes. That would make sure that customer can
-burst for short periods of time.
-
-When a customer is restricted, the customer will be placed into special LVE with ID 3. All restricted customers will be
-placed into that LVE, and you can control the amount of resources available to restricted customers. Restricted
-customers will also be limited to only 30 concurrent connections. This is done so they wouldn't use up all the MySQL
-connections to the server.
-
-### Installation
-
-:::warning Attention!
-MySQL Governor on Ubuntu supports the following only:
-
-* cl-MySQL80 on non-panel system
-* cl-MySQL80 on cPanel
-* cl-MariaDB103 on non-panel system
-  :::
-
-1. Install MySQL Governor
-
-```
-apt  install governor-mysql
-```
-
-2. To use MySQL Governor with
-
-    * cl-MariaDB103
-    ```
-    /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mariadb103
-    ```
-    * cl-MySQL80
-    ```
-    /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mysql80
-    ```
-3. Backup your databases.
-4. Run the cl-MySQL/cl-MariaDB installation.
-
-```
-/usr/share/lve/dbgovernor/mysqlgovernor.py --install --yes
-```
-
-In case of installing on cPanel + Ubuntu server, set the following parameter:
-
-
-5. After installation, check that the database server is working properly. If you have any problems,
-   use [Support Portal]().
-6. Configure user mapping to the database. The mapping format is described in
-   the [following section](https://docs.cloudlinux.com/cloudlinux_os_components/#mapping-a-user-to-a-database).
-
-In case a non-panel system the `/etc/container/dbuser-map` should be created and updated with new users by admin.
-
-The format is as follows:
-
-```
-[dbuser_name1] [account_name1] [UID1]
-...
-[dbuser_nameN] [account_nameN] [UIDN]
-```
-
-The control panel should automatically generate such mapping and write it to the `/etc/container/dbuser-map`. Usually,
-it is enough to write a hook when adding, deleting or renaming a database for a user. The control panel should implement
-such a mechanism for MySQL Governor to operate properly. MySQL Governor automatically applies changes from the
-dbuser-map file every five minutes.
-
-7. MySQL Governor configuration can be found in the
-   following [section](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-3).
-8. MySQL Governor CLI tools description can be found in the
-   following [section](https://docs.cloudlinux.com/command-line_tools/#mysql-governor).
-9. Having configured the mapping use `dbtop` to see the current user load on the database (you'd need to make some
-   database queries).
-
-```
-dbtop
-```
-
-10. If the load appears in the dbtop output, then you have successfully configured MySQL Governor.
-
-### How To upgrade database server
-
-You can find the instructions
-in [this documentation](https://docs.cloudlinux.com/cloudlinux_os_components/#upgrading-database-server).
-
-### Uninstalling
-
-To remove MySQL Governor, run the following command:
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --delete
-```
-
-The script will install the original MySQL server, and remove MySQL Governor.
-
-### Configuration and operation
-
-You can find the instructions
-in [this documentation](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-and-operation).
-
-## Administrator WEB interface (CloudLinux Manager)
-
-The documentation is available [here](https://docs.cloudlinux.com/lve_manager/#cloudlinux-manager).
-
-* [Dashboard](/features/#dashboard)
-* [Current Usage](https://docs.cloudlinux.com/lve_manager/#current-usage)
-* [Users](https://docs.cloudlinux.com/lve_manager/#users)
-* [Statistics](https://docs.cloudlinux.com/lve_manager/#statistics)
-* [Packages](https://docs.cloudlinux.com/lve_manager/#packages)
-* [Options](https://docs.cloudlinux.com/lve_manager/#options)
-* [PHP Selector](https://docs.cloudlinux.com/cloudlinux_os_components/#php-selector)
-    * [Installation instructions](/features/#php-selector-installation-instructions)
-    * [Selector tab](https://docs.cloudlinux.com/lve_manager/#selector-tab)
-    * [Selector tab additional features (cPanel)](https://docs.cloudlinux.com/lve_manager/#selector-tab-additional-features)
-      CloudLinux Manager 6.0.1-2
-    * [PHP Selector troubleshooting (cPanel)](https://docs.cloudlinux.com/lve_manager/#php-selector-troubleshooting)
-      CloudLinux Manager 6.0.1-2
-    * [PHP Selector diagnostic tool and notifications](https://docs.cloudlinux.com/lve_manager/#php-selector-diagnostic-tool-and-notifications)
-      CloudLinux Manager 6.0.1-2
-
-### Dashboard
-
-:::warning Attention!
-MySQL Governor is not available in the current version. We're planning to add it in the upcoming releases.
-:::
-
-Dashboard provides a quick overview of statistics and all administrative information for server administrators.
-
-Go to _CloudLinux Manager_ | _Dashboard_.
-
-
-* End Users hitting limits — number of users reaching their limit in any kind of resource. Data is within the last 24
-  hours.
-* Resellers hitting limits — number of enrolled Resellers that are reaching their limit in any kind of resource. Data is
-  within the last 24 hours.
-* [PHP Selector](https://docs.cloudlinux.com/lve_manager/#php-selector-2) block displays the following information:
-    * Default version — the default version of PHP binaries. Click _Manage_ to change the default version, enable or
-      disable PHP Selector, change the list of supported versions, and choose default modules. You will be redirected to
-      CloudLinux Manager | PHP Selector. PHP Selector (cPanel) has malfunctions warnings
-      about [the most common issues](https://docs.cloudlinux.com/lve_manager/#errors).
-* [CageFS](https://docs.cloudlinux.com/cloudlinux_os_components/#cagefs) block displays the following information:
-    * CageFS status (Enabled/Disabled/Not installed). To manage CageFS, click _Manage_. You will be redirected to
-      CloudLinux Manager | Options | CageFS. Click _Install_ to install CageFS.
-    * Mode displays the current CageFS mode of operation.
-    * End users — displays the number of users with CageFS enabled/all.
-
-## Reseller WEB interface (CloudLinux Manager)
-
-* [Current Usage](https://docs.cloudlinux.com/lve_manager/#current-usage-tab)
-* [Historical Usage](https://docs.cloudlinux.com/lve_manager/#historical-usage-tab)
-* [Users](https://docs.cloudlinux.com/lve_manager/#users-tab)
-* [Statistics](https://docs.cloudlinux.com/lve_manager/#statistics-tab)
-* [Packages](https://docs.cloudlinux.com/lve_manager/#packages-tab)
-
-## User WEB interface
-
-* [Resource Usage](https://docs.cloudlinux.com/lve_manager/#resource-usage-client-plugin)
-* [PHP Selector](https://docs.cloudlinux.com/lve_manager/#php-selector-client-plugin)
-
-## LVE Wrappers
-
-The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#lve-wrappers).
-
-* lve_wrapper
-* lve_suwrapper
-
-## CageFS and running commands inside
-
-The documentation is
-available [here](https://docs.cloudlinux.com/control_panel_integration/#running-commands-inside-cagefs).
-
-* cagefs_enter
-* cagefs_enter_user
-
-## Hardened PHP
-
-* alt-php versions 5.6 - 8.0
-
-## Mod_hostinglimits
-
-LVE is a kernel level technology developed by the CloudLinux team. The technology has common roots with container based
-virtualization and uses cgroups in its latest incarnation. It is lightweight and transparent. The goal of LVE is to make
-sure that no single web site can bring down your web server.
-
-Today, a single site can consume all CPU, IO, Memory resources or Apache processes - and bring the server to a halt. LVE
-prevents that. It is done via collaboration of Apache module, PAM module and kernel.
-
-[mod_hostinglimits](https://docs.cloudlinux.com/cloudlinux_os_components/#hostinglimits-module-for-apache) is an Apache
-module that:
-
-* detects VirtualHost from which the request came;
-* detects if it was meant for CGI or PHP script;
-* puts Apache process used to serve that request into LVE for the user determined via SuexecUserGroup directive for that
-  virtual host;
-* lets Apache to serve the request;
-* removes Apache process from user's LVE.
-
-The kernel makes sure that all LVEs get fair share of the server's resources, and that no customer can use more then the
-limits set for that customer. Today we can limit CPU , Memory (virtual and physical), IO, number of processes as well as
-the number of entry processes (concurrent connections to apache).
-
-Each LVE limits amount of entry processes (Apache processes entering into LVE) to prevent single site exhausting all
-Apache processes. If the limit is reached, then mod_hostinglimits will not be able to place Apache process into LVE, and
-will return error code 508. This way very heavy site would slow down and start returning 508 errors, without affecting
-other users.
-
-* If the site is limited by CPU or IO, then the site will start responding slower.
-* If the site is limited by memory or number of processes limits, then the user will receive 500 or 503 errors that
-  server cannot execute the script.
-
-:::warning Attention!
-In the current version ONLY the following combinations are available: **ea-php81 with php-fpm** and **alt-php with
-suphp, cgi**
-:::
-
-#### ea-php81 with php-fpm
-
-To install, run the following command:
-
-```
-# apt install ea-php81*
-```
-
-#### alt-php with suphp, cgi
-
-To install, follow these steps:
-
-1. Remove `mod-ruid2`:
-
-
-2. Install packages (with `alt-php74` as an example):
-
-   ```
-   # apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
-   # apt install alt-php74
-   ```
-
-#### PHP Selector installation instructions
-
-The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#php-selector).
-
-:::warning Attention!
-Only the following handlers can be used:
-
-* suphp
-* cgi
-  :::
-
-To install, run the following commands:
-
-```
-# apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
-# apt install cagefs
-# cagefsctl –-init
-```
-
-## Symlink owner match protection
-
-The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-enforce-symlinksifowner).
-
-* [fs.enforce_symlinksifowner](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-enforce-symlinksifowner)
-* [fs.symlinkown_gid](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-symlinkown-gid)
-* [fs.process_symlinks_by_task](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-process-symlinks-by-task)
-
-## Link traversal protection
-
-* [fs.protected_symlinks_create](https://docs.cloudlinux.com/cloudlinux_os_kernel/#link-traversal-protection)
-* [fs.protected_hardlinks_create](https://docs.cloudlinux.com/cloudlinux_os_kernel/#link-traversal-protection)
-
-## Tuned profiles
-
-The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_kernel/#tuned-profiles-cloudlinux).
-
-## Apache mod_lsapi
-
-### General requirements
-
-General requirements are
-available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#general-information-and-requirements-9).
-
-### Installation
-
-Installation on cPanel servers with EasyApache 4:
-
-```
-$ apt install liblsapi liblsapi-dev 
-$ apt install ea-apache24-mod-lsapi
-$ /usr/bin/switch_mod_lsapi --setup
-$ service httpd restart
-```
-
-Installation on servers with no panel:
-
-```
-$ apt install liblsapi liblsapi-dev 
-$ apt install mod-lsapi
-$ /usr/bin/switch_mod_lsapi --setup
-$ service apache2 restart
-```
-
-### Configuration
-
-Configuration instructions are available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-4).
-
-### Troubleshooting
-
-In case the site responds with the error: 503 Service unavailable.
-
-1. Be sure that /opt has drwxr-xr-x permissions. It can be fixed with the following command:
-
-```
-$ chmod 755 /opt 
-```
-
-2. Change the default folder for mod_lsapi socket:
-
-```
-$ mkdir /var/mod_lsapi
-$ chown nobody.nobody /var/mod_lsapi
-$ chmod 755 /var/mod_lsapi
-```
-
-Add to /etc/apache2/conf.d/lsapi.conf new path:
-
-```
-lsapi_socket_path /var/mod_lsapi
-```
-
-And restart service:
-
-```
-$ service httpd restart
-```
-
-### Uninstall
-
-Uninstall procedure for cPanel servers with EasyApache 4:
-
-```
-$ /usr/bin/switch_mod_lsapi --uninstall
-$ apt remove liblsapi liblsapi-dev ea-apache24-mod-lsapi
-```
-
-Uninstall procedure for servers with no panel:
-
-```
-$ /usr/bin/switch_mod_lsapi --uninstall
-$ apt remove liblsapi liblsapi-dev mod-lsapi
-```
diff --git a/docs/shared-pro/wpos-plugin/README.md b/docs/shared-pro/wpos-plugin/README.md
deleted file mode 100644
index e9fbc03b4..000000000
--- a/docs/shared-pro/wpos-plugin/README.md
+++ /dev/null
@@ -1,515 +0,0 @@
-# AccelerateWP
-
-## Overview
-
-AccelerateWP is a complex solution to help customers increase their WordPress site performance.
-With AccelerateWP you can manage optimization features, like object caching, CSS and JavaScript
-preprocessing and website preloading.
-
-In order to start using AccelerateWP, go to the cPanel interface and find the `AccelerateWP`
-application in the `Software` section.
-
-
-If you use Plesk control panel, (1) trigger the side panel and (2) choose the AccelerateWP widget.
-
-![](/AWPPlesk.png)
-
-Click the application button and get into the AccelerateWP interface.
-
-![](/AWPUserUI.png)
-
-Each row in the table is the WordPress website that was found on server and each column is the
-optimization feature.
-
-AccelerateWP is built as advice-driven plugin: the feature is suggested to be enabled once
-the Smart Advice is issued. Smart advice may be issued during profiling a website with X-Ray.
-X-Ray PHP profiler detects concrete bottlenecks in website performance and thus is able to select
-a best suited optimization feature to increase it significantly.
-
-Use the `Advice available` link to check advice details and click the `Apply advice`
-button to activate the feature.
-
-![](/AdviceReview.png)
-
-After a couple of minutes, the feature will be activated and advice becomes `Applied`.
-Close the window and see `Active` link in the corresponding cell of the table.
-
-![](/AdviceApplied.png)
-
-If you still would like to try the feature on the website where advice was not issued,
-click on the gear icon and enable the feature.
-
-
-## AccelerateWP feature: WordPress optimization plugin
-
-AccelerateWP is a base feature that provides full page caching, GZIP compression and some other useful
-optimizations.
-
-In order to start working with AccelerateWP feature, check if advice is available in the corresponding
-cell on the intersection of website and AccelerateWP column.
-
-![](/AWPUserUI.png)
-
-And click the "Apply advice" button to activate the AccelerateWP feature.
-
-![](/AdviceReview.png)
-
-After a couple of minutes, the plugin will be installed.
-Login into the WordPress Admin and find the AccelerateWP in the list of active plugins.
-
-![](/WPPlugins.png)
-
-Page caching will be enabled by default. Click the "Settings" link below the plugin name to configure additional
-options.
-
-![](/AWPPlugin.png)
-
-### Limitations
-
-* Website must use PHP version 7.2 or higher.
-* WordPress version must be 5.6 and higher.
-* Other WordPress Caching plugins must not be installed.
-* WordPress should not run in Multisite mode.
-
-## AccelerateWP feature additional options
-
-Find more additional options in WordPress admin page.
-
-### Mobile caching
-
-Use it only if you website is adapted to use on smartphones and mobile phones.
-
-Separate cache files for mobile devices. In this case the content for mobile devices will be cached
-into different cache file as for desktop\tablets.
-
-This option is necessary if you have some functionality only for mobile devices, not for desktop\tablets.
-
-The following diagram helps you understand if you need mobile caching.
-
-![](/MobileDiag.png)
-
-:::tip Note
-If you use an additional layer of Cache (Varnish, NGINX , etc.) make sure it can distinguish between desktop and mobile
-visitors.
-:::
-
-### User Cache
-
-It is recommended to use such an option when your website has a unique content for each logged-in user. If the user is
-not logged-in, a common site cache will be used, otherwise each logged-in user’s content will be cached separately.
-
-### File Optimization
-
-File Optimization consists of Minification and file Combining.
-
-Minification is the process of minimizing code in your web pages and script files. Webmasters look at minification as a
-primary method of reducing website load times via the bandwidth they use.
-
-Minification also reduces JS, CSS and HTML files. The goal is removing comments and extra spaces. It crunches variables
-that minimize code and ultimately reduces the file size.
-
-After minification, the file still functions as it should. The difference is a reduction in bandwidth due to network
-requests.
-
-**By combining CSS & JS files, HTTP/1 does not allow multiple requests from the same TCP connection between a host
-server and a web browser.**
-
-Putting CSS and JS files into their respective groups, makes requests for downloads from a browser safe and more
-efficient. The old way meant multiple connections that took up bandwidth.
-
-**File (CSS & JS) combining is not necessary for HTTP/2 (see https://webspeedtools.com/should-i-combine-css-js/)**
-
-HTTP/2 introduced multiplexing. Now, the browser can send unlimited number of requests to the server, then download all
-files simultaneously with only one TCP connection.
-
-Consequently, HTTP/2 takes care of multiple TCP connections and the waiting time before each download. In one sense,
-consolidating CSS and JS files might be unnecessary.
-
-To verify which HTTP version is used for requests on your site, you can use https://tools.keycdn.com/http2-test
-
-### CSS Files
-
-**Minify CSS**
-
-Minify CSS reduces file sizes by taking out white space and comments embedded in the code.
-
-**Combine CSS**
-
-Combine CSS reduces HTTP requests by merging all your files into one. Combine CSS is not recommended if your site uses
-HTTP/2.
-
-**Excluded CSS Files**
-
-To single out those CSS files that should not be minimized, list the URLs attached to the CSS files that should be
-excluded from minification and concatenation (one per line).
-
-:::warning Caution!
-Minification removes the domain from the URL.
-:::
-
-To prevent that, use (. *).CSS wildcards to exclude all files in a specific location.
-
-3rd Party: when excluding external CSS files, use the domain or the full URL path.
-
-### JavaScript Files
-
-**Minify javascript files**
-
-Minify JavaScript removes whitespace and comments to reduce the file size.
-
-**Combine JavaScripts files**
-
-This option will be active only if you choose Minify javascript files. It is not recommended for HTTP2.
-
-**Load JavaScript deferred**
-
-One major cause of slow web pages is a so-called blocking
-script: [https://www.dummies.com/web-design-development/javascript/deferred-loading-with-javascript/](https://www.dummies.com/web-design-development/javascript/deferred-loading-with-javascript/)
-.
-
-Loading JavaScript called a blocking script blocks the webpage from loading.
-
-Using the `defer` attribute alerts the browser not to wait for the script. Things will continue as usual per the build
-HTML and DOM processes. Quietly, the script rests in the background, then runs once the DOM is built.
-
-So, the `Load JavaScript deferred` option adds to each script tag the `defer` attribute.
-
-**Delay JavaScript Execution**
-
-This option helps to decrease the page load time by delaying loading of all JavaScripts on the page. This option can be
-applied only for already cached pages, it is incompatible with the Combine JavaScripts files option.
-
-### Media
-
-**LazyLoad**
-
-LazyLoad affects the page in the next way - if the user opens the page for the first loading there will be only first
-displayed (visible to user) images, others will be loaded if the user scrolls down. Images added via CSS file,
-the `<style>` tag or via `Elementor` will not be affected by the LazyLoad.
-
-The following options allows working with LazyLoad
-
-* Enable LazyLoad for images
-* Enable LazyLoad for iframes and videos
-* Excluded images or iframes
-
-### Image Dimensions
-
-Add Missing Image Dimensions
-
-Correct image dimensions help the browser to recognize page structure without delays, because the browser knows how much
-space is needed for the image.
-
-Cases when image will not be affected by the *Add Missing Image Dimensions*:
-
-* Images which have any attribute with name containing `*height*` or `*width*`
-* Images which are part of the `<picture>` tag
-* SVG images
-* Image from external domains
-
-### Preload
-
-**Preload Cache**
-
-Usually, a page cache is created when this page is first visited. You can activate the preload page cache. It means that
-the cache for the page will be created when the page is created or updated.
-
-If sitemap-based cache preloading is activated, a specified sitemap file will be used for preliminary cache generation.
-
-**Preload Links**
-
-Provides functionality to preload the HTML content of the hovered link for acceleration loading pages after click.
-
-**Prefetch DNS Requests**
-
-If your website uses external resources (e.g. Google fonts, YouTube video, etc.), AccelerateWP can preload these
-resources for accelerating loading pages. To activate preloading external URLs, provide a list of external URLs.
-
-**Preload Fonts**
-
-Accelerates the loading of fonts by the browser, informing the browser at the very beginning of the request about the
-full list of fonts to download
-
-### Advanced Rules
-
-Advanced site caching settings. If you have specific pages that must be processed individually you can add a custom rule
-for them.
-
-**Never Cache URL(s)**
-
-Provide a list of URLs that cannot be cached.
-
-**Never Cache Cookies**
-
-Provide a list of Cookie files that cannot be cached.
-
-**Never Cache User Agent(s)**
-
-Provide a list of User Agent names that cannot be cached.
-
-**Always Purge URL(s)**
-
-You can specify URLs that will be deleted from the cache when any post or page will be updated.
-
-**Cache Query String(s)**
-
-By default AccelerateWP does not cache URLs with query strings, but in this option, you can specify GET-parameters that
-must be cached.
-
-### Database
-
-Database optimization provides clearing database from expired and unused data.
-
-**Post Cleanup**
-
-Provides clearing posts revisions, autosaved drafts, and deleted posts from the trash. Be careful, you will not be able
-to restore this data after clearing it.
-
-**Comments Cleanup**
-
-Provides clearing spam and deleted comments from the trash. Be careful, you will not be able to restore this data after
-clearing it.
-
-**Transients Cleanup**
-
-Provides clearing temporary options for existing plugins and older unused options that keep after deleting plugins.
-
-**Database Cleanup**
-
-Provides table optimizations in your database server.
-
-**Automatic cleanup**
-
-Allows you to schedule periodic database cleanups.
-
-### Heartbeat
-
-WordPress Heartbeat is a function of server polling that provides delivery data from server to browser periodically.
-
-**Reduce or disable Heartbeat activity**
-
-To control server loads you can activate the *Control Heartbeat* function and reduce or disable Heartbeat activity. You
-can manage Heartbeat activity separately for backend, frontend, and post-editing parts. Be careful, disabling Heartbeat
-can break plugins that use this functionality.
-
-### One-click AccelerateWP Add-ons
-
-**Varnish**
-
-When the server uses Varnish, you need to activate the add-on for implementing clearing Varnish cache when AccelerateWP
-clears site cache.
-
-**WebP Compatibility**
-
-If your site uses the WebP plugin you can activate AccelerateWP WebP Compatibility add-on to achieve browser
-compatibility with your WebP images.
-
-### CDN
-
-CDN stands for Content Delivery Network, the feature that simplifies and speeds up resources loading for your customers.
-
-In order to start using CDN, you need:
-
-1. Public website on the Internet with a valid domain name
-2. Pull a CDN zone, for example, https://bunny.net/
-
-To set up a CDN in the AccelerateWP you must register CDN zone and get pull zone configuration.
-
-After setting up the Pull zone, you will receive an address, for example: domain.b-cdn.net
-
-![](/CDNGeneral.png)
-
-Go to the WP Admin of your WordPress site, open the settings of the AccelerateWP (Step 1) and select the CDN section (
-Step 2). Select the option: Enable Content Delivery Network (Step 3) and fill in the "CDN CNAME(s)" field with the
-previously received domain.b-cdn.net address (Step 4).
-
-![](/CDNFlow.png)
-
-Click the "Save changes" button (Step 5).
-
-In order to check CDN is working, open website in incognito mode with Developer Tools open in your browser. Go to the "
-Network" tab, find the "Domain" column, you should see the specified address in the CDN settings of the AccelerateWP
-plugin for your js/css/image files.
-
-### Tools
-
-For backing up the settings, there is a function for exporting settings. To use it, click the *Download settings*
-button. When you need to restore settings, choose your saved settings file and click the *Upload file and import
-settings* button.
-
-## AccelerateWP Premium: Object caching feature
-
-:::tip Note
-Object caching is a premium feature which is currently in beta and available only for some hosters.
-:::
-
-Unlike full page caching, this mechanism is not saving the whole page in cache, but stores database
-query results in additional storage for quick access. This mechanism is really helpful in case your
-site needs to process multiple pages per second as requests come in and may be helpful in case when
-full page caching cannot be used, e.g. on personalized pages.
-
-The Object caching feature is recommended to use in the following:
-
-* Websites used for extremely active exchange of information (forums, blogs, etc..)
-* Websites with too many requests running at the same time
-* Websites having important pages that cannot be cached entirely and exclude from the "whole page caching" due to any
-  reason
-
-In order to start working with Object caching feature, check if advice is available in the corresponding
-cell on the intersection of website and AccelerateWP Premium column.
-
-![](/AWPPremiumUI.png)
-
-And click the "Apply advice" button to activate the Object caching feature.
-
-![](/AWPPremiumReview.png)
-
-If you still would like to try the feature on the website where advice was not issued,
-click on the gear icon and enable the feature.
-
-
-In case if you still don't have active Premium subscription, you will see the following
-window with link to the page where you can upgrade subscription.
-
-
-When upgrade link is clicked, you will see the billing interface opened in new browser window.
-Successful upgrade of your subscription will automatically close the billing window and start
-background upgrade process. Once your payment is processed, feature will be automatically installed
-on the website.
-
-
-If you don't see any links, contact your hoster to upgrade your subscription manually.
-
-
-If subscription is active, you will bypass the subscription window and proceed
-directly to the plugin installation.
-
-After a couple of minutes, the redis instance will be configured, plugin will be installed and activated.
-
-![](/AWPPremiumApplied.png)
-
-Close the window and see "Active" link in the corresponding cell of the table.
-
-Object caching does not require any additional configuration.
-
-### Limitations
-
-There are the following requirements to activate Object Caching:
-
-* Website must use ea-PHP version 7.4 or 8.0.
-* WordPress version must be 3.7 and higher.
-* Other WordPress Caching plugins must not be installed.
-* [Snuffleupagus](https://snuffleupagus.readthedocs.io/) must be turned off.
-* WordPress should not run in Multisite mode.
-
-## FAQ
-
-### What does "AccelerateWP is advice-driven" mean?
-
-CloudLinux automatically tracks slow requests for the websites for the appropriate period of
-time and sometimes creates an advice to activate the specific feature for your website.
-When you see the `Advice available` link in the corresponding feature cell, it means that
-AccelerateWP decided that this feature will significantly improve the performance of your website.
-Otherwise you see the `No advice` note.
-
-![](/FAQAdviceTable.png)
-
-Click the `Advice available` link and push `Apply advice` button to automatically enable the feature.
-
-![](/FAQAdviceReview.png)
-
-### What should I do if I see both the "No advice" note and the "Incompatible" link?
-
-Causes of the `Incompatible` note are always Limitations: [AccelerateWP](/wpos-plugin/#limitations) or
-[AccelerateWP Premium](/wpos-plugin/#limitations-2) related ones.
-
-Each message has a small "how to", so you can try to fix them by yourself via control panel or WordPress Admin
-interface.
-
-![](/FAQIncompatible.png)
-
-![](/FAQIncMessage.png)
-
-### What should I do if I see the "Misconfiguration"?
-
-The misconfiguration message can appear in the cases when optimization feature was activated, but AccelerateWP detects
-it as not working anymore.
-
-The most frequent cases are:
-
-* Redis process cannot be started for some period of time.
-    * **Resolution:** [contact our support team](https://cloudlinux.zendesk.com/hc/en-us/requests/new) for further
-      investigation.
-* WordPress Redis Object Cache plugin is disabled via WordPress Admin Gui/Plugins.
-    * **Resolution:** You can resolve it by yourself via the WordPress Admin Gui.
-* Version of PHP was changed for website and it is no longer compatible with feature.
-    * **Resolution:** change website php version to the one which is compatible with optimization feature.
-
-In all cases, please refer to the misconfiguration text, which has a small "how to", so you can try to fix them by
-yourself via control panel or WordPress Admin interface.
-
-### Feature activation starts, but fails with "post check issue"
-
-Post check is a sanity check of your website to make sure that it is working properly after feature activation.
-
-AccelerateWP expects website to:
-
-* return http code 200 when downloading home page
-* do not write any errors in logs
-
-If you have some Post check issue after turning on the feature, you can leave them as disabled (in that case the engine
-reverts all changes). Or you can ignore the issue and continue working with the enabled Object Caching in order to
-manually check the source of the issue.
-
-### How to measure the speed of the website?
-
-You can measure the speed of your website before turning On the Object Caching and after.
-
-The popular tools:
-
-* [PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/)
-* [Pingdom Website Speed Test](https://tools.pingdom.com/)
-
-### Where the AccelerateWP tool log files are located?
-
-Login via SSH, find in your home directory `~/.clwpos/main.log`. Or you can open it using the control panel file
-manager.
-
-### I already use the WordPress Redis object cache plugin. Will the AccelerateWP be useful for me?
-
-No, in the current version we suggest the same optimization as you already have. But we include other useful features in
-the next versions, so let’s stay in touch.
-
-### I already use the WordPress Redis object cache PRO plugin. Will the AccelerateWP be useful for me?
-
-No, in the current version we suggest the same optimization as you already have. But we include other useful features in
-the next versions, so let’s stay in touch.
-
-### Why did my site's PageSpeed score decrease after enabling AccelerateWP?
-
-AccelerateWP & mod_pagespeed:
-
-1. Enabling AccelerateWP activates the force gzip cache function when the cache is archived by the plugin, and Apache
-   simply gives it as is to the user browser. In this case, the mod_pagespeed module cannot apply its optimizations,
-   since it does not work with archives, but only with pure HTML.
-2. AccelerateWP does not activate all possible resource optimizations by default.
-
-Because of this, the total score of the site by PageSpeed may be reduced. **To improve the PageSpeed score, it is
-necessary to enable additional optimizations of AccelerateWP.**
-
-AccelerateWP with maximum settings for fast sites gives a similar PageSpeed score for mobile and an improved result for
-desktop.
-AccelerateWP with maximum settings for sites loading longer than 1 second always gives a better score than
-mod_pagespeed.
-
-### My subscription was upgraded, but feature was not installed automatically
-
-This can be caused by several reasons. Either your website was detected to have malfunctions
-or there was an issue with environment when feature was installed (e.g. bad internet connectivity with WordPress market)
-.
-
-First, try to enable feature manually using AccelerateWP interface.
-Most likely you will find human-readable error message there.
-
-If the issue persists, or you cannot resolve it yourself,
-contact your hoster and attach `~/.clwpos/main.log` for further investigation. 
diff --git a/docs/shared-pro/x-ray/.DS_Store b/docs/shared-pro/x-ray/.DS_Store
deleted file mode 100644
index b7fb2a48b..000000000
Binary files a/docs/shared-pro/x-ray/.DS_Store and /dev/null differ
diff --git a/docs/shared-pro/x-ray/README.md b/docs/shared-pro/x-ray/README.md
deleted file mode 100644
index 93c903ceb..000000000
--- a/docs/shared-pro/x-ray/README.md
+++ /dev/null
@@ -1,950 +0,0 @@
-# X-Ray
-
-## Description
-
-:::warning Warning!
-<span class="notranslate">X-Ray</span> is available out of the box for cPanel, Plesk, and DirectAdmin. For other control panels you should implement integration as described [here](/control_panel_integration/#how-to-integrate-x-ray-with-a-control-panel)
-:::
-
-<span class="notranslate">X-Ray</span> is a tool developed for website performance monitoring and performance issues detection.
-
-<span class="notranslate">X-Ray</span> can gather and visualize information about top N slowest system functions, external requests, software modules and database queries of the client’s website.
-
-## Known limitations
-<span class="notranslate">X-Ray</span> is not compatible with Opcahce JIT optimization.
-Once <span class="notranslate">X-Ray</span> tracing task is running for the site the Opcache JIT optimization will be disabled until tracing task completed.
-
-## Installation
-
-1. Make sure you have CloudLinux OS Shared Pro subscription (only non-reseller accounts apply)
-
-2. Make sure you have installed **LVE Manager version 6.2 or later**. You can install or update it with the following commands:
-   * installation
-
-   <div class="notranslate">
-
-    ```
-    # yum install lvemanager
-    ```
-    </div>
-
-    * update
-   
-   <div class="notranslate">
-
-    ```
-    # yum update lvemanager
-    ```
-    </div>
-3. X-Ray will be activated on all your servers during 4 hours. You will see the X-Ray tab in the LVE Manager UI.
-
-4. For instant activation, run the following command:
-
-   <div class="notranslate">
-
-    ```
-    # rhn_check
-    ```
-    </div>
-
-    If the `rhn_check` command is not found, run the following command:
-
-    <div class="notranslate">
-
-    ```
-    # yum install rhn-check rhn-setup
-    ```
-    </div>
-
-5. Then install the <span class="notranslate">`alt-php-xray`</span> package
-
-    * Via user interface
-        * Go to the <span class="notranslate">_X-Ray_</span> tab.
-        * Click <span class="notranslate">_Install_</span> to start installation.
-
-        ![](./images/XRayUI.png)
-
-    * Via SSH by running the following command:
-  
-    <div class="notranslate">
-
-    ```
-    # yum install lvemanager alt-php-xray
-    ```
-    </div>
-
-6. After installation, use the <span class="notranslate">_Start tracing_</span> button to create your first tracing task for a slow site.
-
-![](./images/XRayStartTracing.png)
-
-## How to manage X-Ray
-
-X-Ray provides several options for monitoring domain requests speed: Manual Tracing task, X-Ray Autotracing and Continuous tracing.
-
-* **Manual Tracing task** is a task that you can create for a specific URL to collect server requests. The task will end either after a specified number of requests to the URL or after a specified time (maximum after two days). It is not possible here to automatically email a report but it is possible to export the report in PDF and send to a user.
-
-* **Autotracing task** is a task that will be created automatically at the end of each day for slow URLs that were found during that day by the [PHP Slow Site Analyzer](/lve_manager/#website-monitoring-tool-and-slow-site-analyzer) (SSA).
-Need to be enabled separately, see [How to enable X-Ray Autotracing](/cloudlinux-os-plus/#how-to-enable-x-ray-autotracing).
-
-* **Continuous tracing** is a task that initiates daily hourly tracing requests for a specified domain and email a monitoring report. Continuous task can't stop automatically, you need to stop it manually. In fact, continuous task allows to automatically create a tracing task for each new day, with the ability to get a report for the past day.
-
-### Tracing tasks tab
-
-The *Tracing tasks* tab contains a list of all tracing tasks created both manually and automatically via continuous tasks.
-
-![](./images/XRayTracingTaskCreated.png)
-
-The *Created* column shows how a task was created – automatically (by continuous task) or manually.
-
-### Continuous tracing tab
-
-:::warning Warning
-To use Continuous task, update your LVE Manager and alt-PHP-X-Ray packages to versions lvemanager-6.2.9-1 and alt-php-xray-0.2-1 by running the following command:
-```
-yum update lvemanager alt-php-xray
-```
-::: 
-
-The *Continuous tracing* tab contains a list of continuous tasks for which tracing tasks will be created automatically for a new day for a specific domain.
-
-![](./images/XRayContinuousTasksList.png)
-
-## Managing tracing task
-
-### Creating a new tracing task
-
-1. Go to the <span class="notranslate">_X-Ray_</span> tab
-2. Click the <span class="notranslate">_Start tracing_</span> button to create a new task
-3. In the opened popup specify a website URL to trace
-4. Click the <span class="notranslate">_Run_</span> button
-5. Tracing will run in the default mode. In the default mode <span class="notranslate">X-Ray</span> traces the first 20 requests for a specified URL
-
-![](./images/XRayTracingTask.png)
-
-* <span class="notranslate">**URL**</span> should be a valid URL of the domain which exists on the current hosting server. The URL field supports wildcard matching. To learn more about wildcard matching, click _How to use special characters_.
-* <span class="notranslate">**Advanced settings**</span> allow you to set an IP address and tracing options: by time or by number of queries.
-
-    ![](./images/XRayAdvanced.png)
-
-**Advanced settings**
-
-* <span class="notranslate">**Client’s IP**</span>: it is an IPv4 address of a machine to trace. For example, if you have a production website that processes requests from different IP addresses and you do not want to add these requests to the tracing task. So, you can set a specific IP address and <span class="notranslate">X-Ray</span> will analyze requests only from this specific IP address.
-Record for
-* <span class="notranslate">**Time period**</span>: how much time <span class="notranslate">X-Ray</span> collect the requests (2 days max)
-* <span class="notranslate">**Requests**</span>: the amount of requests that <span class="notranslate">X-Ray</span> will collect
-
-After creating, the task appears in the list of tracing tasks.
-
-![](./images/XRayTrcingTaskList.png)
-
-### Viewing tracing tasks list
-
-![](./images/XRayTrcingTaskList1.png)
-
-Tasks created *Manually* are simply tracing tasks.
-
-### Tracing status
-
-A tracing task can have the following statuses:
-
-* <span class="notranslate">**Running**</span> – tracing is in progress
-* <span class="notranslate">**Stopped**</span> – tracing was stopped by administrator
-* <span class="notranslate">**On hold**</span> – the same URL already exists in the lists. Task processing will not start automatically. Administrator should start it manually.
-* <span class="notranslate">**Completed**</span> – period of time is finished or number of requests is reached.
-
-### Collected requests for tracing task
-
-:::warning Warning!
-Collected requests are available in the UI for two weeks.
-:::
-
-Click ![](./images/XRayView.png) to open a list of collected requests.
-
-### Tracing tasks
-
-![](./images/XRayCollectedRequests.png)
-
-The slowest request is highlighted.
-
-![](./images/XRaySlowestRequest.png)
-
-* <span class="notranslate">**Total**</span> displays how many requests were collected according to tasks requirements.
-* <span class="notranslate">**Pending**</span> displays how many of collected requests are not visible in the table yet.
-* <span class="notranslate">**Throttled**</span> displays the number of requests during the execution of which the LVE limits were exceeded.
-* <span class="notranslate">**Slow**</span> displays the number of requests lasting more than one second.
-
-There are filters for the request types and the indicator of a filter used now.
-
-![](./images/FilterIndicator.png)
-
-If slow requests were not detected during the tracing task, the following is displayed. Here, you can also view all requests.
-
-![](./images/RecordedSession.png)
-
-
-<span class="notranslate">X-Ray</span> collects the following data for each request:
-
-* <span class="notranslate">**Top issues**</span> – the slowest items of a request
-* <span class="notranslate">**Software modules/plugins**</span> by execution time (only for WordPress plugins)
-* <span class="notranslate">**Database queries**</span> by execution time 
-* <span class="notranslate">**External requests**</span> by execution time
-* <span class="notranslate">**Other system functions**</span> by execution time 
-
-### Software modules/plugins
-
-![](./images/XRaySoftwareModulesPlugins.png)
-
-The <span class="notranslate">_Software modules/plugins_</span> section displays the following data:
-
-* <span class="notranslate">**Software type**</span> – a type a module/plugin. For now, <span class="notranslate">X-Ray</span> can analyze only WordPress software
-* <span class="notranslate">**Software module**</span> – a name of the WordPress plugin
-* <span class="notranslate">**Duration**</span> – plugin execution time
-* <span class="notranslate">**Duration (%)**</span> – plugin execution time as a percentage of the total duration of the request
-
-### Database queries
-
-![](./images/XRayDatabaseQueries.png)
-
-The <span class="notranslate">_Database queries_</span> section displays the following data:
-
-* <span class="notranslate">**Query**</span> – the executed SQL-query
-* <span class="notranslate">**File**</span> – the file and the line of the executed query and backtrace
-* <span class="notranslate">**Software module**</span> – a WordPress plugin name from which the request was completed. If the request does not belong to any of the WordPress plugin, the name of the function that executed the given request is displayed
-* <span class="notranslate">**Calls**</span> – the number of identical SQL queries
-* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
- 
-### External requests
-
-![](./images/XRayExternalRequests.png)
-
-The <span class="notranslate">_External requests_</span> section displays the following data:
-
-* <span class="notranslate">**URL**</span> – the URL of the executed request
-* <span class="notranslate">**File**</span> – the file and the line of the executed request and backtrace
-* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
- 
-### System functions
-
-![](./images/XRaySystemFunctions.png)
-
-The <span class="notranslate">_System functions_</span> section displays the following data:
-
-* <span class="notranslate">**Function**</span> – the executed function
-* <span class="notranslate">**File**</span> – the file and the line of the executed request
-* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
-
-### Stopping tracing task
-
-Click ![](./images/XRayStop.png) to stop the tracing task.
-
-![](./images/XRayStopped.png)
-
-The tracing task status will be changed to <span class="notranslate">**Stopped**</span>. Data will not be collected anymore but you can see already collected information or continue tracing later by clicking ![](./images/XRayStart.png).
-
-### Deleting tracing task 
-
-Click ![](./images/XRayDelete.png) to delete the tracing task.
-
-:::warning Warning!
-When you have deleted a tracing task, all collected data will be unavailable.
-:::
-
-## Managing continuous tasks
-
-### Creating a new continuous task
-
-1. Click the *Create continuous tracing*  button 
-
-![](./images/XRayCreateContinuousTaskBtn.png)
-
-2. Specify URL in the *Domain* field and email in the *Email for reports* field and click the *Create* button.
-
-![](./images/XRayCreateContinuousTaskForm.png)
-
-3. You can see a new task in the *Continuous tracing* tab in the X-Ray UI.
-
-![](./images/XRayContinuousTracingTab.png)
-
-4. If you stop a continuous tracing task, a new task for the next 24 hours will not be created. The task for the current day will be finished at midnight and the report will be emailed.
-
-5. If you delete a continuous tracing task, the task for the current day will be finished at midnight and the report will be emailed.
-
-### Viewing continuous tasks list
-
-You can find a list of continuous tracing tasks in the _Continuous tracing_ tab.
-
-![](./images/XRayContinuousTracingTasksList.png)
-
-You can find automatically created tasks in the _Tracing tasks_ tab marked as _Automatically_ in the _Created_ column.
-
-![](./images/XRayContinuousTracingTasksListCreated.png)
-
-The [statuses for automatically created tasks](/cloudlinux-os-plus/#tracing-status) are the same as for tracing task.
-
-To view detailed info about an automatically created task, click ![](./images/XRayView1.png). You will get requests grouped by hour.
-
-![](./images/XRayContinuousTracingTasksListGrouped.png)
-
-Click to a group to open a list of the requests.
-
-![](./images/XRayContinuousTracingTasksRequestsList.png)
-
-The following data is collected for each request:
-
-* Software modules/plugins by execution time (only for WordPress plugins)
-* Database queries by execution time
-* External requests by execution time
-* Other system functions by execution time
-
-### Stopping automatic tracing task
-
-Stopping automatic tracing task (a part of continuous tracing task) affects only the automatic tracing task for the current day. A new task for the next day will be created at the end of the day.
-
-To stop the continuous tracing task completely, see [Creating a new continuous task, paragraph 4](/cloudlinux-os-plus/#creating-a-new-continuous-task).
-
-
-### Deleting automatic tracing task
-
-Deleting automatic tracing task (a part of continuous tracing task) affects only the automatic tracing task for the current day. A new task for the next day will be created at the end of the day.
-
-To delete the continuous tracing task completely, see [Creating a new continuous task, paragraph 5](/cloudlinux-os-plus/#creating-a-new-continuous-task).
-
-
-### Continuous task daily report
-
-1. Users get daily reports on their emails. An example of a report is shown below:
-
-    ![](./images/XRayContinuousTaskDaylyReportExample.png)
-
-2. Click the link in the email to show the detailed report:
-
-    ![](./images/XRayContinuousTaskDaylyReportCollectedRequests.png)
-
-3. You can view requests grouped by hour:
-
-    ![](./images/XRayContinuousTaskDaylyReportByHourRequests.png)
-
-4. You can also view the detailed information about request:
-
-    ![](./images/XRayContinuousTaskDaylyReportRequestDetails.png)
-
-
-## X-Ray Autotracing
-
-X-Ray Autotracing automatically creates tracing tasks for slow URLs that were found during a day by the [PHP Slow Site Analyzer](/lve_manager/#website-monitoring-tool-and-slow-site-analyzer) (SSA).
-
-:::warning Warning
-To use X-Ray Autotracing, update your alt-php-ssa and alt-php-xray packages to versions alt-php-ssa-0.2-1 and alt-php-xray-0.4-1 or higher by running the following command:
-```
-# yum update alt-php-ssa alt-php-xray --enablerepo=cloudlinux-updates-testing
-```
-:::
-
-### How to enable X-Ray Autotracing
-
-To enable X-Ray Autotracing, run the following commands via SSH:
-
-```
-# /usr/sbin/cloudlinux-ssa-manager enable-ssa
-# /usr/sbin/cloudlinux-autotracing enable --all
-```
-
-Check [CLI documentation](/command-line_tools/#x-ray-autotracing) for a description of the `/usr/sbin/cloudlinux-autotracing` CLI utility.
-
-### Requirements
-
-* CloudLinux OS Shared Pro or CloudLinux OS Solo or CloudLinux OS Admin
-* alt-php-ssa > 0.2-1 version
-* alt-php-xray > 0.4-1 version
-* Enabled PHP SSA on the server
-
-### Autotracing Interface
-
-A new tab for Autotracing tasks was added to the X-Ray UI:
-
-
-![](./images/XRayAutotracingtaskstab.png)
-
-
-### Autotracing FAQ
-
-Q: Why are the slow URLs in the Slow Site Analyzer report different from those on which the autotracing tasks were created?
-
-A: Because the autotracing decision module uses rules and thresholds different from Slow Site Analyzer, which are configured by the CloudLinux team.
-
-Q: How often autotracing tasks will be generated?
-
-A: Once a day at the same time as a Slow Site Analyzer report.
-
-## X-Ray Smart Advice
-
-Smart advice is a new feature of X-Ray that is designed to find and propose solutions to fix performance issues and speed up the performance of a sites.
-
-:::tip Note
-Smart Advice will work only for CloudLinux OS Shared Pro servers with cPanel Control Panel for now.
-
-At the moment, Smart Advise is focused only on WordPress sites.
-:::
-
-:::warning Warning
-To use X-Ray Smart Advice, update your alt-php-ssa and alt-php-xray packages to versions alt-php-ssa-0.2-3 and alt-php-xray-0.5-1 or higher by running the following command:
-```
-# yum update alt-php-ssa alt-php-xray lve-utils lvemanager --enablerepo=cloudlinux-updates-testing
-```
-:::
-
-### How to enable X-Ray Smart Advice
-
-:::warning Attention!
-If you'd like to try Smart Advice and AccelerateWP you should participate in the Beta tester program. To become a beta tester, please send your request at our Beta program page with the signup form [here](https://www.cloudlinux.com/wp-performance/). Once you submit the request, we will send you a confirmation email with program details and terms of use.
-:::
-
-### Requirements
-
-* CloudLinux OS Shared Pro or CloudLinux OS Solo
-* alt-php-xray > 0.5-1 version
-* lve-utils > 6.3.2-1 version
-* lvemanager > 7.6.1-1 version
-* cloudlinux-site-optimization-module > 0.1-1 version
-
-We Recommend:
-
-* Enable [X-Ray Autotracing](cloudlinux-os-plus/#x-ray-autotracing) on the server
-* Use alt-php-ssa > 0.2-3 version
-
-### How X-Ray Smart Advice works
-
-The main process of looking for advice is X-Ray tracing tasks. The best way for doing this is to enable X-Ray Autotracing. 
-This will allow you to most effectively find Smart Advice for sites that have performance issues without your manual participation. 
-You can find information on how to enable X-Ray Autotracing [here](/cloudlinux-os-plus/#how-to-enable-x-ray-autotracing).
-On the other hand, you can create tracing tasks manually or use continuous X-Ray but we suggest you use X-Ray Autotracing for this purpose.
-
-:::tip Note
-Advice will not be generated by old tracing tasks.
-:::
-
-While the tracing task is running, X-Ray will look for places where advice can be applied. New advice will be displayed on the *Smart Advice* tab. 
-
-![](./images/XRaySmartAdviceMainTab.png)
-
-After the X-Ray finds advice you will see new advice in the *Review* status on the *Smart Advice* tab. 
-Then you may use the *Details* button to see which URLs were found by X-Ray that will be speed up by that advice and use *Quick Action* to enable advice for a site.
-
-Example of details:
-
-![](./images/XRaySmartAdviceDetails.png)
-
-After you apply the advice by using *Quick Action*, the status will change to the *Applied*.
-
-If a long time has passed since the last time the advice was updated for a site, it will be moved to the *Outdated* status. 
-
-:::tip Note
-New X-Ray task may update *Outdated* advice if X-Ray finds performance issues that may be fixed by that advice. Then the status of advice becomes *Review*.
-:::
-
-If the process of applying advice fails you will see an error log with a detailed error, you may try to fix it manually and try again or [contact our support team for help](https://cloudlinux.zendesk.com/hc/en-us). 
-
-Example when an error appears during advice applying:
-
-![](./images/XRaySmartAdviceError.png)
-
-### Smart Advice FAQ
-
-Q: Why I can't see new advice on the *Smart Advice* tab?
-
-A: For the generating of advice, it is necessary to run X-Ray tracing tasks, the best way to do it without manual interaction is to use X-Ray Autoracing. You can find more information on how to enable X-Ray Autotracing [here](/cloudlinux-os-plus/#how-to-enable-x-ray-autotracing).
-
-### Useful Smart Advice CLI commands
-
-:::warning Warning!
-This is an experimental feature. The backwards compatibility is not guaranteed.
-:::
-
-To obtain the full list of advice generated for your server use the following CLI command:
-
-```
-cl-smart-advice list
-```
-
-For each advice in the list the CLI command returns the following information:
-* `metadata`, which includes information about `username`, `domain` and `website` for which the advice is issued
-* `advice` information:
-  * its identifier `id`
-  * its `type`
-  * its `status` -- `review` or `applied`
-  * if advice is Premium `is_premium`
-  * other internal informational fields
-
-The example output is given below:
-
-```
-{
-  "data": [
-    {
-      "created_at": "2023-04-11T07:33:48.191870+00:00",
-      "updated_at": "2023-04-11T07:33:48.191870+00:00",
-      "metadata": {
-        "username": "user16",
-        "domain": "user16.com",
-        "website": "/wordpress"
-      },
-      "advice": {
-        "id": 23484,
-        "type": "OBJECT_CACHE",
-        "status": "review",
-        "description": "Turn on Object Caching",
-        "is_premium": true,
-        "module_name": "object_cache",
-        "subscription": {
-          "status": "no",
-          "upgrade_url": null
-        },
-        "total_stages": 0,
-        "completed_stages": 0,
-        "detailed_description": "To improve site performance, enable the Object Caching We recommend applying the advice if you see it frequen
-tly for the most valuable URLs of your site."
-      }
-    },
-    {
-      "created_at": "2023-04-11T07:33:48.297784+00:00",
-      "updated_at": "2023-04-11T08:51:42.362117+00:00",
-      "metadata": {
-        "username": "user16",
-        "domain": "user16.com",
-        "website": "/wordpress"
-      },
-      "advice": {
-        "id": 23485,
-        "type": "SITE_OPTIMIZATION",
-        "status": "applied",
-        "description": "Turn on AccelerateWP feature",
-        "is_premium": false,
-        "module_name": "accelerate_wp",
-        "total_stages": 0,
-        "completed_stages": 0,
-        "detailed_description": "To improve site performance, enable the AccelerateWP optimization feature. We recommend applying the advice if you see it frequently for the most valuable URLs of your site."
-      }
-    }
-  ],
-  "result": "success",
-  "timestamp": 1681203110
-}
-```
-
-## End-user X-Ray plugin
-
-:::warning Warning
-To use the end-user X-Ray plugin, update your LVE Manager and X-Ray packages to the `lvemanager-6.3.9-1` (or later) and `alt-php-xray-0.3-1` (or later) by running the following command:
-```
-# yum update lvemanager alt-php-xray
-```
-:::
-
-### How to enable/disable the end-user X-Ray plugin
-
-You can hide or show the end-user X-Ray plugin icon by ticking or unticking the proper checkbox in the LVE Manager.
-
-Go to _LVE Manager → Options Tab → User interface settings_.
-
-![](./images/HideXRayAppCheckbox.png)
-
-:::tip Note
-The X-Ray plugin icon in the end-user interface is hidden when the checkbox is ticked.
-:::
-
-![](./images/XRayAppUIIcon.png)
-
-### How to manage the end-user X-Ray plugin
-
-The web interface of the end-user X-Ray plugin is almost the same as the X-Ray administrator interface.
-
-![](./images/XRayEndUserUI.png)
-
-But there are some differences and they are described further.
-
-* End-users can create tasks only for their domains from the drop-down list:
-    ![](./images/XRayEndUserUIStart.png)
-* To specify URL or wildcard, end-users should use the input field next to the domain:
-    ![](./images/XRayEndUserUiSpecifyURL.png)
-
-You can read about all other basic interface elements and managing tracing tasks in the [Managing tracing task section](/cloudlinux-os-plus/#managing-tracing-task).
-
-:::tip Note
-Tracing tasks created by an end-user will also be displayed in the administrator interface and administrators can manage the end-user's tasks the same way as they manage their own. At the same time, tasks created by the administrator or other end-users will not be displayed in the UI of the current user.
-:::
-
-### End-user X-Ray plugin limitations
-
-* The end-user X-Ray plugin does not support creating continuous tasks.
-* The end-user has a limit of tracing tasks running at a time. Before starting the next task, the end-user should wait for the completion of the previous ones or forcefully stop the running ones. Otherwise, the user will get the next error:
-    
-    ![](./images/XRayEndUserUIError.png)
-    :::tip Note
-    The current limit is one tracing task per user. 
-    :::
-* The administrator and the end-user can’t run the tracing task for the same Domain/URL at the same time. Once, the administrator started a specific tracing task, the end-user will not be able to duplicate it. And the same is true for the administrators – they will just see the running task for the specific domain and see the notification that they're trying to create a tracing task with a duplicated URL.
-* If continuous tracing is enabled for the domain, the end-user will not be able to create a new task for this domain because the same rule works - it will be a duplicate of the existing tracing tasks. The next warning will appear:
-    
-    ![](./images/XRayEndUserUIWarning.png)
-
-    To solve this, the existing running tasks for the same Domain/URL should be stopped or completed. You can find more details about this in the [FAQ](/cloudlinux-os-plus/#what-should-i-do-if-i-see-the-warning-task-is-duplicated-by-url).
-
-* If a user's tracing task was created for a domain which is using the FPM handler there's an additional limitation.  To avoid  frequent reloads of the particular FPM service, **Start tracing** ,  **Stop tracing** or  **Continue tracing** action would be blocked in case if the latest reload of a corresponding FPM service was done less than 1 minute ago.  
-If a user gets such an error message - it means that  1 reload  in  1 minute for a particular FPM service has been already done.  Just try performing the same operation once again in a while.
-
-![](./images/XRayEndUserFPMerror.png)
-	
-## X-Ray automated throttling detection
-
-:::tip Note
-**CPU throttling detection** is available since `alt-php-xray-0.3-2` and `lvemanager-xray-0.5-2`.
-
-**IO/IOPS throttling detection** is available since `alt-php-xray-0.3-7` and `lvemanager-xray-0.7-1`.
-
-- `kmod-lve-2.0-23` (and later) for CloudLinux OS Shared 8 or CloudLinux OS Shared 7 hybrid
-- `kernel-1.5-58` (and later) for CloudLinux OS Shared 7 or CloudLinux OS Shared 6 hybrid
-
-are also required to utilize the feature of **IO/IOPS throttling detection**.
-:::
-
-:::warning Warning
-X-Ray automated throttling detection feature is not supported for CloudLinux OS Shared 6
-:::
-
-The X-Ray automated throttling detection system checks if the account exceeds LVE limits by CPU or by IO/IOPS during the HTTP request execution. Requests with exceeded LVE limits are indicated in both X-Ray Administrator and X-Ray User plugins.
-
-If CPU limiting was detected for a particular request, it is indicated in the X-Ray UI that the system itself has slowed down the request processing due to CPU throttling and this is apparently not a performance issue in the PHP code.
-
-If limiting by IO and IOPS in total was detected for a particular request, it is indicated in the X-Ray UI in the same manner, except for the cause of slowing down the request -- IO throttling.
-
-The case of both limiting for the request is also possible.
-
-![](./images/CPUIOLimiting.png)
-
-Requests with exceeded LVE limits are also marked in the request detailed view.
-
-![](./images/RequestDetails.png)
-
-Requests with exceeded LVE limits are marked in the PDF report as well.
-
-![](./images/PDFReport.png)
-
-
-## X-Ray client
-
-<span class="notranslate">X-Ray</span> client is a PHP extension named <span class="notranslate">`xray.so`</span>. It analyzes the processing time of the entire request and its parts and then sends the data to the <span class="notranslate">X-Ray</span> agent.
-
-### List of supported PHP versions
-
-The list of currently supported PHP versions:
-
-| | | | | |
-|-|-|-|-|-|
-|**ALT PHP**:|**EA PHP**:|**Plesk PHP**|**DirectAdmin PHP**|**Other panels PHP**|
-| <ul><li>alt-php54</li><li>alt-php55</li><li>alt-php56</li><li>alt-php70</li><li>alt-php71</li><li>alt-php72</li><li>alt-php73</li><li>alt-php74</li><li>alt-php80</li><li>alt-php81</li></ul>|<ul><li>ea-php54</li><li>ea-php55</li><li>ea-php56</li><li>ea-php70</li><li>ea-php71</li><li>ea-php72</li><li>ea-php73</li><li>ea-php74</li></ul>|<ul><li>php54</li><li>php55</li><li>php56</li><li>php70</li><li>php71</li><li>php72</li><li>php73</li><li>php74</li></ul>|<ul><li>php54</li><li>php55</li><li>php56</li><li>php70</li><li>php71</li><li>php72</li><li>php73</li><li>php74</li></ul>|<ul><li>54</li><li>55</li><li>56</li><li>70</li><li>71</li><li>72</li><li>73</li><li>74</li></ul>|
-
-:::warning Warning!
-<span class="notranslate">[php-zts](/cloudlinux_os_components/#how-to-configure-alt-php72-zts-to-use-with-php-selector)</span> and [custom PHPs, rolled in selector](/cloudlinux_os_components/#roll-your-own-php), are not supported
-:::
-
-### Functions that X-Ray client can hook
-
-### Database queries
-
-* Functions from the [MySQL](https://www.php.net/manual/ru/book.mysql.php) extension:
-    * <span class="notranslate">`mysql_query`</span>
-    * <span class="notranslate">`mysql_db_query`</span>
-    * <span class="notranslate">`mysql_unbuffered_query`</span>
-* Functions from the [MySQLi](https://www.php.net/manual/ru/book.mysqli.php) extension:
-    * <span class="notranslate">`mysqli_query`</span>
-    * <span class="notranslate">`mysqli::query`</span>
-    * <span class="notranslate">`mysqli_multi_query`</span>
-    * <span class="notranslate">`mysqli::multi_query`</span>
-    * <span class="notranslate">`mysqli_real_query`</span>
-    * <span class="notranslate">`mysqli::real_query`</span>
-* Functions from the [PDO](https://www.php.net/manual/ru/book.pdo.php) extension:
-    * <span class="notranslate">`PDO::exec`</span>
-    * <span class="notranslate">`PDO::query`</span>
-    * <span class="notranslate">`PDOStatement::execute`</span>
-
-### External requests
-
-* Function [curl_exec](https://www.php.net/manual/ru/function.exec)
-
-### System PHP functions
-
-It may be any PHP system function which can be related to a PHP engine or other PHP extension, for example <span class="notranslate">`fopen()`</span> or <span class="notranslate">`json_encode()`</span>. A list of these functions can be found [here](https://www.php.net/manual/en/indexes.functions.php).
-
-### Configuration Options
-
-<div class="notranslate">
-
-### xray.enabled
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.enabled=On/Off`</span>
-
-**Default**: <span class="notranslate">On</span>
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Enable or disable <span class="notranslate">X-Ray</span> extension from php.ini
-
------
-
-<div class="notranslate">
-
-### xray.database_queries
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.database_queries=[number]`</span>
-
-**Default**: 20
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The number of the slowest SQL queries which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
-
------
-
-<div class="notranslate">
-
-### xray.external_requests
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.external_requests=[number]`</span>
-
-**Default**: 20
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The number of the slowest external requests (the curl_exec function) which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
-
------
-
-<div class="notranslate">
-
-### xray.system_functions
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.system_functions=[number]`</span>
-
-**Default**: 20
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The number of the slowest system functions which will be sent to the <span class="notranslate">X-Ray</span> agent. 
-The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
-
------
-
-<div class="notranslate">
-
-### xray.backtrace_depth
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.backtrace_depth=[number]`</span>
-
-**Default**: 10
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The backtrace depth to the main() function which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 20. If the variable value is more, the default value will be used.
-
------
-
-<div class="notranslate">
-
-### xray.processor
-
-</div>
-
-
-**Syntax**: <span class="notranslate">`xray.processor=[processor_name]`</span>
-
-**Default**: <span class="notranslate">xray</span>
-
-**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Tells the <span class="notranslate">X-Ray</span> client which processor to use. The new processors may be added in the future. The default processor is xray which means to send data to the <span class="notranslate">X-Ray</span> agent.
-
------
-
-<div class="notranslate">
-
-### xray.tasks
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.tasks=host:uri:ip:id`</span>
-
-**Default**: <span class="notranslate">no value</span>
-
-**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The current tracing tasks for the given PHP request. This directive is added automatically by the <span class="notranslate">X-Ray</span> manager when creating a task. It is not allowed to edit manually, as <span class="notranslate">X-Ray</span> may stop working.
-
------
-
-<div class="notranslate">
-
-### xray.to_file
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.to_file=On/Off`</span>
-
-**Default**: <span class="notranslate">Off</span>
-
-**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Only for debug purposes. Writes to a file data which is sent to the processor.
-
------
-
-<div class="notranslate">
-
-### xray.debug
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.debug=On/Off`</span>
-
-**Default**: <span class="notranslate">Off</span>
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Only for debug purposes. Enables debug output during request processing. In the On mode can slow down the domain.
-
------
-
-<div class="notranslate">
-
-### xray.debug_file
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.debug_file=[path_to_file]`</span>
-
-**Default**: <span class="notranslate">`/tmp/xray-debug.log`</span>
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Only for debug purposes. Specifies a file for logging debug information.
-
-
-## X-Ray agent 
-
-
-This is a service that receives data from the <span class="notranslate">X-Ray</span> client and sends it to the remote storage.
-
-### Managing X-Ray service
-
-The <span class="notranslate">X-Ray</span> agent is managed by the <span class="notranslate">`service`</span> utility.
-
-* To start the <span class="notranslate">X-Ray</span> agent, run the following command:
-
-    <div class="notranslate">
-
-    ```
-    # service xray-agent start
-    ```
-    </div>
-
-* To stop the <span class="notranslate">X-Ray</span> agent, run the following command:
-
-    <div class="notranslate">
-
-    ```
-    # service xray-agent stop
-    ```
-    </div>
-
-* To restart the <span class="notranslate">X-Ray</span> agent, run the following command:
-
-    <div class="notranslate">
-
-    ```
-    # service xray-agent restart
-    ```
-    </div>
-
-## FAQ
-
-### Does X-Ray affect website performance?
-
-<span class="notranslate">X-Ray</span> affects website performance. Our tests show 5-10 % overhead from a website loading time with <span class="notranslate">X-Ray</span> tracing enabled.
-<span class="notranslate">X-Ray</span> allows you to find website performance issues and should not be enabled permanently. If your website is very slow, you can enable <span class="notranslate">X-Ray</span> to find the cause and then disable it.
-
-### What should I do if I see the warning "Task is duplicated by URL"?
-
-This warning means that you already have a task to trace this URL in the list of your tracing tasks. If you see this warning, a new task can be created only with the <span class="notranslate">_On hold_</span> status and you will be able to run it only when the previous task with the same URL will be completed.
-
-Note that the URL field supports wildcard matching and you can have a case when <span class="notranslate">X-Ray</span> is tracing the <span class="notranslate">`URL=domain.com/*`</span> and you are trying to create a new task with <span class="notranslate">`URL=domain.com/xray.php`</span>. In this case, you will see that warning because the `*` URLs array includes <span class="notranslate">`xray.php`</span>.
-
-###  I started a tracing task and made requests to URL but did not see any results in the UI. What should I do?
-
-1. <span class="notranslate">X-Ray</span> may not send data if a site uses a caching plugin, as the caching plugin is outputting HTML, thus there are no PHP scripts to examine. We encountered such issues with sites that use <span class="notranslate">LSCache</span> and <span class="notranslate">WP Super Cache</span> plugins. Check that your site does not use caching plugins. If so, disable it while tracing a site to get information from <span class="notranslate">X-Ray</span>. Moreover, it can also be because of caching on server side, for example NGINX Cache. Or when using CDN because requests are processed from another host. In such cases, during tracing, caching must also be disabled.
-2. If you set a client’s IP when creating the tracing task, check that your requests come to the server with this IP via phpinfo (since there may be NAT between your local machine and the server).
-   
-    ![](./images/XRayPHPInfoRemoteAddr.png)
-
-3. Check that <span class="notranslate">**xray**</span> extension is enabled for the domain. To do so, go to the <span class="notranslate">`phpinfo()`</span> page and make a request. In the phpinfo output try to find the following section:
-   
-    ![](./images/XRayPHPInfo.png)
-
-If you cannot see that section, try to restart PHP processes for that user (the simplest way is to restart Apache) and check that you can see the <span class="notranslate">**xray**</span> extension.
-
-4. If you can see the <span class="notranslate">**xray**</span> extension in the phpinfo, check that <span class="notranslate">X-Ray</span> agent service is running with the service xray-agent status command. If it is not running, start it with the <span class="notranslate">`service xray-agent start`</span> command.
-
-5. If, after checking the previous items, the issue persists, [contact our support team](https://cloudlinux.zendesk.com/hc/en-us/requests/new).
-
-### What to do if X-Ray is not found in the phpinfo() page?
-
-If you managed to create a tracing task, this means that the <span class="notranslate">`xray.ini`</span> file was created in a system. Therefore, there may be two reasons why it did not appear in the phpinfo page of the domain.
-
-1. PHP process wasn't reloaded after adding the xray.ini. To solve this, you should restart the Apache or fpm service for the domain on which the tracing was started. At the moment, this is done automatically by the <span class="notranslate">X-Ray</span> manager after creating the task.
-2. Your domain uses a PHP version different from the one which was detected by the <span class="notranslate">X-Ray</span> manager. To solve this, check the scan dir for additional ini files for your domain.
-
-    ![](./images/XRayScanDir.png)
-
-    Then check the <span class="notranslate">`ini_location`</span> that was passed to the <span class="notranslate">X-Ray</span> manager by running the following command:
-
-    <div class="notranslate">
-
-    ```
-    # cat /usr/share/alt-php-xray/manager.log | grep ini_location
-    ```
-    </div>
-
-    Find your tracing task in the output and check that the <span class="notranslate">`xray.ini`</span> exists in this directory, also check that the `ini` path is the same in the phpinfo page output and in the <span class="notranslate">`ini_location`</span> directive for your tracing task. If they are the same, you should reload your PHP. If they are different that means that the <span class="notranslate">X-Ray</span> manager could not correctly determine the PHP version your domain uses. In this case, contact our support team at [https://cloudlinux.zendesk.com/hc/requests/new](https://cloudlinux.zendesk.com/hc/requests/new).
-
-
-### I use LiteSpeed, X-Ray is enabled and it is shown in the phpinfo() page but does not collect data when sending requests to a site. What to do?
-
-Check for the <span class="notranslate">`CacheLookup on`</span> option in the `htaccess` file for your domain.
-If the option is there, LiteSpeed processes requests bypassing the PHP X-Ray extension.
-In this case, to get tracing information, you should remove the <span class="notranslate">`CacheLookup on`</span> option.
-
-### What is the proper format for the URL?
-
-All of the examples below are correct:
-
-* `http://domain.com`
-* `http://domain.com/`
-* `https://domain.com`
-* `https://domain.com/`
-
-You can use any of them with a prefix `www.` and it is also correct.
-
-### What packages are required for X-Ray?
-
-Required packages:
-
-* `lvemanager` >= 6.2.10-1
-* `alt-php-xray` >= 0.2-1
diff --git a/docs/shared-pro/x-ray/images/.DS_Store b/docs/shared-pro/x-ray/images/.DS_Store
deleted file mode 100644
index 5008ddfcf..000000000
Binary files a/docs/shared-pro/x-ray/images/.DS_Store and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPAdmin.png b/docs/shared-pro/x-ray/images/AWPAdmin.png
deleted file mode 100644
index dc9e8cf79..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPAdmin.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPBrokenPHP.d69c93c1.png b/docs/shared-pro/x-ray/images/AWPBrokenPHP.d69c93c1.png
deleted file mode 100644
index 41ab367ec..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPBrokenPHP.d69c93c1.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPDisable.8d6e3701.png b/docs/shared-pro/x-ray/images/AWPDisable.8d6e3701.png
deleted file mode 100644
index 7372711b0..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPDisable.8d6e3701.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPDisablePremiumOnly.29475d2a.png b/docs/shared-pro/x-ray/images/AWPDisablePremiumOnly.29475d2a.png
deleted file mode 100644
index d3e2a03cc..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPDisablePremiumOnly.29475d2a.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPFilters.ddf8451a.png b/docs/shared-pro/x-ray/images/AWPFilters.ddf8451a.png
deleted file mode 100644
index 2b7d3d3c1..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPFilters.ddf8451a.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPGettingStarted.df20613a (1).png b/docs/shared-pro/x-ray/images/AWPGettingStarted.df20613a (1).png
deleted file mode 100644
index 9bf1561ac..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPGettingStarted.df20613a (1).png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPGettingStarted.df20613a.png b/docs/shared-pro/x-ray/images/AWPGettingStarted.df20613a.png
deleted file mode 100644
index 9bf1561ac..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPGettingStarted.df20613a.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPNoRedis.8fb30039.png b/docs/shared-pro/x-ray/images/AWPNoRedis.8fb30039.png
deleted file mode 100644
index 903b43202..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPNoRedis.8fb30039.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPStats.88c80ca6.png b/docs/shared-pro/x-ray/images/AWPStats.88c80ca6.png
deleted file mode 100644
index 2f70ecd31..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPStats.88c80ca6.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPStatsPremium.67c9ebd7.png b/docs/shared-pro/x-ray/images/AWPStatsPremium.67c9ebd7.png
deleted file mode 100644
index 7543dfd6b..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPStatsPremium.67c9ebd7.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPUpgradeLink.f34baf60.png b/docs/shared-pro/x-ray/images/AWPUpgradeLink.f34baf60.png
deleted file mode 100644
index e1662470a..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPUpgradeLink.f34baf60.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AWPUpgradeNoLink.914ceca7.png b/docs/shared-pro/x-ray/images/AWPUpgradeNoLink.914ceca7.png
deleted file mode 100644
index 804f104f0..000000000
Binary files a/docs/shared-pro/x-ray/images/AWPUpgradeNoLink.914ceca7.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/AutoLogout.png b/docs/shared-pro/x-ray/images/AutoLogout.png
deleted file mode 100644
index 64afa3e9c..000000000
Binary files a/docs/shared-pro/x-ray/images/AutoLogout.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMAlertManager1.png b/docs/shared-pro/x-ray/images/CMAlertManager1.png
deleted file mode 100644
index 3086cdade..000000000
Binary files a/docs/shared-pro/x-ray/images/CMAlertManager1.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMAlertManager3.png b/docs/shared-pro/x-ray/images/CMAlertManager3.png
deleted file mode 100644
index 00bae4f00..000000000
Binary files a/docs/shared-pro/x-ray/images/CMAlertManager3.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMAlertManager4.png b/docs/shared-pro/x-ray/images/CMAlertManager4.png
deleted file mode 100644
index ce0583d58..000000000
Binary files a/docs/shared-pro/x-ray/images/CMAlertManager4.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMAlertManager5.png b/docs/shared-pro/x-ray/images/CMAlertManager5.png
deleted file mode 100644
index b4777847c..000000000
Binary files a/docs/shared-pro/x-ray/images/CMAlertManager5.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMAlertManager6.png b/docs/shared-pro/x-ray/images/CMAlertManager6.png
deleted file mode 100644
index 64166de11..000000000
Binary files a/docs/shared-pro/x-ray/images/CMAlertManager6.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMAlertManager7.png b/docs/shared-pro/x-ray/images/CMAlertManager7.png
deleted file mode 100644
index 16be0c8e3..000000000
Binary files a/docs/shared-pro/x-ray/images/CMAlertManager7.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMAlertManager8.png b/docs/shared-pro/x-ray/images/CMAlertManager8.png
deleted file mode 100644
index 3de8103f9..000000000
Binary files a/docs/shared-pro/x-ray/images/CMAlertManager8.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMAllServers.png b/docs/shared-pro/x-ray/images/CMAllServers.png
deleted file mode 100644
index 57606ca68..000000000
Binary files a/docs/shared-pro/x-ray/images/CMAllServers.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMCLNAccount.png b/docs/shared-pro/x-ray/images/CMCLNAccount.png
deleted file mode 100644
index 80fc3a865..000000000
Binary files a/docs/shared-pro/x-ray/images/CMCLNAccount.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMDiskIOpsCompleted.png b/docs/shared-pro/x-ray/images/CMDiskIOpsCompleted.png
deleted file mode 100644
index a78481b66..000000000
Binary files a/docs/shared-pro/x-ray/images/CMDiskIOpsCompleted.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMDiskReadWriteData.png b/docs/shared-pro/x-ray/images/CMDiskReadWriteData.png
deleted file mode 100644
index ed9dadb8b..000000000
Binary files a/docs/shared-pro/x-ray/images/CMDiskReadWriteData.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMDiskReadWriteTime.png b/docs/shared-pro/x-ray/images/CMDiskReadWriteTime.png
deleted file mode 100644
index 0c1f60905..000000000
Binary files a/docs/shared-pro/x-ray/images/CMDiskReadWriteTime.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMDiskSpaceUsage.png b/docs/shared-pro/x-ray/images/CMDiskSpaceUsage.png
deleted file mode 100644
index 4de2268d9..000000000
Binary files a/docs/shared-pro/x-ray/images/CMDiskSpaceUsage.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMDiskSpaceUsageBasics.png b/docs/shared-pro/x-ray/images/CMDiskSpaceUsageBasics.png
deleted file mode 100644
index 36c44da6e..000000000
Binary files a/docs/shared-pro/x-ray/images/CMDiskSpaceUsageBasics.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMInstallationProd.png b/docs/shared-pro/x-ray/images/CMInstallationProd.png
deleted file mode 100644
index 048cff808..000000000
Binary files a/docs/shared-pro/x-ray/images/CMInstallationProd.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMMemoryUsage.png b/docs/shared-pro/x-ray/images/CMMemoryUsage.png
deleted file mode 100644
index 21ca31cb1..000000000
Binary files a/docs/shared-pro/x-ray/images/CMMemoryUsage.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMMostLoadedUsers.png b/docs/shared-pro/x-ray/images/CMMostLoadedUsers.png
deleted file mode 100644
index 3d4c4b2b0..000000000
Binary files a/docs/shared-pro/x-ray/images/CMMostLoadedUsers.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMMostPopularStates.png b/docs/shared-pro/x-ray/images/CMMostPopularStates.png
deleted file mode 100644
index 7552f1ea1..000000000
Binary files a/docs/shared-pro/x-ray/images/CMMostPopularStates.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMMySQLQueries.png b/docs/shared-pro/x-ray/images/CMMySQLQueries.png
deleted file mode 100644
index 1c771a27c..000000000
Binary files a/docs/shared-pro/x-ray/images/CMMySQLQueries.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMNetworkTrafficUsage.png b/docs/shared-pro/x-ray/images/CMNetworkTrafficUsage.png
deleted file mode 100644
index 99608a8fb..000000000
Binary files a/docs/shared-pro/x-ray/images/CMNetworkTrafficUsage.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMOpenFileDescriptorContextSwitches.png b/docs/shared-pro/x-ray/images/CMOpenFileDescriptorContextSwitches.png
deleted file mode 100644
index af429ecb0..000000000
Binary files a/docs/shared-pro/x-ray/images/CMOpenFileDescriptorContextSwitches.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMSCPUUsag.png b/docs/shared-pro/x-ray/images/CMSCPUUsag.png
deleted file mode 100644
index 7dfb165af..000000000
Binary files a/docs/shared-pro/x-ray/images/CMSCPUUsag.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMSystemLoad.png b/docs/shared-pro/x-ray/images/CMSystemLoad.png
deleted file mode 100644
index 2e77616cc..000000000
Binary files a/docs/shared-pro/x-ray/images/CMSystemLoad.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMTimeSpentDoingIO.png b/docs/shared-pro/x-ray/images/CMTimeSpentDoingIO.png
deleted file mode 100644
index 5c7b30a99..000000000
Binary files a/docs/shared-pro/x-ray/images/CMTimeSpentDoingIO.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMUPdates.png b/docs/shared-pro/x-ray/images/CMUPdates.png
deleted file mode 100644
index 39b90e086..000000000
Binary files a/docs/shared-pro/x-ray/images/CMUPdates.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMUsers.png b/docs/shared-pro/x-ray/images/CMUsers.png
deleted file mode 100644
index 2bce007dc..000000000
Binary files a/docs/shared-pro/x-ray/images/CMUsers.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CMUsersCharts.png b/docs/shared-pro/x-ray/images/CMUsersCharts.png
deleted file mode 100644
index 74c1f22bb..000000000
Binary files a/docs/shared-pro/x-ray/images/CMUsersCharts.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/CPUIOLimiting.png b/docs/shared-pro/x-ray/images/CPUIOLimiting.png
deleted file mode 100644
index 9205fae75..000000000
Binary files a/docs/shared-pro/x-ray/images/CPUIOLimiting.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/FilterIndicator.png b/docs/shared-pro/x-ray/images/FilterIndicator.png
deleted file mode 100644
index a8b031801..000000000
Binary files a/docs/shared-pro/x-ray/images/FilterIndicator.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/HideXRayAppCheckbox.png b/docs/shared-pro/x-ray/images/HideXRayAppCheckbox.png
deleted file mode 100644
index 8a82d5efb..000000000
Binary files a/docs/shared-pro/x-ray/images/HideXRayAppCheckbox.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/PDFReport.png b/docs/shared-pro/x-ray/images/PDFReport.png
deleted file mode 100644
index 7c6e900f3..000000000
Binary files a/docs/shared-pro/x-ray/images/PDFReport.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/RecordedSession.png b/docs/shared-pro/x-ray/images/RecordedSession.png
deleted file mode 100644
index 6828f0560..000000000
Binary files a/docs/shared-pro/x-ray/images/RecordedSession.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/RequestDetails.png b/docs/shared-pro/x-ray/images/RequestDetails.png
deleted file mode 100644
index c9facbaf9..000000000
Binary files a/docs/shared-pro/x-ray/images/RequestDetails.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayAdvanced (1).png b/docs/shared-pro/x-ray/images/XRayAdvanced (1).png
deleted file mode 100644
index 00fe9e3be..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayAdvanced (1).png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayAdvanced.png b/docs/shared-pro/x-ray/images/XRayAdvanced.png
deleted file mode 100644
index 00fe9e3be..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayAdvanced.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayAppUIIcon.png b/docs/shared-pro/x-ray/images/XRayAppUIIcon.png
deleted file mode 100644
index 839a0b52e..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayAppUIIcon.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayAutotracingtaskstab.png b/docs/shared-pro/x-ray/images/XRayAutotracingtaskstab.png
deleted file mode 100644
index 4b3bc9400..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayAutotracingtaskstab.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayCollectedRequests.png b/docs/shared-pro/x-ray/images/XRayCollectedRequests.png
deleted file mode 100644
index 224509b25..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayCollectedRequests.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportByHourRequests.png b/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportByHourRequests.png
deleted file mode 100644
index d852896b6..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportByHourRequests.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportCollectedRequests.png b/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportCollectedRequests.png
deleted file mode 100644
index b23ce70fc..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportCollectedRequests.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportExample.png b/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportExample.png
deleted file mode 100644
index 9e9e86ef6..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportExample.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportRequestDetails.png b/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportRequestDetails.png
deleted file mode 100644
index faf0da446..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTaskDaylyReportRequestDetails.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTasksList.png b/docs/shared-pro/x-ray/images/XRayContinuousTasksList.png
deleted file mode 100644
index 8dd82b0cc..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTasksList.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTracingTab.png b/docs/shared-pro/x-ray/images/XRayContinuousTracingTab.png
deleted file mode 100644
index bb48baac1..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTracingTab.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksList.png b/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksList.png
deleted file mode 100644
index 198f7691a..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksList.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksListCreated.png b/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksListCreated.png
deleted file mode 100644
index 2cc0e42ed..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksListCreated.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksListGrouped.png b/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksListGrouped.png
deleted file mode 100644
index 564c8a678..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksListGrouped.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksRequestsList.png b/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksRequestsList.png
deleted file mode 100644
index b3a517429..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayContinuousTracingTasksRequestsList.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayCreateContinuousTaskBtn.png b/docs/shared-pro/x-ray/images/XRayCreateContinuousTaskBtn.png
deleted file mode 100644
index ec857b78f..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayCreateContinuousTaskBtn.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayCreateContinuousTaskForm.png b/docs/shared-pro/x-ray/images/XRayCreateContinuousTaskForm.png
deleted file mode 100644
index 0f17c23fc..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayCreateContinuousTaskForm.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayDatabaseQueries.png b/docs/shared-pro/x-ray/images/XRayDatabaseQueries.png
deleted file mode 100644
index d7674621f..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayDatabaseQueries.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayDelete.png b/docs/shared-pro/x-ray/images/XRayDelete.png
deleted file mode 100644
index ab558dd0e..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayDelete.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayEndUserFPMerror.png b/docs/shared-pro/x-ray/images/XRayEndUserFPMerror.png
deleted file mode 100644
index d9d161f8e..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayEndUserFPMerror.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayEndUserUI.png b/docs/shared-pro/x-ray/images/XRayEndUserUI.png
deleted file mode 100644
index 91f3cad3d..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayEndUserUI.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayEndUserUIError.png b/docs/shared-pro/x-ray/images/XRayEndUserUIError.png
deleted file mode 100644
index 5778db4cb..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayEndUserUIError.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayEndUserUIStart.png b/docs/shared-pro/x-ray/images/XRayEndUserUIStart.png
deleted file mode 100644
index 5a9c5f4d3..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayEndUserUIStart.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayEndUserUIWarning.png b/docs/shared-pro/x-ray/images/XRayEndUserUIWarning.png
deleted file mode 100644
index 66be2d7f1..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayEndUserUIWarning.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayEndUserUiSpecifyURL.png b/docs/shared-pro/x-ray/images/XRayEndUserUiSpecifyURL.png
deleted file mode 100644
index 951f28035..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayEndUserUiSpecifyURL.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayExternalRequests.png b/docs/shared-pro/x-ray/images/XRayExternalRequests.png
deleted file mode 100644
index d95c6e002..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayExternalRequests.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayPHPInfo.png b/docs/shared-pro/x-ray/images/XRayPHPInfo.png
deleted file mode 100644
index bb1f213eb..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayPHPInfo.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayPHPInfoRemoteAddr.png b/docs/shared-pro/x-ray/images/XRayPHPInfoRemoteAddr.png
deleted file mode 100644
index abb0eebe0..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayPHPInfoRemoteAddr.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayScanDir.png b/docs/shared-pro/x-ray/images/XRayScanDir.png
deleted file mode 100644
index 01f5afcf8..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayScanDir.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRaySlowestRequest.png b/docs/shared-pro/x-ray/images/XRaySlowestRequest.png
deleted file mode 100644
index cc8d3a0ca..000000000
Binary files a/docs/shared-pro/x-ray/images/XRaySlowestRequest.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRaySmartAdviceDetails.png b/docs/shared-pro/x-ray/images/XRaySmartAdviceDetails.png
deleted file mode 100644
index 303861ebc..000000000
Binary files a/docs/shared-pro/x-ray/images/XRaySmartAdviceDetails.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRaySmartAdviceError.png b/docs/shared-pro/x-ray/images/XRaySmartAdviceError.png
deleted file mode 100644
index 36f5c675d..000000000
Binary files a/docs/shared-pro/x-ray/images/XRaySmartAdviceError.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRaySmartAdviceMainTab.png b/docs/shared-pro/x-ray/images/XRaySmartAdviceMainTab.png
deleted file mode 100644
index 39093cdcc..000000000
Binary files a/docs/shared-pro/x-ray/images/XRaySmartAdviceMainTab.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRaySoftwareModulesPlugins.png b/docs/shared-pro/x-ray/images/XRaySoftwareModulesPlugins.png
deleted file mode 100644
index ae43d3ae1..000000000
Binary files a/docs/shared-pro/x-ray/images/XRaySoftwareModulesPlugins.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayStart.png b/docs/shared-pro/x-ray/images/XRayStart.png
deleted file mode 100644
index 4fbc984d1..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayStart.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayStartTracing.png b/docs/shared-pro/x-ray/images/XRayStartTracing.png
deleted file mode 100644
index b1ff60470..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayStartTracing.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayStop.png b/docs/shared-pro/x-ray/images/XRayStop.png
deleted file mode 100644
index d06485591..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayStop.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayStopped.png b/docs/shared-pro/x-ray/images/XRayStopped.png
deleted file mode 100644
index 189479a8e..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayStopped.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRaySystemFunctions.png b/docs/shared-pro/x-ray/images/XRaySystemFunctions.png
deleted file mode 100644
index f8f2f8a8d..000000000
Binary files a/docs/shared-pro/x-ray/images/XRaySystemFunctions.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayTracingTask.png b/docs/shared-pro/x-ray/images/XRayTracingTask.png
deleted file mode 100644
index 4c4b936c7..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayTracingTask.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayTracingTaskCreated.png b/docs/shared-pro/x-ray/images/XRayTracingTaskCreated.png
deleted file mode 100644
index 9b1e07506..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayTracingTaskCreated.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayTrcingTaskList.png b/docs/shared-pro/x-ray/images/XRayTrcingTaskList.png
deleted file mode 100644
index e44fe40d5..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayTrcingTaskList.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayTrcingTaskList1.png b/docs/shared-pro/x-ray/images/XRayTrcingTaskList1.png
deleted file mode 100644
index 959f707f4..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayTrcingTaskList1.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayUI.png b/docs/shared-pro/x-ray/images/XRayUI.png
deleted file mode 100644
index 66d02f36b..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayUI.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayView.png b/docs/shared-pro/x-ray/images/XRayView.png
deleted file mode 100644
index dac49b18b..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayView.png and /dev/null differ
diff --git a/docs/shared-pro/x-ray/images/XRayView1.png b/docs/shared-pro/x-ray/images/XRayView1.png
deleted file mode 100644
index 4c1e9e46d..000000000
Binary files a/docs/shared-pro/x-ray/images/XRayView1.png and /dev/null differ
diff --git a/docs/shared/.DS_Store b/docs/shared/.DS_Store
deleted file mode 100644
index 5ff7a05be..000000000
Binary files a/docs/shared/.DS_Store and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/.DS_Store b/docs/shared/cloudlinux_installation/.DS_Store
deleted file mode 100644
index ab1806a5a..000000000
Binary files a/docs/shared/cloudlinux_installation/.DS_Store and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/README.md b/docs/shared/cloudlinux_installation/README.md
deleted file mode 100644
index 8d976d365..000000000
--- a/docs/shared/cloudlinux_installation/README.md
+++ /dev/null
@@ -1,1461 +0,0 @@
-# Installation
-
-[[toc]]
-
-## Hardware Compatibility
-
-CloudLinux OS supports all the hardware supported by RHEL/CentOS/AlmaLinux, with few exceptions. Exceptions are usually hardware that require binary drivers, and that doesn't have any open source alternatives.
-
-:::tip Note
-CloudLinux OS does not support ARM-based CPUs (e.g. Graviton).
-:::
-
-:::warning Warning
-In cases where your server hardware is incompatible with any version of RHEL/CentOS/AlmaLinux and CloudLinux OS or our components - we will not be able to provide assistance in adding such hardware support or solving possible issues related to such installation.
-:::
-
-:::tip Note
-Replacing the server hardware affects specifications and support for such hardware from CloudLinux OS end.
-It is most likely that the CloudLinux OS will stop working if you replace any hardware component on the server.
-
-Example: the same HDD/SSD/NVMe model will have a new UUID and CloudLinux OS is mapped to old UUID which break the boot procedure.
-
-In this case, we are not responsible for the CloudLinux OS operation and cannot assist you in restoring the server or adapting CloudLinux OS installation to the new hardware.
-:::
-
-There are some incompatible devices with **CL6**:
-
-| |  | |
-|-|--|-|
-|**Device** | **Binary Driver** | **Source**|
-|<span class="notranslate"> B110i Smart Array RAID controller </span> | hpahcisr | [https://h10032.www1.hp.com/ctg/Manual/c01754456](https://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01732801)|
-|<span class="notranslate"> B120i/B320i Smart Array SATA RAID Controller </span>  | hpvsa | [https://www8.hp.com/h20195/v2/GetPDF.aspx/c04168333.pdf](https://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c01732801)|
-|<span class="notranslate"> SanDisk DAS Cache </span> |  | [https://www.dell.com/en-us/work/learn/server-technology-components-caching](https://www.dell.com/en-us/work/learn/server-technology-components-caching)|
-
-
-With RHEL8 (**CloudLinux OS 8/CloudLinux OS 7 Hybrid**), some devices are no longer supported.
-You can check the entire list here: [Hardware enablement considerations in adopting RHEL 8](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/considerations_in_adopting_rhel_8/hardware-enablement_considerations-in-adopting-rhel-8#removed-hardware-support_hardware-enablement)
-
-## Getting License
-
-You will need a valid activation key - trial or paid - to be able to use your CloudLinux OS Solo server.
-
-### Getting Trial License
-
-The trial activation key can be used to convert your server to CloudLinux OS. 
-
-:::tip Note
-The trial license subscription will work for 30 days.
-:::
-
-If you have any issues getting activation key or if you have any questions regarding using your 
-trial subscription – contact [sales@cloudlinux.com](mailto:sales@cloudlinux.com) and we will help.
-
-To get the activation key:
-
-1. Register with CloudLinux Network: [https://cln.cloudlinux.com/console/register/customer](https://cln.cloudlinux.com/console/register/customer) (skip it if you already registered)
-2. You will receive an email with activation link
-3. Login at [https://cln.cloudlinux.com/console/auth/login](https://cln.cloudlinux.com/console/auth/login)
-4. Choose the appropriate [CloudLinux edition](/introduction/) that fits your needs.
-5. Click on `Get Trial Activation Key`.
-
-You will get a key that looks like: `12314-d34463a182fede4f4d7e140f1841bcf2`.
-
-
-## Converting existing servers
-
-Sometimes it is required to convert already existing servers with **`CentOS`** or **`AlmaLinux`** and make them **`CloudLinux OS`**.
-
-It is easy to convert your existing installation by cldeploy script. The process takes a few minutes and replaces just a handful of RPMs.
-
-:::warning
-Unlike [Fresh installation](#installing-new-servers), converting immediately requires CloudLinux OS license. 
-Please refer to the [guide](#license-activation) to get an activation key.
-:::
-
-### Requirements
-
-Currently supported OS for conversion:
-* CentOS 7
-* AlmaLinux OS 8, AlmaLinux OS 9
-* RockyLinux (installation only, no uninstall option)
-
-
-:::warning Unsupported OS for conversion:
-* CentOS 8
-* CentOS Stream
-:::
-
-
-Supported control panels:
-* cPanel ([Documentation](https://docs.cpanel.net/installation-guide/system-requirements-cloudlinux/))
-* Plesk
-* DirectAdmin
-* CyberPanel ([Documentation](https://community.cyberpanel.net/t/1-convert-cyberpanel-to-cloudlinux-os-and-install-cagefs/174))
-* InterWorx ([Documentation](https://appendix.interworx.com/current/nodeworx/plugins/install-use-cloudlinux-plugin-interworx.html))
-* Webuzo ([Documentation](https://webuzo.com/docs/installing-webuzo/install-cloudlinux-os/))
-
-
-:::warning Other control panels:
-Control panels not mentioned in the list of supported panels have native integration or integration by the developer of such a panel.
-We cannot guarantee the stability or correct operation of CloudLinux components on such panels.
-:::
-
-:::warning Warning:
-Some CloudLinux components may not be supported by the control panel itself or the control panel can have its own analog of such a component.
-You can verify this information when reviewing the system requirements for installing a particular CloudLinux component.
-:::
-
-
-#### Note: CentOS 8 is EOL
-
-CentOS 8 reached End Of Life (EOL) on December 31st, 2021.
-If you would like to convert from CentOS 8 to CloudLinux OS 8, do the following:
-
-* Convert CentOS 8 to AlmaLinux 8 using [almalinux-deploy](https://github.com/AlmaLinux/almalinux-deploy)
-* Convert AlmaLinux 8 to CloudLinux 8 using [cldeploy](/cloudlinux_installation/#cldeploy-explained)
-
-
-### Downloading and running conversion script
-
-#### Key-based activation
-
-If you want to use your activation key for activation, run the following commands:
-
-```
-yum install wget -y
-wget https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
-bash cldeploy -k ACTIVATION_KEY
-```
-
-Where `ACTIVATION_KEY` is the one that you got on previous step. 
-Your CloudLinux OS edition will be detected automatically based on the `ACTIVATION_KEY`. 
-
-#### IP-based activation
-
-If your reseller provides you with an IP-based license, run the following commands:
-
-To convert server into the CloudLinux OS Shared edition:
-```
-$ sh cldeploy -i
-```
-
-To convert server into the CloudLinux OS Admin edition:
-```
-$ sh cldeploy -i --to-admin-edition
-```
-
-### Next steps
-After successful conversion, reboot your system by running the following command:
-
-```
-reboot
-```
-
-Once you reboot - your server should be running with CloudLinux OS LVE kernel.
-
-You may check the booted kernel with the following command:
-
-```
-$ uname -r
-```
-
-:::warning Note
-If after rebooting you do not see the CloudLinux kernel (the kernel has the abbreviation LVE in its name)
-then please consider check our [knowledge base](https://cloudlinux.zendesk.com/hc/en-us/) or 
-contact [support](https://cloudlinux.zendesk.com/hc/en-us/requests/new).
-:::
-
-:::warning Note
-SELinux is not supported on CloudLinux OS 6 and 7. SELinux is supported on CloudLinux OS 8+,
-but might not work or be compatible with control panels and various components.
-:::
-
-:::tip Note
-At the end of conversion from CentOS 7.x to CloudLinux OS Shared 7, 
-the cldeploy script converts CloudLinux OS Shared 7 to [CloudLinux OS Shared 7 Hybrid](/shared/cloudlinux_os_kernel/#hybrid-kernels).
-:::
-
-Automatic hybridization will be performed for the AMD processors with the following CPU families:
-
-* Zen / Zen+ / Zen 2 / Zen 3
-* Hygon Dhyana
-
-Automatic hybridization may be skipped by passing extra option '--no-force-hybridize'.
-See also [advanced options for cldeploy](/shared/command-line_tools/#cldeploy).
-
-### Minor version step-down
-
-If you are attempting to convert an AlmaLinux machine of a minor OS version higher than the most recent CloudLinux minor version, you won't be able to perform a standard conversion, since the required packages will be missing.
-
-E.g. if the AlmaLinux OS 8.8 has already become publicly accessible, but the latest CloudLinux OS release is still 8.7, a standard conversion will not be possible.
-
-This situation typically occurs after a new AlmaLinux release and persists for several weeks.
-
-If you cannot wait until the corresponding CloudLinux release, you have an option of performing a step-down conversion, in which cldeploy will install the previous CloudLinux OS minor version on your system.
-
-For instance, AlmaLinux 8.8 can be converted to CloudLinux 8.7 in such a scenario.
-
-:::tip Note
-When performing a step-down conversion, cldeploy will add MySQL and MariaDB RPM packages to the Yum exclude list, in order to avoid downgrading them to CloudLinux-modified versions.
-
-Not doing so would risk rendering the databases non-functional, since MySQL explicitly does not support minor-version downgrades of its packages.
-
-If you want to update these packages on a step-down converted system, make sure to exclude/disable the CloudLinux package repositories while doing so.
-:::
-
-To allow for a conversion like this, pass **`--allow-lower-version`** to cldeploy's list of arguments.
-
-The cldeploy script will automatically detect the latest available CloudLinux version and, depending on the result, will either proceed normally or perform the step-down conversion.
-
-#### Updating systems from a step-down conversion
-
-Once the previously missing minor CloudLinux release becomes available, you will likely want to upgrade to it from a step-down conversion.
-
-To do so, you need to do the following:
-
-* Remove the automatically created excludes for MySQL and MariaDB packages from **`/etc/yum.conf`**.
-   * Specifically, remove **`mysql* mariadb*`** from excludes in your **`yum.conf`**.
-   * Any other excluded packages except mysql and mariadb are unrelated to cldeploy and should remain in the configuration.
-* Install the newest available **`cloudlinux-release`** package over the previous one.
-   * This will replace the AlmaLinux and CloudLinux package repository configuration files that were modified by cldeploy step-down conversion.
-   * Make sure the new files replace the old ones - check for presence of **`.rpmnew`** files.
-* Update the system normally.
-
-### Troubleshooting 
-
-If you receive any troubles during the conversion process,
-please feel free to search our [knowledge base](https://cloudlinux.zendesk.com/hc/en-us) 
-or contact our support and attach the conversion log (/var/log/cldeploy.log).
-
-### How to enable secure boot for CloudLinux 9
-
-#### Overview
-CloudLinux 9 uses non-modified AlmaLinux 9 kernel.\
-To make secure boot work with CloudLinux's kernel module you need to enroll CloudLinux secure boot key to your server.\
-This procedure shows how to do it
-
-#### Requirements
-* UEFI support
-* mokutil package installed
-* Access to server's BIOS options menu and boot screen
-
-#### Procedure
-1. Download CloudLinux key:
-    ```
-    wget https://repo.cloudlinux.com/cloudlinux/SECURE-BOOT-KEY-cloudlinux-kmod.der
-    ```
-2. Import the key:
-    ```
-    mokutil --import SECURE-BOOT-KEY-cloudlinux-kmod.der
-    ```
-   When prompted, enter a password of your choice. This password will be used when enrolling the key into the MOK list.
-3. Reboot server. Upon rebooting, the "Shim UEFI key management" screen appears. Press any key withing 10 seconds to proceed.
-4. Enroll the key:
-
-* Select **`Enroll MOK`**\
-![Step 1](./images/cl9_secureboot/1.png)
-
-* Select **`View key 0`**\
-![Step 2](./images/cl9_secureboot/2.png)
-
-* Make sure that CloudLinux's Secure Boot Key information is displayed\
-
-* Press the **Esc key** when you are finished\
-![Step 3](./images/cl9_secureboot/3.png)
-
-* Select **`Continue`** on the screen from Step 2
-It will ask "Enrol the key(s)?".\
-Select **`Yes/OK`**\
-![Step 4](./images/cl9_secureboot/4.png)
-
-* Enter the password you used for importing the key (point 2.ii)\
-![Step 5](./images/cl9_secureboot/5.png)
-
-* Select **`Reboot`** (Older versions may say **`Continue boot`**)\
-![Step 6](./images/cl9_secureboot/6.png)
-
-* Now you can enable Secure Boot in BIOS options menu
-
-#### Useful Commands
-* `mokutil --sb-state` (to check current Secure Boot state);
-* `mokutil --list-enrolled` (to show list of enrolled keys).
-
-#### If you wish to remove the CloudLinux key from the MOK list, follow the instructions below
-:::warning Warning
-Do not delete the key when secure boot is enabled - server will be unable to boot
-:::
-
-1. Disable Secure Boot
-2. `mokutil --delete SECURE-BOOT-KEY-cloudlinux-kmod.der`
-3. `mokutil --list-delete` (to check the key to be deleted)
-4. Reboot the system and go through the MOK management process to complete the deletion from the MOK list.
-
-### Technical Details: cldeploy
-
-By its design, CloudLinux OS Shared is very close to the upstream operating system - RHEL.
-This makes the conversion process relatively straightforward, requiring just one reboot. 
-
-#### Installation Process
-
-Here's what the cldeploy script does when you run it:
-
-* Backups the original repository settings into <span class="notranslate">`/etc/cl-convert-saved`</span>.
-* Backups RHEL system ID into <span class="notranslate">`/etc/cl-convert-saved`</span> (RHEL systems only).
-* Installs CloudLinux repository settings & imports CloudLinux RPM key.
-* Replaces redhat/centos-release/almalinux-release, redhat-release-notes, redhat-logos with CloudLinux versions.
-* Removes cpuspeed RPM (as it conflicts with CloudLinux limits).
-* Reinstall CloudLinux version of rhnlib/rhnplugin.
-* Checks for binary kernel modules, finds replacement if needed.
-* Detects OVH servers and fixes mkinitrd and possible boot issues.
-* Detects Linode servers and fixes grub issues.
-* Checks if LES is installed.
-* Checks that <span class="notranslate">`/etc/fstab`</span> has correct <span class="notranslate">`/dev/root`</span>
-* Checks for EFI and performs the necessary configuration.
-* Installs CloudLinux kernel, lve-utils, liblve, lve-stats RPMs.
-* Installs CloudLinux Manager for the supported control panels.
-* Installs mod_hostinglimits Apache module <sup>*</sup>:
-  * RPM install for supported control panels;
-  * On Plesk, replaces psa-mod_fcgid* with mod_fcgid;
-  * Perform CustomBuild tool execution for DirectAdmin.
-
-#### Uninstallation Process
-
-Here's what the cldeploy script does if you run it to uninstall CloudLinux:
-
-* Restores CentOS/AlmaLinux repositories, and almalinux-release/centos-release/release-notes/logos.
-* Removes lve, mod_hostinglimits, lve-stats, lvemanager packages.
-* mod_hostinglimits RPM is removed.
-
-:::tip Note
-**cldeploy doesn't remove the kernel** to prevent condition when server has no kernels and wouldn't boot. Instead, script provide the instructions on how you could remove it manually later, when it is safe to do so.
-:::
-
-On cPanel servers, rebuild of Apache with EasyApache will complete the conversion back, but doesn't have to be performed immediately.<sup> *</sup>
-On DirectAdmin servers, rebuild of Apache with custombuild will complete the conversion back, but doesn't have to be performed immediately.
-
-More information is also available here: [Uninstall CloudLinux](/shared/cloudlinux_installation/#uninstalling).
-
-
-## Installing new servers
-
-All CloudLinux OS editions may be installed using one ISO and source.
-
-### Downloading ISO
-
-You can download the latest CloudLinux OS ISO and use it to install CloudLinux OS on your server:
-
-* CloudLinux OS 9
-
-  * x86_64 version: [https://www.repo.cloudlinux.com/cloudlinux/9/iso/x86_64/](https://www.repo.cloudlinux.com/cloudlinux/9/iso/x86_64/)
-
-* CloudLinux OS 8
-
-  * x86_64 version: [https://www.repo.cloudlinux.com/cloudlinux/8/iso/x86_64/](https://www.repo.cloudlinux.com/cloudlinux/8/iso/x86_64/)
-
-* CloudLinux OS 7
-
-  * x86_64 version: [https://repo.cloudlinux.com/cloudlinux/7/iso/x86_64/](https://repo.cloudlinux.com/cloudlinux/7/iso/x86_64/)
-
-* CloudLinux OS 6
-
-  * x86_64 version: [https://repo.cloudlinux.com/cloudlinux/6/iso/x86_64/](https://repo.cloudlinux.com/cloudlinux/6/iso/x86_64/)
-  * i386 version: [https://repo.cloudlinux.com/cloudlinux/6/iso/i386/](https://repo.cloudlinux.com/cloudlinux/6/iso/i386/)
-
-
-There are multiple ISO types available:
-
-* `CloudLinux-*-boot.iso` - this ISO is made specifically for network installation and does not contain any packages inside.
-* `CloudLinux-*-dvd1.iso` - this one contains all packages from network installation repository, 
-  so you can set up any possible configuration without network access.
-* `CloudLinux-*-minimal.iso` - this one contains only minimal set of packages to set up light server without GUI and Development tools.
-
-### Installing using the Graphical User Interface
-
-The graphical installation interface is the preferred method of manually installing CloudLinux OS. 
-It allows you to have full control over all available settings, including disk partitioning and storage configuration.
-
-The graphical mode is used by default when you boot the system from the local media. Mount and boot the image, then follow the steps.
-
-#### Language Selection
-
-The first screen displayed is the language selection page.
-
-![Welcome page screenshot](./images/welcome_page.png)
-
-First, find your preferred language in the left column and than select locale in the right one.
-Selected language will be used during installation and also as a default language of the installed system.
-
-After you select your language and locale, click `Continue` to confirm your selection 
-and proceed to the [Installation Summary](#installation-summary). 
-
-#### Installation Summary
-
-The Installation summary screen is the main dashboard of your installation parameters. 
-Most of the options which can be configured during the installation can be accessed from here.
-
-![Welcome page screenshot](./images/installation_summary.png)
-
-The summary screen displays links to other configuration screens, those links can be in 
-several different states, which are graphically indicated:
-
-- Grayed out link means that the installer is currently updating this sections. 
-  Please wait a little before accessing this section. 
-
-- A warning symbol next to an icon means that a screen requires your attention before you start the installation.
-
-- Links without warning symbol mean that screen does not require your attention. 
-  You can still change your settings in these screens, but it is not required to start installation.
-
-#### Choosing the Installation Source
-
-The first thing that you should define is where the system will be installed from.
-There are basically two options:
-
-- ISO file
-- On the network
-
-
-#### On the Network Source
-
-Use this option to download packages to be installed from a network location. 
-This is the preferred way as you automatically receive all critical bug fixes that may affect installation.
-
-:::tip Note
-Most likely your network is not configured by default, 
-so you can see the URL configuration field greyed out, like on the screenshot below. Please refer to the Network Configuration screen first to set up a network connection.
-:::
-
-![Unavailable network source](./images/installation_source_gray_network.png)
-
-The correct installation URL for CloudLinux OS is
-
-```text
-https://repo.cloudlinux.com/cloudlinux/8/BaseOS/x86_64/kickstart/
-```
-
-Type in installation URL in the corresponding field, configure proxy if needed and press the `Done` button.
-
-![](./images/installation_source_network_address.png)
-
-
-#### ISO File Source
-
-This option is primary used as an alternative when you don't have internet connection on a target server.
-It is only available if you downloaded Minimal or DVD ISO which contains some bundled packages in.
-
-![](./images/installation_iso_source.png)
-
-Tick the `ISO file` checkbox and press the `Done` button.
-
-#### Next Steps
-
-After clicking `Done`, you will be redirected to the [Installation Summary](./#installation-summary) screen
-where [Installation source](./#choosing-the-installation-source) and [Software Selection](./#software-selection) links
-will be greyed and the `Downloading package metadata` message wll be shown. 
-
-![](./images/installation_source_gray_working.png)
-
-Please hold on while that message disappears and proceed to the [Software Selection](./#software-selection) section.
-
-![](./images/installation_source_gray_done.png)
-
-
-#### Software Selection
-
-The Software Selection screen allows you to choose a Base Environment and Add-ons. 
-These options control which software packages will be installed on your system during the installation process.
-
-This screen is only available if Installation Source is properly configured and only after the installer 
-has downloaded package metadata from the source.
-
-It is not possible to select specific packages during a manual installation, you can only select pre-defined environments and add-ons.
-
-You should choose the CloudLinux edition that matches your license on this stage:
- ![](./images/software_selection.png)
-
-
-The available options are:
-* to install CloudLinux OS Shared or Shared Pro, choose the `CloudLinux OS Shared/Pro (minimal)` environment on the left of the screen.
-* to install CloudLinux OS Admin, choose the `CloudLinux OS Admin (minimal)` environment on the left of the screen.
-* to install CloudLinux OS Solo, choose the `CloudLinux OS Solo (minimal)` environment on the left of the screen.
-
-
-Then, on the right side of the screen, select one or more add-ons which you want to install by ticking the
-check boxes next to each add-on.
-
-#### Final Preparations
-
-Installation is almost done, all you need to do is to [configure your installation target](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-disk-partitioning-setup-x86)
-using the `Installation Destination` menu and create your [Root Password](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-configuration-progress-menu-x86#sect-account-configuration-x86).
-
-Doing that, the `Begin installation` button becomes blue, so click it.
-
-![](./images/installation_available.png) 
-
-After this point, the installation process actually starts and changes are being made to your selected disks.
-It is not possible to go back to the Installation Summary and change any settings configured there; 
-if you need to do so, you must wait for the installation process to finish, reboot your system, log in and change your settings 
-on the installed system.
-
-The bottom of the screen shows a progress bar and a message informing you of the current progress of the installation. 
-When the installation finishes, you can press the Finish installation button
-to reboot your computer and log in to your newly installed system.
-
-:::warning Warning
-Before you finish the installation and reboot, either remove the media
-which you used to start the installation, or make sure that your system tries to boot 
-from the hard drive before trying removable media. Otherwise, your computer will start the installer again instead of the installed system.
-:::
-
-![](./images/installation_done.png)
-
-#### Next Steps
-
-Reboot your system, login and check EULA which is located in the `/usr/share/cloudlinux-release/EULA`.
-
-Next, [activate your installation](#license-activation) in order to get updates.
-
-
-### License Activation
-
-To register your **CloudLinux OS** server with CloudLinux Network using activation key, run the following command:
-
-```
-$ yum install rhn-setup
-$ /usr/sbin/rhnreg_ks --activationkey=<activation key>
-```
-
-Where &lt;activation key&gt; is like `1231-2b48feedf5b5a0e0609ae028d9275c93`
-
-If you have IP based license, use the `clnreg_ks` command instead:
-
-```
-$ yum install rhn-setup
-$ /usr/sbin/clnreg_ks --force
-```
-
-
-## Cloud Provider Images (CloudLinux OS Shared only)
-
-* [OpenStack QEMU/KVM](https://download.cloudlinux.com/cloudlinux/images/#kvm-tab)
-* [VMware](https://download.cloudlinux.com/cloudlinux/images/#vmware-tab)
-* [Google Cloud Engine](https://download.cloudlinux.com/cloudlinux/images/#gce-tab)
-* [Amazon Web Services](https://download.cloudlinux.com/cloudlinux/images/#aws-tab)
-* [Alibaba Cloud](https://download.cloudlinux.com/cloudlinux/images/#ali-tab)
-* [Xen](/cloudlinux_installation/#installing-new-servers)
-* [CloudLinux Azure Images](./#cloudlinux-azure-images)
-
-### CloudLinux Azure Images
-
-We build and release CloudLinux 7.9 and CloudLinux 8.6 for Azure and upload to the [Mircosoft Azure Community Galleries](https://learn.microsoft.com/en-us/azure/virtual-machines/share-gallery-community?tabs=cli).
-
-Images are built in both types Azure supports: *gen1 (BIOS based)* and *gen2 (UEFI based)*. CloudLinux Images could be found in the following regions: *West Europe, Germany West Central, Southeast Asia, East US, West US 2*. A publisher of CloudLinux Images in Azure is *cloudlinux*. Community gallery name is *cloudlinux-cbc76afd-63bc-4f6e-b801-65bd2f1ab0a0*.
-
-How to use CloudLinux Image in Azure:
-
-* When creating Virtual Machine, while choosing what OS should be used, click See al images.
-   ![](./images/AzureVirt.png)
-* Switch from Marketplace to Community images.
-   ![](./images/AzureSwitch.png)
-* Search by typing *cloudlinux* or filter by *Publisher* which is also *cloudlinux* or *Azure Compute Gallery* which is *cloudlinux-cbc76afd-63bc-4f6e-b801-65bd2f1ab0a0*.
-   ![](./images/AzureSearch.png)
-* Choose a suitable image. Check that the Publisher of the selected images is *cloudlinux* and Public Gallery Name is *cloudlinux-cbc76afd-63bc-4f6e-b801-65bd2f1ab0a0*.
-
-
-### Xen Images
-
-:::tip Note
-We do not provide Xen images of CloudLinux OS Shared anymore, use [ISO images](#installing-new-servers) instead 
-:::
-
-## Provider-specific guidelines (CloudLinux OS Shared only)
-
-* [Amazon Web Services](/shared/cloudlinux_installation/#aws)
-* [H-Sphere](/shared/cloudlinux_installation/#h-sphere)
-* [DigitalOcean](/shared/cloudlinux_installation/#digitalocean)
-* [Linode](/shared/cloudlinux_installation/#linode)
-* [Virtuozzo and OpenVZ](/shared/cloudlinux_installation/#virtuozzo-and-openvz)
-
-### AWS
-
-CloudLinux OS Shared image list can be found *[here](https://download.cloudlinux.com/cloudlinux/images/#aws-tab)*.
-
-If you are going to use CloudLinux OS Shared with cPanel image, you may find useful the following *[article](https://cloudlinux.zendesk.com/hc/en-us/articles/360014130320-How-to-get-CloudLinux-OS-with-cPanel-AMI-working-on-AWS)*.
-
-### H-Sphere
-
-* [Requirements](/shared/cloudlinux_installation/#requirements)
-* [Converting from mod_fastcgi to mod_fcgid](/shared/cloudlinux_installation/#converting-from-mod-fastcgi-to-mod-fcgid)
-* [Older versions of H-Sphere](/shared/cloudlinux_installation/#older-versions-of-h-sphere)
-
-:::tip Note
-For H-Sphere 3.5+
-Please note, that CageFS and PHP Selector are not supported for H-Sphere
-:::
-
-#### Requirements
-
-1. CloudLinux OS Shared with liblve 0.8 or later.
-2. Apache 2.2.x or 1.3.
-3. mod_suexec should be enabled.
-
-To achieve optimal performance, we recommend to [convert from mod_fastcgi to mod_fcgid](/shared/cloudlinux_installation/#converting-from-mod-fastcgi-to-mod-fcgid).
-
-There is no need to install mod_hostinglimits – it comes built in with H-Sphere. Once you load kernel from CloudLinux OS Shared with liblve 0.8 or later – it will get enabled.
-
-You can check if LVE is enabled by running:
-<span class="notranslate"> </span>
-```
-$ ps aux | grep httpd | grep DLIBLVE
-```
-
-If you see no output, it means that Apache didn't pick up LVE. Try checking file <span class="notranslate">` /hsphere/shared/scripts/apache-get-env.sh`</span>
-
-The following lines should be there:
-<div class="notranslate">
-
-```
-if [ -e /usr/lib64/liblve.so.0 -o -e /usr/lib/liblve.so.0 ]; then
-APENV_DSSL="$APENV_DSSL -DLIBLVE"
-fi
-```
-
-</div>
-
-If those strings are absent, you should add it, after:
-
-<div class="notranslate">
-
-```
-else
-APENV_DSSL='-DSSL'
-fi
-###
-```
-
-</div>
-
-and before:
-
-<div class="notranslate">
-
-```
-# this is used by apacheGetEnv.pm perl module
-if [ "$1" = 'show' ] ; then
-set | egrep "^APENV_"
-fi
-```
-
-</div>
-
-strings.
-
-Restart Apache afterward.
-
-:::tip Note
-Don't forget to [convert from mod_fastcgi to mod_fcgid](/shared/cloudlinux_installation/#converting-from-mod-fastcgi-to-mod-fcgid).
-:::
-
-#### Converting from mod_fastcgi to mod_fcgid
-
-To achieve the best results in productivity and stability we recommend converting from <span class="notranslate">`mod_fastcgi`</span> to <span class="notranslate">`mod_fcgid`</span>.
-
-:::tip Note
-H-Sphere 3.6.3+
-:::
-
-1. Download our fcgi.conf file:
-   
-<div class="notranslate">
-
-```
-$ wget -O /hsphere/local/config/httpd2/fcgi.conf https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/fcgi.conf
-```
-</div>
-
-2. Edit <span class="notranslate">`~httpd2/conf/extra/httpd-hostinglimits.conf`</span> to the following state:
-   
-<div class="notranslate">
-
-```
-######
-LoadModule hostinglimits_module /hsphere/shared/apache2/modules/mod_hostinglimits.so
-
-<IfModule mod_hostinglimits.c>
-SkipErrors Off
-AllowedHandlers cgi-script %php% fcgid-script application/x-miva-compiled
-DenyHandlers hs-php5-script hs-php53-script hs-php54-script
-Include /hsphere/local/config/httpd2/fcgi.conf
- 
-</IfModule>
-#######
-```
-</div>
-
-3. Go to <span class="notranslate">`P.Servers > web server [Config]`</span> and be sure to have enabled:
-   * <span class="notranslate">`apache_version=2`</span>
-   * <span class="notranslate">`apache_mpm=prefork`</span>
-   * <span class="notranslate">`apache_fastcgi`</span>
-   * <span class="notranslate">`apache_fcgid`</span>
-   * <span class="notranslate">`PHP version/mode: php_fastcgi`*</span>
-
-:::tip Note
-*No changes needed to `httpd.conf.tmpl.custom` or `usermodule.phpmode` as this version provides its own mod_fcgid.
-:::
-
-#### Older versions of H-Sphere
-
-1. Compile mod_fcgid module:
-   
-<div class="notranslate">
-
-```
-$ yum install gcc liblve-devel zlib-devel openssl-devel 
-$ wget https://apache.osuosl.org//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
-$ tar zxvf mod_fcgid-2.3.9.tar.gz
-$ cd mod_fcgid-2.3.9/
-$ APXS=/hsphere/shared/apache2/bin/apxs ./configure.apxs 
-$ make
-$ mv modules/fcgid/.libs/mod_fcgid.so /hsphere/shared/apache2/modules
-```
-</div>
-
-2. Download and apply patch [https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/usemodule.phpmode.patch](https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/usemodule.phpmode.patch) to `/hsphere/local/config/scripts/usemodule.phpmode`:
-   
- <div class="notranslate">
-
-```
-$ wget https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/usemodule.phpmode.patch 
-$ patch /hsphere/local/config/scripts/usemodule.phpmode usemodule.phpmode.patch
-```
-
-</div>
-
-3. If `/hsphere/local/config/httpd2/httpd.conf.tmpl.custom` does not exists – create it:
-   
-<div class="notranslate">
-
-```
-$ cp -rp /hsphere/local/config/httpd2/httpd.conf.tmpl /hsphere/local/config/httpd2/httpd.conf.tmpl.custom
-```
-</div>
-
-Download and apply patch [https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/httpd.conf.tmpl.patch](https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/httpd.conf.tmpl.patch) to the <span class="notranslate">`/hsphere/local/config/httpd2/httpd.conf.tmpl.custom`</span>:
-
-<div class="notranslate">
-
-```
-$ wget https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/httpd.conf.tmpl.patch 
-$ patch --fuzz=3 /hsphere/local/config/httpd2/httpd.conf.tmpl.cusom  httpd.conf.tmpl.patch
-```
-
-</div>
-
-4. Download pre-defined config file [https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/fcgi.conf](https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/fcgi.conf) to `/hsphere/local/config/httpd2`:
-
-<div class="notranslate">
-
-```
-$ wget -O /hsphere/local/config/httpd2/fcgi.conf https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/fcgi.conf
-```
-
-</div>
-
-5. Download our wrapper file [https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/php-wrapper](https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/php-wrapper) into <span class="notranslate">`/hsphere/shared/php5/bin/`</span> and make it executable:
-
-<div class="notranslate">
-
-```
-$ wget -O /hsphere/shared/php5/bin/php-wrapper https://repo.cloudlinux.com/cloudlinux/sources/mod_fcgid-hsphere/php-wrapper
-$ chmod 755 /hsphere/shared/php5/bin/php-wrapper
-```
-
-</div>
-
-6. Change permissions for <span class="notranslate">`/hsphere/local/home`</span> to 755:
-   
-<div class="notranslate">
-
-```
-$ chmod 755 /hsphere/local/home
-```
-
-</div>
-
-7. Edit <span class="notranslate">`~httpd2/conf/extra/httpd-hostinglimits.conf`</span> and add DenyHandlers, so section will look like:
-   
-<div class="notranslate">
-
-```
-<IfModule mod_hostinglimits.c>
-SkipErrors Off
-AllowedHandlers cgi-script %php% fcgid-script application/x-miva-compiled
-DenyHandlers hs-php5-script hs-php53-script hs-php54-script 
-</IfModule>
-```
-
-</div>
-
-8. Configure physical server from H-Sphere admin > E.Manager > P.Servers > server_name [parameters] icon, settings should be:
- 
-<div class="notranslate">
-
-```
-apache_version = 2
-apacha_fastcgi = yes
-apache_status = yes
-```
-</div>
-
-
-![](./images/sshot-2013-07-30-21-25-48.png)
-
-9. Set PHP configuration to:
-    
-<div class="notranslate">
-
-```
-php_libphp5 enabled but not default
-php_fastcgi5 enabled and is default
-```
-</div>
-
-![](./images/sshot-2013-07-30-21-31-05.png)
-
-Other options could be configured according to personal needs.
-
-When done - click <span class="notranslate">_SUBMIT_</span> to apply changes.
-
-:::tip Note
-After updating H-Sphere software on web server with CloudLinux OS Shared you need to re-apply step 2 (patch usemodule.phpmode) and restart apache with `/hsphere/shared/scripts/apache-restart` script.
-:::
-
-### DigitalOcean
-
-* [Adding CloudLinux OS Shared image to DigitalOcean](/shared/cloudlinux_installation/#adding-cloudlinux-os-shared-image-to-digitalocean)
-
-How to make CloudLinux OS Shared work on DigitalOcean:
-
-DigitalOcean doesn't support custom kernels. The droplet (VM) always runs DigitalOcean's kernel. CloudLinux OS Shared requires its own kernel. To enable CloudLinux OS Shared work on DigitalOcean droplets, we provide ability to boot into CloudLinux OS Shared kernel using `kexec` functionality.
-
-How does this work:
-
-* <span class="notranslate"> cldeploy </span> script checks for presence of <span class="notranslate">`/etc/digitalocean`</span>. If the file detected, we assume that this is DigitalOcean droplet;
-* <span class="notranslate">`kexec-tools`</span> are installed;
-* <span class="notranslate">`kexec`</span> script will be created in <span class="notranslate">`/etc/rc.d/init.d/`</span> and set to run right after <span class="notranslate">`rc.sysinit`</span>.
-
-When executed, script <span class="notranslate">`/etc/rc.d/init.d/kexec`</span> detects the latest installed CloudLinux OS Shared kernel, and loads that kernel.
-
-If the system cannot boot into CloudLinux OS Shared kernel (due to any reason), subsequent reboot will skip <span class="notranslate">`kexec`</span>, allow droplet to boot into DigitalOceans' kernel.
-
-To disable booting into Cloudlinux OS Shared kernel, run:
-
-<div class="notranslate">
-
-```
-chkconfig --del kexec
-```
-</div>
-
-To re-enable booting into CloudLinux OS Shared kernel, run:
-<div class="notranslate">
-
-```
-chkconfig --add kexec
-```
-</div>
-
-#### Adding CloudLinux OS Shared image to DigitalOcean
-
-Custom images are Linux distributions that have been modified to fit the specific needs of DigitalOcean users. You can find some basics of importing a custom CloudLinux OS Shared image below.
-
-Importing custom images to DigitalOcean is free, as you are only charged for the storage of your image. To save money, you can easily import your image, start a Droplet from your image, and delete the image, so you don’t incur any storage costs.
-
-Below, we will describe how to add a qcow2 (QEMU/KVM) CloudLinux OS Shared image as a custom image. You can find more information on image options at [https://www.digitalocean.com/docs/images/custom-images/overview/](https://www.digitalocean.com/docs/images/custom-images/overview/)
-
-1. To choose the right image, navigate to [https://download.cloudlinux.com/cloudlinux/images/#kvm-tab](https://download.cloudlinux.com/cloudlinux/images/#kvm-tab). Several different images are available for download (with and without a control panel).
-
-![](./images/cloudlinuximages.png)
-
-2. Copy the link for the image you are going to use and log into [cloud.digitalocean.com](https://blog.digitalocean.com/custom-images/cloud.digitalocean.com).
-
-Click <span class="notranslate">_Images_</span> on the left of the screen and then choose <span class="notranslate">_Custom Images_</span>. Click the <span class="notranslate">_Import via URL_</span> button and paste the CloudLinux OS Shared image link.
-
-![](./images/customimages.png)
-
-There are several options here, but the most important is <span class="notranslate">_Choose a datacenter region_</span>, i.e. which datacenter region your Droplets should be created in for this image.
-
-![](./images/uploadimage.png)
-
-Click the <span class="notranslate">_Upload Image_</span> button and wait until the image is successfully uploaded.
-
-3. Add your public key to access your droplets using key-based authentication: navigate to the <span class="notranslate">_Security_</span> sidebar menu and click the <span class="notranslate">_Add SSH Key_</span> button.
-
-You can find more information about creating/adding SSH keys in [this article](https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/).
-
-![](./images/addsshkey.png)
-
-4. You will then be able to start a CloudLinux OS Shared Droplet using the image.
-   
-   :::tip Note
-   Your Droplet will be created in the same datacenter that your custom image resides in.
-   :::
-
-![](./images/startdroplet.png)
-
-5. Now, use your preferred SSH client software to connect to your Droplet. You can find more information on SSH client setup [here](https://www.digitalocean.com/docs/droplets/how-to/connect-with-ssh/).
-
-![](./images/sshclient.png)
-
-
-### Linode
-
-* [CloudLinux OS Shared on Linode KVM](/shared/cloudlinux_installation/#cloudlinux-os-shared-on-linode-kvm)
-* [CloudLinux OS Shared on Linode Xen](/shared/cloudlinux_installation/#cloudlinux-os-shared-on-linode-xen)
-
-:::warning Warning
-If you are installing CloudLinux OS Shared 8, please make sure you’ve read [https://www.linode.com/community/questions/19397/i-just-upgraded-my-centos-8-linode-and-now-it-wont-boot-how-do-i-fix-this-proble](https://www.linode.com/community/questions/19397/i-just-upgraded-my-centos-8-linode-and-now-it-wont-boot-how-do-i-fix-this-proble)
-:::
-
-
-#### CloudLinux OS Shared on Linode KVM
-
-To install CloudLinux OS Shared 7 on Linode KVM server you should perform the following steps:
-
-1. Deploy CL to your Linode following the steps from *[this section](/shared/cloudlinux_installation/#converting-existing-servers)*.
-
-2. Install grub on your system:
-   
-<div class="notranslate">
-
-```
-yum install grub2
-```
-</div>
-
-3. Add to <span class="notranslate">`/etc/default/grub`</span> the following parameters:
-   
-<div class="notranslate">
-
-```
-GRUB_TIMEOUT=10
-GRUB_CMDLINE_LINUX="console=ttyS0,19200n8"
-GRUB_DISABLE_LINUX_UUID=true
-GRUB_SERIAL_COMMAND="serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1"
-```
-</div>
-
-4. Update grub config:
-   
-<div class="notranslate">
-
-```
-grub2-mkconfig -o /boot/grub/grub.cfg
-```
-</div>
-
-5. Edit your Linode profile, change the boot settings to <span class="notranslate">`GRUB 2`</span> .
-
-6. Reboot your Linode.
-
-After reboot you will have fully operational CloudLinux OS Shared 7 system and can proceed with other configuration you need.
-
-#### CloudLinux OS Shared on Linode Xen
-
-To install CloudLinux OS Shared 7 on Linode Xen please perform the following steps:
-
-1. Deploy CL to your Linode following the steps from *[this section](/shared/cloudlinux_installation/#converting-existing-servers)*.
-
-2. Create the file <span class="notranslate">`/boot/grub/menu.lst`</span> with the following content:
-   
-<div class="notranslate">
-
-```
-timeout 5
-title CloudLinux 7.1, $KVERSION
-root (hd0)
-kernel /boot/vmlinuz-$KVERSION root=/dev/xvda1 ro quiet
-initrd /boot/initramfs-$KVERSION.img
-```
-</div>
-
-where <span class="notranslate">`$KVERSION`</span> is the version of the installed CloudLinux OS Shared 7 kernel.
-
-:::tip Note
-You will need to update <span class="notranslate">`/boot/grub/menu.lst`</span> manually after every kernel update.
-:::
-
-3. Switch boot settings to <span class="notranslate">`pv-grub-x86_64`</span> and switch off <span class="notranslate">`Auto-configure networking`</span> in Linode settings.
-
-4. Reboot your Linode.
-
-In case if you will migrate to KVM later you will need only switch the boot settings to <span class="notranslate">`GRUB 2`</span>.
-
-
-### Virtuozzo and OpenVZ
-
-* [Virtuozzo 7 and OpenVZ 7](/shared/cloudlinux_installation/#virtuozzo-7-and-openvz-7)
-* [Virtuozzo 6 and OpenVZ 6](/shared/cloudlinux_installation/#virtuozzo-6-and-openvz-6)
-
-
-#### Virtuozzo 7 and OpenVZ 7
-
-
-To use CloudLinux Shared Pro in Virtuozzo container, please update the next packages to the specified versions (or higher):  
-
-* alt-php-ssa-0.3-4
-* alt-php-xray-0.5-8
-* cloudlinux-linksafe-1-5.2
-* accelerate-wp-1.0-11
-* lvemanager-7.7.5-2
-* alt-python27-cllib-3.2.32-1
-* pam_lve-0.4-3	
-* lve-wrappers-0.7.7-1
-* lve-utils-6.4.3-1
-* cagefs-7.5.1-1
-* liblve-2.1-11
-* tuned-profiles-cloudlinux-0.2-3
-
-
-#### Available Functionality
- 
-* [Lsapi](/shared/cloudlinux_installation/#lsapi)
-* [AccelerateWP](/shared/cloudlinux_installation/#acceleratewp)
-* [Hardened PHP](/shared/control_panel_integration/#hardened-php)
-* [Website monitoring and Slow Site Analyzer](/shared/lve_manager/#website-monitoring-tool-and-slow-site-analyzer)
-* [X-Ray](/shared-pro/x-ray)
-* [CageFS](/shared/cloudlinux_installation/#cagefs)
-* [PHP Selector](/shared/cloudlinux_installation/#php-selector)
-* [Wizard](/shared/cloudlinux_installation/#cloudlinux-wizard)
-* [Dashboard](/shared/cloudlinux_installation/#dashboard)
-* [Python Selector](/shared/cloudlinux_installation/#python-selector)
-* [Node.js Selector](/shared/cloudlinux_installation/#node-js-selector)
-
-
-#### Requirements
-
-* [Virtuozzo 7](https://wiki.openvz.org/Virtuozzo) as server system
-* Virtuozzo container with CloudLinux Shared Pro 8 
-* cloudlinux-updates-testing repo is enabled (+ `yum clean all`)
-
-#### How to install 
-
-1. Prepare Virtuozzo container with ostemplate almalinux-8-x86_64
-2. Enter to the container 
-3. Install cPanel:
-```
-cd /home && curl -o latest -L https://securedownloads.cpanel.net/latest && sh latest
-```
-4. Download and start cldeploy:
-```
-wget https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
-chmod 775  cldeploy
-./cldeploy -k SHARED_PRO_CLN_KEY_HERE --testing-repo
-```
-5. You don't need to restart the container after the cldeploy script finished execution.
-
-
-#### CloudLinux Wizard
-
-Wizard is a tool to set up CloudLinux OS components.
-
-In the current version only the lsapi module can be installed.
-
-![](./images/WizardVZ.png)
-
-#### Dashboard
-
-CloudLinux OS Shared dashboard provides a quick overview of statistics and all administrative information for server administrators.
-
-In the current version only statistics about the lsapi module is available.
-
-![](./images/DashboardVZ.png)
-
-#### Lsapi 
-
-To install Lsapi via CloudLinux Wizard, please turn off mod_ruid2 in EasyApache 4 -> Apache Modules.
-
-:::tip Note
-For EasyApache select `Currently Installed Packages`.
-:::
-
-![](./images/LsapiVZ1.png)
-
-![](./images/LsapiVZ2.png)
-
-![](./images/LsapiVZ3.png)
-
-
-:::tip Note
-Currently mod_suexec is not available in containers and will be released in future versions. Just ignore this message, click "ok" and continue installing lsapi via the Wizard.
-:::
-
-You can find the complete lsapi documentation [here](https://docs.cloudlinux.com/shared/cloudlinux_os_components/#apache-mod-lsapi-pro).
-
-#### AccelerateWP 
-
-If you'd like to try Smart Advice and AccelerateWP you should participate in the Beta tester program. To become a beta tester, please send your request at our Beta program page with the signup form [here](https://www.cloudlinux.com/wp-performance/). Once you submit the request, we will send you a confirmation email with program details, terms of use, and installation instructions.
-
-All additional information can be found [here](https://docs.cloudlinux.com/shared-pro/acceleratewp).
-
-
-#### CageFS
-
-You can fing CageFS documentation [here](/shared/cloudlinux_os_components/#cagefs).
-
-:::warning Attention!
-[Kernel config variables](/shared/cloudlinux_os_kernel/#kernel-config-variables) are not available for the Virtuozzo container!
-:::
-
-
-#### PHP Selector
-
-#### How to install
-
-1. To install via SSH, update your packages in the container:
-   ```sh
-   yum update alt-python27-cllib pam_lve lve-wrappers lve-utils liblve tuned-profiles-cloudlinux lvemanager
-   ```
-2. The following commands can be executed via SSH or via CloudLinux Wizard 
-   **Via SSH:**
-   ```sh
-   yum install cagefs
-   yum groupinstall alt-php
-   cagefsctl –init
-   ```
-   **Via CloudLinux Wizard (cPanel only):**
-   ![](./images/CLWizardInstallation.png)
-3. Make sure compatible handlers are installed:
-   **Via SSH:**
-   ```
-   yum install ea-apache24-mod_suexec
-   yum install ea-apache24-mod_suphp
-   ```
-   **Or**<br>
-   [Install lsapi](/shared/cloudlinux_os_components/#installing-on-cpanel-servers-with-easyapache-4)<br>
-   **It's also possible to install via CloudLinux Wizard:**<br>
-   The `mod_suexec` and `mod_suphp` can be installed via cPanel EasyApache4 installation tool.<br><br>
-4. Make sure users are enabled in the CageFS:
-   ![](./images/UsersEnabled.png)
-
-Useful links:
-
-* [General information and requirements](/shared/cloudlinux_os_components/#general-information-and-requirements-5)
-	* [Installation and update](/shared/cloudlinux_os_components/#installation-and-update-4)
-	* [Installation instructions for cPanel users](/shared/cloudlinux_os_components/#installation-instructions-for-cpanel-users)
-* [Uninstalling](/shared/cloudlinux_os_components/#uninstalling-3)
-	* [Configuration and using](/shared/cloudlinux_os_components/#configuration-and-using)
-	* [Bundled PHP extensions](/shared/cloudlinux_os_components/#bundled-php-extensions)
-
-
-#### Python Selector 
-
-Python Ыelector for Virtuozzo is available starting from the following packages version:
-
-* lve-2.1-14
-* alt-python27-cllib-3.2.47-1
-* lvemanager-7.8.8-1
-* cagefs-7.5.5-1
-
-Please update or install the packages mentioned above using the following command:
-
-```
-yum update lve alt-python27-cllib lvemanager cagefs --enablerepo=cloudlinux-updates-testing
-```
-
-The installation of Python Selector is available via CloudLinux Wizard. Aslo, the information about manual installation can be found [here](/shared/cloudlinux_os_components/#cpanel-2).
-
-Information about working with Python Selector via GUI can be found [here](/shared/lve_manager/#python-selector-2).
-
-
-#### Node.js Selector
-
-Node.js Selector for Virtuozzo is available starting from the following packages version:
-
-* lve-2.1-14
-* alt-python27-cllib-3.2.47-1
-* lvemanager-7.8.8-1
-* cagefs-7.5.5-1
-
-Please update or install the packages mentioned above using the following command:
-
-```
-yum update lve alt-python27-cllib lvemanager cagefs --enablerepo=cloudlinux-updates-testing
-```
-
-#### Installation for cPanel
-
-To use Node.js Selector, install Node.js packages by running the following command:
-
-```
-yum groupinstall alt-nodejs
-```
-
-CloudLinux OS Shared 7 supports both `ea-ruby24-mod_passenger` and `ea-ruby27-mod_passenger`.
-
-:::tip Note
-The `ea-apache24-mod-alt-passenger` is deprecated in favor of `ea-ruby24-mod_passenger` and `ea-ruby27-mod_passenger`.
-:::
-
-#### General Information 
-
-General information can be found [here](/shared/cloudlinux_os_components/#general-information-and-requirements-7). 
-
-#### Requirements  
-
-Information about Requirements can be found [here](/shared/cloudlinux_os_components/#requirements-2).
-
-#### Limitations 
-
-Information about limitations can be found [here](/shared/cloudlinux_os_components/#limitations). 
-
-If during Node.js Selector usage on cPanel servers you get "ENOMEM npm ERR! errno-12" error, try to increase Memory limit in cPanel WHM → Server Configuration → Tweak Settings → System → Max cPanel process memory, then restart cPanel service with the following command to apply changes:
-
-```
-systemctl restart cpanel.service
-```
-
-#### Node.js Deployment 
-
-Information about Node.js deployment can be found [here](/shared/cloudlinux_os_components/#node-js-deployment).
-
-#### Remote Usage of Node.js Interpreters 
-
-Information about Remote usage of Node.js interpreters can be found [here](/shared/cloudlinux_os_components/#remote-usage-of-node-js-interpreters).
-
-#### Node.js Selector UI
-
-Information about working with Node.js Selector via UI can be found [here](./lve_manager/#node-js-selector-2).
-
-
-
-#### FAQ
-
-Q: My CloudLinux Manager-> options menu is empty.
-
-A: You don't have AccelerateWP enabled and PHP X-Ray enabled, so there is nothing to configure. Install and enable any of those features to see settings. This minor UI issue will be fixed in future updates.
-
-Q: Dashboard says both: that data is updated and that I need to refresh it and both panels never disappear.
-
-A: Just click the refresh button and reload the page, data will be loaded soon.
-
-Q: Website monitoring does not appear enabled after clicking the toggle.
-
-A: Just reload the page, the feature will be displayed as active.
-
-Q: Website monitoring proposes me to enable autotracing while I disable it.
-
-A: Issue is known and will be fixed soon.
-
-
-#### Known Restrictions and Issues
-
-1. We do not recommend using [disk quota](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-disk-quotas) inside of containers - PHP Selector may be not functional for a user when disk quota is exceeded for the user.
-
-2. The following systemd directives may break CageFS inside containers:
-   * PrivateDevices
-   * PrivateMounts
-   * PrivateTmp
-   * ProtectSystem
-   * ReadOnlyDirectories
-   * ReadWriteDirectories
-   * InaccessibleDirectories
-   * ProtectHome
-
-#### Virtuozzo 6 and OpenVZ 6
-
-#### Installation
-
-:::tip Note
-Make sure all containers are stopped prior to doing this operation. Or reboot the server after the installation.
-:::
-
-:::tip Note
-Please make sure you have <span class="notranslate">`vzkernel-headers`</span> and <span class="notranslate">`vzkernel-devel`</span> packages installed.
-:::
-
-<div class="notranslate">
-
-```
-yum install vzkernel-headers vzkernel-devel
-
-$ wget -P /etc/yum.repos.d/ https://repo.cloudlinux.com/vzlve/vzlve.repo
-$ yum install lve-kernel-module
-```
-
-</div>
-
-
-This will setup LVE module for VZ kernel, as well as DKMS to update that module each time VZ kernel is updated.
-
-After this is done, you can add LVE support for any container on a node, at any time.
-
-To make CloudLinux OS Shared work inside VZ container, VZ node has to be enabled. This should be done for any container where LVE support needs to be added:
-
-
-<div class="notranslate">
-
-```
-$ vzctl set CT_ID --devnodes lve:rw --save
-```
-
-</div>
-
-To disable LVE support for Container:
-
-<div class="notranslate">
-
-```
-$ vzctl set CT_ID --devnodes lve:none --save
-```
-
-</div>
-
-Inside the container, follow [standard CloudLinux installation procedures](/shared/cloudlinux_installation/#converting-existing-servers).
-
-CloudLinux OS Shared license is required for each VZ container.
-
-:::tip Note
-Some servers require increasing `fs.ve-mount-nr` on host node, otherwise CageFS will throw errors.
-:::
-
-To increase `fs.ve-mount-nr`, on a host node:
-
-1. add <span class="notranslate">`fs.ve-mount-nr = 15000`</span> to <span class="notranslte">`/etc/sysctl.conf`</span>;
-
-2. apply it with the <span class="notranslate">`sysctl -p`</span> command.
-
-In very rare cases the value should be increased higher, up to 50000.
-
-#### Available functionality
-
-* CageFS
-* PHP Selector
-* max entry processes
-* mod_lsapi
-* MySQL Governor
-
-
-
-
-
-## LILO boot loader
-
-CloudLinux OS can be deployed on servers that don't have grub installed, by installing <span class="notranslate">`хороgrub`</span> first.
-
-To do that:
-
-1. Make sure grub and kernel packages are not excluded. Edit file <span class="notranslate">`/etc/yum.conf`</span> and check <span class="notranslate">`exclude=`</span> line for presence of <span class="notranslate">`kernel* grub*`</span>.
-
-2. Backup lilo config file:
-   
-<div class="notranslate">
-
-```
-mv /etc/lilo.conf /etc/lilo.conf.bak
-```
-</div>
-
-3. Convert to CloudLinux OS Shared using <span class="notranslate"> [deploy2cl](/shared/cloudlinux_installation/#converting-existing-servers)</span> utility.
-
-4. Check <span class="notranslate">`grub.conf`</span> – it should be configured automatically:
- 
- <div class="notranslate">
-
- ```
- # cat /boot/grub/grub.conf
-default=0
-timeout=5
- title CloudLinux Server (2.6.18-294.8.1.el5.lve0.7.33)
-      kernel /boot/vmlinuz-2.6.18-294.8.1.el5.lve0.7.33 root=/dev/sda1  ro
-      root (hd0,0)
-      initrd /boot/initrd-2.6.18-294.8.1.el5.lve0.7.33.img
-      title linux centos5_64
-      kernel /boot/bzImage-2.6.33.5-xxxx-grs-ipv4-64 root=/dev/sda1  ro
-      root (hd0,0)
-```
-</div>
-
-5. Install grub to master boot record:
-   
- <div class="notranslate">
-
- ```
- /sbin/grub-install /dev/sda
- ```
- </div>
-
-6. Reboot and check that you are running CloudLinux OS Shared. <span class="notranslate">`uname -r`</span> should show something like: <span class="notranslate">`2.6.18-294.8.1.el5.lve0.7.33`</span>.
-
-## Uninstalling
-
-You can always uninstall CloudLinux OS. In this case, the system will be converted back to AlmaLinux or CentOS* (Depends on what system the conversion was done from).
-
-:::warning
-CentOS Linux 8 reached End Of Life (EOL) on December 31st, 2021. You can still uninstall CloudLinux and return to CentOS 8, but we don't guarantee stable operation of the system and its repositories after this action.
-:::
-
-The following actions will be taken:
-
-1. LVE related packages will be removed.
-2. CloudLinux OS Shared repositories & <span class="notranslate">yum</span> plugin will be removed.
-3. AlmaLinux or CentOS* repositories will be set up.
-
-In the end, the script will provide instructions on how to finish the conversion back to AlmaLinux or CentOS*. That will require removal of CloudLinux OS Shared kernel (manual step), and installation of AlmaLinux or CentOS* kernel (if needed).
-
-:::warning
-Do not forget to free up a CloudLinux OS Shared license by removing the server from the [Servers section of your CLN account](https://docs.cloudlinux.com/cln/dashboard/#servers). After that, if you don't intend to use the license anymore, you can [remove it](https://docs.cloudlinux.com/cln/dashboard/#cloudlinux-os-activation-keys) to avoid being billed for it. 
-:::
-
-To uninstall CloudLinux OS, run:
-
-```
-$ wget -O cldeploy https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
-$ sh cldeploy -c
-```
-
-Now you have converted back to AlmaLinux or CentOS* and it is the time to install kernel.
-
-To delete CloudLinux OS kernel, run (change the kernel package name to the one you've been using):
-
-
-```
-rpm -e --nodeps $(rpm -qa | grep kernel | grep lve)
-```
-
-To install new AlmaLlinux or CentOS* kernel once you deleted CloudLinux OS Shared kernel, run the following command:
-
-```
-yum install kernel
-```
-
-If `yum` says that the latest kernel is already installed, it is OK.
-
-Please check your bootloader configuration before rebooting the system.
-
-To remove unused kmods and lve libs, run:
-
-```
-yum remove lve kmod*lve*
-```
-
-Kernel package and related LVE packages should be deleted and the required kernel will be installed.
-
-Before the reboot, the following command should be executed for restoring Apache and httpd.conf without mod_hostinglimits.
-
-**For EasyApache 3:**
-
-```
-/scripts/easyapache --build
-```
-
-**For EasyApache 4:**
-
-```
-/usr/local/bin/ea_install_profile --install /etc/cpanel/ea4/profiles/cpanel/default.json
-```
-
-:::tip Note
-Some of the packages from CloudLinux OS repo will still be present. They are the same as AlmaLinux or CentOS* packages, and don't have to be removed. They will be updated in the future from AlmaLinux or CentOS* repositories, as new versions come out.
-:::
diff --git a/docs/shared/cloudlinux_installation/images/.DS_Store b/docs/shared/cloudlinux_installation/images/.DS_Store
deleted file mode 100644
index b7a30b99e..000000000
Binary files a/docs/shared/cloudlinux_installation/images/.DS_Store and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/AzureSearch.png b/docs/shared/cloudlinux_installation/images/AzureSearch.png
deleted file mode 100644
index 5de669801..000000000
Binary files a/docs/shared/cloudlinux_installation/images/AzureSearch.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/AzureSwitch.png b/docs/shared/cloudlinux_installation/images/AzureSwitch.png
deleted file mode 100644
index c0818af02..000000000
Binary files a/docs/shared/cloudlinux_installation/images/AzureSwitch.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/AzureVirt.png b/docs/shared/cloudlinux_installation/images/AzureVirt.png
deleted file mode 100644
index 56065c475..000000000
Binary files a/docs/shared/cloudlinux_installation/images/AzureVirt.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/CLWizardInstallation.png b/docs/shared/cloudlinux_installation/images/CLWizardInstallation.png
deleted file mode 100644
index aaa1d68d5..000000000
Binary files a/docs/shared/cloudlinux_installation/images/CLWizardInstallation.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/DashboardVZ.png b/docs/shared/cloudlinux_installation/images/DashboardVZ.png
deleted file mode 100644
index de28161af..000000000
Binary files a/docs/shared/cloudlinux_installation/images/DashboardVZ.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/LsapiVZ1.png b/docs/shared/cloudlinux_installation/images/LsapiVZ1.png
deleted file mode 100644
index d30380cda..000000000
Binary files a/docs/shared/cloudlinux_installation/images/LsapiVZ1.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/LsapiVZ2.png b/docs/shared/cloudlinux_installation/images/LsapiVZ2.png
deleted file mode 100644
index 5d24da04b..000000000
Binary files a/docs/shared/cloudlinux_installation/images/LsapiVZ2.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/LsapiVZ3.png b/docs/shared/cloudlinux_installation/images/LsapiVZ3.png
deleted file mode 100644
index e20991bc0..000000000
Binary files a/docs/shared/cloudlinux_installation/images/LsapiVZ3.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/UsersEnabled.png b/docs/shared/cloudlinux_installation/images/UsersEnabled.png
deleted file mode 100644
index 763a59646..000000000
Binary files a/docs/shared/cloudlinux_installation/images/UsersEnabled.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/WizardVZ.png b/docs/shared/cloudlinux_installation/images/WizardVZ.png
deleted file mode 100644
index 19b3d8331..000000000
Binary files a/docs/shared/cloudlinux_installation/images/WizardVZ.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/addsshkey.png b/docs/shared/cloudlinux_installation/images/addsshkey.png
deleted file mode 100644
index a8b03d170..000000000
Binary files a/docs/shared/cloudlinux_installation/images/addsshkey.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/cl9_secureboot/1.png b/docs/shared/cloudlinux_installation/images/cl9_secureboot/1.png
deleted file mode 100644
index 7deb8182a..000000000
Binary files a/docs/shared/cloudlinux_installation/images/cl9_secureboot/1.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/cl9_secureboot/2.png b/docs/shared/cloudlinux_installation/images/cl9_secureboot/2.png
deleted file mode 100644
index 56ead7aff..000000000
Binary files a/docs/shared/cloudlinux_installation/images/cl9_secureboot/2.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/cl9_secureboot/3.png b/docs/shared/cloudlinux_installation/images/cl9_secureboot/3.png
deleted file mode 100644
index a61a709ba..000000000
Binary files a/docs/shared/cloudlinux_installation/images/cl9_secureboot/3.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/cl9_secureboot/4.png b/docs/shared/cloudlinux_installation/images/cl9_secureboot/4.png
deleted file mode 100644
index a3030f74b..000000000
Binary files a/docs/shared/cloudlinux_installation/images/cl9_secureboot/4.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/cl9_secureboot/5.png b/docs/shared/cloudlinux_installation/images/cl9_secureboot/5.png
deleted file mode 100644
index 615c56c88..000000000
Binary files a/docs/shared/cloudlinux_installation/images/cl9_secureboot/5.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/cl9_secureboot/6.png b/docs/shared/cloudlinux_installation/images/cl9_secureboot/6.png
deleted file mode 100644
index 6993d30ac..000000000
Binary files a/docs/shared/cloudlinux_installation/images/cl9_secureboot/6.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/cloudlinuximages.png b/docs/shared/cloudlinux_installation/images/cloudlinuximages.png
deleted file mode 100644
index 4269613fe..000000000
Binary files a/docs/shared/cloudlinux_installation/images/cloudlinuximages.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/customimages.png b/docs/shared/cloudlinux_installation/images/customimages.png
deleted file mode 100644
index a1fe40073..000000000
Binary files a/docs/shared/cloudlinux_installation/images/customimages.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_available.png b/docs/shared/cloudlinux_installation/images/installation_available.png
deleted file mode 100644
index ed38e5aea..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_available.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_done.png b/docs/shared/cloudlinux_installation/images/installation_done.png
deleted file mode 100644
index 69edad6ef..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_done.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_iso_source.png b/docs/shared/cloudlinux_installation/images/installation_iso_source.png
deleted file mode 100644
index 6855d894c..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_iso_source.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_iso_source_old.png b/docs/shared/cloudlinux_installation/images/installation_iso_source_old.png
deleted file mode 100644
index 0e376e8f9..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_iso_source_old.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_progress.png b/docs/shared/cloudlinux_installation/images/installation_progress.png
deleted file mode 100644
index b5c9bff7e..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_progress.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_source_gray_done.png b/docs/shared/cloudlinux_installation/images/installation_source_gray_done.png
deleted file mode 100644
index 449fed1b2..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_source_gray_done.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_source_gray_done_old.png b/docs/shared/cloudlinux_installation/images/installation_source_gray_done_old.png
deleted file mode 100644
index 025860a74..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_source_gray_done_old.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_source_gray_network.png b/docs/shared/cloudlinux_installation/images/installation_source_gray_network.png
deleted file mode 100644
index a7f911b67..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_source_gray_network.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_source_gray_network_old1.png b/docs/shared/cloudlinux_installation/images/installation_source_gray_network_old1.png
deleted file mode 100644
index 7f7df0f15..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_source_gray_network_old1.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_source_gray_working.png b/docs/shared/cloudlinux_installation/images/installation_source_gray_working.png
deleted file mode 100644
index 201c8e203..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_source_gray_working.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_source_network_address.png b/docs/shared/cloudlinux_installation/images/installation_source_network_address.png
deleted file mode 100644
index 854b92cbe..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_source_network_address.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_source_network_address_old.png b/docs/shared/cloudlinux_installation/images/installation_source_network_address_old.png
deleted file mode 100644
index cd0378ad1..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_source_network_address_old.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_summary.png b/docs/shared/cloudlinux_installation/images/installation_summary.png
deleted file mode 100644
index 6ffeb43e4..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_summary.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/installation_summary_old.png b/docs/shared/cloudlinux_installation/images/installation_summary_old.png
deleted file mode 100644
index 7353ab849..000000000
Binary files a/docs/shared/cloudlinux_installation/images/installation_summary_old.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/software_selection.png b/docs/shared/cloudlinux_installation/images/software_selection.png
deleted file mode 100644
index 164a0eff8..000000000
Binary files a/docs/shared/cloudlinux_installation/images/software_selection.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/software_selection1.png b/docs/shared/cloudlinux_installation/images/software_selection1.png
deleted file mode 100644
index 164a0eff8..000000000
Binary files a/docs/shared/cloudlinux_installation/images/software_selection1.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/software_selection_solo.png b/docs/shared/cloudlinux_installation/images/software_selection_solo.png
deleted file mode 100644
index 262563b7e..000000000
Binary files a/docs/shared/cloudlinux_installation/images/software_selection_solo.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/sshclient.png b/docs/shared/cloudlinux_installation/images/sshclient.png
deleted file mode 100644
index 201d02ab9..000000000
Binary files a/docs/shared/cloudlinux_installation/images/sshclient.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/sshot-2013-07-30-21-25-48.png b/docs/shared/cloudlinux_installation/images/sshot-2013-07-30-21-25-48.png
deleted file mode 100644
index 1295beff9..000000000
Binary files a/docs/shared/cloudlinux_installation/images/sshot-2013-07-30-21-25-48.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/sshot-2013-07-30-21-31-05.png b/docs/shared/cloudlinux_installation/images/sshot-2013-07-30-21-31-05.png
deleted file mode 100644
index 4328e3229..000000000
Binary files a/docs/shared/cloudlinux_installation/images/sshot-2013-07-30-21-31-05.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/startdroplet.png b/docs/shared/cloudlinux_installation/images/startdroplet.png
deleted file mode 100644
index 6ef12f275..000000000
Binary files a/docs/shared/cloudlinux_installation/images/startdroplet.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/uploadimage.png b/docs/shared/cloudlinux_installation/images/uploadimage.png
deleted file mode 100644
index e3b54766b..000000000
Binary files a/docs/shared/cloudlinux_installation/images/uploadimage.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/welcome_page.png b/docs/shared/cloudlinux_installation/images/welcome_page.png
deleted file mode 100644
index 1ec6e92f9..000000000
Binary files a/docs/shared/cloudlinux_installation/images/welcome_page.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_installation/images/welcome_page_old.png b/docs/shared/cloudlinux_installation/images/welcome_page_old.png
deleted file mode 100644
index df6649f1e..000000000
Binary files a/docs/shared/cloudlinux_installation/images/welcome_page_old.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/.DS_Store b/docs/shared/cloudlinux_os_components/.DS_Store
deleted file mode 100644
index 5ad1f503e..000000000
Binary files a/docs/shared/cloudlinux_os_components/.DS_Store and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/README.md b/docs/shared/cloudlinux_os_components/README.md
deleted file mode 100644
index d2a868c75..000000000
--- a/docs/shared/cloudlinux_os_components/README.md
+++ /dev/null
@@ -1,9169 +0,0 @@
-#  CloudLinux OS components
-
-* [Reseller limits](/shared/limits/#reseller-limits)
-* [LVE-Stats 2](./#lve-stats-2)
-* [CageFS](./#cagefs)
-* [MySQL Governor](./#mysql-governor)
-* [PHP Selector](./#php-selector)
-* [Python Selector](./#python-selector)
-* [Ruby Selector](./#ruby-selector)
-* [Node.js Selector](./#node-js-selector)
-* [Apache mod_lsapi PRO](./#apache-mod-lsapi-pro)
-* [Additional integration components](./#additional-integration-components)
-* [Apache suexec module](./#apache-suexec-module)
-
-#### General information and requirements
-
-## LVE-Stats 2
-
-### General information and requirements
-
-* [Why is it needed?](./#why-is-it-needed)
-* [Major improvements and features](./#major-improvements-and-features)
-* [What features will be implemented in the future?](./#what-features-will-be-implemented-in-the-future)
-
-#### Why is it needed?
-
-* Old LVE-statistics store averages as integer numbers, as % of <span class="notranslate">CPU</span> usage. If user used 100% of <span class="notranslate">CPU</span> for 1 second within an hour, it is only 1-2% for a minute, and 0 for 5 minutes. Data in old LVE-statistics is aggregated to 1-hour intervals. So, such peak load will noExat be recorded and we need to store data with much higher precision.
-* 100% <span class="notranslate">CPU</span> usage in old lve statistics means “all cores”. On 32 core servers usage is not visible for most users (as they are limited to 1 core).
-* Old LVE-statistics does not provide a way to determine a cause of LVE faults, i.e. what processes are running when user hits LVE limits.Example
-* Notifications in old LVE-statistics are not accurate because they are based on average values for <span class="notranslate">CPU, IO, IOPS.</span>
-* Old LVE-statistics functionality is hard to extend.
-
-#### Major improvements and features
-
-* increased precision of statistics;
-* <span class="notranslate">CPU</span> usage is calculated  in terms of % of a single core (100% usage means one core);
-* lvestats-server emulates and tracks faults for <span class="notranslate">CPU, IO, IOPS</span>;
-* lvestats-server saves “snapshots” of user’s processes and queries for each “incident” - added new lve-read-snapshot utility;
-* improved notifications about hitting LVE limits (more informative and without false positives);
-* implemented ability to add custom plugins;
-* MySQL and <span class="notranslate">PostGreSQL</span> support;
-* more pretty, scalable, interactive charts;
-* snapshots include HTTP-requests.
-
-:::tip Note
-[`mod_proctitle`](./#mod-proctitle) has to be enabled for HTTP request collection to be available
-:::
-
-#### What features will be implemented in the future?
-
-* Notifications for control panels other than CPanel.
-* Burstable Limits/server health: We are monitoring server health ( <span class="notranslate"> LA </span> , <span class="notranslate"> memory </span> , idle <span class="notranslate"> CPU </span> ) and automatically decreasing/increasing limits based on server health.
-* <span class="notranslate">Reseller Limits</span>: plugin would analyze usage per group of users (reseller’s usage), and do actions.
-* Suspend/notify plugin: would detect that user is being throttled for 10 minutes, and suspend him (just because), or notify, or increase limits.
-
-### Installation and update
-
-* [Downgrade](./#downgrade)
-
-To install, please execute:
-
-<div class="notranslate">
-
-```
-yum install lve-stats
-```
-</div>
-
-To update:
-
-<div class="notranslate">
-
-```
-yum update lve-stats
-```
-</div>
-
-Settings of old <span class="notranslate">lve-stats</span> (ver. 0.x) are imported automatically on the first install/update of a new <span class="notranslate">lve-stats</span> package.
-
-SQLite database file is located in <span class="notranslate">`/var/lve/lvestats2.db`</span>, data from old <span class="notranslate">lve-stats</span> (ver. 0.x) are being migrated automatically in the background. Migrating process can last 2-8 hours (during this time lags are possible when admin is trying to check statistics, at the same time users will not be affected). Migrating the latest 30 days, <span class="notranslate">SQLite DB</span> stable migration is provided.
-
-Currently, the new <span class="notranslate">lve-stats</span> supports all databases available in CloudLinux OS Shared.
-
-:::tip Note
-You can also use [LVE-stats 2 CLI](/shared/command-line_tools/#lve-stats-2)
-:::
-
-#### Downgrade
-
-If you have any problems after update, downgrade <span class="notranslate">lve-stats2</span> to the previous stable version by running:
-
-<div class="notranslate">
-
-```
-yum downgrade lve-stats
-```
-</div>
-
-and contact CloudLinux OS Shared support at [https://cloudlinux.zendesk.com/hc/requests/new](https://cloudlinux.zendesk.com/hc/en-us/requests/new)
-
-:::tip Note
-You may need to rename `*.rpmsave` files to original ones in order to restore settings for old <span class="notranslate">lve-stats (`/etc/sysconfig/lvestats`, `/etc/sysconfig/cloudlinux-notify`</span>).
-:::
-
-:::tip Note
-You can also use [LVE-stats 2 CLI](/shared/command-line_tools/#lve-stats-2)
-:::
-
-### Configuration
-
-The main configuration file <span class="notranslate">`/etc/sysconfig/lvestats2`</span> contains the following options:
-
-* <span class="notranslate">`db_type`</span> - selects appropriate database type to use;
-* <span class="notranslate">`connect-string`</span> - connection string for <span class="notranslate">PostGreSQL</span> and MySQL database, has the following form:
-  
-  <div class="notranslate">
-
-  ```
-  connect_string = USER:PASSWORD@HOST[:PORT]/DATABASE
-  ```
-  </div>
-
-  Default port is used for specific database, if port is not specified (typical port is 3306 for MySQL and 5432 for <span class="notranslate">PostGreSQL</span>). Connection string is not used for sqlite database.
-
-* <span class="notranslate">`server_id`</span> - sets the name of the server (at most 10 characters). This option is to use with centralized database ( <span class="notranslate">PostGreSQL</span> or MySQL). For use with sqlite database, value of this option should be "localhost" (without quotes).
-* <span class="notranslate">`plugins`</span> – path to directory containing custom plugins for <span class="notranslate">lve-stats</span> (default path <span class="notranslate">`/usr/share/lve-stats/plugins`</span>).
-* <span class="notranslate">`db_timeout`</span> - period of time to write data to database (in seconds); default value is 60 seconds.
-* <span class="notranslate">`timeout`</span> - timeout for custom plugins (seconds). If plugin execution does not finish within this period, plugin is terminated. Default value is 5 seconds.
-* <span class="notranslate">`interval`</span> - duration of one cycle of <span class="notranslate">lvestats-server</span> (seconds). This should be less than total duration of execution of all plugins. Default value is 5 seconds. Increasing this parameter makes precision of statistics worse.
-* <span class="notranslate">`keep_history_days`</span> - period of time (in days) to keep history in database. Old data is removed from database automatically. Default value is 60 days.
-* <span class="notranslate">`mode`</span> – sets compatibility output mode (compatibility with older lveinfo version
-  * Value `v1` enables compatibility with old version of <span class="notranslate">lveinfo</span>.
-  * Value `v2` enables <span class="notranslate">`extended`</span> output mode, but can break LVE plugins for control panels (statistics in <span class="notranslate">LVE Manager</span>, <span class="notranslate">Resource Usage</span>, etc). Support of `v2` mode will be added to LVE plugins in the recent future. When mode parameter is absent, later version of <span class="notranslate">lveinfo</span> is implied.
-* <span class="notranslate">`disable_snapshots`</span> - disable snapshots and incidents.
-  Possible values:
-    * <span class="notranslate">`true`</span>
-    * <span class="notranslate">`false`</span>
-* <span class="notranslate">`hide_lve_more_than_maxuid`</span> - disable displaying of lve ids more than max uid in resource usage.
-  Possible values:
-    * <span class="notranslate">`true`</span>
-    * <span class="notranslate">`false`</span>
-* <span class="notranslate">`use_big_uids`</span> - the option is available from <span class="notranslate">lvestats</span> version <span class="notranslate">`3.0.14-1`</span>. It allows using the user uids more than 10<sup>9</sup> and up to 2<sup>31</sup>-2 (2 147 483 646). Top border is the biggest value which <span class="notranslate">`kmodlve`</span> can use as <span class="notranslate">LVE ID</span>. You should recreate <span class="notranslate">lvestats</span> database by command <span class="notranslate">`lve-create-db --recreate`</span> if you change the option's value from <span class="notranslate">`false`</span> to <span class="notranslate">`true`</span>. 
-  Possible values:
-  * <span class="notranslate">`true`</span>
-  * <span class="notranslate">`false`</span>
-
-
-Configuration files for plugins are located in <span class="notranslate">`/etc/sysconfig/lvestats.config`</span> directory.
-
-<span class="notranslate">`/etc/sysconfig/lvestats.config/SnapshotSaver.cfg`</span> contains the following options:
-
-* <span class="notranslate">`period_between_incidents`</span> - the minimal interval of time between incidents (in seconds). If minimal interval of time between LVE faults is greater than value specified, than new "incident" will begin and new snapshots will be saved. Default value is 300 seconds.
-* <span class="notranslate">`snapshots_per_minute`</span> - the maximum number of snapshots saved per minute for specific LVE id (default is `2`).
-* <span class="notranslate">`max_snapshots_per_incident`</span> - the maximum number of snapshots saved for one "incident". Default is `10`.
-* <span class="notranslate">`litespeed`</span> - enable or disable data import from LiteSpeed, default is `auto` (autodetect); `On`|`on`|`1` - force use litespeed; `Off`|`off`|`0` - force use apache
-
-<span class="notranslate">`/etc/sysconfig/lvestats.config/StatsNotifier.cfg`</span> contains the following options:
-
-* <span class="notranslate">`NOTIFY_ADMIN`</span> – enables notification for admin (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_RESELLER`</span> – enables notification for reseller (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_CUSTOMER`</span> - enables notification for customers (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_INCLUDE_RESELLER_CUSTOMER`</span> – `Y`=notify all users, `N`=notify only hoster's users (whos reseller is root), default = `N`;
-* <span class="notranslate">`NOTIFY_CPU`</span> – notify about <span class="notranslate">CPU</span> faults when customer hits 100% of his <span class="notranslate">CPU</span> limit (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_IO`</span> - notify about <span class="notranslate">IO</span> faults when customer hits 100% of his <span class="notranslate">IO</span> limit (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_IOPS`</span> - notify about <span class="notranslate">IOPS</span> faults when customer hits 100% of his <span class="notranslate">IOPS</span> limit (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_MEMORY`</span> - notify about memory faults (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_EP`</span> – notify about entry processes faults (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_NPROC`</span> – notify about number of processes faults (<span class="notranslate">`Y/N`</span>, default `N`);
-* <span class="notranslate">`NOTIFY_MIN_FAULTS_ADMIN`</span> – minimum number of faults to notify admin (default `1`);
-* <span class="notranslate">`NOTIFY_MIN_FAULTS_USER`</span> – minimum number of faults to notify customer (default `1`);
-* <span class="notranslate">`NOTIFY_INTERVAL_ADMIN`</span> – period of time to notify admin (default `12h`);
-* <span class="notranslate">`NOTIFY_INTERVAL_USER`</span> – period of time to notify customer (default `12h`);
-* <span class="notranslate">`NOTIFY_FROM_EMAIL`</span> - sender email address. For example: <span class="notranslate">`NOTIFY_FROM_EMAIL=main_admin@host.com`;</span>
-* <span class="notranslate">`NOTIFY_FROM_SUBJECT`</span> - email message subject. For example: <span class="notranslate">`NOTIFY_FROM_SUBJECT=Message from notifier`</span>
-* <span class="notranslate">`REPORT_ADMIN_EMAIL`</span> - custom email for admin reporting. For example: <span class="notranslate">`REPORT_ADMIN_EMAIL=report_email@host.com`</span>
-* <span class="notranslate">`NOTIFY_CHARSET_EMAIL`</span> – charset type for email. Available for <span class="notranslate">__lve-stats-2.9.4-1__</span> and later. Default is <span class="notranslate">`us-ascii`</span>. For example: <span class="notranslate">`NOTIFY_CHARSET_EMAIL=utf-8`</span>. If your email templates include non-Latin letters, it is recommended to use the UTF-8 encoding.
-
-These values can also be set using [cloudlinux-config CLI](/shared/command-line_tools/#cloudlinux-config) utility
-
-Templates of notifications are located here:
-
-* <span class="notranslate">`/usr/share/lve/emails/en_US/admin_notify.txt`</span>
-* <span class="notranslate">`/usr/share/lve/emails/en_US/reseller_notify.txt`</span>
-* <span class="notranslate">`/usr/share/lve/emails/en_US/user_notify.txt`</span>
-* <span class="notranslate">`/usr/share/lve/emails/en_US/admin_notify.html`</span>
-* <span class="notranslate">`/usr/share/lve/emails/en_US/reseller_notify.html`</span>
-
-:::tip Note
-Notifications about LVE faults are implemented for CPanel, Plesk, and DirectAdmin.
-:::
-
-After changing any options above, please restart <span class="notranslate">lvestats</span> service:
-
-<div class="notranslate">
-
-```
-service lvestats restart
-```
-</div>
-
-<span class="notranslate">`/etc/logrotate.d/lvestats`</span> - configuration file for <span class="notranslate">`/var/log/lve-stats.log rotation`</span>
-
-:::tip Note
-You can also use [LVE-stats 2 CLI](/shared/command-line_tools/#lve-stats-2)
-:::
-
-### LVE-stats2 and DB servers compatible work setup
-
-* [LVE-stats2 and MySQL DB server compatible work setup](./#lve-stats2-and-mysql-db-server-compatible-work-setup)
-* [LVE-stats2 and PostgreSQL DB server compatible work setup](./#lve-stats2-and-postgresql-db-server-compatible-work-setup)
-* [Customize LVE-stats2 notifications](./#customize-lve-stats2-notifications)
-
-#### LVE-stats2 and MySQL DB server compatible work setup
-
-:::tip Note
-Run all the commands below under root.
-:::
-
-**1. MySQL server setup**
-
-If MySQL Server is not installed, then install it according to control panel documentation.
-
-For non-panel system:
-
-* CloudLinux OS Shared 6
-  
-  <div class="notranslate">
-
-  ```
-  yum install mysql mysql-server
-  service mysqld start
-  chkconfig mysqld on
-  ```
-  </div>
-
-* CloudLinux OS Shared 7
-  
-  <div class="notranslate">
-
-  ```
-  yum install mariadb mariadb-server
-  systemctl start mariadb.service
-  systemctl enable mariadb.service
-  ```
-  </div>
-
-
-**2. Database setup**
-
-* Run MySQL administrative utility: <span class="notranslate">`mysql`</span>.
-* In utility run the commands:
-
-  * creating server DB. Also, check **_Note_** below.
-
-  <div class="notranslate">
-
-  ```
-  CREATE DATABASE db_lvestats2;
-  ```
-  </div>
-
-  * creating a user for <span class="notranslate">LVE Stats 2</span> server to work under. Also, check **_Note_** below.
-
-  <div class="notranslate">
-
-  ```
-  CREATE USER 'lvestats2'@'localhost' IDENTIFIED BY 'lvestats2_passwd';
-  ```
-  </div>
-
-  * granting all the privileges for all DB tables to the user. Use the username and DB name from the points above.
-
-  <div class="notranslate">
-
-  ```
-  GRANT ALL PRIVILEGES ON db_lvestats2.* TO 'lvestats2'@'localhost';
-  ```
-  </div>
-
-  * refreshing privileges information.
-
-  <div class="notranslate">
-
-  ```
-  FLUSH PRIVILEGES;
-  ```
-  </div>
-
-  * Exit administrative utility <span class="notranslate">`(Ctrl+d)`</span>.
-
-:::tip Note
-DB name, username and their passwords above are given for an example - you can use any of your choices. Using old DB from <span class="notranslate">LVE Stats</span> version 1 is also acceptable as <span class="notranslate">LVE Stats2</span> uses different tables and the old information will not be corrupted.
-:::
-
-**3.** <span class="notranslate">**LVE-stats2**</span> **setup**
-
-* Stop <span class="notranslate">LVE Stats 2</span> server by running the command:
-
-<div class="notranslate">
-
-```
-service lvestats stop
-```
-</div>
-
-* In server configuration file <span class="notranslate">`/etc/sysconfig/lvestats2`</span>, edit the following options:
-  * <span class="notranslate">`db_type = mysql`</span>
-  * <span class="notranslate">`connect_string = lvestats2:lvestats2_passwd@localhost/db_lvestats2`</span>
-
-:::tip Note
-<span class="notranslate">`connect_string`</span> option value is used in format: <span class="notranslate">`user:pass@host/database`</span>.
-Username, password and DB name must be the same as in point 2 of Database Setup above.
-:::
-
-* After making changes in configuration files run:
-
-<div class="notranslate">
-
-```
-/usr/sbin/lve-create-db 
-```
-</div>
-
-  For DB primary initialization (creating tables, indexes, etc). There is no need to create anything in the DB manually.
-
-* When done, restart server by running:
-  
-<div class="notranslate">
-
-```
-service lvestats restart
-```
-</div>
-
-
-**4. Additional security settings**
-
-If you need to provide access to <span class="notranslate">LVE Stats</span> information utilities (<span class="notranslate">`lveinfo`, `lvechart`, `lve-read-snapshot`</span>) for different users, then we recommend creating one more DB user with read-only privilege to guarantee information security. It can be done by running the following commands in administrative utility:
-
-* creating a user (check **_Note_** above)
-
-<div class="notranslate">
-
-```
-CREATE USER 'lvestats2_read'@'localhost' IDENTIFIED BY 'lvestats2_read_passwd';
-```
-</div>
-
-* granting read-only privilege to the user
-  
-<div class="notranslate">
-
-```
-GRANT SELECT ON db_lvestats2.* TO 'lvestats2_read'@'localhost';
-```
-</div>
-
-* refreshing privileges information
-
-<div class="notranslate">
-
-```
-FLUSH PRIVILEGES;
-```
-</div>
-
-If <span class="notranslate">LVE Stats2</span> server is set correctly (see information below), the information utilities will work under this user.
-
-If you need to provide access to information utilities to other users, then in order to guarantee information security you should do the following:
-
-* Assign permission 600 to the main configuration file (<span class="notranslate">`/etc/sysconfig/lvestats2`</span>), so that it could be read only by <span class="notranslate">LVE Stats 2</span> server and by utilities that run under root.
-* Copy <span class="notranslate">`/etc/sysconfig/lvestats2`</span> to <span class="notranslate">`/etc/sysconfig/lvestats2.readonly`</span>, assign permission 644 to the new file, so that it could be read by any user but could only be changed by root.
-* In <span class="notranslate">`/etc/sysconfig/lvestats2.readonly`</span> file, in the line <span class="notranslate">`connect_string`</span>, specify DB user with read-only permission, created above.
-
-These steps allow hiding main DB user username/password from other system users.
-
-If there is no need in such access differentiation, then <span class="notranslate">`/etc/sysconfig/lvestats2`</span> file access permission should be 644, so that it could be read by all users and could be changed only by root.
-
-
-**5. Using special characters in database password**
-
-Since scheme <span class="notranslate">`://user:password@host[:port]/database_name`</span> [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) is used in <span class="notranslate">`connect_string`</span> config option, then usage of special characters in user DB password is not allowed.
-
-To use special symbols in the password, it must be converted to [escape-sequence](https://en.wikipedia.org/wiki/Percent-encoding). You can convert a password to escape-sequence in a console as follows:
-
-<div class="notranslate">
-
-```
-echo -n '[You_P@$$]:' | perl -MURI::Escape -ne 'print uri_escape($_)."\n"'
-%5BYou_P%40%24%24%5D%3A
-```
-</div>
-
-Or replace the symbols manually:
-
-<div class="notranslate">
-
-```
-!    #    $    &    '    (    )    *    +    ,    /    :    ;    =    ?    @   [    ]
-%21  %23  %24  %26  %27  %28  %29  %2A  %2B  %2C  %2F  %3A  %3B  %3D  %3F  %40  %5B %5D
-```
-</div>
-
-After that <span class="notranslate">`сonnect_string`</span> will look as follows:
-
-<div class="notranslate">
-
-```
-сonnect_string=lvestats2:%5BYou_P%40%24%24%5D%3A@localhost/db_lvestats2
-```
-</div>
-
-
-#### LVE-stats2 and PostgreSQL DB server compatible work setup
-
-
-:::tip Note
-Run all the commands below under <span class="notranslate">root</span>.
-:::
-
-**1.** **<span class="notranslate">PostgreSQL</span>** **server installation and setup**
-
-* **PostgreSQL installation and initialization**
-
-  For control panels use proper documentation for installation on the links: [сPanel](https://documentation.cpanel.net/display/CKB/Install+or+Update+PostgreSQL+on+Your+cPanel+Server), [Plesk](https://kb.plesk.com/en/123729).
-
-  For non-panel CloudLinux OS Shared, run the following commands:
-
-    * CloudLinux OS Shared 6
-
-    <div class="notranslate">
-
-    ```
-    yum install postgresql-server postgresql
-    service postgresql initdb
-    service postgresql start
-    chkconfig postgresql on
-    ```
-    </div>
-
-    * CloudLinux OS Shared 7
-
-    <div class="notranslate">
-
-    ```
-    yum install postgresql-server postgresql
-    postgresql-setup initdb
-    systemctl start postgresql
-    systemctl enable postgresql
-    ```
-    </div>
-
-* **Setup**
-
-  * In <span class="notranslate">`/var/lib/pgsql/data/pg_hba.conf`</span> config file change user authentication mode. Add the following lines (place before all other authentication parameters):
-  
-    <div class="notranslate">
-
-    ```
-    # IPv4 local connections for lve-stats-2.x
-    host dblvestat all 127.0.0.1/32 password
-    # IPv6 local connections for lve-stats-2.x
-    host dblvestat all ::1/128 password
-    ```
-    </div>
-    
-    These lines enable user authentication by the password for <span class="notranslate">IP4/IP6</span> connections. You can set other modes if needed.
-
-  * Apply config changes by running:
-
-    <div class="notranslate">
-
-    ```
-    service postgresql restart
-    ```
-    </div>
-
-
-**2. DB for** <span class="notranslate">**LVE-stats-2.x**</span> **- creating and setup**
-
-* Run standard <span class="notranslate">PostgreSQL psql</span> administrative utility:
-
-<div class="notranslate">
-
-```
-sudo -u postgres psql postgres 
-```
-</div>
-
-OR for сPanel
-
-<div class="notranslate">
-
-```
-psql -w -U postgres
-```
-</div>
-
-* In utility run:
-
-  * creating server DB. Also, check **_Note_** below.
-
-    <div class="notranslate">
-
-    ```
-    CREATE DATABASE dblvestat;
-    ```
-    </div>
-
-  * creating a user for <span class="notranslate">LVE Stats 2</span> server to work under. Also, check **_Note_** below.
-
-    <div class="notranslate">
-
-    ```
-    CREATE USER lvestat WITH password 'passw';
-    ```
-    </div>
-
-  * granting <span class="notranslate">lvestat</span> user all privileges for work with <span class="notranslate">dblvestat DB</span>.
-
-    <div class="notranslate">
-
-    ```
-    GRANT ALL privileges ON DATABASE dblvestat TO lvestat;
-    ```
-    </div>
-
-  * exit `psql` utility:
-
-    <div class="notranslate">
-
-    ```
-    \q
-    ```
-    </div>
-
-    OR alternatively:
-
-    <div class="notranslate">
-
-    ```
-    Ctrl+d
-    ```
-    </div>
-
-
-:::tip Note
-DB name, username and their passwords above are given for an example - you can use any of your choices. Using old DB from <span class="notranslate">LVE Stats</span> version 1 is also acceptable as <span class="notranslate">LVE Stats 2</span> uses different tables and the old information will not be corrupted
-:::
-
-**3.** <span class="notranslate">**LVE-stats-2.x**</span> **setup**
-
-* Stop <span class="notranslate">lve-stats2</span> server by running:
-
-<div class="notranslate">
-
-```
-service lvestats stop
-```
-</div>
-
-* In server config file <span class="notranslate">`/etc/sysconfig/lvestats2`</span> edit options for connecting to DB:
-  
-<div class="notranslate">
-
-```
-db_type = postgresql
-connect_string=lvestat:passw@localhost/dblvestat
-If DB is going to be used as centralized for multiple hosts then collect_usernames parameter must be changed:
-collect_usernames=true
-```
-</div>
-
-:::tip Note
-<span class="notranslate">`connect_string`</span> option value is of the format: <span class="notranslate">`user:pass@host/database`</span>. Username, password and DB name must be the same as in Database Setup section above.
-:::
-
-* After making changes in configuration files, for DB primary initialization (creating tables, indexes, etc), run:
-
-<div class="notranslate">
-
-```
-/usr/sbin/lve-create-db 
-```
-</div>
-
-* There is no need to create anything in the DB manually. When done, restart server by running:
-
-<div class="notranslate">
-
-```
-service lvestats restart
-```
-</div>
-
-**4. Additional security settings**
-
-If you need to provide access to <span class="notranslate">LVE Stats</span> information utilities (<span class="notranslate">`lveinfo`, `lve-read-snapshot`</span> ) for other users (or if <span class="notranslate">CageFS</span> is disabled), then in order to guarantee DB security the following steps are required:
-
-* Create a DB user with read-only permission:
-
-<div class="notranslate">
-
-```
-CREATE USER lvestat_read WITH password 'passw';
-GRANT CONNECT ON DATABASE dblvestat to lvestat_read;
-\connect dblvestat;
-GRANT SELECT ON lve_stats2_history, lve_stats2_history_gov, lve_stats2_history_x60, lve_stats2_incident, lve_stats2_servers, lve_stats2_snapshot, lve_stats2_user TO lvestat_read;
-```
-</div>
-
-* Assign root ownership and permission 600 to the main configuration file (<span class="notranslate">`/etc/sysconfig/lvestats2`</span>), so that it could be read only by <span class="notranslate">LVE Stats 2</span> server and by utilities that run under root.
-
-* Copy <span class="notranslate">`/etc/sysconfig/lvestats2` to `/etc/sysconfig/lvestats2.readonly`</span>, assign permission 644 to the new file, so that it could be read by any user but could be changed only by root.
-
-* In <span class="notranslate">`/etc/sysconfig/lvestats2.readonly`</span> file, in the line <span class="notranslate">`connect_string`</span>, specify DB user with read-only permission, created above.
-
-  These steps allow hiding main DB user username/password from other system users.
-
-  If there is no need in such access differentiation, then <span class="notranslate">`/etc/sysconfig/lvestats2`</span> file access permission should be 644, so that it could be read by all users and could be changed only by <span class="notranslate">root</span>.
-
-* When done, restart server by running:
-
-<div class="notranslate">
-
-```
-service lvestats restart
-```
-</div>
-
-
-**5. Using special characters in database password**
-
-Since scheme <span class="notranslate">`://user:password@host[:port]/database_name`</span> [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) is used in <span class="notranslate">`connect_string`</span> config option, then usage of special characters in user DB password is not allowed.
-
-To use special symbols in the password, it must be converted to [escape-sequence](https://en.wikipedia.org/wiki/Percent-encoding). You can convert a password to escape-sequence in a console as follows:
-
-<div class="notranslate">
-
-```
-echo -n '[You_P@$$]:' | perl -MURI::Escape -ne 'print uri_escape($_)."\n"'
-%5BYou_P%40%24%24%5D%3A
-```
-</div>
-
-OR replace the symbols manually:
-
-<div class="notranslate">
-
-```
-!    #    $    &    '    (    )    *    +    ,    /    :    ;    =    ?    @    [    ]
-%21  %23  %24  %26  %27  %28  %29  %2A  %2B  %2C  %2F  %3A  %3B  %3D  %3F  %40  %5B  %5D
-```
-</div>
-
-After that <span class="notranslate">`сonnect_string`</span> will look as follows:
-
-<div class="notranslate">
-
-```
-сonnect_string=lvestats2:%5BYou_P%40%24%24%5D%3A@localhost/db_lvestats2
-```
-</div>
-
-#### Customize LVE-stats2 notifications 
-
-<span class="notranslate">[Jinja2](http://jinja.pocoo.org/)</span> is used as a template engine for the notifications.
-
-The templates for notifications are located in <span class="notranslate">`/usr/share/lve/emails/LOCALE`</span>, where <span class="notranslate">`LOCALE`</span> is the directory with localization name (language codes are formed according to <span class="notranslate">ISO 639-1</span> and <span class="notranslate">ISO 639-2</span>).
-
-By default the templates for English are set: <span class="notranslate">`/usr/share/lve/emails/en_US.`</span>.
-
-<span class="notranslate">`/usr/share/lve/emails/en_US`</span> contains the following templates:
-
-* <span class="notranslate">`admin_notify.html`  `admin_notify.txt`</span> for administrator;
-* <span class="notranslate">`reseller_notify.html` `reseller_notify.txt`</span> for reseller;
-* <span class="notranslate">`user_notify.txt`</span> for user.
-
-
-Starting from `lve-stats-4.1.2`, it allows server administrators to use their own lvestats notifier email notification templates. 
-
-To use the custom templates, place them and the `locales.json` file to the `/etc/cl.emails.d/LOCALE` directory. File names are the same as in general `/etc/cl.emails.d/LOCALE` file.
-
-If the `/etc/cl.emails.d/LOCALE` doesn't exist or doesn't contain the templates, you can use the `/usr/share/lve/emails/LOCALE` directory, as it was in previous versions of lve-stats.
-
-Please do not edit the templates in the the `/usr/share/lve/emails` and place the new updated templates in the `/etc/cl.emails.d` directory.
-
-
-The notification is formed as <span class="notranslate">_Multipart content type_</span> [RFC1341(MIME)](https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html).
-
-The plain text is taken from the <span class="notranslate">`.txt`</span> files, html version - from the <span class="notranslate">`.html`</span> template.
-
-In case when only one template is present (<span class="notranslate">`.txt`</span> or <span class="notranslate">`.html`</span>) the notification is sent as a <span class="notranslate">_Non-multipart content_  </span> type notification.
-
-It is better to use <span class="notranslate">_Multipart content_</span> type notifications because when a mail client can not display an html-format message, then it will be displayed as plain text version.
-
-To localize notifications, copy standard templates into directory with the proper locale name and translate the template. Also you can customize the main template making proper changes into it.
-
-The list of variables that can be used in the template:
-
-| |  | |
-|-|--|-|
-|Variable | Example | Description|
-|<span class="notranslate">`TONAME`</span> | <span class="notranslate">`Customer`</span> | Notification receiver user name. Taken from profile in the control panel, by default - <span class="notranslate">`Customer`</span> for user, <span class="notranslate">`Administrator`</span> for administrator, <span class="notranslate">`Reseller`</span> for reseller.|
-|<span class="notranslate">`TOMAIL`</span> | <span class="notranslate">`support@cloudlinux.com`</span> | Notification receiver email address.|
-|<span class="notranslate">`DOMAIN`</span> | <span class="notranslate">`wordpress.test247.cloudlinux.com`</span> | Main domain. Available only for user.|
-|<span class="notranslate">`LOCALE`</span> | <span class="notranslate">`en_US`</span> | Locale in which the notification is sent. Available only for user.|
-|<span class="notranslate">`RESELLER`</span> | <span class="notranslate">`root`</span> | User reseller. Available only for user.|
-|<span class="notranslate">`PERIOD`</span> | <span class="notranslate">`12 hours`</span> | Verification and notification sending period.|
-|<span class="notranslate">`LOGIN`</span> | <span class="notranslate">`wordpress`</span> | User login in the system.|
-|<span class="notranslate">`ID`</span> | `500` | User ID in the system.|
-|<span class="notranslate"> `lPMem` `lEP` `PMemF` `lVMem` `anyF` `IOf` `VMemF` `lCPU` `aIOPS` `aEP` `aPMem` `IOPSf` `lIO` `lIOPS` `aIO` `EPf` `aCPU` `aVMem` `NprocF` `aNproc` `lNproc` `CPUf` </span> |  | See description in <span class="notranslate">`lveinfo --help`</span> output. Available only for users|
-|<span class="notranslate">`STATS_HTML`</span> |  | html table with the list of users that exceeded limits. Available for administrator and reseller.|
-|<span class="notranslate">`STATS`</span> |  | ASCII - table with the list of users that exceeded limits. Available only for admins and resellers.|
-
-Sender’s email address by default is administrator email address from control panel settings <span class="notranslate">`(root@{hostn_name}`</span> if there is no email in the control panel).
-
-It can be changed with <span class="notranslate">`NOTIFY_FROM_EMAIL`</span> option in the config <span class="notranslate">`/etc/sysconfig/lvestats.config/StatsNotifier.cfg`</span>
-
-For example:
-
-<span class="notranslate">`NOTIFY_FROM_EMAIL=support@hostername.com`</span>
-
-To apply changes restart <span class="notranslate">`lve-stats`</span> service:
-
-<div class="notranslate">
-
-```
-service lvestats restart
-```
-</div>
-
-for CloudLinux OS Shared 7
-
-<div class="notranslate">
-
-```
-systemctl restart lvestats.service
-```
-</div>
-
-Default subject is <span class="notranslate">`Hosting account resources exceeded`</span>.  It can be changed for each template (and for localized templates as well). To change subject, in the very beginning of the file (no blank lines allowed in the beginning of the template) add the field <span class="notranslate">`Subject:`</span>, leave two blank lines after it and add template body.
-
-Customized subjects can be taken only from the templates with the resolution <span class="notranslate">`*.txt`</span> <span class="notranslate">(`admin_notify.txt`, `reseller_notify.txt`, `user_notify.txt`)</span>. Changes apply without <span class="notranslate">`lvestats`</span> restart.
-
-For backward compatibility the subject can be also changed with the key <span class="notranslate"> `NOTIFY_FROM_SUBJECT`</span> in the config <span class="notranslate">`/etc/sysconfig/lvestats.config/StatsNotifier.cfg`</span>.
-
-Customized subjects have the higher priority than the key <span class="notranslate">`NOTIFY_FROM_SUBJECT`</span>.
-
-Example for the file <span class="notranslate">`user_notify.txt`</span>
-
-<div class="notranslate" v-pre>
-	
-```
-Subject: Customized subject example
-Dear {{TONAME}},
- 
-Your {{DOMAIN}} web hosting account exceeded one or more of its resources within the last {{PERIOD}}.
-{% if epf %}Exceeded the maximum of {{lep}} concurrent website connections. Your website was not available {{epf}} times because of this problem.
-{% endif %}{% if pmemf %}Exceeded the physical memory limit of {{lpmem}}KB. Your website was not available {{pmemf}} times because of this problem.
-{% endif %}{% if vmemf %}Exceeded the virtual memory limit of {{lvmem}}KB. Your website was not available {{vmemf}} times because of this problem.
-{% endif %}{% if nprocf %}Exceeded the number of processes limit of {{lnproc}}. Your website was not available {{nprocf}} times because of this problem.
-{% endif %}{% if cpuf %}You reached limit of {{lcpu}} of total server CPU usage {{cpuf}} times. Your website was forced to load slower to reduce its CPU usage.
-{% endif %}{% if iof %}You reached limit of {{lio}}KB/s disk io rate {{iof}} times. The disk io speed for your account was slowed as a result of this problem.
-{% endif %}{% if iopsf %}You reached limit of {{liops}} I/O operations {{iopsf}} times. The disk io speed for your account was slowed as a result of this problem.
-{% endif %}
- 
-To view full details about your web hosting account's resource usage, including the time of each incident listed above, please click the link below and log into your cpanel hosting control panel, then click the "Resource Usage" link under the "Logs and Statistics" section.
-http://{{DOMAIN}}:2083
- 
-If your account is regularly exceeding it's available resources, please consider upgrading to a higher level hosting plan that includes more resources. If you have any questions or need help with anything, just reply to this email and let us know.
- 
-Sincerely,
- 
-Your Friendly Web Hosting Support Team
-```
-</div>
-
-:::tip Note
-The email template should be in the UTF-8 encoding. The other encodings are not supported.
-:::
-
-Starting from lve-stats v. 3.0.15-1, it allows to localize the words that before were imported directly from the lve-stats program code and couldn't be changed.
-
-The email template looks like follows:
-
-```
-Dear {{TONAME}},
-Following accounts experienced issues in the past {{PERIOD}}{% if HOSTNAME is defined %} on host {{HOSTNAME}}{% endif %}
-
-{{STATS}}
-
-Sincerely,
-Your Friendly Web Hosting Support Team
-```
-
-Before, the `{TONAME}` was replaced with “Administrator”/”Reseller”/”Customer” according to the type of the addressee. The `{PERIOD}` was replaced with the duration of the period during which the limits faults were detected. The period duration includes the words "days"/"hour"/"minutes"/"seconds".
-
-In the new version, in order for the lve-stats notifier to include these words in the letter in the language corresponding to the addressee locale, you should create a file for the required locale `/usr/share/lve/emails/<encoding_name>/locale_defines.json` with the following content:
-
-```
-{
- "NOTIFY_FROM_SUBJECT": "Your server has lve-stats faults",
- "PERIOD": {
-   "days": "days", "hours": "hour(s)", "minutes": "minutes", "seconds": "seconds"
- },
- "TONAME": {
-   "admin": "Administrator", "reseller": "Reseller", "customer": "Customer"
- }
-}
-```
-
-The file format should be JSON, and the file encoding should be UTF-8. If this file is found and successfully read, the words from it will be used in emails. 
-In case of any file reading/parsing error, a corresponding message will be written in the lve-stats log, and the contents of the file will be completely ignored.
-If a key in the JSON file content is missing, then lve-stats notifier uses the word contained in the body of the program (just like in previous lve-stats versions).
-Also, this file allows you to override/localize the subject of the email.
-
-It should be noted that this override of the subject line is the highest priority. I.e., if you want to use the subject from the configuration file `/etc/sysconfig/lvestats.config/StatsNotifier.cfg`, then do not specify the `NOTIFY_FROM_SUBJECT` key in  the `locale_defines.json`.
-
-
-### Plugins
-
-* [Creating a plugin for LVE-stats2](./#creating-a-plugin-for-lve-stats2)
-* [Introduction](./#introduction)
-* [Server plugin arrangement](./#server-plugin-arrangement)
-* [Plugin configuration](./#plugin-configuration)
-* [Types of plugins](./#types-of-plugins)
-* [Examples of plugins](./#examples-of-plugins)
-  * [Collector](./#collector)
-  * [Analyzer](./#analyzer)
-  * [Persistor](./#persistor)
-  * [Notifier](./#notifier)
-* [File info and format for /var/lve/info file](./#file-info-and-format-for-var-lve-info-file)
-
-LVE-stats2 comes with a set of generic plugins:
-
-| |  |  |  | |
-|-|--|--|--|-|
-|Plugin Name | Order | Default | Period (seconds) | Description|
-|LVECollector | 1000 | Y | 5 | Collects usage/limits data from `/proc/lve/list`|
-|CPUInfoCollector | 2000 | Y | 5 | collents info about <span class="notranslate"> CPU - `/proc/cpuinfo`</span>|
-|LVEUsernamesCollector | 3000 | Y | 3600 | collects usernames & user ids to match <span class="notranslate">`uid <-> lve id`</span> later on|
-|LVEUsageAnalyzer | 4000 | Y | 5 | analyzes usage of LVE|
-|LveUsageAggregator | 5000 | Y | 60 | aggregates data by time periods|
-|DBGovSaver | 6000 | Y | 5 | Saves data about database governor|
-|FileSaver | 7000 | Y | 5 | Saves LVE data into <span class="notranslate">`/var/lve/info`</span> |
-|CloudLinuxTopFileSaver | 8000 | Y | 60 | saves data used by <span class="notranslate"> cloudlinux-top to `/var/lve/cloudlinux-top.json`</span>|
-|DBSaver | 9000 | Y | 60 | save LVE data to database|
-|DbUsernamesSaver | 10000 | Y | 3600 | saves users name to database|
-|DBSaverX60 | 11000 | Y | 3600 | saves aggregated hourly data into database|
-|SnapshotSaver | 12000 | Y | 30 | collects & saves snapshots data|
-|StatsNotifier | 13000 | Y | varied | notify user/admin based on usage|
-|HistoryCleaner | 14000 | Y | 3600 | removes old usage|
-|ResMEMCollector | 1500 | N | 30 | collects physical memory usage from processes RES field instead of <span class="notranslate">`/proc/lve/list`</span> |
-|LVEDestroyer | - | N | 5 | destroys LVEs that weren't active for X iterations. Number of iterations is passed from config using iterations variable. <span class="notranslate">`iterations=0`</span> means plugin disabled|
-
-
-To enable non-default plugin, copy or link it to `/usr/share/lve-stats/plugins` directory.
-
-For example to enable `ResMEMCollector` plugin, do:
-
-<div class="notranslate">
-
-```
-ln -s /usr/share/lve-stats/plugins.other/res_mem_collector.py /usr/share/lve-stats/plugins/
-service lvestats restart
-```
-</div>
-
-
-#### Creating a plugin for LVE-stats2
-
-#### Introduction
-
-
-<span class="notranslate"> LVE Stats 2 </span> complex has scalable architecture, which allows to connect custom plugins.
-
-
-<span class="notranslate"> LVE Stats </span> server searches for plugins in the directory which is specified with plugins parameter of server’s _/etc/sysconfig/lvestats2_ configuration file. Default directory is <span class="notranslate"> _/usr/share/lve-stats/plugins_. </span>
-
-Each plugin must be of a <span class="notranslate"> Python </span> class, must be written in <span class="notranslate"> Python </span> language and its file must have <span class="notranslate"> .py </span> extension. Files with all other extensions will be ignored. For normal server work access permission 400 is enough; owner – <span class="notranslate"> root </span> .
-
-Plugin classes can be of the same name, but better not, because classes' names can affect the set of parameters in <span class="notranslate"> _set_config_ </span> method. You can find detailed plugins' configuring information below, in appropriate chapter.
-
-Plugin class must contain <span class="notranslate"> _execute()_ </span> method, which is invoked by the server every 5 seconds (by default, can be changed by interval parameter of configuration file).
-Also <span class="notranslate"> set_config </span> method (configuration settings) can be available. You can find more info in <span class="notranslate">[Plugins Configuration](./#plugin-configuration)</span> chapter.
-
-Additionally the following attributes can be set (plugin class instance variable):
-
-* <span class="notranslate"> order (integer) </span> - defines plugin's position in the server's plugin list, (more info in <span class="notranslate"> Servers Plugin Arrangement </span> ).
-* <span class="notranslate"> timeout (integer </span> or <span class="notranslate"> float </span> ) – the longest allowable duration of one launch of the plugin (execute method). Default value of <span class="notranslate"> timeout </span> parameter is 5 seconds.
-* <span class="notranslate"> period (integer) </span> – sets the interval between two launches of execute plugin method in seconds. If not defined, then plugin runs every 5 seconds ( <span class="notranslate"> interval </span> parameter in configuration file).
-
-When <span class="notranslate"> _execute()_   </span> method of the plugin is invoked, the server creates an attribute <span class="notranslate"> _now_ </span> in it, where launch time is recorded. This value is equal to what a standard Python function <span class="notranslate"> _time.time()_ </span> returns. All the plugins launched one after another receive the same  value of <span class="notranslate"> _now_   </span> attribute from the server. <span class="notranslate"> _now_ </span> is overwritten before <span class="notranslate"> _execute()_ </span> method is invoked.
-
-The previous value of now attribute is not saved by the server. If plugin needs it, it has to save it by itself.
-
-Plugin class can be inherited from <span class="notranslate"> _LveStatsPlugin_ </span> class, which is the part of the server itself. This is not obligatory, but inheritance can help to avoid different errors in servers work, particularly if a plugin doesn't contain required execute method.
-
-<span class="notranslate"> _LveStatsPlugin_ </span> class is defined in the file: <span class="notranslate"> _/opt/alt/python27/lib/python2.7/site-packages/lvestats/core/plugin.py_ . </span>
-
-#### Server plugin arrangement
-
-
-When the server starts, it performs the search of plugins in the directory specified in _/etc/sysconfig/lvestats2_ configuration file. This directory is scanned only when the server starts, therefore if any plugin was added into the directory, the server has to be restarted with the following command:
-<div class="notranslate">
-
-```
-service lvestats restart.
-```
-</div>
-
-After successful restart, the plugins are graded and executed  ascending by <span class="notranslate"> _order_ </span> attribute. If any plugin <span class="notranslate"> _order_ </span> attribute is not set, it is considered as a <span class="notranslate"> Python </span> language constant _sys.maxint_ (which is usually 9223372036854775807). This in fact means that such plugins will be executed in the last.
-If any plugins has similar <span class="notranslate"> _order_ </span> meanings, their execution order is unpredictable.
-
-The server invokes <span class="notranslate"> _execute_ </span> method of all plugins one after another.
-
-When the server invokes <span class="notranslate"> _execute()_ </span> method of any plugin, it transmits a data dictionary ( <span class="notranslate"> _lve_data_ </span> argument) into plugin. The dictionary is common for all the plugins. Any plugin can read, write and change any data in this dictionary. <span class="notranslate"> LVE Stats 2 </span> server doesn't control this area. That is why one must be careful while developing new plugins, in order not to change or corrupt other plugins' data which can break their functionality.
-
-If an exception occurs in <span class="notranslate"> _execute()_ </span> method, its text and <span class="notranslate"> python </span> stack trace is recorded into server log _/var/log/lve-stats_ and all the changes made to <span class="notranslate"> _lve_data_ </span> dictionary before the exception happened are lost.
-
-The keys of the <span class="notranslate"> _lve_data_ </span> dictionary are recommended to look like <span class="notranslate"> “ _PluginName_Key_ ” </span> , in order the plugins do not corrupt other data accidentally.
-
-Server contains some standard plugins which define and use the following keys in the common dictionary <span class="notranslate"> lve_data: _LVE_VERSION, stats, old_stats, procs_ </span> and <span class="notranslate"> _lve_usage_ </span> . User plugins can use data from these keys, but it is recommended not to change them if there is no special need, because it can break the next plugins in the execution queue.
-
-| | |
-|-|-|
-|Key | Content|
-|<span class="notranslate"> `LVE_VERSION` </span> | LVE version. The same as console command <span class="notranslate"> `lvectl lve-version` </span> produces.|
-|<span class="notranslate"> `stats` </span> | Dictionary, that contains lve id’s as keys and LVEStat class objects as values. Every LVEStat object contains values of usages and limits taken from <span class="notranslate"> _/proc/lve/list_ </span> file for every <span class="notranslate"> LVE Id </span> . Dictionary keys – <span class="notranslate"> integer lve id </span> , including 0 for “ <span class="notranslate"> default </span> ” LVE. This dictionary is updated on each iteration of lvestats-server (every 5 seconds by default). LVEStat – is a standard server class, it can be imported with the command from <span class="notranslate"> _lvestats.core.lvestat_ </span> `import LVEStat.` The class is described in the file <span class="notranslate"> _/opt/alt/python27/lib/python2.7/site-packages/lvestats/core/lvestat.py_ </span> . Here you can find the whole list of data fields and their functions.|
-|<span class="notranslate"> `old_stats` </span> | _stats_ content from the previous iteration. Before the first iteration – empty dictionary.|
-|<span class="notranslate"> `totalHz` </span> | When LVE_VERSION is 4, real <span class="notranslate"> CPU </span> frequency in <span class="notranslate"> Hz </span> multiplied by number of cores. When LVE_VERSION > 4, <span class="notranslate"> CPU </span> speed is in conventional units and equals to 1000000000 * cores (1 <span class="notranslate"> GHz </span> per core).|
-|<span class="notranslate"> `procs` </span> | Quantity of <span class="notranslate">  CPU </span> cores.|
-|<span class="notranslate"> `lve_usages` </span> | Contains accumulated LVE statistics for each 5-seconds interval in current minute. Cleared each minute.|
-|<span class="notranslate"> `lve_usage` </span> | Contains aggregated LVE Statistics for “previous” minute to store to database. Overwritten each minute.|
-
-Each plugin’s instance lifetime is from the moment it was loaded till the server stops working. But if <span class="notranslate"> _execute()_ </span> method working time exceeds timeout, the plugin will be terminated and restarted in the next iteration. All changes to the <span class="notranslate"> _lve_data_ </span> dictionary will be lost.
-
-During servers graceful shutdown (restart, server shutdown, commands <span class="notranslate"> `service lvestats stop, service lvestats restart` </span> ), each plugin receives SIGTERM signal.
-This is useful to correctly unload the plugin (terminate all subsidiary processes, save data to files etc.). If a plugin doesn't need to “finalize” its execution before termination, then there's no need to implement this signal handler. Below you can see an example of such handler.
-
-::: tip Note
-If a plugin implements handler for SIGTERM, then this handler must end with <span class="notranslate"> `sys.exit(0)` </span> command. Otherwise plugin process will not be terminated correctly and will become orphaned.
-:::
-
-#### Plugin configuration
-
-
-<span class="notranslate"> LVE Stats 2 </span> Server allows to configure each plugin separately.
-
-On initialization stage the server invokes <span class="notranslate"> _set_config()_ </span> method of the plugin and locates there a dictionary which contains:
-
-* all parameters from file _/etc/sysconfig/lvestats2_ (global).
-* plugin's individual configuration file parameters (if one exists). Configuration files must be located in <span class="notranslate"> _/etc/sysconfig/lvestats.config_ </span> directory, have .cfg extension and be the same format as _/etc/sysconfig/lvestats2_ . Files in this directory are matched with the plugins by name. For instance, if plugin class is <span class="notranslate"> _Plugin1_class_ </span> , then server will try to find and download <span class="notranslate"> _/etc/sysconfig/lvestats.config/Plugin1_class.cfg_. </span> Names are case sensitive. If any plugin doesn't have an individual configuration file, then it's not an error. In this case plugin will just receive parameters from _/etc/sysconfig/lvestats2_ .
-
-::: tip Note
-An individual configuration file of every plugin is loaded after server configuration file. That is why if it contains any parameters with names similar to ones of server config, then plugin will use parameters from its individual config rather than server config parameters.
-
-If a plugin doesn't require any configuration to be done, then set_config method can be skipped.
-
-In addition, plugins can use their own configuration methods.
-:::
-
-#### Types of plugins
-
-
-According to server architecture, plugins can be of the following types:
-
-* <span class="notranslate"> collectors </span>
-* <span class="notranslate"> analyzers </span>
-* <span class="notranslate"> persistors </span>
-* <span class="notranslate"> notifiers </span>
-
-<span class="notranslate"> Collectors </span> are designed to collect information; <span class="notranslate"> analyzers </span> – to analyze it and form some other data on its basis; <span class="notranslate"> persistors </span> – to save information from the common dictionary into files, databases, etc.; <span class="notranslate"> notifiers </span> - to notify system users about any events.
-
-This division is rather arbitrary. There is an opportunity to execute all the actions on collection, analysis and saving the information in one and only plugin. But at the same time the division into functionally independent parts allows to build flexible and easily configurable system for collecting and processing the data.
-
-Also it is possible to implement the systems of lazy-write, planning of collecting/processing tasks and notifying users about different events.
-
-
-#### Examples of plugins
-
-
-Here is a practical example of a user plugin.
-
-Specification:
-
-1. To trace specified file size changes. The name of file being traced must be specified in configuration file, which allows to change it without modifying the plugin itself. If file size has been changed, it has to be written as a message into our log. The name of log must be specified in configuration file as well.
-
-2. File size must be checked with default interval (5 seconds), and log notification must be held once a minute (to avoid resource expend for possibly regular write).
-
-3. System administrator must receive emails with file size at the moment the email was sent. These notifications must be sent even if the file size hasn’t been changed. Notification emails must be read periodicity from configuration file as well as sender/receiver emails .
-
-As file size check, fixing the result and notification sending must be held with different periods, then it’s impossible to realize all the tasks by means of one plugin.
-The fact that one minute (60 seconds) is multiple to 5 seconds doesn’t matter in this case, because default period can be changed in server’s configuration file, but the condition of fixing the result once a minute is a part of the specification, which can not be violated. In addition, notification email period is known in advance, as it is specified by user in configuration file.
-
-That is why we realize 4 plugins: <span class="notranslate"> **collector, analyzer, persistor** </span> and <span class="notranslate"> **notifier** </span>.
-
-
-#### **Collector**
-
-
-<span class="notranslate"> Collector's </span> aim is to determine the size of a proper file.
-
-<div class="notranslate">
-
-```
-# FSize_watcher_collector.py
-# Example plugin for monitoring file size.
-# Part 1. Collector
-
-import os
-from lvestats.core.plugin import LveStatsPlugin 
-
-# Key name
-COLLECTOR_KEY = 'FSizeWatcher_fsize'
-COLLECTOR_KEY_FILENAME = 'FSizeWatcher_fname'  
-
-class FSize_watcher_collector (LveStatsPlugin):
-	# this plugin should be first in chain
-	order = 0
-	# File to monitoring
-	file_to_monitoring = None 
-	
-	def __init__(self):
-		pass 
-		
-	# Sets configuration to plugin
-	def set_config(self, config):
-		self.file_to_monitoring = config.get('file_to_monitoring', None)
-		pass
-	# Work method
-	def execute(self, lve_data):
-		try:
-			# if monitoring file absent, do nothing
-			if self.file_to_monitoring is None or not os.path.exists(self.file_to_monitoring):
-		return 
-		
-			# Get file size
-			stat_info = os.stat(self.file_to_monitoring)
-			fsize = stat_info.st_size 
-			
-			# Place file name and file size to server data dictionary
-			lve_data[COLLECTOR_KEY_FILENAME] = self.file_to_monitoring
-			lve_data[COLLECTOR_KEY] = fsize
-		except (OSError, IOError):
-			# file absent or any other error - remove size from dictionary
-			del lve_data[COLLECTOR_KEY]
-```
-</div>
-
-Plugin algorithm is extremely simple – file size is read and written into data dictionary. Files name is read from <span class="notranslate"> _set_config_ </span> method configuration. If the name is not specified, then <span class="notranslate"> None </span> is written into appropriate variable. All the errors are completely ignored (e.g. if specified file doesn't exist or there's no way to read any of it's information).
-
-<span class="notranslate"> _order_ </span> attribute is specified as 0 to make this plugin go the first among three. Data collector must always be the first in plugins logical chain, because it provides all the necessary information for the analyzer which goes the next. Specific values of <span class="notranslate"> _order_ </span> can be of any kind, but what is important is that when the server starts, all the plugins line up in proper sequence: <span class="notranslate"> collector – analyzer – persistor </span> .
-
-In order to make plugin work, we have to create configuration file <span class="notranslate"> _/etc/sysconfig/lvestats.config/FSize_watcher_collector.cfg_ </span> with the following content:
-
-<div class="notranslate">
-
-```
-# Config file for FSize_watcher_collector plugin
-# Please define monitoring file here
-# file_to_monitoring = /usr/local/cpanel/logs/error_log
-file_to_monitoring = /usr/local/cpanel/logs/access_log
-```
-</div>
-
-Note that file name <span class="notranslate"> _FSize_watcher_collector_ </span> without .cfg extension matches plugin class name.
-
-<span class="notranslate"> _file_to_monitoring_ </span> option is read by plugin in <span class="notranslate"> _set_config_ </span> method and contains file’s full name for monitoring.
-
-Files for monitoring, suggested in the actual example - <span class="notranslate"> _/usr/local/cpanel/logs/error_log_ and _/usr/local/cpanel/logs/access_log_ </span> - are real, these are cPanel control panel logs.
-
-The first file is errors log; the second is appeal log, is refreshed during common work with panel (e.g. if user email address is changed).
-
-Errors log tracking is more important, but appeal log monitoring allows to illustrate plugins work more in details, because it is refreshed more often.
-
-Note that plugin can monitor one file only.
-
-#### **Analyzer**
-
-
-<span class="notranslate"> Analyzer </span> decides if the file's size has changed and gives a command to persistor to refresh log.
-
-<div class="notranslate">
-
-```
-# FSize_watcher_analyzer.py
-# Example plugin for monitoring file size.
-# Part 2. Analyzer 
-
-from lvestats.core.plugin import LveStatsPlugin 
-
-# Key name from collector plugin
-COLLECTOR_KEY = 'FSizeWatcher_fsize' 
-
-# Key name 1 for saver plugin
-SAVER_KEY = 'FSizeWatcher_fsize_to_store'
-# Key name 2 for saver plugin
-SAVER_DATA_PRESENCE = 'FSizeWatcher_fsize_present'  
-
-class FSize_watcher_analyzer (LveStatsPlugin):
-	# this plugin should be second in chain
-	order = 1
-	# Last file size
-	file_last_size = 0
-	# Plugin run period in secondsperiod = 60 
-	
-	def __init__(self):
-		pass 
-		
-	# work method
-	def execute(self, lve_data):
-		# Default setting for saver
-		lve_data[SAVER_DATA_PRESENCE] = 0
-		# Check presence data
-		if COLLECTOR_KEY not in lve_data:
-		return 
-		
-		# Get file size from server data dictionary
-		fsize = lve_data[COLLECTOR_KEY] 
-		
-		# Check, if file size changed, store it for saver plugin
-		if fsize == self.file_last_size:
-			return 
-			
-		# Put new size for saver plugin
-		lve_data[SAVER_KEY] = fsize
-		self.file_last_size = fsize
-		lve_data[SAVER_DATA_PRESENCE] = 1
-```
-</div>
-
-This plugin is extremely simple as well. It starts after <span class="notranslate"> collector (order=1) </span> , searches for file size in the dictionary and compares it with the previous index. If it has changed, then it writes a sign of presence of a new size into the dictionary. If no changes seen, then sign resets. The previous file size is stored in the plugin itself in <span class="notranslate"> _file_last_size_ </span> variable. Note that they are stored during the whole server <span class="notranslate"> lve-stats </span> lifetime.
-
-If file size is not found in data dictionary, then plugin just ends.
-
-All the errors are completely ignored.
-
-<span class="notranslate"> Analyzer </span> is unconfigurable, that is why it doesn’t require any configuration file and it doesn’t contain <span class="notranslate"> _set_config_ </span> method.
-
-Plugin starts every 60 seconds (1 minute), because we need data fixation to be performed one time in a minute.
-
-
-#### **Persistor**
-
-
-<span class="notranslate"> Persistor </span> saves information from the common dictionary into files, databases, etc.
-
-<div class="notranslate">
-
-```
-# FSize_watcher_saver.py
-# Example plugin for monitoring file size and last modification date-time.
-# Part 3. Data saver 
-
-import signal
-import sys
-import time
-from lvestats.core.plugin import LveStatsPlugin 
-
-# Key name 1 for saver plugin
-SAVER_KEY = 'FSizeWatcher_fsize_to_store'
-# Key name 2 for saver plugin
-SAVER_DATA_PRESENCE = 'FSizeWatcher_fsize_present'
-# Monitoring file name
-COLLECTOR_KEY_FILENAME = 'FSizeWatcher_fname'  
-
-class FSize_watcher_saver (LveStatsPlugin):
-	# this plugin should be third in chain
-	order = 2
-	# Plugin run period in seconds
-	period = 60
-	# Log filename
-	log_file_name = None
-	# First run flag
-	is_first_run = True 
-	
-	def __init__(self):
-		signal.signal(signal.SIGTERM, self.sigterm_handler) 
-		
-	# Sets configuration to plugin
-	def set_config(self, config):
-		# Get log filename
-		self.log_file_name = config.get('log_filename', None) 
-		
-	# work method
-	def execute(self, lve_data):
-		# do nothing, if log file not defined
-		if not self.log_file_name:
-			return
-		try:
-			# Check presence data
-			if SAVER_DATA_PRESENCE not in lve_data or lve_data[SAVER_DATA_PRESENCE] == 0:
-				# No data
-				return
-			# Get file size from server data dictionary
-			fsize = lve_data[SAVER_KEY]
-			
-			# Store data to log
-			f = open(self.log_file_name, 'a')
-			if self.is_first_run:
-				f.write('%s - FSize_watcher started. Monitoring file: %s, saving data period=%d sec\n' % (time.asctime(time.localtime()), lve_data[COLLECTOR_KEY_FILENAME], self.period))
-				self.is_first_run = False
-			f.write('%s - FSize_watcher: file size is %d bytes\n' % (time.asctime(time.localtime()), fsize))
-			f.close()
-		except:
-			# Ignore all errors
-			pass 
-			
-	# Terminate handler
-	def sigterm_handler(self, signum, frame):
-		if self.log_file_name:
-			try:
-				# Store data to log file
-				f = open(self.log_file_name, 'a')
-				f.write('%s - File watcher saver plugin: TERMINATE\n' % time.asctime(time.localtime()))
-				f.close()
-				pass
-			except:
-				# Ignore all errors
-				pass
-		# Terminate process
-		sys.exit(0)
-```
-</div>
-
-Configuration file <span class="notranslate">`/etc/sysconfig/lvestats.config/FSize_watcher_saver.cfg`</span>:
-<div class="notranslate">
-
-```
-# Config file for FSize_watcher_saver.py plugin
-# Please define log filename here
-log_filename = /var/log/FSize_watcher.log
-```
-</div>
-
-This plugin starts after <span class="notranslate"> analyzer (order=2) </span> , checks new file size <span class="notranslate"> `presence` </span> flag, and if positive – writes it into log. If the flag is cleared (which means the size hasn't changed), then plugin simply ends.
-
-Starts once in a minute (period=60).
-
-Also this plugin shows the work of signal handler.
-
-Plugin constructor registers handler-function of a  proper signal: <span class="notranslate"> _signal.signal(signal.SIGTERM, self.sigterm_handler)_ .  </span> This means, that when the server finishes its work, then <span class="notranslate"> _sigterm_handler_ </span> method of plugin class will be invoked. In the actual example the function just writes a notification into log, tracing the fact of it's invocation.
-
-Pay attention on <span class="notranslate"> _sys.exit(0)_ </span> command in the end of the handler. Find the information on it in <span class="notranslate"> [Server Plugin Arrangement](./#server-plugin-arrangement) </span> section.
-
-In addition see into examples of file log <span class="notranslate"> _/var/log/FSize_watcher.log_ </span> formed by the plugins above:
-<div class="notranslate">
-
-```
-Tue Feb  3 13:06:24 2015 - FSize_watcher started. Monitoring file: /usr/local/cpanel/logs/access_log, saving data period=60 sec
-Tue Feb  3 13:06:24 2015 - FSize_watcher: file size is 122972890 bytes
-Tue Feb  3 13:07:25 2015 - FSize_watcher: file size is 122975507 bytes
-Tue Feb  3 13:08:25 2015 - FSize_watcher: file size is 122978124 bytes
-Tue Feb  3 13:09:25 2015 - FSize_watcher: file size is 122978997 bytes
-Tue Feb  3 13:10:25 2015 - FSize_watcher: file size is 122981033 bytes
-Tue Feb  3 13:11:25 2015 - FSize_watcher: file size is 122982052 bytes
-Tue Feb  3 13:13:25 2015 - FSize_watcher: file size is 122983798 bytes
-Tue Feb  3 13:20:15 2015 - File watcher saver plugin: TERMINATE
-```
-</div>
-
-and
-<div class="notranslate">
-
-```
-Thu Feb  5 13:07:27 2015 - FSize_watcher started. Monitoring file: /usr/local/cpanel/logs/error_log, saving data period=60 sec
-Thu Feb  5 13:07:27 2015 - FSize_watcher: file size is 14771849 bytes
-Thu Feb  5 14:03:32 2015 - FSize_watcher: file size is 14771995 bytes
-Thu Feb  5 15:01:36 2015 - FSize_watcher: file size is 14772434 bytes
-Thu Feb  5 17:15:47 2015 - FSize_watcher: file size is 14772873 bytes
-Thu Feb  5 18:47:54 2015 - FSize_watcher: file size is 14775213 bytes
-Thu Feb  5 19:11:56 2015 - FSize_watcher: file size is 14775652 bytes
-Thu Feb  5 21:09:05 2015 - FSize_watcher: file size is 14776091 bytes
-Thu Feb  5 23:06:14 2015 - FSize_watcher: file size is 14776530 bytes
-Fri Feb  6 00:47:23 2015 - FSize_watcher: file size is 14778870 bytes
-Fri Feb  6 01:02:24 2015 - FSize_watcher: file size is 14779309 bytes
-Fri Feb  6 02:00:28 2015 - FSize_watcher: file size is 14779434 bytes
-Fri Feb  6 03:16:34 2015 - FSize_watcher: file size is 14779873 bytes
-Fri Feb  6 05:04:42 2015 - FSize_watcher: file size is 14779998 bytes
-Fri Feb  6 05:12:43 2015 - FSize_watcher: file size is 14780437 bytes
-Fri Feb  6 05:56:50 2015 - FSize_watcher: file size is 14780551 bytes
-Fri Feb  6 06:01:50 2015 - FSize_watcher: file size is 14780975 bytes
-Fri Feb  6 06:03:51 2015 - FSize_watcher: file size is 14782183 bytes
-Fri Feb  6 06:04:51 2015 - FSize_watcher: file size is 14782575 bytes
-Fri Feb  6 06:18:52 2015 - FSize_watcher: file size is 14782647 bytes
-Fri Feb  6 06:21:52 2015 - FSize_watcher: file size is 14782898 bytes
-Fri Feb  6 06:48:54 2015 - FSize_watcher: file size is 14785238 bytes
-Fri Feb  6 07:09:56 2015 - FSize_watcher: file size is 14785677 bytes
-Tue Feb  6 08:03:15 2015 - File watcher saver plugin: TERMINATE
-```
-</div>
-
-You can see that log record is being held once a minute (what we actually need), new file size is written.
-
-Also we can notice that handler <span class="notranslate"> SIG_TERM </span> was executed, signaling that plugin received the notification about server shut-down.
-
-
-#### **Notifier**
-
-
-<span class="notranslate">Notifier</span> informs system users about any events.
-<div class="notranslate">
-
-```
-# FSize_watcher_saver.py
-# Example plugin for monitoring file size and last modification date-time.
-# Part 4. Notifier 
-
-import time
-import smtplib 
-
-from lvestats.lib.commons import dateutil
-from lvestats.core.plugin import LveStatsPlugin  
-
-
-# Key name
-COLLECTOR_KEY_FSIZE = 'FSizeWatcher_fsize'
-COLLECTOR_KEY_FILENAME = 'FSizeWatcher_fname' 
-
-# email message pattern
-EMAIL_MESSAGE_PATTERN = """Hello, administrator!
-Size of the file '%s' is %d bytes.
-"""  
-
-
-class FSize_watcher_notifier (LveStatsPlugin):
-	# Default period
-	DEFAULT_PERIOD_STR = '12h'
-	# this plugin should be third in chainorder = 3
-	# Timeout
-	timeout = 20
-	# Notifier Log filename
-	log_file_name = '/var/log/FSize_watcher_notifier.log'
-	# Email from address
-	email_from = None
-	# Email to address
-	email_to = None
-	# Email subject
-	email_subject = None
-	# Sets configuration to plugin
-	def set_config(self, config):
-		# Email settings
-		self.email_from = config.get('notify_from_email', None)
-		self.email_to = config.get('notify_to_email', None)
-		self.email_subject = config.get('notify_from_subject', 'Message from FSize_watcher_notifier plugin')
-		# Notify period
-		s_period = config.get('notify_period', None)
-		if s_period:
-			self.period = dateutil.parse_period2(s_period)
-		else:
-			self.period = dateutil.parse_period2(FSize_watcher_notifier.DEFAULT_PERIOD_STR)
-		f = open(self.log_file_name, 'a')
-		f.write('%s - FSize_watcher_notifier plugin: configure\n' % time.asctime(time.localtime()))
-		f.write('       - Period: %s\n' % self.period)
-		f.write('       - From: %s\n' % self.email_from)
-		f.write('       - To: %s\n' % self.email_to)
-		f.write('       - Subject: \'%s\'\n' % self.email_subject)
-		f.close() 
-		
-	# work method
-	def execute(self, lve_data):
-		if COLLECTOR_KEY_FSIZE not in lve_data or COLLECTOR_KEY_FILENAME not in lve_data:
-			return
-		if not self.email_from or not self.email_to:
-			f = open(self.log_file_name, 'a')
-			f.write('%s - FSize_watcher_notifier plugin error: email_from or email_to not set\n')
-			f.close()
-			return
-		try:
-			from email.mime.text import MIMEText
-			# Send email
-			msg = MIMEText(EMAIL_MESSAGE_PATTERN % (lve_data[COLLECTOR_KEY_FILENAME], lve_data[COLLECTOR_KEY_FSIZE]))
-		msg['Subject'] = self.email_subject
-		msg['From'] = self.email_from
-		msg['To'] = self.email_to 
-		
-		s = smtplib.SMTP('localhost')
-		s.sendmail(self.email_from, [self.email_to], msg.as_string())
-			s.quit() 
-			
-		f = open(self.log_file_name, 'a')
-			f.write('%s - FSize_watcher_notifier plugin: email message was successfully sent\n' % time.asctime(time.localtime()))
-			f.close()
-			except Exception as e:
-			f = open(self.log_file_name, 'a')
-			f.write('%s - FSize_watcher_notifier plugin error:\n%s\n' % (time.asctime(time.localtime()), str(e)))
-			f.close()
-```
-</div>
-
-Configuration file <span class="notranslate"> _/etc/sysconfig/lvestats.config/FSize_watcher_notifier.cfg_ : </span>
-<div class="notranslate">
-
-```
-# Config file for FSize_watcher_notifier.py plugin
-# Please define email options here 
-
-NOTIFY_FROM_EMAIL=user@hostname
-NOTIFY_FROM_SUBJECT=Message from FSize_watcher_notifier
-NOTIFY_TO_EMAIL=admin@hostname
-NOTIFY_PERIOD=12h
-```
-</div>
-
-Plugin’s index number equals 3 ( <span class="notranslate"> order=3 </span> ), that is why <span class="notranslate"> notifier </span> starts after the rest. But since it uses only data formed by <span class="notranslate"> collector </span> , then its order may equal any number bigger that <span class="notranslate"> collectors </span> order (>0).
-
-<span class="notranslate"> Notifier </span> reads the necessary parameters from the configuration (email address, topic, period) and writes them into its own log as reference.
-
-Plugin’s <span class="notranslate"> _execute_ </span> method checks the availability of all the necessary data (email parameters, collectors data) and sends the message. All the notifications are written into the <span class="notranslate"> notifier's </span> own log.
-
-If any data is missing,  the message is not sent.
-
-Log example:
-<div class="notranslate">
-
-```
-Thu Feb  5 11:51:34 2015 - FSize_watcher_notifier plugin: configure
-       - Period: 60.0
-       - From: user@hostname
-       - To: admin@hostname
-       - Subject: 'Message from FSize_watcher_notifier'
-Thu Feb  5 11:51:35 2015 - FSize_watcher_notifier plugin: email message was successfully sent
-Thu Feb  5 11:52:35 2015 - FSize_watcher_notifier plugin: email message was successfully sent
-Thu Feb  5 11:53:35 2015 - FSize_watcher_notifier plugin: email message was successfully sent
-Thu Feb  5 11:54:35 2015 - FSize_watcher_notifier plugin: email message was successfully sent
-Thu Feb  5 11:57:00 2015 - FSize_watcher_notifier plugin: configure
-       - Period: 43200.0
-       - From: user@hostname
-       - To: admin@hostname
-       - Subject: 'Message from FSize_watcher_notifier'
-Thu Feb  5 11:57:00 2015 - FSize_watcher_notifier plugin: email message was successfully sent
-```
-</div>
-
-#### File info and format for /var/lve/info file
-
-
-This file is used by control panels to display to user their 'current' usage. The file is updated every 5 seconds by lve-stats.
-
-When writing to this file we make sure that: average <span class="notranslate"> CPU/IOPS/MEM </span> is never greater then <span class="notranslate"> LIMIT </span> for that resource.
-
-Example:
-
-0,0,20,0,2500,0,262144,0,0,262144,0,0,100,0,0,0,0,1024,1024,0,0,0,0
-600,1,20,2492,2500,70,262144,0,0,262144,33,0,100,1,0,0,0,1024,1024,0,5,0,0
-200,0,20,0,2500,0,262144,0,0,262144,0,0,100,0,0,0,0,1024,1024,0,0,0,0
-500,0,20,0,2500,0,262144,0,0,262144,0,0,100,0,0,0,0,1024,1024,0,0,0,0
-
-First line of the file is ' <span class="notranslate"> default limits </span> '.
-
-Fields:
-<div class="notranslate">
-
-```
-# 0 - id
-# 1 - mep (average entry processes)
-# 2 - lep  (limit ...)
-# 3 - cpu_usage (average speed)
-# 4 - lcpu (limit spped)
-# 5 - mem_usage (average virtual memory)
-# 6 - lmem (limit ...)
-# 7 - mem_fault (number of virtual memory faults)
-# 8 - mep_fault (number of entry processes faults)
-LVE_VERSION >=6
-# 9 - lmemphy (limit physical memory)
-# 10 - memphy (average ...)
-# 11 - memphy_fault (faults ...)
-# 12 - lnproc (limit number of processes)
-# 13 - nproc (average ...)
-# 14 - nproc_fault (faults ...)
-# 15 - lcpuw (CPU weight -- deprecated not used)
-# 16 - io_usage (average IO usage)
-# 17 - io_limit (limit ...)
-LVE_VERSION >=8
-#18 - liops  (limit IOPS)
-#19 - iops (average IOPS)
-```
-</div>
-
-:::tip Note
-You can also use [LVE-stats 2 CLI](/shared/command-line_tools/#lve-stats-2)
-:::
-
-### Troubleshooting
-
-<span class="notranslate"> lvestats </span> service and utilities write fatal errors to system log.
-
-There is <span class="notranslate">`/var/log/lve-stats.log`</span> file with additional information (warnings, tracebacks for errors).
-
-To see which letters were sent via lves-tats notifier in the logs, do the following:
-
-1. In the `/etc/sysconfig/lvestats2`, specify `logging_level=debug`;
-2. Execute the `service lvestats restart` command.
-
-## CageFS
-
-### General information and requirements
-
-* [Minimum Requirements](./#minimum-requirements)
-* [CageFS quirks](./#cagefs-quirks)
-
-CageFS is a virtualized file system and a set of tools to contain each user in its own 'cage'. Each customer will have its own fully functional CageFS, with all the system files, tools, etc.
-
-The benefits of CageFS are:
-
-* Only safe binaries are available to user
-* User will not see any other users, and would have no way to detect presence of other users & their user names on the server
-* User will not be able to see server configuration files, such as Apache config files.
-* User's will have limited view of _/proc_ file system, and will not be able to see other users' processes
-
-At the same time, user's environment will be fully functional, and user should not feel in any way restricted. No adjustments to user's scripts are needed. CageFS will cage any scripts execution done via:
-* <span class="notranslate"> Apache (suexec, suPHP, mod_fcgid, mod_fastcgi) </span>
-* <span class="notranslate"> LiteSpeed Web Server </span>
-* <span class="notranslate"> Cron Jobs  </span>
-* SSH
-* Any other <span class="notranslate"> PAM </span> enabled service
-
-::: tip Note
-mod_php is not supported, MPM ITK requires a custom patch
-:::
-
-::: tip Note
-CageFS is not supported for H-Sphere.
-:::
-
-See also [Compatibility Matrix](/shared/limits/#compatibility-matrix).
-
-#### Minimum Requirements:
-
-* kernel: CL6 with lve1.2.17.1 or later, CL7.
-* 7GB of disk space.
-
-Depending on your setup, and number of users, you might also need:
-* Up to 8MB per customer in `/var` directory (to store custom `/etc` directory)
-* 5GB to 20GB in `/usr/share` directory (to store safe skeleton of a filesystem)
-
-::: danger Warning
-If at any time you decide to uninstall CageFS, please make sure you follow [uninstall instructions](./#uninstalling)
-:::
-
-#### CageFS quirks
-
-
-Due to the nature of CageFS, some options will not work as before or will require some changes:
-
-* lastlog will not work (<span class="notranslate">`/var/log/lastlog`</span>).
-* PHP will load `php.ini` from <span class="notranslate">`/usr/selector/php.ini`</span>. That file is actually a link to the real `php.ini` file from your system. So the same `php.ini` will be loaded in the end.
-* You have to run <span class="notranslate">`cagefsctl --update`</span> any time you have modified `php.ini`, or you want to get new/updated software inside CageFS.
-* CageFS installation changes <span class="notranslate">`jailshell`</span> to regular bash on cPanel - [read why](https://cloudlinux.zendesk.com/hc/articles/115004517685-Why-CageFS-installation-changes-jailshell-to-regular-bash-on-cPanel-).
-
-
-### Installation and update
-
-To install CageFS:
-<div class="notranslate">
-
-```
-$ yum install cagefs
-$ /usr/sbin/cagefsctl --init
-```
-</div>
-
-That last command will create skeleton directory that might be around 7GB in size. If you don't have enough disk space in _/usr/share_, use following commands to have <span class="notranslate"> `cagefs-skeleton` </span> being placed in a different location:
-<div class="notranslate">
-
-```
-$ mkdir /home/cagefs-skeleton
-$ ln -s /home/cagefs-skeleton /usr/share/cagefs-skeleton
-```
-</div>
-
-The commands above should be executed before the <span class="notranslate">`cagefsctl --init`</span>.
-
-Also, it is needed approximately 4Kb of disk space per one user for the <span class="notranslate">`/var/cagefs`</span> directory. You should place the <span class="notranslate">`/var/cagefs`</span> directory on partition, which is large enough and has disk quota enabled.
-
-For example, to create the <span class="notranslate">`/var/cagefs`</span> directory on the <span class="notranslate">`/home`</span> partition, execute the following commands before the <span class="notranslate">`cagefsctl --init`</span>:
-
-<div class="notranslate">
-
-```
-mkdir /home/cagefs
-ln -s /home/cagefs /var/cagefs
-```
-</div>
-
-
-:::danger IMPORTANT
-Please make sure to turn on disk quota for a partition where the <span class="notranslate">`/var/cagefs`</span> directory is located, or move the <span class="notranslate">`/var/cagefs`</span> to a partition where disk quota is enabled. This is needed to prevent users from abusing disk quota inside CageFS.
-:::
-
-If the `/var/cagefs` directory is already created, you can move it. How to move the `/var/cagefs` directory:
-[https://docs.cloudlinux.com./#moving-var-cagefs-directory](https://docs.cloudlinux.com./#moving-var-cagefs-directory)
-
-
-::: danger IMPORTANT
-If you are placing skeleton in <span class="notranslate">`/home`</span> directory on cPanel servers, you must configure the following option in cPanel WHM: <span class="notranslate"> **WHM -> Server Configuration -> Basic cPanel/WHM Setup -> Basic Config -> Additional home directories** </span>  
-Change the value to blank (not default <span class="notranslate"> Home </span> ). Without changing this option, cPanel will create new accounts in incorrect places.
-:::
-
-CageFS will automatically detect and configure all necessary files for:
-* cPanel
-* Plesk
-* DirectAdmin
-* ISPmanager
-* Interworx
-* MySQL
-* PostgreSQL
-* LiteSpeed
-
-Web interface to manage CageFS is available for cPanel, Plesk 10+, DirectAdmin, ISPmanager & Interworx. Command line tool would need to be used for other control panels.
-
-Once you initialized the template you can start enabling users. By default CageFS is disabled for all users.
-
-Starting from **cagefs-6.1-27** <span class="notranslate">`fs.proc_can_see_other_uid`</span> will be migrated (one time) from _/etc/sysctl.conf_ into _/etc/sysctl.d/90-cloudlinux.conf_ . If this variable is not set in either file, it will default to 0.
-
-It is strongly advised against setting this variable in `90-cloudlinux.conf`. Define it in `/etc/sysctl.conf` or in some other config file with an index number greater than `90-cloudlinux.conf`, e.g. `/etc/sysctl.d/95-custom.conf`.
-
-You can find more information on <span class="notranslate">`fs.proc_can_see_other_uid`</span> automatic migration in [Kernel Config Variables](/shared/cloudlinux_os_kernel/#kernel-config-variables).
-
-
-:::tip Note
-You can also use [CageFS CLI](/shared/command-line_tools/#cagefs)
-:::
-
-### Uninstalling
-
-To uninstall CageFS, start by disabling and removing all directories:
-
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --remove-all
-```
-</div>
-
-That command will: disable CageFS for all customers, unmount CageFS for all users, removes <span class="notranslate"> _/usr/share/cagefs-skeleton_ & _/var/cagefs_ </span> directories. It will not remove _/etc/cagefs_ directory.
-
-Remove CageFS RPM:
-
-<div class="notranslate">
-
-```
-$ yum remove cagefs
-```
-</div>
-
-
-### Managing users
-
-CageFS provides for two modes of operations:
-
-1. Enabled for all, except those that are disabled.
-2. Disabled for all, except those that are enabled.
-
-Mode #1 is convenient for production operation, where you want all new users to automatically be added to CageFS.
-Mode #2 is convenient while you test CageFS, as it allows you to enable it on one by one for your customers.
-
-To start using CageFS you have to select one of the mode of operations:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --enable-all
-```
-</div>
-or
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --disable-all
-```
-</div>
-or
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --toggle-mode
-```
-</div>
-That will switch the operation mode, preserving current disabled/enabled users.
-
-To enable individual user do:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --enable [username]
-```
-</div>
-To disable individual user:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --disable [username]
-```
-</div>
-To  list all enabled users:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --list-enabled
-```
-</div>
-To list all disabled users:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --list-disabled
-```
-</div>
-To see current mode of operation:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --display-user-mode
-```
-</div>
-
-
-:::tip Note
-You can also use [CageFS CLI](/shared/command-line_tools/#cagefs)
-:::
-
-### Configuration
-
-* [File system templates](./#file-system-templates)
-
-* [Excluding files](./#excluding-files)
-
-* [Excluding users](./#excluding-users)
-
-* [Mount points](./#mount-points)
-
-  * [Per user virtual mount points](./#per-user-virtual-mount-points)
-
-  * [Split by username](./#split-by-username)
-
-  * [Splitted by user’s UID mounts](./#splitted-by-user-s-uid-mounts)
-  
-  * [Mounting user’s home directory inside CageFS](./#mounting-users-home-directory-inside-cagefs)  
-
-  * [How to hide directory inside mount point](./#how-to-hide-directory-inside-mount-point)
-  
-  * [Example](./#example)
-
-* [Base home directory](./#base-home-directory)
-
-* [PostgreSQL support](./#postgresql-support)
-
-* [PAM configuration](./#pam-configuration)
-
-* [Filtering options for commands executed by proxyexec](./#filtering-options-for-commands-executed-by-proxyexec)
-
-* [Executing by proxy](./#executing-by-proxy)
-
-* [Users with duplicate UIDs](./#users-with-duplicate-uids)
-
-* [Examples](./#examples)
-
-  * [Example 1. Make users in CageFS be able to execute a script which must work outside CageFS](./#example-1-make-users-in-cagefs-be-able-to-execute-a-script-which-must-work-outside-cagefs)
-
-  * [Example 2. Permissions escalation](./#example-2-permissions-escalation)
-
-  * [Example 3. Custom proxyexec wrapper](./#example-3-custom-proxyexec-wrapper)
-
-* [Custom /etc files per customer](./#custom-etc-files-per-customer)
-
-* [Moving <span class="notranslate"> cagefs-skeleton </span> directory](./#moving-cagefs-skeleton-directory)
-
-* [Moving /var/cagefs directory](./#moving-var-cagefs-directory)
-
-* [TMP directories](./#tmp-directories)
-
-* [Syslog](./#syslog)
-
-* [Excluding mount points](./#excluding-mount-points)
-
-* [Shared memory (/dev/shm) isolation in CageFS](./#shared-memory-dev-shm-isolation-in-cagefs)
-
-* [Preventing process from entering CageFS on error](./#preventing-process-from-entering-cagefs-on-error)
-
-
-#### File system templates
-
-:::warning Note
-Please do not modify any existing files in the <span class="notranslate">`/etc/cagefs/conf.d`</span> directory because they may be overwritten while updating CageFS package. You should create a new file with a unique name instead.
-:::
-
-CageFS creates a filesystem template in <span class="notranslate">`/usr/share/cagefs-skeleton`</span> directory. CageFS template will be mounted for each customer. The template is created by running:
-<div class="notranslate">
-
-```
-# /usr/sbin/cagefsctl --init
-```
-</div>
-
-To update the template, you should run:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --update
-```
-</div>
-
-The behavior of the commands (and the files copied into <span class="notranslate"> _/usr/share/cagefs-skeleton_ </span> directory) depends on the configuration files in _/etc/cagefs/conf.d_  
-You can add additional files, users, groups and devices into CageFS template by adding .cfg file, and running:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --update
-```
-</div>
-
-To delete files from CageFS template, remove corresponding .cfg file, and run:
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --update
-```
-</div>
-
-Here is an example <span class="notranslate"> _openssh-clients.cfg_ </span> file:
-<div class="notranslate">
-
-```
-[openssh-clients]
-
-comment=OpenSSH Clients
-
-paths=/etc/ssh/ssh_config, /bin/hostname, /usr/bin/scp, /usr/bin/sftp, /usr/bin/slogin, /usr/bin/ssh, /usr/bin/ssh-add, /usr/bin/ssh-agent, /usr/bin/ssh-copy-id, /usr/bin/.ssh.hmac, /usr/bin/ssh-keyscan, /usr/libexec/openssh/sftp-server, /etc/environment, /etc/security/pam_env.conf
-
-devices=/dev/ptmx
-```
-</div>
-
-Example <span class="notranslate"> _mail.cfg_ </span> file:
-<div class="notranslate">
-
-```
-[mail]
-
-comment=Mail tools
-
-paths=/bin/mail, /etc/aliases.db, /etc/mail, /etc/mailcap, /etc/mail.rc, /etc/mime.types, /etc/pam.d/smtp.sendmail, /etc/rc.d/init.d/sendmail, /etc/smrsh, /etc/sysconfig/sendmail, /usr/bin/hoststat, /usr/bin/Mail, /usr/bin/mailq.sendmail, /usr/bin/makemap, /usr/bin/newaliases.sendmail, /usr/bin/purgestat, /usr/bin/rmail.sendmail, /usr/lib64/sasl2/Sendmail.conf, /usr/lib/mail.help, /usr/lib/mail.tildehelp, /usr/lib/sendmail.sendmail, /usr/sbin/mailstats, /usr/sbin/makemap, /usr/sbin/praliases, /usr/sbin/sendmail.sendmail, /usr/sbin/smrsh, /var/log/mail, /var/spool/clientmqueue, /var/spool/mqueue
-
-users=smmsp
-
-groups=smmsp
-```
-</div>
-
-There is an easy way to add/delete files from particular <span class="notranslate"> RPMs </span> into CageFS. That can be done by using <span class="notranslate"> `--addrpm` and `--delrpm` </span> options in <span class="notranslate"> `cagefsctl` </span> . Like:
-<div class="notranslate">
-
-```
-$ cagefsctl --addrpm ffmpeg
-$ cagefsctl --update
-```
-</div>
-
-::: tip Note
-ffmpeg RPM should be installed on the system already.
-:::
-
-
-#### Excluding files
-
-
-To exclude files and directories from CageFS, edit file:  
-<span class="notranslate">`/etc/cagefs/custom.black.list`</span>  
-And add files or directories in there, one per line.
-
-Execute the following command to apply changes:
-<div class="notranslate">
-
-```
-cagefsctl --force-update
-```
-</div>
-
-Please do not edit <span class="notranslate">`/etc/cagefs/black.list`</span> file because it is replaced during the update of CageFS package.
-
-#### Excluding users
-
-
-To exclude users from CageFS, create a file (any name would work) inside <span class="notranslate">`/etc/cagefs/exclude`</span> folder, and list users that you would like to exclude from CageFS in that file (each user in separate line).
-
-Then execute the following command to apply changes: 
-<div class="notranslate">
-
-```
-cagefsctl --user-status USER
-```
-</div>
-
-And check that the command shows <span class="notranslate">`Disabled`</span>.
-
-
-#### Mount points
-
-:::tip Note
-Please do not mount the entire `/var` directory into CageFS (i.e. do not add the `/var` to the `cagefs.mp`). This will break CageFS.
-:::
-
-
-
-CageFS creates individual namespace for each user, making it impossible for users to see each other's files and creating high level of isolation. The way namespace is organized:
-
-1. <span class="notranslate"> /usr/share/cagefs-skeleton </span> with safe files is created
-2. Any directory from the server that needs to be shared across all users is mounted into <span class="notranslate">`/usr/share/cagefs-skeleton`</span>
-(a list of such directories is defined in /etc/cagefs/cagefs.mp)
-3. <span class="notranslate"> /var/cagefs/[prefix]/username </span> directory for each user. Prefix is defined as last two digits of user id. User id is taken from <span class="notranslate"> /etc/passwd </span> file.
-4. Separate /etc directory is created and populated for each user inside <span class="notranslate"> /var/cagefs/[prefix]/username </span>
-5. /tmp directory is mounted for each user separately into <span class="notranslate"> ~username/.cagefs/tmp directory </span>
-6. Additional custom directories can be mounted for each user by defining them in /etc/cagefs/cagefs.mp
-7. You can define custom directories per user using [virt.mp](./#per-user-virtual-mount-points) files _[CageFS 5.1 and higher]_
-
-To define individual custom directories in /etc/cagefs/cagefs.mp following format is used:
-
-<span class="notranslate">`@/full/path/to/directory,permission notation`</span>
-
-
-This is useful when you need to give each user its own copy of a particular system directory, like:
-
-<span class="notranslate"> `@/var/run/screen,777` </span>
-
-
-Such entry would create separate <span class="notranslate"> /var/run/screen </span> for each user, with permissions set to 777
-
-To modify mount points, edit /etc/cagefs/cagefs.mp. Here is an example of cagefs.mp:
-<div class="notranslate">
-
-```
-/var/lib/mysql
-/var/lib/dav
-/var/www/cgi-bin
-/var/spool
-/dev/pts
-/usr/local/apache/domlogs
-/proc
-/opt
-@/var/spool/cron,700
-@/var/run/screen,777
-```
-</div>
-
-If you want to change mount points, make sure you re-initialize mount points for all customers:
-<div class="notranslate">
-
-```
-$ cagefsctl --remount-all
-```
-</div>
-This command will kill all current processes and reset mount points.
-
-
-
-#### **Per user virtual mount points**
-
-_[CageFS 5.1 and higher]_
-
-* _Please, see [Split by username](./#split-by-username) feature, as it might be simpler to implement in some cases._ 
-
-Starting with CageFS 5.1 you can specify additional directories to be mounted inside user's CageFS. This can be specified for each user.
-To specify virtual mount points for a user, create a file:
-
-<span class="notranslate"> `/var/cagefs/[prefix]/[user]/virt.mp` </span>
-
-
-Inside that file, you can specify mount points in the following format:
-<div class="notranslate">
-
-```
-virtdir1,mask
-@subdir1,mask
-@subdir2,mask
-virdir2,mask
-@subdir3,mask
-@subdir4,mask
->virtdir3,mask
-@subdir5,mask
-@subdir6,mask
-# comments
-```
-</div>
-
-* <span class="notranslate"> _mask_ </span> is always optional, if missing 0755 is used
-* Create virtual directory <span class="notranslate"> _subdir/virtdir_ </span> , mount it to:
-  * <span class="notranslate"> skeleton _jaildir/virtdir_ </span>
-  * inside virtual directory, create directories <span class="notranslate"> _subdir1, subdir2_ </span>
-  * mount <span class="notranslate"> _virtdir1/subdir1_ </span> to <span class="notranslate"> _subdir/virtdir/subdir1_ </span>
-  * if <span class="notranslate"> _virtdir_ </span> is started with >, create directory <span class="notranslate"> _subdir/virtdir_ </span> , but don't mount it into <span class="notranslate"> _jaildir_ </span> . This is needed for cases when <span class="notranslate"> _virtdir_ </span> is inside home base dir.
-* if file _/var/cagefs/[prefix]/[user]/virt.mp_ is missing -- no virt directories are loaded for that user.
-
-Note that CageFS will automatically create those files for Plesk 10 & higher.
-
-For example if we have Plesk 11.5 with two users <span class="notranslate">_cltest1_</span>, and <span class="notranslate">_cltest2_</span>:
-<div class="notranslate">
-
-```
-cltest1 uid 10000 has domains: cltest1.com, cltest1-addon.com and sub1.cltest1.com
-cltest2 uid 10001 has domains: cltest2.com, cltest2-addon.com
-```
-</div>
-
-In such case we would have file _/var/cagefs/00/cltest1/virt.mp_ :
-<div class="notranslate">
-
-```
->/var/www/vhosts/system,0755
-@cltest1-addon.com,0755
-@cltest1.com,0755
-@sub1.cltest1.com,0755
-```
-</div>
-
-and file: _/var/cagefs/01/cltest2/virt.mp:_
-<div class="notranslate">
-
-```
->/var/www/vhosts/system
-@cltest2-addon.com
-@cltest2.com
-```
-</div>
-
-
-#### **Split by username**
-
-_[CageFS 5.3.1+]_
-
-Sometimes you might need to make sure that directory containing all users would show up as containing just that user inside CageFS. For example, if you have directory structure like:
-<div class="notranslate">
-
-```
-/home/httpd/fcgi-bin/user1
-/home/httpd/fcgi-bin/user2
-```
-</div>
-
-Then we can add the following line to /etc/cagefs/cagefs.mp file:
-<div class="notranslate">
-
-```
-%/home/httpd/fcgi-bin
-```
-</div>
-
-and execute:
-<div class="notranslate">
-
-```
-cagefsctl --remount-all
-```
-</div>
-
-After that each subdirectory of <span class="notranslate"> _/home/httpd/fcgi-bin_ </span> will be mounted for appropriate user in CageFS: <span class="notranslate"> _/home/httpd/fcgi-bin/user1_ </span> will be mounted for <span class="notranslate"> user1 </span> and <span class="notranslate"> _/home/httpd/fcgi-bin/user2_ </span> will be mounted for <span class="notranslate"> user2 </span> .
-
-#### Splitted by user’s UID mounts
-
-:::tip Note
-Requires CageFS v.7.4.2-1 and later
-:::
-
-In addition to [splitted by username mounts](./#split-by-username), there is an ability to “split” mounts by user’s UID. This feature is useful for systems with non-unique UIDs, i.e. when multiple users have the same UID.
-
-Using splitted by UID mounts is more preferable over splitted by username mounts, because you can mount the same directory for all users with the same UID. Also, splitted by UID mounts work fine with renaming of the users (when username changes but UID remains the same).
-
-For example if you have a directory structure like the following:
-
-```
-/data/uids/1000/data.db
-/data/uids/1001/data.db
-```
-
-Then you can add the following line to the `/etc/cagefs/cagefs.mp` file:
-
-```
-*/data/uids
-and execute
-cagefsctl --remount-all
-```
-
-After that each subdirectory of the `/data/uids` will be mounted for the appropriate user in CageFS. The `/data/uids/1000` directory will be mounted for the user with UID 1000 and the `/data/uids/1001` directory will be mounted for the user with UID 1001.
-
-
-
-#### **Mounting users home directory inside CageFS**
-
-
-CageFS 6.1-1 (and later) has improved mounting user’s home directory that is applied for users with home directories like <span class="notranslate"> _/home/user_ or _/homeN/user_ </span> (where <span class="notranslate"> N </span> = 0,1,..9).
-
-In such case, earlier versions of CageFS always mount user’s home directory to <span class="notranslate"> _/home/user_ </span> and create symlink <span class="notranslate"> _/homeN -> /home_ </span> when needed, so user’s home directory can be accessed both via <span class="notranslate"> _/home/user_ </span> and <span class="notranslate"> _/homeN/user_ </span> . This quirk leads to some rare incompatibilities between CageFS and other software (for example OpenCart), because real path of user’s home directory in CageFS and in real file system can differ.
-
-New CageFS mounts user’s home directory in a way that its real path in CageFS is always the same as in real file system. Additionally, CageFS searches for symlinks like
-<span class="notranslate"> _/homeX -> /homeY_ </span> and <span class="notranslate"> _/homeX/user -> /homeY/user_ </span> in real system and creates such symlinks in user’s CageFS when found.
-
-This new mounting mode is enabled by default. You can switch to old mounting mode by executing the following commands:
-<div class="notranslate">
-
-```
-# touch /etc/cagefs/disable.home.dirs.search
-# cagefsctl --force-update
-# cagefsctl --remount-all
-```
-</div>
-
-:::tip Note
-New mounting mode will be disabled automatically when "mounting base home directory" mode is enabled <span class="notranslate"> (`mount_basedir=1` setting in _/etc/cagefs/cagefs.base.home.dirs_ </span> file).
-:::
-
-#### How to hide directory inside mount point <sup><Badge type="warning" text="CageFS 6.4.7-1 +"/></sup>
-
-:::tip Note
-For files outside a mount point, use blacklisting, see: [Excluding files](./#excluding-files)
-:::
-
-To hide directories inside a mount point, create a file in the <span class="notranslate">`/etc/cagefs/empty.dirs`</span> directory (you can use any name) with a list of directories to be hidden (these directories will look like empty for users in CageFS).
-:::tip Note
-Please do not edit the supplied config file (<span class="notranslate">`/etc/cagefs/empty.dirs/emptied_dirs.default`</span>).
-:::
-
-#### Example
-
-Let’s take a <span class="notranslate">`/var/www`</span> directory which contains the following folders: <span class="notranslate">`icons`</span> and <span class="notranslate">`html`</span>.
-To hide the <span class="notranslate">`/var/www`</span> directory content from users inside CageFS, we will do the following:
-
-* Create the <span class="notranslate">`custom.empty`</span> file with a single record: <span class="notranslate">`/var/www`</span>
-* Place the <span class="notranslate">`custom.empty`</span> file to the <span class="notranslate">`/etc/cagefs/empty.dirs`</span> directory
-* Run the <span class="notranslate">`cagefsctl --remount-all`</span> command
-
-Now, all users inside CageFS will see the <span class="notranslate">`/var/www`</span> directory as an empty directory even if there is <span class="notranslate">`/var/www/html`</span> in the <span class="notranslate">`/etc/cagefs/cagefs.mp`</span>.
-
-
-
-#### Base home directory
-
-
-If you have a custom setup where home directories are in a special format, like: <span class="notranslate"> _/home/$USERNAME/data_ </span> , you can specify it using regular expressions. This is needed by CageFS to create safe home space for end user, where no other users are visible.
-
-We will create empty: <span class="notranslate"> _/var/cagefs/[prefix]/$USERNAME/home_ </span> , and then mount <span class="notranslate"> _/home/$USERNAME_ </span> in that directory
-
-To do that, create a file: <span class="notranslate"> _/etc/cagefs/cagefs.base.home.dirs_ </span>
-
-With content like:
-<div class="notranslate">
-
-```
-^/home/
-^/var/www/users/
-```
-</div>
-
-If there is no such file, the home directory without last component will be considered as a base dir, like with
-<span class="notranslate"> _/home/$USERNAME_ </span> we would create <span class="notranslate"> _/var/cagefs/[prefix]/$USERNAME/home_ </span> , and then mount
-<span class="notranslate"> _/home/$USERNAME_ </span> in there
-
-With <span class="notranslate"> _/home/$USERNAME/data_ </span> as a home dir, we would assume that <span class="notranslate"> _/home/$USERNAME_ </span> is the base directory, and we would create <span class="notranslate"> _/var/cagefs/[prefix]/$USERNAME/home/$USERNAME/data_ </span> and then we would mount <span class="notranslate"> _/home/$USERNAME/data_ </span> -- which would cause each user to see empty base directories for other users, exposing user names.
-
-**Sharing home directory structure among users**
-
-When you want to share directory structure among multiple users, you can add following line at the top of the <span class="notranslate"> _/etc/cagefs/cagefs.base.home.dirs_ </span> file. This is useful on the systems that support sites with multiple users, with different home directories inside the main 'site' directory.
-<div class="notranslate">
-
-```
-mount_basedir=1
-```
-</div>
-
-For example:
-
-<span class="notranslate"> user1 </span> has home directory <span class="notranslate"> _/var/www/vhosts/sitename.com/web_users/user1_ </span>
-<span class="notranslate"> user2 </span> has home directory <span class="notranslate"> _/var/www/vhosts/sitename.com/web_users/user2_ </span>
-site admin has home directory <span class="notranslate"> _/var/www/vhosts/sitename.com_ </span>
-
-So, content of <span class="notranslate"> _/etc/cagefs/cagefs.base.home.dirs_ </span> should be the following:
-
-<div class="notranslate">
-
-```
-mount_basedir=1
-^/var/www/vhosts/[^/]+
-```
-</div>
-
-Directory structure in <span class="notranslate"> _/var/www/vhosts/sitename.com_ </span> will be mounted in CageFS for appropriate users.  
-Each user will have access to whole directory structure in <span class="notranslate"> _/var/www/vhosts/sitename.com_ </span> (according to their permissions).
-
-::: tip Note
-You should execute <span class="notranslate"> `cagefsctl --remount-all` </span> in order to apply changes to CageFS (i.e. remount home directories).
-:::
-
-#### PostgreSQL support
-
-
-CloudLinux OS Shared 7:
-
-CageFS works with any PostgreSQL version installed from CloudLinux OS Shared or CentOS repositories. PostgreSQL packages for CloudLinux OS Shared 7 come from the upstream (CentOS) unmodified. PostgreSQL’s socket is located in <span class="notranslate"> _/var/run/postgresql_ </span> directory. This directory is mounted to CageFS by default (in cagefs-5.5-6.34 or later).
-
-When PostgreSQL has been installed after CageFS install, please add line:
-<div class="notranslate">
-
-```
-/var/run/postgresql
-```
-</div>
-
-tо _/etc/cagefs/cagefs.mp_ file and then execute:
-<div class="notranslate">
-
-```
-cagefsctl --remount-all 
-```
-</div>
-
-The steps above are enough to configure CageFS to work with PostgreSQL.
-
-CloudLinux OS Shared 6:
-
-CageFS provides separate _/tmp_ directory for each end user. Yet, PostgreSQL keeps its Unix domain socket inside server's main _/tmp_ directory. In addition to that, the location is hard coded inside PostgreSQL libraries.
-
-To resolve the issue, CloudLinux OS Shared provides a version of PostgreSQL with modified start up script that can store PostgreSQL's socket in <span class="notranslate"> _/var/run/postgres._ </span> The script automatically creates link from _/tmp_ to that socket to prevent PostgreSQL dependent applications from breaking.
-
-In addition to that, CageFS knows how to correctly link this socket inside end user's _/tmp_ directory.
-
-To enable PostgreSQL support in CageFS:
-
-1. Make sure you have updated to latest version of PostgreSQL.
-
-2. Edit file _/etc/sysconfig/postgres_, and uncomment <span class="notranslate"> _SOCK_DIR_ </span> line.
-
-3. Update CageFS configuration by running:
-
-<div class="notranslate">
-
-```
-cagefsctl  --reconfigure-cagefs
-```
-</div>
-
-4. Restart PostgreSQL by running:
-
-<div class="notranslate">
-
-```
-$ service postgresql restart 
-```
-</div>
-
-If you are using cPanel, you would also need to modify file: <span class="notranslate"> _/etc/cron.daily/tmpwatch_ </span>
-
-And update line:
-<div class="notranslate">
-
-```
-flags=-umc 
-```
-</div>
-
-to:
-<div class="notranslate">
-
-```
-flags=-umcl
-```
-</div>
-
-to prevent symlink from being removed.
-
-#### PAM configuration
-
-
-CageFS depends on <span class="notranslate"> **pam_lve** </span> module for PAM enabled services. When installed, the module is automatically installed for following services:
-
-* sshd
-* crond
-* su
-
-The following line is added to corresponding file in `/etc/pam.d/`:
-<div class="notranslate">
-```
-session    required     pam_lve.so      100     1
-```
-</div>
-
-Where 100 stands for minimum <span class="notranslate"> UID </span> to put into <span class="notranslate">CageFS & LVE</span> , and 1 stands for CageFS enabled.
-
-
-#### Filtering options for commands executed by proxyexec
-
-You can disallow a user in CageFS to execute specific commands with some specific *dangerous* options via proxyexec.
-
-To do so, you should create <span class="notranslate">`<command>.json`</span> file in the <span class="notranslate">`/etc/cagefs/filters`</span> directory and specify the names of options you want to disable.
-
-For example, to disable some options of <span class="notranslate">`sendmail`</span> command, <span class="notranslate">`/etc/cagefs/filters/sendmail.json`</span> is created with the following content:
-
-<div class="notranslate">
-
-```
-{
-  "default": {
-    "deny": [
-      "-be",
-      "-bem"
-    ],
-    "restrict_path": [
-      "-C",
-      "-D"
-    ]
-  },
-  "/usr/sbin/sendmail": {
-    "deny": [
-      "-be",
-      "-bem"
-    ],
-    "restrict_path": [
-      "-C",
-      "-D"
-    ]
-  },
-  "/var/qmail/bin/sendmail": {
-    "deny": [
-      "-be",
-      "-bem"
-    ],
-    "restrict_path": [
-      "-C",
-      "-D"
-    ]
-  },
-  "/usr/sbin/sendmail.sendmail": {
-    "deny": [
-      "-be",
-      "-bem"
-    ],
-    "restrict_path": [
-      "-C",
-      "-D"
-    ]
-  },
-  "/usr/local/cpanel/bin/sendmail": {
-    "deny": [
-      "-be",
-      "-bem"
-    ],
-    "restrict_path": [
-      "-C",
-      "-D"
-    ]
-  }
-}
-```
-</div>
-
-You can specify options for different paths separately (for example, <span class="notranslate">`/usr/sbin/sendmail`</span> or <span class="notranslate">`/var/qmail/bin/sendmail`</span>).
-
-If the path to the program being executed does not match any path specified in the config file, then default parameters are used.
-
-* <span class="notranslate">`deny`</span> list should contain options that should be disallowed for use by users (the black list of options, all other options will be allowed).
-* You can specify the white list of options in the <span class="notranslate">`allow`</span> list (all other options will be denied).
-* You cannot specify both white and black list (<span class="notranslate">`allow`</span> and <span class="notranslate">`deny`</span>).
-
-It is possible to verify that a path specified as a parameter for an option does not refer outside of the user’s home directory. This check is performed for options specified in the <span class="notranslate">`restrict_path`</span> list. All issues are reported in <span class="notranslate">`/var/log/secure`</span> log file.
-	
-> NOTE: By default, option filters only compare the starting parts of arguments with entries specified by lists.
-For instance, if option "-f" is forbidden, "-f /etc/list" will be forbidden, but "-vf /etc/list" will not.
-
-Starting from cagefs v. #7.4.12-1, specifying a `"strict_options": true` switch inside a filter file entry enables an extended parsing mechanism where each short option from a cluster is parsed separately.
-
-It is recommended to enable this option, unless it causes issues with the restricted command's functionality.
-	
-<div class="notranslate">
-
-```
-{
-  "default": {
-    "deny": [
-      "-be",
-      "-bem"
-    ],
-    "restrict_path": [
-      "-C",
-      "-D"
-    ],
-    "strict_options": true
-  }
-}
-```
-</div>
-
-#### Executing by proxy
-
-
-Some software has to run outside CageFS to be able to complete its job. It includes such programs as passwd, sendmail, etc. CageFS provides proxyexec technology to accomplish this goal: you can define any program to run outside CageFS by specifying it in any file located in the <span class="notranslate">`/etc/cagefs/`</span> which ends with <span class="notranslate">`.proxy.commands`</span>. In the examples below we use <span class="notranslate">`custom.proxy.commands`</span>, but you can use any other name, e.g. <span class="notranslate">`mysuperfile.proxy.commands`</span>.
-
-::: tip Warning
-Do not edit the existing <span class="notranslate">`/etc/cagefs/proxy.commands`</span> file as it will be overwritten with the next CageFS update.
-:::
-
-The syntax of the <span class="notranslate">`/etc/cagefs/[*.]proxy.commands`</span> file is as follows:
-
-<div class="notranslate">
-
-```
-ALIAS[:wrapper_name]=[username:]path_to_executable
-```
-
-</div>
-
-| Parameter          | Description |
-| ------------------ | ----------- |
-| <span class="notranslate">`ALIAS`</span>              | Any name unique within all <span class="notranslate">`/etc/cagefs/\[*.\]proxy.commands`</span> files. Used as an identifier.|
-| <span class="notranslate">`wrapper_name`</span>       | Optional field. The name of the wrapper file which is used as a replacement for an executable file (set by <span class="notranslate">`path_to_executable`</span>) inside CageFS. <br><br>Possible values:<br>- a name of a wrapper you place into the <span class="notranslate">`/usr/share/cagefs/safeprograms`</span> directory;<br>- <span class="notranslate">`noproceed`</span> - a reserved word which means that the wrapper is not needed, e.g. when it is already installed by other ALIAS. Often used for the commands with several ALIAS as in the example below.<br>- omit this field - default wrapper <span class="notranslate">`cagefs.proxy.program`</span> will be used.<br><br>Used in cases when you'd like to give access only to the part of binary functions but it is not possible to do that using [options filtering](./#filtering-options-for-commands-executed-by-proxyexec).<br>**Note**: wrapper works inside CageFS with user rights and executes “real” scripts using proxy daemon. |
-| <span class="notranslate">`path_to_executable`</span> | A path to an executable file that will run via proxyexec.|
-| <span class="notranslate">`username`</span>           | Optional field. A name of a user on whose behalf <span class="notranslate">`path_to_executable`</span> will run in the real system. If <span class="notranslate">`username`</span> is not specified, then <span class="notranslate">`path_to_executable`</span> will run on behalf of the same user who is inside CageFS. |
-
-
-Once the program is defined, run this command to populate the skeleton:
-
-<div class="notranslate">
-
-```
-$ cagefsctl --force-update
-```
-
-</div>
-
-#### Users with duplicate UIDs
-
-Sometimes hosters may have users with non-unique <span class="notranslate">UIDs</span>. Thus, <span class="notranslate">`proxyexec`</span> may traverse users' directories to find a specific one. That behavior turns into inappropriate if the user's directory is not cached locally (for example LDAP is used).
-
-To turn this feature off, run:
-
-<div class="notranslate">
-
-```
-touch /etc/cagefs/proxy.disable.duid
-```
-</div>
-
-Or to activate it back, run:
-
-<div class="notranslate">
-
-```
-rm /etc/cagefs/proxy.disable.duid
-```
-</div>
-
-
-#### Examples
-
-Let's have a script that must do some stuff outside CageFS and return a result to a user. Let's name it <span class="notranslate">`superbinary`</span> and place it into the <span class="notranslate">`/my/scripts/`</span> directory.
-
-In the examples below, we will use a small script that:
-
-* checks if it works inside or outside of CageFS
-* prints a number of users in the <span class="notranslate">`/etc/passwd`</span> file
-
-We use the <span class="notranslate">`/etc/passwd`</span> file because it is truncated inside the cage by default and we can easily see the difference between CageFS and the “real” system by just counting lines in it.
-
-<div class="notranslate">
-
-```
-$ cat /opt/scripts/superbinary
-#!/usr/bin/env bash
-if [[ -e /var/cagefs ]]; then
-  echo "I am running without CageFS"
-else
-  echo "I am running in CageFS"
-fi;
-echo "I am running as: `whoami`"
-echo "Number or records in /etc/passwd: `cat /etc/passwd | wc -l`"
-```
-</div>
-
-First, let’s check that CageFS works: create a user and disable the cage:
-
-<div class="notranslate">
-
-```
-useradd test
-cagefsctl --disable test
-```
-</div>
-
-Then, run the following command as <span class="notranslate">`root`</span> and you will see the following output:
-
-<div class="notranslate">
-
-```
-[root ~]# su - test -c "/my/scripts/superbinary"
-I am running without CageFS
-I am running as: test
-Number or records in /etc/passwd: 49
-```
-</div>
-
-Now, enable CageFS for the <span class="notrabslate">`test`</span> user and run the command again:
-
-<div class="notranslate">
-
-```
-[root ~]# cagefsctl --enable test
-[root ~]# su - test -c "/my/scripts/superbinary"
--bash: /my/scripts/superbinary: No such file or directory
-```
-</div>
-
-As you can see the access to the file is restricted by CageFS.
-
-#### Example 1. Make users in CageFS be able to execute a script which must work outside CageFS
-
-Add the following line into the <span class="notranslate">`/etc/cagefs/custom.proxy.commands`</span>:
-
-<div class="notranslate">
-
-```
-MYSUPERBINARY=/my/scripts/superbinary
-```
-</div>
-
-Then run the <span class="notranslate">`cagefsctl --force-update`</span>, which will place a special wrapper instead of your script inside CageFS. And run your script again:
-
-<div class="notranslate">
-
-```
-[root ~]# su - test -c "/my/scripts/superbinary"
-I am running without CageFS
-I am running as: test
-Number or records in /etc/passwd: 49
-```
-</div>
-
-To compare, let’s count a number of users in the <span class="notranslate">`/etc/passwd`</span> directly:
-
-<div class="notranslate">
-
-```
-[root ~]# su - test -c "cat /etc/passwd | wc -l"
-25
-```
-</div>
-
-**Result**: the script escapes from CageFS and has access to all files which a user with disabled CageFS has.
-
-#### Example 2. Permissions escalation
-
-Let's imagine that you need to give the users the ability to run a script which gets information about their domains from the <span class="notranslate">`apache.conf`</span>. To do that, you need root permissions. You can achieve that with proxyexec.
-
-First, run the following:
-
-<div class="notranslate">
-
-```
-echo "MYSUPERBINARY=root:/my/scripts/superbinary" > /etc/cagefs/custom.proxy.commands
-```
-</div>
-
-And then, run the example script again:
-
-<div class="notranslate">
-
-```
-[root ~]# su - test -c "/my/scripts/superbinary"
-I am running without cagefs
-I am running as: root
-Number or records in /etc/passwd: 49
-```
-</div>
-
-As you can see, the script now works with root permissions, as set in the <span class="notranslate">`custom.proxy.commands`</span> file. In order to get information about a user who runs the script, use the following environment variables:
-
-<div class="notranslate">
-
-```
-PROXYEXEC_UID
-PROXYEXEC_GID
-```
-</div>
-
-**Example**:
-
-<div class="notranslate">
-
-```
-[root ~]# id test
-uid=1226(test) gid=1227(test) groups=1227(test)
-[root ~]# su - test -c "/my/scripts/superbinary"                                                
-I am running without CageFS                                                                          
-I am running as: root
-Number or records in /etc/passwd: 49
-PROXYEXEC_UID=1226
-PROXYEXEC_GID=1227
-```
-</div>
-
-**Result**: users can run the script that gains the root permissions and work outside CageFS. Of course, you can set any other user instead of root in the <span class="notranslate">`custom.proxy.commands`</span>.
-
-#### Example 3. Custom proxyexec wrapper
-
-Let’s modify the test binary in a next way:
-
-
-<div class="notranslate">
-
-```
-
-[root ~]# cat /my/scripts/superbinary
-#!/usr/bin/env bash
-FILE="$1"
-if [[ -e /var/cagefs ]]; then
-  echo "I am running without CageFS"
-else
-  echo "I am running in CageFS"
-fi;
-echo "I am running as: `whoami`"
-echo "Number or records in ${FILE}: `cat ${FILE} | wc -l`"
-echo "PROXYEXEC_UID=${PROXYEXEC_UID}"
-echo "PROXYEXEC_GID=${PROXYEXEC_GID}"
-```
-</div>
-
-Now users can pass any path to the file as an argument. In order to restrict possible parameters (file paths) that users can pass, you can use the custom proxyexec wrapper.
-
-First, duplicate the default wrapper and give it a name, e.g. <span class="notranslate">`cagefs.proxy.mysuperbinary`</span>.
-
-<div class="notranslate">
-
-```
-[root ~]# cp /usr/share/cagefs/safeprograms/cagefs.proxy.program /usr/share/cagefs/safeprograms/cagefs.proxy.mysuperbinary
-```
-</div>
-
-The default wrapper already contains a check that does not allow to run it by the root user:
-
-<div class="notranslate">
-
-```
-#!/bin/bash
-##CageFS proxyexec wrapper - ver 15
-    
-if [[ $EUID -eq 0 ]]; then
-    echo 'Cannot be run as root'
-    exit 1
-fi
-...
-```
-</div>
-
-Add the new check below:
-
-<div class="notranslate">
-
-```
-if [[ $1 == "/etc/passwd" ]]; then                                                    
-    echo "it is not allowed for user to view this file!"                  
-    exit 1      
-fi
-```
-</div>
-
-Now, set a custom binary name in the <span class="notranslate">`custom.proxy.commands`</span>:
-
-<div class="notranslate">
-
-```
-[root ~]# cat /etc/cagefs/custom.proxy.commands
-MYSUPERBINARY:cagefs.proxy.mysuperbinary=root:/my/scripts/superbinary
-```
-</div>
-
-Run skeleton update and check that everything works as expected:
-
-<div class="notranslate">
-
-```
-[root ~]# cagefsctl --force-update
-[root ~]# su - test -c "/my/scripts/superbinary /etc/passwd"
-it is not allowed for user to view this file!
-[root ~]# su - test -c "/my/scripts/superbinary /etc/group"
-I am running without CageFS
-I am running as: root
-Number or records in /etc/group: 76
-PROXYEXEC_UID=1226
-PROXYEXEC_GID=1227
-```
-</div>
-
-::: tip Notes and warnings
-1. Make sure that a directory with your script is not listed in the <span class="notranslate">`/etc/cagefs/cagefs.mp`</span> (is not mounted inside the cage). Otherwise, the proxyexec will not work because CageFS will not be able to replace your script with a special wrapper inside the cage.
-2. Use this feature with caution because it gives users the ability to execute specified commands outside CageFS. SUID commands are extremely dangerous because they are executed not as a user, but as an owner of the file (typically root). You should give users the ability to execute safe commands only. These commands should not have known vulnerabilities. You should check that users cannot use these commands to get sensitive information on a server. You can disable specific dangerous options of programs executed via proxyexec using [filtering options](./#filtering-options-for-commands-executed-by-proxyexec).
-3. In cPanel, all the scripts located in the <span class="notranslate">`/usr/local/cpanel/cgi-sys/`</span>, that user might need to execute, should be added to the custom <span class="notranslate">`*.proxy.commands`</span> file.
-:::
-
-#### Custom /etc files per customer
-
-
-_[4.0-5 and later]_
-
-To create a custom file in /etc directory for end user, create a directory:  
-<span class="notranslate"> _/etc/cagefs/custom.etc/[username]_ </span>
-
-Put all custom files, and sub-directories into that direcotry.
-
-For example, if you want to create custom <span class="notranslate"> _/etc/hosts_ file for USER1 </span> , create a directory:  
-<span class="notranslate"> _/etc/cagefs/custom.etc/USER1_ </span>
-
-Inside that directory, create a <span class="notranslate"> _hosts_ </span> file, with the content for that user.
-
-After that execute:
-<div class="notranslate">
-
-```
-$ cagefsctl --update-etc USER1
-```
-</div>
-
-If you are making changes for multiple users, you can run:
-
-<div class="notranslate">
-
-```
-$ cagefsctl --update-etc
-```
-</div>
-
-To remove a custom file, remove it from <span class="notranslate"> _/etc/cagefs/custom.etc/[USER]_ </span> directory, and re-run:
-<div class="notranslate">
-
-```
-$ cagefsctl --update-etc
-```
-</div>
-
-
-#### Moving cagefs-skeleton directory
-
-
-Sometimes you might need to move <span class="notranslate"> cagefs-skeleton </span> from <span class="notranslate"> _/usr/share_ </span> to another partition.
-
-There are two ways:
-
-1. If <span class="notranslate">`/usr/share/cagefs-skeleton`</span> is not created yet ( <span class="notranslate"> cagefsctl --init </span> wasn't executed), then execute:
-
-<div class="notranslate">
-
-```
-$ mkdir /home/cagefs-skeleton 
-$ ln -s /home/cagefs-skeleton /usr/share/cagefs-skeleton 
-$ cagefsctl --init
-```
-</div>
-
-2. If <span class="notranslate"> _/usr/share/cagefs-skeleton_ </span> already exists, see [this article](https://cloudlinux.zendesk.com/hc/en-us/articles/115004560129-How-do-I-move-usr-share-cagefs-skeleton-to-other-place-because-of-low-disk-space)
-
-#### Moving /var/cagefs directory
-
-
-To move <span class="notranslate">`/var/cagefs`</span> to another location:
-
-<div class="notranslate">
- 
-```
-$ cagefsctl --disable-cagefs
-$ cagefsctl --unmount-all
-```
-</div>
-
-Verify that <span class="notranslate">`/var/cagefs.bak`</span> directory does not exist (if it exists - change name "cagefs.bak" to something else)
-
-<div class="notranslate">
-
-```
-$ cp -rp /var/cagefs /new/path/cagefs
-$ mv /var/cagefs /var/cagefs.bak
-$ ln -s /new/path/cagefs /var/cagefs
-$ cagefsctl --enable-cagefs
-$ cagefsctl --remount-all
-```
-</div>
-
-Verify that the following command gives empty output:
-<div class="notranslate">
-
-```
-$ cat /proc/mounts | grep cagefs.bak
-```
-</div>
-
-Then you can safely remove /var/cagefs.bak:
-<div class="notranslate">
-
-```
-$ rm -rf /var/cagefs.bak
-```
-</div>
-
-#### TMP directories
-
-
-CageFS makes sure that each user has his own <span class="notranslate"> _/tmp_ </span> directory, and that directory is the part of end-user's quota.
-
-The actual location of the directory is <span class="notranslate"> _$USER_HOME/.cagefs/tmp_ </span>
-
-Once a day, using cron job, <span class="notranslate"> CageFS </span> will clean up user's <span class="notranslate"> _/tmp_ </span> directory from all the files that haven't been accessed during 30 days.
-
-This can be changed by running:
-<div class="notranslate">
-
-```
-$ cagefsctl --set-tmpwatch='/usr/sbin/tmpwatch -umclq 720'
-```
-</div>
-
-Where 720 is the number of hours that the file had to be inaccessible to be removed.
-
-By default this is done at 03:37 AM, but you can also force the clean up outdated files that match 'chosen period' of all user's <span class="notranslate"> _/tmp_ </span> directories without waiting for a job to be launched by <span class="notranslate"> cronjob </span> . Just run:
-
-<div class="notranslate">
-
-```
-$ cagefsctl --tmpwatch
-```
-</div>
-
-The following paths will be cleaned as well:
-
-* <span class="notranslate">`/var/cache/php-eaccelerator`</span> (actual location <span class="notranslate">`$USER_HOME/.cagefs/var/cache/php-eaccelerator`</span>)
-* <span class="notranslate">`/opt/alt/phpNN/var/lib/php/session`</span> (actual location <span class="notranslate">`$USER_HOME/.cagefs/opt/alt/phpNN/var/lib/php/session`</span>), where NN corresponds to Alt-PHP version.
-
-
-You can configure <span class="notranslate">`tmpwatch`</span> to clean custom directories inside <span class="notranslate"> CageFS</span>.
-
-Create <span class="notranslate">`/etc/cagefs/cagefs.ini`</span> configuration file and specify <span class="notranslate">`tmpwatch_dirs`</span> directive as follows:
-
-<span class="notranslate">`tmpwatch_dirs=/dir1,/dir2`</span>
-
-After that directories <span class="notranslate">`/dir1`</span> and <span class="notranslate">`/dir2`</span> inside CageFS  will be cleaned automatically.
-
-Note that actual location of those directories in real file system is <span class="notranslate">`$USER_HOME/.cagefs/dir1`</span> and <span class="notranslate">`$USER_HOME/.cagefs/dir2`</span>.
-
-**Cleanup PHP sessions in cPanel**
-
-For cPanel servers, CageFS version 6.0-42 or higher performs cleaning of PHP sessions based on <span class="notranslate">`session.gc_maxlifetime`</span> and <span class="notranslate">`session.save_path`</span> directives specified in proper <span class="notranslate">`php.ini`</span> files.
-
-<span class="notranslate">`session.gc_maxlifetime`</span> directive default value is 1440 seconds. Those session files will be deleted, that were created or had metadata (ctime) changes more time ago than it is specified in <span class="notranslate">`session.gc_maxlifetime`</span>.
-
-For <span class="notranslate"> Alt-PHP </span> versions <span class="notranslate">`session.save_path`</span> value is normally <span class="notranslate">`/tmp`</span>.
-
-::: tip Note
-For new installations of Alt-PHP packages, <span class="notranslate">`session.save_path`</span> will be changed from `/tmp` to <span class="notranslate">`/opt/alt/phpNN/var/lib/php/session`</span>, where NN corresponds to Alt-PHP version.
-:::
-
-This applies to the following <span class="notranslate"> Alt-PHP </span> versions (or later):
-* alt-php44-4.4.9-71;
-* alt-php51-5.1.6-81;
-* alt-php52-5.2.17-107;
-* alt-php53-5.3.29-59;
-* alt-php54-5.4.45-42;
-* alt-php55-5.5.38-24;
-* alt-php56-5.6.31-7;
-* alt-php70-7.0.23-5;
-* alt-php71-7.1.9-5;
-* alt-php72-7.2.0-0.rc.2.2.
-
-When using EasyApache 3, <span class="notranslate"> _session.save_path_ </span> value is normally <span class="notranslate"> _/var/cpanel/php/sessions/ea3_ </span> or <span class="notranslate"> _/tmp_ </span> . Settings for EasyApache 3 are usualy taken from the file <span class="notranslate"> _/usr/local/lib/php.ini_ . </span>
-
-When using EasyApache 4, <span class="notranslate"> _session.save_path_ </span> value is normally <span class="notranslate"> _/var/cpanel/php/sessions/ea-phpXX_ ,  </span> where <span class="notranslate"> _XX_ </span> corresponds to PHP version.
-
-Cleaning is started by cron <span class="notranslate"> _/etc/cron.d/cpanel_php_sessions_cron_ </span> , which starts the script <span class="notranslate"> _/usr/share/cagefs/clean_user_php_sessions_ </span> twice within one hour.
-
-::: tip Note
-Script <span class="notranslate"> _clean_user_php_sessions_ </span> deletes only files which names match mask <span class="notranslate">`sess_[a-z0-9]*`</span>. If php was configured to use non-standart session file prefix in some custom save_handler, these session files wouldn't be managed by <span class="notranslate"> _clean_user_php_sessions_ </span>.
-:::
-
-The settings for ea-php are located in <span class="notranslate"> _/opt/cpanel/ea-phpXX/root/etc/php.d/local.ini_ </span> or in <span class="notranslate"> _/opt/cpanel/ea-phpXX/root/etc/php.ini_ </span> , where <span class="notranslate"> _XX_ </span> corresponds to the PHP version.
-
-The settings for alt-php are located in <span class="notranslate"> _/opt/alt/phpXX/etc/php.ini_ </span> files, where <span class="notranslate"> _XX_ </span> corresponds to PHP version.
-
-The cleaning script cleans php sessions for all PHP versions ( <span class="notranslate"> _ea-php_ </span> and <span class="notranslate"> _alt-php_ </span> ) regardless of whether a version is used or selected via <span class="notranslate"> MultiPHP Manager </span> or <span class="notranslate"> PHP Selector </span> . When different <span class="notranslate"> _session.gc_maxlifetime_ </span> values are specified for the same <span class="notranslate"> _session.save_path_ </span> (for different php versions), the cleaning script will use the least value for cleaning <span class="notranslate"> _session.save_path_ </span> . So, it is recommended to specify different <span class="notranslate"> _session.save_path_ </span> for each PHP version.
-
-Users can define custom value of <span class="notranslate"> _session.gc_maxlifetime_ via PHP Selector </span> in order to configure PHP's garbage collector, but that will not affect the script for cleaning PHP sessions. The script cleans PHP sessions based on global values of <span class="notranslate"> _session.gc_maxlifetime_ </span> and <span class="notranslate"> _session.save_path_ </span> directives taken from files mentioned above. Settings in custom users’ <span class="notranslate"> php.ini </span> files are ignored.
-
-**Cleanup PHP session files in Plesk**
-
-For Plesk servers, <span class="notranslate"> CageFS </span> version 6.0-52 or higher is provided with a special cron job for removing obsolete PHP session files. Cleanup script runs once an hour (similar to how it is done in Plesk).
-
-Each time the script runs, it performs the cleanup of the paths:
-
-1. set by <span class="notranslate"> `session.save_path` </span> directive in <span class="notranslate"> _/opt/alt/phpXX/etc/php.ini_ </span> files. If <span class="notranslate"> session.save_path </span> is missing, then <span class="notranslate"> /tmp </span> is used. Session files lifetime is set by <span class="notranslate"> session.gc_maxlifetime </span> directive. If it is not found, then 1440 seconds value is used (24 minutes, as in Plesk). Lifetime set in the file is only taken into consideration if it is longer than 1440 seconds, otherwise 1440 seconds is used. All the installed <span class="notranslate"> Alt-PHP </span> versions are processed.
-
-2. <span class="notranslate"> _/var/lib/php/session_ </span> . Files lifetime is only defined by Plesk script <span class="notranslate"> _/usr/lib64/plesk-9.0/maxlifetime_ </span> . If the script is missing or returns errors, then this directory is not processed.
-
-The following features are applied during the cleanup:
-
-* all the users with <span class="notranslate"> UID </span> higher than specified in <span class="notranslate"> _/etc/login.defs_ </span> are processed. Each user is processed independently from one another.
-* only directories inside <span class="notranslate"> CageFS </span> are being cleaned. The paths of the same name in the physical  file system are not processed.
-* in all the detected directories, all the files with the names that correspond to <span class="notranslate"> `sess_ ` search </span> mask are removed, the rest of the files are ignored.
-* the files older than specified lifetime are removed.
-* all non-fatal errors (lack of rights, missing directory) are ignored and do not affect the further work of the script.
-
-**Disable PHP sessions cleanup on cPanel and Plesk**
-
-Here is a possible workaround for PHP session expiration problem (session lives longer than it is possible in a control panel). To use your own custom PHP sessions cleanup scripts - you can turn off built-in sessions cleanup implementation in the following way: 
-add <span class="notranslate"> `clean_user_php_sessions=false` line to _/etc/sysconfig/cloudlinux_ </span> .
-
-
-
-#### Syslog
-
-
-By default, <span class="notranslate"> _/dev/log_ </span> should be available inside end user's <span class="notranslate"> CageFS </span> . This is needed so that user's cronjobs and other things that user <span class="notranslate"> _dev/log_ </span> would get recorded in the system log files.
-
-This is controlled using file <span class="notranslate"> _/etc/rsyslog.d/schroot.conf_ </span> with the following content:
-<div class="notranslate">
-
-```
-$AddUnixListenSocket /usr/share/cagefs-skeleton/dev/log
-```
-</div>
-
-To remove presence of <span class="notranslate"> _dev/log_ </span> inside CageFS, remove that file, and restart rsyslog service.
-
-
-#### Excluding mount points
-
-**How to exclude mounts from namespaces for all LVEs**
-
-
-By default, all mounts from the real file system is inherited by namespaces of all <span class="notranslate"> LVEs </span> . So, destroying all <span class="notranslate"> LVEs </span> may be required in order to unmount some mount in real file system completely. Otherwise, mount point remains busy after unmounting it in the real file system because this mount exists in namespaces of <span class="notranslate"> LVEs </span> .
-
-<span class="notranslate"> `lvectl start` </span> command saves all mounts from real file system as “default namespace” for later use in all <span class="notranslate"> LVEs </span> . <span class="notranslate"> **lve_namespaces** </span> service executes <span class="notranslate"> `lvectl start` </span> command during startup.
-
-In <span class="notranslate"> **lve-utils-2.0-26** </span> (and later) there is an ability to exclude specific mounts from namespaces for all <span class="notranslate"> LVEs </span> .
-In order to do so, please create a file <span class="notranslate"> _/etc/container/exclude_mounts.conf_ </span> with list of mounts to exclude (one mount per line) as regular expressions, and then execute <span class="notranslate"> `lvectl start` </span> :
-<div class="notranslate">
-
-```
-# cat /etc/container/exclude_mounts.conf    
-^/dir1/
-^/dir2$
-# lvectl start
-```
-</div>
-
-After that, all new created <span class="notranslate"> LVEs </span> will be without <span class="notranslate"> _/dir2_ </span> mount and without mounts that start with <span class="notranslate"> _/dir1/_ </span> (like <span class="notranslate"> _/dir1/x_ ,  _/dir1/x/y_ </span> , etc). To apply changes to existing <span class="notranslate"> LVEs </span> you should recreate <span class="notranslate"> LVEs </span> :
-<div class="notranslate">
-
-```
-# lvectl destroy all   
-# lvectl apply all
-```
-</div>
-
-::: tip Note
-You should recreate all LVEs only once after creating <span class="notranslate"> _/etc/container/exclude_mounts.conf_ </span> file. After that the configuration changes will be applied to all new LVEs automatically.
-:::
-
-#### Shared memory (/dev/shm) isolation in CageFS
-
-:::tip Note
-Requires `cagefs-6.2.1-1` or later
-:::
-
-The `/dev/shm` in a real file system directory is “world-writable”. This directory from the real file system is mounted to CageFS by default, so `/dev/shm` directory is common for all users by default. However, it is possible to improve security and isolate `/dev/shm` (shared memory) for each user in CageFS.
-
-To enable `/dev/shm` isolation, do the following steps:
-
-1. Delete `/dev/shm` line from the `/etc/cagefs/cagefs.mp` file
-
-  <div class="notranslate">
-
-  ```
-  sed -i -e '/^\/dev\/shm/d' /etc/cagefs/cagefs.mp
-  ```
-  </div>
-
-2. Create a configuration file with mount options for shared memory
-   
-  <div class="notranslate">
-
-  ```
-  echo 'mode=0777' > /etc/cagefs/dev.shm.options
-  ```
-  </div>
-
-3. Remount CageFS to apply changes
-   
-  <div class="notranslate">
-
-  ```
-  cagefsctl --remount-all
-  ```
-  </div>
-
-You can also specify additional mount options.
-
-For example, you can specify the size of shared memory in megabytes:
-
-<div class="notranslate">
-
-```
-echo 'mode=0777,size=1m' > /etc/cagefs/dev.shm.options
-cagefsctl --remount-all
-```
-</div>
-
-Or you can specify the size of user’s physical memory limit (PMEM) in percentage:
-
-<div class="notranslate">
-
-```
-echo 'mode=0777,size=50%' > /etc/cagefs/dev.shm.options
-cagefsctl --remount-all
-```
-</div>
-
-To disable `/dev/shm` isolation, do the following steps:
-
-1. Delete configuration file
-
-  <div class="notranslate">
-
-  ```
-  rm -f /etc/cagefs/dev.shm.options
-  ```
-  </div>
-
-2. Validate `/etc/cagefs/cagefs.mp` file
-
-  <div class="notranslate">
-
-  ```
-  cagefsctl --check-mp
-  ```
-  </div>
-
-3. Add `/dev/shm` line to `/etc/cagefs/cagefs.mp` file
-
-  <div class="notranslate">
-
-  ```
-  echo '/dev/shm' >> /etc/cagefs/cagefs.mp
-  ```
-  </div>
-
-4. Remount CageFS to apply changes
-
-  <div class="notranslate">
-
-  ```
-  cagefsctl --remount-all
-  ```
-  </div>
-
-:::tip Note
-you should specify `mode=0777`. It is required for the proper operation of shared memory inside CageFS. This is not a security issue because the `/dev/shm` directory is isolated for each user and visible inside a user’s CageFS only.
-:::
-
-:::tip Note
-`/dev/shm` is mounted with `nosuid,nodev,noexec` mount options always (both in “isolated `/dev/shm`” mode and not). You cannot change this behavior.
-:::
-
-:::tip Note
-“isolated `/dev/shm`” mode will become the default in the future CageFS releases.
-:::
-
-:::tip Note
-when the size of the `/dev/shm` is specified in percentage of user’s physical memory limit (PMEM), you should remount CageFS after changing PMEM limit in order to change the size of shared memory allocated for the `/dev/shm` in user’s CageFS. To do so, execute `cagefsctl --remount-all`
-:::
-
-#### Preventing process from entering CageFS on error
-
-Starting from CageFS v.7.2.0-1, you can prevent a process from work if it can't enter to CageFS. The option is disabled by default.
-
-To enable it, run the following commands: 
-
-```
-touch /etc/cagefs/fail.on.error
-cagefsctl --remount-all (cagefsctl --remount <user>)
-```
-
-To disable it, run the following commands: 
-
-```
-rm -f /etc/cagefs/fail.on.error
-cagefsctl --remount-all (cagefsctl --remount <user>)
-```
-
-The message “Act like CageFS is disabled” in the `/var/log/messages` will be displayed regardless the file `/etc/cagefs/fail.on.error` is available or not.
-
-
-### Integration with control panels
-
-* [cPanel](./#cpanel)
-* [Plesk](./#plesk)
-* [ISPManager](./#ispmanager)
-
-CageFS comes with a plugin for various control panels.
-
-The plugin allows to:
-
-* Initialize CageFS;
-
-* Select [mode of operation](./#managing-users);
-
-* See and modify the list of enabled/disabled users;
-
-* Update CageFS skeleton.
-
-#### cPanel
-
-CageFS plugin for cPanel is located in <span class="notranslate"> Plugins </span> section of WHM.
-
-It allows to initialize CageFS, select users CageFS will be enabled for, as well as update CageFS skeleton.
-
-![](./images/img1-zoom73.png)
-
-To enable CageFS for a proper user (users), in <span class="notranslate"> CageFS User Manager </span> choose a user from the list on the right ( <span class="notranslate"> Disabled </span> users) and click <span class="notranslate"> Toggle </span> . The user will move to the list on the left ( <span class="notranslate"> Enabled </span> users).
-
-To disable a user (users), choose a user from the list on the left ( <span class="notranslate"> Enabled </span> users) and click <span class="notranslate"> Disable CageFS </span> . The user will move to the list on the right ( <span class="notranslate"> Disabled </span> users).
-
-To update CageFS skeleton, click <span class="notranslate"> Update CageFS Skeleton </span> .
-
-![](./images/img2-zoom71.png)
-
-#### Plesk
-
-CageFS comes with a plugin for Plesk 10.x. It allows initializing and updating CageFS template, as well as managing users and mode of operation for CageFS.
-
-In modules section choose CageFS:
-
-![](./images/plesk_cagefs_icon.png)
-
-To enable CageFS for a proper user (users), in <span class="notranslate"> CageFS User Manager </span> choose a user from the list on the right ( <span class="notranslate"> Disabled </span> users) and click <span class="notranslate"> Toggle </span> . The user will move to the list on the left ( <span class="notranslate"> Enabled </span> users).
-
-To disable a user (users), choose a user from the list on the left ( <span class="notranslate"> Enabled </span> users) and click <span class="notranslate"> Disable CageFS </span> . The user will move to the list on the right ( <span class="notranslate"> Disabled </span> users).
-
-To update CageFS skeleton, click <span class="notranslate"> Update CageFS Skeleton </span> .
-
-![](./images/plesk_cagefs_manager_disable_all.png)
-
-#### ISPManager
-
-CageFS comes with plugin for <span class="notranslate"> ISP Manager </span> to enable/disable CageFS on per user base. In edit user section chose <span class="notranslate"> Permission </span> tab. Mark <span class="notranslate"> CageFS User Mode </span> checkbox and click <span class="notranslate"> OK </span> to apply.
-
-![](./images/ispmanager_cagefs_user_zoom98.png)
-
-Or you can manage global CageFS settings via CageFS menu
-![](./images/img3.jpg)
-
-
-See also [CageFS CLI tools](/shared/command-line_tools/#cagefs).
-
-## MySQL Governor
-
-### General information and requirements
-
-:::tip Note
-<span class="notranslate">MySQL Governor</span> 0.8-32+
-:::
-
-:::warning Warning
-The "All" mode will be deprecated starting from September 1, 2021. You can read more [here.](https://blog.cloudlinux.com/mysql-governor-moving-from-all-to-abusers)
-:::
-
-<span class="notranslate"> MySQL Governor </span> is software to monitor and restrict MySQL usage in shared hosting environment. The monitoring is done via resource usage statistics per each MySQL thread.
-
-<span class="notranslate"> MySQL Governor </span> has two active modes of operations:
-* **off** - In this mode MySQL Governor will not throttle customer's queries, instead it will let you monitor the MySQL usage.
-* **abusers** - In this mode, once user goes over the limits specified in the MySQL Governor, all customer's queries will execute inside that user's LVE. 
-
-More details of the governor operation modes are described in the [Modes of operation](./#modes-of-operation) section
-
-<span class="notranslate"> MySQL Governor </span> allows to restrict customers who use too much resources. It supports following limits:
-
-| |  | |
-|-|--|-|
-|<span class="notranslate"> CPU </span> | % | <span class="notranslate"> CPU </span> speed relative to one core. 150% would mean one and a half cores|
-|<span class="notranslate"> READ </span> | bytes | bytes read. Cached reads are not counted, only those that were actually read from disk will be counted|
-|<span class="notranslate"> WRITE </span> | bytes | bytes written. Cached writes are not counted, only once data is written to disk, it is counted|
-
-You can set different limits for different periods: current, short, med, long. By default those periods are defined as 1 second, 5 seconds, 1 minute and 5 minutes. They can be re-defined using [configuration file](./#configuration-and-operation). The idea is to use larger acceptable values for shorter periods. Like you could allow a customer to use two cores (200%) for one second, but only 1 core (on average) for 1 minute, and only 70% within 5 minutes. That would make sure that customer can burst for short periods of time.
-
-Customers will also be limited to a finite number of concurrent connections, this number is 30 by default and can be changed. This is done so they wouldn't use up all the MySQL connections to the server. <span class="notranslate"> MySQL Governor </span> can also kill off slow <span class="notranslate"> SELECT </span> queries.
-
-### MySQL Governor limits interaction with LVE limits
-
-#### How is interaction between MySQL Governor and LVE organized?
-
-The main purpose of MySQL Governor is to monitor how many common resources are used by each user for working with MySQL/MariaDB and to manage usage restrictions for such resources by LVE containers.
-
-Before any SQL request, MySQL Governor determines which user sent the request and if this user exceed limits, the MySQL Governor pushes the request to appropriate LVE container.
-
-This is how common server resources can be managed. 
-
-#### Why the СPU/IO charts are different for database and LVE usage?
-
-SQL requests are not limited inside LVE, so there are not any calculations for IO usage there. It can be clearly viewed via the lve-stats charts:
-
-![](./images/Chart1.png)
-
-**Blue chart (database)**:
-
-This is the user’s real IO Database usage which was calculated by MySQL Governor. 
-
-**Green chart (LVE)**:
-
-This is the user’s IO Database usage which was calculated by lve-stats.
-
-Also for different types of database load (for example in case, there is a huge amount of shot requests), CPU usage charts for LVE and database can be different.
-
-Take a look on this chart:
-
-![](./images/Chart2.png)
-
-**Blue (database) CPU usage**:
-
-It is calculated by MYSQL Governor and the value is identical with top/htop values.
-
-**Green (LVE) CPU usage**:
-
-It is calculated by lve-stats. The values are less on the LVE CPU usage chart because user requests are placed in the LVE only for part of the time.
-
-#### For what purpose are the IO limits of MySQL Governor used?
-
-MySQL Governor uses its limits as triggers to place user’s requests to the LVE. If user’s requests exceed MySQL Governor limits they are placed to the LVE, which already limits resource usage. After some timeout (which can be configured in the MySQL Governor config file requests will not be placed to the LVE. The next placing of the SQL requests to the LVE will occur after the next limits are exceeded.
-
-#### How exactly does IO limiting work for MySQL/MariaDB requests?
-
-There is no direct IO limitation for database treads. But in case of exceeding governor IO user limits, their requests will be placed into the LVE and CPU LVE limitation will be applied to the requests. And it’s clear that any IO load causes CPU load. So by CPU limits IO usage will be limited indirectly.
-
-Take a look at the next chart. The I/O load is synchronous with the CPU load.
-
-![](./images/Chart3.png)
-
-### Installation and update
-
-* [Installation](./#installation)
-* [Upgrading database server](./#upgrading-database-server)
-
-#### Installation
-
-:::danger IMPORTANT
-Please note that MariaDB 10.4 release isn’t supported by cPanel, thus you can’t install this version with MySQL Governor + cPanel. More details are available here: [https://features.cpanel.net/topic/maria-10-4-support](https://features.cpanel.net/topic/maria-10-4-support).
-:::
-
-::: danger IMPORTANT
-Please make full database backup (including system tables) before you upgrade MySQL or switch to MariaDB. This action will prevent data loss in case if something goes wrong.
-:::
-	
-:::danger IMPORTANT
-Please note that MySQL 8 and MariaDB 10.6 are not supported on CloudLinux OS 6.
-:::
-
-**_MySQL Governor is compatible only with MySQL 5.x, 8.0; MariaDB & Percona Server 5.6._**
-
-To install <span class="notranslate"> MySQL Governor </span> on your server install <span class="notranslate"> governor-mysql </span> package at first:
-
-<div class="notranslate">
-
-```
-$ yum remove db-governor db-governor-mysql  # you can ignore errors if you don't have those packages installed
-$ yum install governor-mysql
-```
-</div>
-
-Then configure <span class="notranslate"> MySQL Governor </span> properly.
-
-The installation is currently supported only on <span class="notranslate"> cPanel, Plesk, DirectAdmin, ISPmanager, InterWorx </span> , as well as on servers without control panel.
-
-If you are installing <span class="notranslate"> CloudLinux OS Shared </span> on a server running MySQL already, set your current MySQL version before calling installation script:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mysqlXX
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install
-```
-</div>
-
-Please make sure to specify your current MySQL version instead of XX as follows:
-
-* 55 — MySQL v5.5
-* 56 — MySQL v5.6
-* 57 — MySQL v5.7
-* 80 — MySQL v8.0 (requires MySQL Governor 1.2-37+, not supported on CloudLinux OS 6)
-
-If you are installing <span class="notranslate"> CloudLinux OS Shared </span> on a server running <span class="notranslate"> MariaDB </span> already, do instead:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mariadbXX
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install
-```
-</div>
-
-Please make sure to specify your current <span class="notranslate"> MariaDB </span> version instead of <span class="notranslate"> XX </span> as follows:
-
-* 55 — MariaDB v5.5
-* 100 — MariaDB v10.0
-* 101 — MariaDB v10.1
-* 102 — MariaDB v10.2
-* 103 — MariaDB v10.3 [requires <span class="notranslate"> MySQL Governor 1.2-36+; for cPanel - MySQL Governor 1.2-41+] </span>
-* 104 – MariaDB v10.4 [requires <span class="notranslate">MySQL Governor</span> 1.2-53+]
-* 105 - MariaDB v10.5 [requires <span class="notranslate">MySQL Governor</span> 1.2-62+]
-* 106 - MariaDB v10.6 [requires <span class="notranslate">MySQL Governor</span> 1.2-76+]
-
-:::tip Note
-MariaDB version 10.4 is not available for CloudLinux OS Shared 6.
-:::
-
-Installation for <span class="notranslate"> Percona Server 5.6 </span> [requires <span class="notranslate"> MySQL Governor </span> 1.1-22+ or 1.2-21+]:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=percona56
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install
-```
-</div>
-
-
-Please note that <span class="notranslate"> MySQL/MariaDB/Percona </span> will be updated from <span class="notranslate">CloudLinux OS Shared</span> repositories.
-
-If you are installing <span class="notranslate"> MySQL Governor </span> on a server without MySQL at all, you have an opportunity to choose desired MySQL version to be installed with <span class="notranslate"> MySQL Governor </span> installation script. Use <span class="notranslate"> --mysql-version </span> flag before calling the installation script:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=MYSQL_VERSION
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install
-```
-</div>
-
-<span class="notranslate"> MYSQL_VERSION </span> could be chosen from the list of versions currently supported by <span class="notranslate"> MySQL Governor </span> :
-
-| | |
-|-|-|
-|mysql51 |MySQL v5.1 |  
-|mysql55 |MySQL v5.5 | 
-|mysql56 |MySQL v5.6 | 
-|mysql57 |MySQL v5.7 | 
-|mysql80 |MySQL v8.0 (requires MySQL Governor 1.2-37+)| 
-|mariadb55 |MariaDB v5.5 |
-|mariadb100 |MariaDB v10.0 |
-|mariadb101 |MariaDB v10.1 |
-|mariadb102 |MariaDB v 10.2 |
-|mariadb103 |MariaDB v 10.3 [requires <span class="notranslate"> MySQL Governor 1.2-36+; for cPanel - MySQL Governor 1.2-41+] </span> |
-|mariadb104 |MariaDB v 10.4 [requires <span class="notranslate">MySQL Governor</span> 1.2-53+]|
-|mariadb105 |MariaDB v 10.5 [requires <span class="notranslate">MySQL Governor</span> 1.2-62+]|
-|mariadb106 |MariaDB v 10.6 [requires <span class="notranslate">MySQL Governor</span> 1.2-76+]|
-|percona56 | <span class="notranslate"> Percona Server v 5.6 </span> |
-
-Generally, <span class="notranslate"> stable </span> and <span class="notranslate"> beta </span> channels contain different version of MySQL packages - <span class="notranslate"> beta </span> contains newer version than <span class="notranslate"> stable </span> or the same one. If you would like to install  <span class="notranslate"> beta </span>  packages, use  <span class="notranslate"> --install-beta </span>  flag instead of  <span class="notranslate"> --install </span>  when calling installation script:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install-beta
-```
-</div>
-
-
-Starting with <span class="notranslate"> MySQL Governor </span> version 1.2 when installing <span class="notranslate"> MySQL/MariaDB MySQL Governor </span> asks for a confirmation of a database version to be installed. To avoid such behavior for the automatic installations, please use <span class="notranslate"> --yes </span> flag.
-
-For example:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install --yes
-```
-</div>
-
-
-Please note that restore of previous packages in case of failed installation would also be confirmed with <span class="notranslate">`--yes`</span> flag.
-
-::: danger IMPORTANT
-Use <span class="notranslate"> --yes </span> flag on your own risk, because it confirms installation in any case - even in case if there are troubles during installation (for example, network problems causing incomplete download of packages), everything would be confirmed.
-:::
-
-:::tip Note
-See also [MySQL Governor CLI](/shared/command-line_tools/#mysql-governor)
-:::
-
-#### Upgrading database server
-
-::: danger Important
-Upgrade from MySQL 8 to MariaDB 10.x isn't supported due to compatibility issues between these database server versions and will break your database server completely. You can find more information about the compatibility issues [here](https://mariadb.com/kb/en/upgrading-from-mysql-to-mariadb/)
-:::
-
-:::warning Warning
-Please note that DB Governor is capable of upgrading your database to a newer version, including sequential upgrades, but we make no guarantee that such upgrades do not affect the operation of the database, its components, control panel operation and other functions of database. Always create a backup copy of your data.
-:::
-
-In order to change MySQL version you should run the following commands:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=MYSQL_VERSION
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install
-```
-</div>
-
-where `MYSQL_VERSION` is the target database server version that should be replaced with the value from the table above.
-
-::: danger IMPORTANT
-Make sure you have full database backup (including system tables) before you switch. This action will prevent data loss in case if something goes wrong.
-:::
-
-### Uninstalling
-
-To remove <span class="notranslate">MySQL Governor</span>:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --delete
-```
-</div>
-
-The script will install original MySQL server, and remove <span class="notranslate">MySQL Governor</span>.
-
-### Configuration and operation
-
-* [Configuration](./#configuration-3)
-* [Modes of operation](./#modes-of-operation)
-* [MySQL Governor limits](./#mysql-governor-limits)
-* [Starting and stopping](./#starting-and-stopping)
-* [Mapping a user to a database](./#mapping-a-user-to-a-database)
-* [Log files](./#log-files)
-* [Change MySQL version](./#change-mysql-version)
-* [PrivateDevices mode support](./#privatedevices-mode-support)
-
-#### Configuration
-
-
-:::warning Warning
-The "All" mode will be deprecated starting from September 1, 2021. You can read more [here.](https://blog.cloudlinux.com/mysql-governor-moving-from-all-to-abusers)
-:::
-
-<span class="notranslate"> MySQL Governor </span> configuration is located in <span class="notranslate"> /etc/container/mysql-governor.xml </span> 
-
-It is best to modify it using <span class="notranslate"> [dbctl](/shared/command-line_tools/#dbctl) </span> tool.
-
-Once configuration file is updated, please, restart the <span class="notranslate"> MySQL Governor </span> using:
-
-<div class="notranslate">
-
-```
-$ service db_governor restart
-```
-</div>
-Example configuration:
-<div class="notranslate">
-
-```
-<governor> 
-
-<!--  'off' - do not throttle anything, monitoring only -->
-<!--  'abusers' - when user reaches the limit, put user's queries into LVE for that user -->
-<!--  'all' - user's queries always run inside LVE for that user -->
-<!--  'single' - single LVE=3 for all abusers. -->
-<!-- 'on' - deprecated (old restriction type) -->
-<!-- To change resource usage of restricted user in LVE mode use command /usr/sbin/lvectl set 3 --cpu=<new value> --ncpu=<new value> --io=<new value> --save-all-parameters -->
-<lve use="on|single|off|abusers|all"/> 
-
-<!-- connection information -->
-<!-- If host, login and password are not present, this information is taken from /etc/my.cnf and ~root/.my.cnf -->
-<!-- Use symbol specified in prefix to figure out hosting accounts (mysql username will be split using prefix_separator, and first part will be used as account name). If prefix is not set, or empty -- don’t use prefixes/accounts --> 
-
-<!-- db governor will try to split MySQL user names using prefix separator (if present)and statistics will be aggregated for the prefix (account name) -->
-<connector host="..." login="..." password=".." prefix_separator="_"/> 
-
-<!-- Intervals define historical intervals for burstable limits. In seconds -->
-<intervals short="5" mid="60" long="300"/> 
-
-<!-- log all errors/debug info into this log -->
-<log file=”/var/log/dbgovernor-error.log” mode=”DEBUG|ERROR”/> 
-
-<!-- s -- seconds, m -- minutes, h -- hours, d -- days -->
-<!-- on restart, restrict will disappear -->
-<!-- log file will contain information about all restrictions that were take -->
-<!-- timeout - penalty period when user not restricted, but if he hit his limit during this period he will be restricted with higher level of restrict (for more long time) -->
-<!- level1, level2, level3, level4 - period of restriction user for different level of restriction. During this period all user's requests will be placed into LVE container -->
-
-<!-- if user hits any of the limits during period of time specified in timeout, higher level of restrict will be used to restrict user. If user was already on level4, level4 will be applied again -->
-<!-- attribute format set an restrict log format:
-SHORT -  restrict info only
-MEDIUM - restrict info, _all_tracked_values_
-LONG - restrict info, _all_tracked_values_, load average and vmstat info
-VERYLONG - restrict info, _all_tracked_values_, load average and vmstat info, slow query info -->
-<!-- script -- path to script to be triggered when account is restricted -->
-<!-- user_max_connections - The number of simultaneous connections of blocked user (in LVE mode) --> 
-
-<!-- restriction levels/format are deprecated -->
-<restrict level1="60s" level2="15m" level3="1h" level4="1d" timeout="1h"
-log="/var/log/dbgovernor-restrict.log" format="SHORT|MEDIUM|LONG|VERYLONG"
-script="/path/to/script"
-user_max_connections="30"/> 
-
-<!-- period (deprecated) - period based restriction that has multiple levels (see above) -->
-<!-- limit (by default) - when user hits limits, the account will be marked as restricted and if user does not hit  limit again during "unlimit=1m" account will be unrestricted. This mode doesn't have any additional levels/penalties. -->
-<restrict_mode use="period|limit" unlimit="1m"/>
-
-<!-- killing slow SELECT queries (no other queries will be killed) -->
-<!-- if "log" attribute was set all killed queries will be saved in log file -->
-<!-- slow parameter in the <limit name="slow" current="30"/> will no be applied without enabling slow_queries --> 
-<slow_queries run="on|off" log="/var/log/dbgovernor-kill.log"/> 
-<!-- Enable or disable saving of statistics for lve-stats - On - enabled, Off-disabled -->
-<statistic mode="on|off"></statistic>
-<!-- Enable logging user queries on restrict, can be On or Off -->
-<!-- Files are saved in /var/lve/dbgovernor-store and being kept here during 10 days -->
-<logqueries use="on|off"></logqueries>
-<default>
-<!-- -1 not use limit(by default, current - required) -->
-<limit name="cpu" current="150" short="100" mid="90" long="65"/>
-<limit name="read" current="100000000" short="90000000" mid="80000000" long="70000000"/>
-<limit name="write" current="100000000" short="90000000" mid="80000000" long="70000000"/>
-<!-- Time to kill slow SELECT queries for account, can be different for accounts in seconds(but unit can be specified) -->
-<!-- enabled only when slow_queries run="on" -->
-<!-- s -- seconds, m -- minutes, h -- hours, d -- days -->
-<!-- Requests are checked at 15 second intervals, so a request will be canceled after a timeout + 15 seconds maximum -->
-<limit name="slow" current="30"/>
-</default>
-<!-- name will matched account name, as extracted via prefix extraction --> 
-
-<!-- mysql_name will match exact MySQL user name. If both name and mysql_name are present, system will produce error -->
-<!-- mode restrict -- default mode, enforcing restrictions -->
-<!-- mode norestrict -- track usage, but don’t restrict user --> 
-<!-- mode ignore -- don’t track and don’t restrict user -->
-<user name=”xxx” mysql_name=”xxx” mode=”restrict|norestrict|ignore”>
-<limit...>
-</user> 
-
-<!-- debug mode for particular user. The information logged to restrict log. -->
-<debug_user name="xxx"/> 
-
-</governor>
-```
-</div>
-
-These values can also be set using [cloudlinux-config](/shared/command-line_tools/#cloudlinux-config) CLI utility
-
-
-#### Modes of operation
-
-
-:::warning Warning
-The "All" mode will be deprecated starting from September 1, 2021. You can read more [here.](https://blog.cloudlinux.com/mysql-governor-moving-from-all-to-abusers)
-:::
-
-:::tip Note
-<span class="notranslate">MySQL Governor</span> 1.0+
-:::
-
-**Active modes**
-
-* **abusers - Use LVE for a user to restrict queries (default mode)**: In that mode, once user goes over the limits specified in the MySQL Governor , all customer's queries will execute inside that user's LVE. We believe this mode will help with the condition when the site is still fast, but MySQL is slow (restricted) for that user. If someone abuses MySQL, it will cause queries to share LVE with PHP processes, and PHP processes will also be throttled, causing fewer new queries being sent to MySQL. _Requires [`dbuser-map` file](./#mapping-a-user-to-a-database)_.
-* **off - Monitor Only**: In that mode MySQL Governor will not throttle customer's queries, instead it will let you monitor the MySQL usage to see the abusers at any given moment in time (and historically). This mode is good when you are just starting and want to see what is going on.
-
----
-
-**Deprecated modes**
-
-* **all - Always run queries inside user's LVE (will be deprecated on September 1, 2021)**: This way there is no need for separate limits for MySQL. Depending on overhead we see in the future, we might decide to use it as a primary way of operating MySQL Governor . The benefit of this approach is that limits are applied to both PHP & MySQL at the same time, all the time, preventing any spikes whatsoever. _Requires [`dbuser-map` file](./#mapping-a-user-to-a-database)_.
-* **single - Single restricted's LVE for all restricted customers (deprecated)**: In that mode once customer reaches the limits specified in the MySQL Governor , all customer's queries will be running inside LVE with id 3. This means that when you have 5 customers restricted at the same time, all queries for all those 5 customers will be sharing the same LVE. The larger the number of restricted customers - the less resources per restricted customer will be available.
-* **on** - Synonym for **single** mode
-
-:::warning Note
-After the `all` mode will be deprecated on September 1, 2021:
-* the users, having it, will continue to work with this mode;
-* all new installation will not have the `all` mode;
-* moving to the `all` mode will be forbidden.
-:::
-
-If the `dbuser-map` file is absent on the server, the `abusers` mode emulates the `single`.
-
-With the `single` and `abusers` mode, once user is restricted, the queries for that user will be limited as long as user is using more than limits specified. After a minute that user is using less, we will unrestricted that user.
-
-You can specify modes of operation using [dbctl](/shared/command-line_tools/#dbctl) or by changing [configuration file](./#configuration-3).
-
-#### MySQL Governor limits
-
-**MySQL Governor limit setting recommendations**
-
-:::tip Note
-Please note that these recommendations on setting limits for MySQL Governor are general. The exact values of the limits for the effective work of MySQL and the site as a whole depend on many factors.
-:::
-
-Here they are:
-
-* the load of the virtual server with incoming requests
-* the database size
-* SQL queries efficiency
-* absolute values of the LVE limits
-
-
-MySQL Governor allows setting the burstable limits for accounts. To provide that possibility, four levels of limits are defined: `current`, `short`, `middle`, and `long`. Correctly set limits can give users more CPU without having a bottleneck on MySQL. 
-
-**General principles of choosing the limits**:
-
-* `current` and `short` can be more than the LVE limit and should not be less
-* setting the `current` and `short` limits more than the LVE limit prevents bottlenecks in SQL request processing
-* `middle` limit can be more or less that the LVE limit
-* `long` on the contrary, should not be more than the LVE limit
-* setting the `middle` and `long` limits less than the LVE limit prevents abuse of other processes in the account (Apache, PHP) by MySQL
-
-**Example of choosing MySQL Governor limits**
-
-* With the default LVE SPEED limit is `100`, the possible values of the MySQL Governor CPU limits can be 250/150/110/90. I.e., we admit the short-term exceeding of the limits for processing SQL requests.
-* If you face spike CPU consumption with these limits, it is recommended to reduce the excess of the `current` and `short` limits over the LVE limit. For example, to the values 150/110/100/90.
-* If the average level of CPU consumption is too high, then it is recommended to reduce the `middle` and `long` limits, too. For example, to the values 150/100/80/50.
-* Then MySQL processes will fall into LVE and be limited by LVE limits more often.
-* The same clues are applicable to the IO limits – the `current` and `short` IO limits for MySQL Governor can exceed IO LVE limits, but the `middle` and `long` cannot.
-
-
-#### Starting and stopping
-
-To start:
-<div class="notranslate">
-
-```
-$ service db_governor start
-```
-</div>
-
-To stop:
-<div class="notranslate">
-
-```
-$ service db_governor stop
-```
-</div>
-
-#### Mapping a user to a database 
-
-
-**[** <span class="notranslate"> **MySQL Governor** </span> **1.x]**
-
-Traditionally <span class="notranslate"> MySQL Governor </span> used prefixes to map user to database. With the latest version, we automatically generate <span class="notranslate"> user -> database user </span> mapping for <span class="notranslate"> cPanel </span>, <span class="notranslate"> Plesk </span> and <span class="notranslate"> DirectAdmin </span> control panels.
-	
-The mapping file is recreated daily by cron.
-
-Mapping recreation is also triggered by the following events on cPanel servers:
-
-* creation of user
-* modification of user
-* removal of user
-	
-You can also rebuild the mapping file manually on cPanel, Plesk and DirectAdmin control panels by running the following command:
-	
-```
-/usr/share/lve/dbgovernor/mysqlgovernor.py --dbupdate
-```
-
-The mapping file is located in: <span class="notranslate"> `/etc/container/dbuser-map` </span>
-
-The format of the file:
-<div class="notranslate">
-
-```
-[dbuser_name1] [account_name1] [UID1]
-...
-[dbuser_nameN] [account_nameN] [UIDN]
-```
-</div>
-For example:
-
-<div class="notranslate">
-
-```
-pupkinas_u2 pupkinas 502
-pupkinas_u1 pupkinas 502
-pupkinas_u3 pupkinas 502
-pupkin2a_uuu1 pupkin2a 505
-pupkin10_p10 pupkin10 513
-pupkin5a_u1 pupkin5a 508
-pupkin3a_qq1 pupkin3a 506
-pupkin3a_test22 pupkin3a 506
-pupkin3a_12 pupkin3a 506
-```
-</div>
-
-This would specify that db users: <span class="notranslate"> pupkinas_u2, pupkinas_u1, pupkinas_u3 </span> belong to user <span class="notranslate"> pupkinas </span> with uid (lve id) 502
-db user <span class="notranslate"> pupkin2a_uuu1 </span> belongs to user <span class="notranslate"> pupkin2a </span> with uid 505, etc...
-	
-`db_governor` service checks this file for modifications every 5 minutes.
-
-If you need to force reload the mapping file, run:
-<div class="notranslate">
-
-```
-service db_governor restart
-```
-</div>
-
-#### Log files
-
-
-<span class="notranslate"> **Error_log** </span>
-
-<span class="notranslate"> MySQL Governor </span> error log is used to track any problems that <span class="notranslate"> MySQL Governor </span> might have
-
-<span class="notranslate"> **Restrict_log** </span>
-
-Restrict log is located in <span class="notranslate"> /var/log/dbgovernor-restrict.log </span>
-
-Restrictions:
-<div class="notranslate">
-
-```
-_timestamp_ _username_ LIMIT_ENFORCED _limit_setting_ __current_value_                         _restrict_level__ SERVER_LOAD TRACKED_VALUES_DUMP
- ... 
-```
-</div>
-
-* <span class="notranslate"> TRACKED_VALUES_DUMP=busy_time:xx,cpu_time:xx,... </span>
-* <span class="notranslate"> SERVER_LOAD </span> = load averages followed by output of <span class="notranslate"> vmstat </span>
-* <span class="notranslate"> TRACKED_VALUES_DUMP </span> is available with <span class="notranslate"> MEDIUM & LONG </span> format
-* <span class="notranslate"> SERVER_LOAD </span> is available with <span class="notranslate"> LONG </span> format
-
-<span class="notranslate"> **Kill_log** </span>
-
-<span class="notranslate"> MySQL Governor </span> kill log is optional log located in the <span class="notranslate">/var/log/dbgovernor-kill.log</span>. Kill log is used to track all killed queries
-
-#### Change MySQL version
-
-
-If you would like to change to a different MySQL version, or switch to <span class="notranslate"> MariaDB </span> you have to start by backing up existing databases.
-
-::: tip Note
-For experienced users only. Changing MySQL version is a quite complicated procedure, it causes system table structural changes which can lead to unexpected results. Think twice before proceeding.
-:::
-
-::: danger IMPORTANT
-Please make full database backup (including system tables) before you will do upgrade of MySQL or switch to MariaDB. This action will prevent data losing in case if something goes wrong.
-:::
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=MYSQL_VERSION
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install
-```
-</div>
-
-* If you are using <span class="notranslate"> cPanel </span> or <span class="notranslate"> DirectAdmin </span> - recompile <span class="notranslate"> Apache </span> .
-
-To install beta version of MySQL:
-<div class="notranslate">
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --install-beta
-```
-</div>
-
-<span class="notranslate"> MYSQL_VERSION </span> can be one of the following:
-
-| | |
-|-|-|
-|<span class="notranslate"> auto </span> | default version of MySQL for given OS release (or cPanel settings)|
-|mysql51 | MySQL v5.1|
-|mysql55 | MySQL v5.5|
-|mysql56 | MySQL v5.6|
-|mysql57 | MySQL v5.7|
-|mysql80 | MySQL v8.0 (requires MySQL Governor 1.2-37+)|
-|mariadb55 | MariaDB v5.5|
-|mariadb100 | MariaDB v10.0|
-|mariadb101 | MariaDB v10.1|
-|mariadb102 | MariaDB v 10.2|
-|mariadb103 | MariaDB v 10.3 [requires <span class="notranslate"> MySQL Governor 1.2-36+; for cPanel - MySQL Governor 1.2-41+ </span> ]|
-|mariadb104 |MariaDB v 10.4 [requires <span class="notranslate">MySQL Governor</span> 1.2-53+]||
-|percona56 | Percona v 5.6|
-
-* We don't recommend to downgrade from MySQL v5.6, MariaDB 10.x
-
-
-:::tip Note
-cPanel does not officially support MariaDB 10.4, that is why we don’t recommend to use it on cPanel servers. Use on your own risk for Plesk servers, because downgrade can corrupt your databases.
-:::
-
-:::tip Note
-MariaDB version 10.4 is not available for CloudLinux OS Shared 6 yet.
-:::
-
-:::tip Note
-See also MySQL Governor [CLI](/shared/command-line_tools/#mysql-governor)
-:::
-
-#### PrivateDevices mode support
-
-MySQL Governor v. 1.2-66 and later on Cloudlinux OS Shared 7 and 8 supports the PrivateDevices mode for the mysqld service.
-
-To switch on the PrivateDevices mode, follow these steps.
-
-**On Cloudlinux OS Shared 7**
-
-* Make sure that the systemd version is at least **219-78.2.cloudlinux.1**
-* Add the following instruction into the _Service_ section of the _mysqld_ service file:
-  ```
-  PrivateDevices=true
-  ```
-* Invoke `systemctl daemon-reload`
-* Restart _mysqld_ service
-
-
-**On Cloudlinux OS Shared 8**
-
-* Add the following instructions into the _Service_ section of the _mysqld_ service file:
-  ```
-  PrivateDevices=true
-  DeviceAllow=/dev/lve
-  BindPaths=/dev/lve 
-  ```
-* Invoke `systemctl daemon-reload`
-* Restart _mysqld_ service
-
-### Backing up MySQL
-
-On <span class="notranslate"> cPanel </span> server disable MySQL service monitoring before doing the job:
-<div class="notranslate">
-
-```
-$ whmapi1 configureservice service=mysql enabled=1 monitored=0
-```
-</div>
-
-Execute as <span class="notranslate"> root </span> :
-<div class="notranslate">
-
-```
-$ mkdir -p ~/mysqlbkp
-$ service mysql restart --skip-networking --skip-grant-tables
-$ mysql_upgrade
-$ mysqldump --all-databases --routines --triggers > ~/mysqlbkp/dbcopy.sql
-$ service mysql stop
-$ cp -r /var/lib/mysql/mysql ~/mysqlbkp/
-$ service mysql start
-```
-</div>
-
-On <span class="notranslate"> cPanel </span> server enable monitoring back:
-<div class="notranslate">
-
-```
-$ whmapi1 configureservice service=mysql enabled=1 monitored=1
-```
-</div>
-
-::: tip Note
-This operation may take some time.
-:::
-
-See also [MySQL Governor CLI tools](/shared/command-line_tools/#mysql-governor).
-
-### MySQL Governor improvements  for  CPU calculation
-
-In MySQL Governor version 1.2-81, we provide improvements in the algorithm of calculation user CPU usage. New behavior helps to increase precision of resource distribution between server users. By default the new type of CPU usage calculation is tuned on.
-
-Server administrator can turn on/off the new type of CPU usage calculation by using the following command:
-
-```
-dbctl --lve-improved-accuracy off
-```
-
-#### What is the impact of improvements?
-
-The calculation of CPU usage has become more accurate, so the `dbtop` utility provides more correct information to the MySQL Governor and it places user’s requests to the LVE in a proper moment. And as a result, such improvements reduce the possibility of absorbing whole server resources by one user.
-
-One mpre possible outcome of calculation improvements is that some server users will become in need of MySQL Governor limits reconfiguration.
-
-#### How to view the impact of improvements?
-
-Let’s check the CPU usage charts from CloudLinux statistics (lve-stats).
-
-**The new type of  CPU usage calculation is turned off**.
-
-In this case, CPU usage by database could be less than LVE average CPU usage (blue chart is lower than green chart):
-
-![](./images/NewTurnedOff.png)
-
-**The new type of  CPU usage calculation is turned on**.
-
-In this case, CPU usage by database become more similar to LVE average CPU usage (blue chart and green chart on the sceen):
-
-![](./images/NewTurnedOn.png)
-
-### FAQ
-
-#### How is interaction between MySQL Governor and LVE organized?
-
-The main purpose of MySQL Governor is to monitor how many common resources are used by each user for working with MySQL/MariaDB and to manage usage restrictions for such resources by LVE containers.
-
-Before any SQL request, MySQL Governor determines which user sent the request and if this user exceed limits, the MySQL Governor pushes the request to appropriate LVE container.
-
-This is how common server resources can be managed. 
-
-#### Why the СPU/IO charts are different for database and LVE usage?
-
-SQL requests are not limited inside LVE, so there are not any calculations for IO usage there. It can be clearly viewed via the lve-stats charts:
-
-![](./images/Chart1.png)
-
-**Blue chart (database)**:
-
-This is the user’s real IO Database usage which was calculated by MySQL Governor. 
-
-**Green chart (LVE)**:
-
-This is the user’s IO Database usage which was calculated by lve-stats.
-
-Also for different types of database load (for example in case, there is a huge amount of shot requests), CPU usage charts for LVE and database can be different.
-
-Take a look on this chart:
-
-![](./images/Chart2.png)
-
-**Blue (database) CPU usage**:
-
-It is calculated by MYSQL Governor and the value is identical with top/htop values.
-
-**Green (LVE) CPU usage**:
-
-It is calculated by lve-stats. The values are less on the LVE CPU usage chart because user requests are placed in the LVE only for part of the time.
-
-#### For what purpose are the IO limits of MySQL Governor used?
-
-MySQL Governor uses its limits as triggers to place user’s requests to the LVE. If user’s requests exceed MySQL Governor limits they are placed to the LVE, which already limits resource usage. After some timeout (which can be configured in the MySQL Governor config file requests will not be placed to the LVE. The next placing of the SQL requests to the LVE will occur after the next limits are exceeded.
-
-#### How exactly does IO limiting work for MySQL/MariaDB requests?
-
-There is no direct IO limitation for database treads. But in case of exceeding governor IO user limits, their requests will be placed into the LVE and CPU LVE limitation will be applied to the requests. And it’s clear that any IO load causes CPU load. So by CPU limits IO usage will be limited indirectly.
-
-Take a look at the next chart. The I/O load is synchronous with the CPU load.
-
-![](./images/Chart3.png)
-
-
-
-### Troubleshooting
-
-**MariaDB 5.5 and MariaDB 10.0: How to set LimitNOFILE correctly for systemd.**
-
-<span class="notranslate"> MariaDB 5.5 </span> and <span class="notranslate"> MariaDB 10.0 </span> have only file for managing the service, but the file has <span class="notranslate"> LSB </span> functions, so it is supported by <span class="notranslate"> `systemd` </span> .
-
-For adding extra limits, do the following:
-
-1. Run:
-
-<div class="notranslate">
-
-```
-mkdir /etc/systemd/system/mariadb.service.d/
-```
-</div>
-
-2. Run:
-
-<div class="notranslate">
-
-```
-touch /etc/systemd/system/mariadb.service.d/limits.conf
-```
-</div>
-
-3. Add the following content to the the file <span class="notranslate"> `/etc/systemd/system/mariadb.service.d/limits.conf` </span> :
-
-<div class="notranslate">
-
-```
-[Service] 
-LimitNOFILE=99999
-```
-</div>
-
-**MySQL Governor lost connection to MySQL - “Can't connect to mysql” messages in /var/log/dbgovernor-error.log (Plesk and DirectAdmin)**
-
-This may be caused by changing root/administrator credentials without updating MySQL <span class="notranslate"> Governor </span> configuration file.
-
-When you change root or administrator credentials in <span class="notranslate"> Plesk or DirectAdmin, </span> you also need to update MySQL <span class="notranslate"> Governor </span> configuration file. This could be done with the following command (available since <span class="notranslate"> governor-mysql 1.2-38): </span>
-
-<div class="notranslate">
-
-```
-/usr/share/lve/dbgovernor/mysqlgovernor.py --update-config-auth
-```
-</div>
-
-The command updates credentials in MySQL <span class="notranslate">Governor</span> configuration file and restarts <span class="notranslate">`db_governor`</span> service afterwards.
-
-After applying the command MySQL <span class="notranslate">Governor</span> successfully connects to MySQL.
-
-### Known limitations
-
-#### I/O LVE limits don't work for user’s SQL queries
-
-In the MySQL Governor default mode, once users go over the limits, all their SQL queries will execute inside that user's LVE.
-
-This technique was provided with the early 1.1.5 version of MySQL Governor.
-
-It turned out that memory limitation for MySQLrequests causes the OOM (Out Of Memory) issues and as a result database corruptions. So, it was decided not to apply LVE memory limits for SQL queries supplied by MySQL Governor. But the internal implementation of LVE is such that I/O and memory limits work together. That’s why the I/O LVE limits do not apply for user’s SQL queries now.
-
-Nevertheless, SQL queries inside LVE are restricted by CPU limit which indirectly limits I/O usage, too.
-
-
-## PHP Selector
-
-### General information and requirements
-
-The main requirements:
-
-* CageFS is installed
-* Alt-PHP packages are installed
-* Mod_suexec is installed. You can find installation instruction [here](./#apache-suexec-module)
-* CageFS is initialized without errors
-* CageFS is enabled for a domain user-owner
-* An appropriate PHP handler is selected for PHP version which is system version. <span class="notranslate"> PHP Selector </span> is **compatible** with the following technologies: <span class="notranslate">_suPHP, mod_fcgid, CGI (suexec), LiteSpeed_</span>. See also [Compatibility Matrix](/shared/limits/#compatibility-matrix).
-* PHP version in the CloudLinux OS Shared PHP selector does not equal to the Native PHP version
-
-::: tip Note
-PHP Selector is not supported for H-Sphere.
-:::
-
-::: tip Note
-PHP Selector requires native PHP to be installed, otherwise you will get an error message with a proposal to install PHP package.
-Here are some instructions for different control panels:
-1. [for cPanel](https://documentation.cpanel.net/display/EA4/EasyApache+4+and+the+ea-php-cli+Package)
-2. [for Plesk](https://support.plesk.com/hc/en-us/articles/115004177974-How-to-install-PHP-by-OS-vendor-in-Plesk-for-Linux)
-3. [for DirectAdmin](https://help.directadmin.com/item.php?id=345)
-
-After installing native PHP, please run the `cloudlinux-selector setup --interpreter=php --json` command in order to reconfigure CageFS and LVE Manager.
-:::
-
-### Installation and update
-
-* [Update](./#update)
-
-The installation of <span class="notranslate"> PHP Selector </span> presumes that you already have  [CageFS](./#cagefs) & <span class="notranslate">[LVE Manager](/lve_manager/) installed.</span>
-
-Use [compatibility matrix](/shared/limits/#compatibility-matrix) to check if your Web Server/PHP mode is supporting <span class="notranslate"> PHP Selector. </span> If not, you need a change to one of the supported models.
-
-Installation of different versions of PHP & modules:
-<div class="notranslate">
-
-```
-$ yum groupinstall alt-php
-```
-</div>
-
-Update CageFS & <span class="notranslate"> LVE Manager with support for PHP Alternatives: </span> 
-<div class="notranslate">
-
-```
-$ yum update cagefs lvemanager
-```
-</div>
-
-<span class="notranslate">**cPanel/WHM**: Make sure 'Select PHP version' </span> is enabled in <span class="notranslate"> Feature Manager </span>.
-
-:::warning IMPORTANT
-Please, do not use settings like <span class="notranslate">`SuPHP_ConfigPath`, `PHPRC`, `PHP_INI_SCAN_DIR`</span>. Do not redefine path to <span class="notranslate">`php.ini`</span> and ini-files for PHP modules. Doing that can break <span class="notranslate">PHP Selector</span> functionality.
-:::
-
-For example, alternative php5.2 versions should load <span class="notranslate">`/opt/alt/php52/etc/php.ini`</span> file and scan <span class="notranslate">`/opt/alt/php52/etc/php.d`</span> directory for modules:
-<div class="notranslate">
-
-```
-Configuration File (php.ini) Path         /opt/alt/php52/etc
-Loaded Configuration File                 /opt/alt/php52/etc/php.ini
-Scan this dir for additional .ini files   /opt/alt/php52/etc/php.d
-additional .ini files parsed              /opt/alt/php52/etc/php.d/alt_php.ini
-```
-</div>
-
-Those are default locations for <span class="notranslate">alt-php</span>.
-
-If you need custom PHP settings per user, please change them via <span class="notranslate">"Edit PHP settings"</span> feature of <span class="notranslate"> PHP Selector </span> .
-
-If a list of default modules is absent on the server in the <span class="notranslate">`/etc/cl.selector/defaults.cfg`</span> file for some alt-PHP version and there is `nd_mysqli` extension in this version, then on installation/update of the LVE Manager the `mysqli` extension will be disabled and `nd_mysqli` extension will be enabled automatically.
-
-* If _nd_mysqli_ module is absent or a list of enabled modules is available, then they won't be changed automatically.
-* If alt-PHP is not installed on LVE Manager installation/update, then they won’t be changed automatically.
-
-To change the modules status (enabled/disabled) manually, run the following command in a console:
-<div class="notranslate">
-
-```
-# /usr/sbin/cloudlinux-selector make-defaults-config --json --interpreter=php
-```
-</div>
-
-#### Update
-
-To update PHP Selector, run the following command:
-<div class="notranslate">
-
-```
-yum groupupdate alt-php
-```
-</div>
-
-This command allows to install newly released versions in <span class="notranslate"> PHP Selector. </span>
-
-:::tip Note
-See also PHP Selector [CLI](/shared/command-line_tools/#php-selector)
-:::
-
-### Installation instructions for cPanel users
-
-1. Install CageFS as root via SSH:
-
-<div class="notranslate">
-
-```
-yum install cagefs
-```
-</div>
-
-2. Install `alt-php` packages as root:
-
-<div class="notranslate">
-
-```
-yum groupinstall alt-php
-```
-</div>
-
-3. Install `mod_suexec` package as root. See installation instructions [here](./#installation-5).
-4. Verify that CageFS is initialized successfully.
-
-  * via SSH by running the following command:
-
-  <div class="notranslate">
-
-  ```
-  cagefsctl --check-cagefs-initialized
-  ```
-  </div>
-
-  * via cPanel admin interface
-  
-  Go to <span class="notranslate">cPanel → Admin interface → LVE Manager → Dashboard</span> → click <span class="notranslate">_Refresh_</span>
-
-  ![](./images/cageFS-verify.png)
-
-  If there is a problem you can see _Not initialized_
-
-  ![](./images/not-initialized.png)
-
-5. Initilize CageF (if it is not initialized)
-
-  * Via SSH
-
-  <div clas="code">
-
-  ```
-  cagefsctl --init
-  ```
-  </div>
-
-  * Via cPanel admin interface
-
-    Go to cPanel → <span class="notranslate">Admin interface → LVE manager → Options → CageFS INIT</span>
-
-    ![](./images/CageFS-init.png)
-
-  If CageFS was initialized after refreshing Dashboard you will see that CageFS is enabled:
-
-  ![](./images/CageFS-enabled.png)
-
-6. Enable CageFS to a user
-
-  Go to <span class="notranslate">cPanel → Admin interface → LVE manager → Users</span>
-
-  ![](./images/enable-CageFS-to-user.png)
-
-  * For one user by individual slider (for LVE 1001 in the picture above)
-  * For a group of user by the _CageFS_ button (for LVE 1002 and 1003 in the picture above)
-
-7. Check that system PHP version is not `alt-php` (it should be `ea-php`)
-
-  Go to <span class="notranslate">cPanel → Admin interface → MultiPHP Manager → PHP versions</span>
-
-  ![](./images/check-ea-php.png)
-
-8. Check that an appropriate PHP handler is selected for PHP version which is system version
-
-  Go to <span class="notranslate">cPanel Admin interface → MultiPHP Manager → PHP Handlers</span>
-
-  ![](./images/php-handlers.png)
-
-9. Check version for domain in MultiPHP Selector. It should be equal to the system default version
-
-Go to <span class="notranslate">cPanel Admin interface → MultiPhp Manager → PHP versions</span> → scroll to <span class="notranslate">_Set PHP Version per Domain_</span>
-
-10. Version for domain in User’s interface in PHP Selector should not be equal to the <span class="notranslate">Native</span> version.
-
-
-### LiteSpeed support
-
-::: tip Note
-LiteSpeed detects CloudLinux OS Shared and applies all settings out-of-the-box.
-:::
-
-:::tip Note
-If your LiteSpeed is installed to a non-standard, custom location path, create a symlink: `ln -s /path/to/custom/lsws /usr/local/lsws` then run `cagefsctl --setup-cl-selector`.
-:::
-
-If the settings were not applied, you can use the following steps to set up LiteSpeed to use <span class="notranslate"> PHP Selector. </span>
-
-1. Follow PHP Selector [installation guide](./#installation-and-update-4).
-2. Make sure the following settings are set in the LSWS Web Admin console:
-  * Configuration ➞ Server ➞ General ➞ CloudLinux OS Shared: `CageFS` or `CageFS without suEXEC`
-  * Configuration ➞ Server ➞ General ➞ PHP suEXEC: `Yes`
-
-**How to set up LiteSpeed version 5.3+ to use PHP Selector**
-
-**For Plesk**
-
-![](./images/LiteSpeedForPlesk.png)
-
-**For other control panels**
-
-![](./images/LiteSpeedForOtherCP.png)
-
-Additionally, we recommend setting up the following parameters:
-
-* Configuration ➞ Server ➞ PHP:
-* Click _Edit_ in the PHP Handler Defaults section
-* Set _Yes_ in the _Run On Startup_
-* Make sure to set _Max Idle Time_ (for example to 140)
-
-![](./images/LiteSpeedAdditionSettings.png)
-
-**How to set up LiteSpeed version lower than 5.3 to use PHP Selector**
-
-Go to the _External App_ tab, _External Application_ ➞ Add.
-
-![](./images/LiteSpeedExternalAppTab.png)
-
-* The _Command line_ should be `/var/www/cgi-bin/cgi_wrapper/cloudlinux_wrapper` on Plesk. 
-* For other control panels, the _Command line_ should be `/usr/local/bin/lsphp`.
-* The _Run On Start Up_ line must contain `Yes` or `No`.
-
-**For Plesk**
-
-![](./images/LiteSpeedPlesk.png)
-
-**For other control panels**
-
-![](./images/LiteSpeedOtherCP.png)
-
-
-Settings in text format:
-
-| | |
-|-|-|
-|<span class="notranslate">Name</span>|<span class="notranslate">`lsphp_selector`</span>|
-|<span class="notranslate">Address</span>|<span class="notranslate">`uds://tmp/lshttpd/lsphp_selector.sock`</span>|
-|<span class="notranslate">Notes</span>|<span class="notranslate">Not Set</span>|
-|<span class="notranslate">Max Connections</span>|`35`|
-|<span class="notranslate">Environment</span>|<span class="notranslate">`PHP_LSAPI_MAX_REQUESTS=5000`</span><br><span class="notranslate">`PHP_LSAPI_CHILDREN=35`</span>|
-|<span class="notranslate">Initial Request Timeout (secs)</span>|`60`|
-|<span class="notranslate">Retry Timeout (secs)</span>|`0`|
-|<span class="notranslate">Persistent Connection</span>|<span class="notranslate">`Yes`</span>|
-|<span class="notranslate">Connection Keepalive Timeout</span>|<span class="notranslate">Not Set</span>|
-|<span class="notranslate">Response Buffering</span>|<span class="notranslate">`No`</span>|
-|<span class="notranslate">Auto Start</span>|<span class="notranslate">`Through CGI Daemon (Async)`</span>|
-|<span class="notranslate">Command</span>|* For Plesk <span class="notranslate">`/var/www/cgi-bin/cgi_wrapper/cloudlinux_wrapper`</span><br>* For other control panels <span class="notranslate">`/usr/local/bin/lsphp`</span>|
-|<span class="notranslate">Back Log</span>|`100`|
-|<span class="notranslate">Instances</span>|`1`|
-|<span class="notranslate">suEXEC User</span>|<span class="notranslate">Not Set</span>|
-|<span class="notranslate">suEXEC Group</span>|<span class="notranslate">Not Set</span>|
-|<span class="notranslate">umask</span>|<span class="notranslate">Not Set</span>|
-|<span class="notranslate">Run On Start Up</span>|<span class="notranslate">`Yes`</span>|
-|<span class="notranslate">Max Idle Time</span>|`70`|
-|<span class="notranslate">Priority</span>|`0`|
-|<span class="notranslate">Memory Soft Limit (bytes)</span>|`2047M`|
-|<span class="notranslate">Memory Hard Limit (bytes)</span>|`2047M`|
-|<span class="notranslate">Process Soft Limit</span>|`400`|
-|<span class="notranslate">Process Hard Limit</span>|`500`|
-
-Go to the _Script Handler_ tab. For required suffixes, change the _Handler Name_ to `lsphp_selector`.
-
-![](./images/LiteSpeedHandlerName.png)
-
-
-![](./images/LiteSpeedScriptHandler.png)
-
-:::tip Note
-In order to use PHP Selector and custom php.ini, lsphp5 needs to be in SuEXEC non-daemon mode.
-:::
-
-:::tip Note
-Some PHP configurations require more memory for SuExec to work properly. If you are getting error 500 after switching suEXEC to non-daemon mode, try to increase Memory Soft Limit and Memory Hard Limit for external App to at least 650/800M.
-:::
-
-
-### ISPmanager support
-
-
-As of July 2013, <span class="notranslate"> PHP Selector </span> support for <span class="notranslate"> ISPmanager </span> is limited to command line utilities. You should still be able to use it.
-
-As always, <span class="notranslate"> PHP Selector </span> requires <span class="notranslate">  CGI, FCGI </span> or <span class="notranslate"> suPHP </span> to work.
-
-You will need to do following modifications:
-
-Create new file <span class="notranslate"> /usr/local/bin/php-cgi-etc: </span>
-<div class="notranslate">
-
-```
-#!/bin/bash
-/usr/bin/php-cgi -c /etc/php.ini "$@"
-```
-</div>
-Make that file executable:
-<div class="notranslate">
-
-```
-$ chmod +x /usr/local/bin/php-cgi-etc
-```
-</div>
-Edit file <span class="notranslate"> /usr/local/ispmgr/etc/ispmgr.conf </span>
-
-Add a line:
-<div class="notranslate">
-
-```
-path phpcgibinary /usr/local/bin/php-cgi-etc
-```
-</div>
-
-Make sure there is no other lines with <span class="notranslate">`path phpcgibinary`</span> defined in the file.
-
-Restart <span class="notranslate"> ISPmanager </span> :
-<div class="notranslate">
-
-```
-$ killall ispmgr
-```
-</div>
-
-After that <span class="notranslate"> FCGID </span> wrappers <span class="notranslate">(`/var/www/[USER]/data/php-bin/php`)</span> for new users will be like this:
-
-<span class="notranslate"> #!/usr/local/bin/php-cgi-etc </span>
-
-You might need to edit/modify wrappers for existing users if you want them to be able to use <span class="notranslate">PHP Selector</span>. You can leave them as is for users that don't need such functionality.
-
-### Uninstalling
-
-* [Disabling PHP extension globally](./#disabling-php-extension-globally)
-
-It is not possible to remove <span class="notranslate"> PHP Selector </span> from the system completely as it is an essential part of <span class="notranslate"> LVE Manager </span> and CageFS packages. However, you can make PHP Selector unavailable for cPanel and Plesk users.
-
-To do so, go to <span class="notranslate"> _LVE Manager → PHP Selector_ </span> and check <span class="notranslate"> _Disabled_ as PHP Selector </span> status. Doing so allows you to disable web-interface of the <span class="notranslate"> PHP Selector </span> in the user interface but does not reset custom settings (choosing a version of PHP and modules).
-
-To disable <span class="notranslate"> PHP Selector </span> and make it has no effect on a PHP version on the sites, run the following command:
-
-* this command resets PHP versions to Native:
-
-<div class="notranslate">
-
-```
-cagefsctl --cl-selector-reset-versions
-```
-</div>
-
-* this command resets PHP modules to Default:
-
-<div class="notranslate">
-
-```
-cagefsctl --cl-selector-reset-modules
-```
-</div>
-
-::: danger
-These commands can affect PHP version of your clients’ web sites. Use them with caution as improper usage might cause your clients’ web sites down.
-:::
-
-:::tip Note
-It is possible to manually uninstall the integral parts of PHP Selector - **alt-php** packages. However, since CloudLinux OS components heavily rely on them, we do not recommend doing so. Proceed with caution and keep an eye on yum dependencies if you decide to uninstall the packages.
-:::
-
-#### Disabling PHP extension globally
-
-If you want to disable PHP extension globally, you don't need to remove file <span class="notranslate"> /opt/alt/phpXX/etc/php.d.all/$EXTENSION.ini </span> . You should just comment out <span class="notranslate"> "extension=" </span> directives in it.
-
-The extension will be visible in <span class="notranslate">PHP Selector</span> interface, but selecting it in users's interface will take no effect - extension will be disabled in fact.
-
-Reinstalling of <span class="notranslate">`alt-php`</span> packages will not reset settings (will not enable extension again).
-
-### Configuration and using
-
-* [Setting default version and modules](./#setting-default-version-and-modules)
-* [Individual PHP.ini files](./#individual-php-ini-files)
-* [How to add additional php.ini file for a user inside CageFS](./#how-to-add-additional-php-ini-file-for-a-user-inside-cagefs)
-* [Substitute global php.ini for individual customer](./#substitute-global-php-ini-for-individual-customer)
-* [How to substitute global php.ini for individual customer on cPanel server with EasyApache4](./#how-to-substitute-global-php-ini-for-individual-customer-on-cpanel-server-with-easyapache4)
-* [Managing interpreter version](./#managing-interpreter-version)
-* [Including PHP Selector only with some packages - cPanel](./#including-php-selector-only-with-some-packages-cpanel)
-* [PHP extensions](./#php-extensions)
-* [FFmpeg](./#ffmpeg)
-* [Native PHP configuration](./#native-php-configuration)
-* [How to configure alt-php72-zts to use with PHP Selector](./#how-to-configure-alt-php72-zts-to-use-with-php-selector)
-* [Using](./#using)
-* [Custom PHP.ini options](./#custom-php-ini-options)
-* [End user files and directories](./#end-user-files-and-directories)
-* [Compiling your own extensions](./#compiling-your-own-extensions)
-* [Roll your own PHP](./#roll-your-own-php)
-* [Detect user's PHP version](./#detect-user-s-php-version)
-* [PHP Selector without CageFS](./#php-selector-without-cagefs)
-* [Configuring "global” php.ini options for all Alt-PHP versions](./#configuring-global%E2%80%9D-php-ini-options-for-all-alt-php-versions)
-
-#### Setting default version and modules
-
-Administrator can set default interpreter version and extensions for all users. All file operations are actually done by CageFS. CageFS takes settings from <span class="notranslate">  /etc/cl.selector/defaults.cfg. </span> Currently the <span class="notranslate"> /etc/cl.selector/defaults.cfg </span> is created and handled by <span class="notranslate"> CloudLinux OS Shared PHP Selector </span> scripts. It has the following format:
-<div class="notranslate">
-
-```
-[global]
-selector=enabled
-
-[versions]
-php=5.4
-
-[php5.4]
-modules=json,phar
-
-[php5.3]
-modules=json,zip,fileinfo
-```
-</div>
-
-
-#### Individual PHP.ini files
-
-For each customer, inside CageFS, file <span class="notranslate"> alt_php.ini is located in /etc/cl.php.d/alt-phpXX (XX </span> - version of PHP, like 52 or 53). The file contains PHP extension settings and extension directives selected by customer. This file exists for each customer, for each PHP version.
-
-Note, that this is <span class="notranslate"> 'local' to CageFS, </span> and different users will have different files. The file is not visible in <span class="notranslate"> /etc/cl.php.d </span> outside CageFS. If you would like to view that file, use:
-<div class="notranslate">
-
-```
-# cagefsctl -e USERNAME 
-```
-</div>
-
-to enter into CageFS for that user. Then type: <span class="notranslate"> `exit` </span> ; to exit from CageFS
-
-This file has to be updated using <span class="notranslate"> `cagefsctl --rebuild-alt-php-ini` </span> after updating <span class="notranslate"> alt-php </span> RPMs
-
-Admin can change individual settings for PHP extensions by changing that extension's ini file, like editing <span class="notranslate"> /opt/alt/php54/etc/php.d.all/eaccelerator.ini </span> and then running:
-<div class="notranslate">
-
-```
-cagefsctl --rebuild-alt-php-ini
-```
-</div>
-to propagate the change.
-
-#### How to add additional php.ini file for a user inside CageFS
-
-If you want to create additional `php.ini` file for a user inside CageFS in order to change some specific PHP options for that user, you can execute the following:
-
-<div class="notranslate">
-
-```
-# su -s /bin/bash - USER
-# cd /etc/cl.php.d/alt-php72/
-# echo "upload_tmp_dir=/tmp" >> custom.ini
-```
-</div>
-
-The commands above create `custom.ini` file that will be used for `alt-php72`. By default this approach is valid only for alt-php version selected via <span class="notranslate">PHP Selector</span>. When <span class="notranslate">`/etc/cl.selector/symlinks.rules`</span> file contains <span class="notranslate">`php.d.location = selector`</span> line, then the approach is valid for all alt-php versions regardless whether it is selected in PHP Selector or not.
-
-You can find more details [here](./#bundled-php-extensions).
-
-But the recommended way is to modify PHP options via PHP Selector web or CLI interfaces, as described [here](./#custom-php-ini-options).
-
-
-
-#### Substitute global php.ini for individual customer
-
-
-Sometimes you might want to have a single customer with a different php.ini, than the rest of your customers.
-
-To do that, you will use <span class="notranslate"> [custom.etc directory functionality](./#custom-etc-files-per-customer) </span>
-
-1. Move default php.ini into <span class="notranslate"> _/etc_ </span> directory and create a symlink to it:
-
-<div class="notranslate">
-
-```
-$ mv /usr/local/lib/php.ini /etc/php.ini
-$ ln -fs /etc/php.ini /usr/local/lib/php.ini
-```
-</div>
-
-2. Change path to php.ini in <span class="notranslate"> _/etc/cl.selector/native.conf_ </span> file to:
-
-<div class="notranslate">
-
-```
-php.ini=/etc/php.ini
-```
-</div>
-
-3. For each user that needs custom file, create directory <span class="notranslate"> _/etc/cagefs/custom.etc/USER_NAME/php.ini_ </span> .
-
-For example if you want to create custom for <span class="notranslate"> USER1 </span> and <span class="notranslate"> USER2 </span> you would create files:  
-<span class="notranslate"> _/etc/cagefs/custom.etc/USER1/php.ini_ </span>  
-<span class="notranslate"> _/etc/cagefs/custom.etc/USER2/php.ini_ </span>
-
-Create such files for each user that should have custom file.
-
-4. Execute:
-
-<div class="notranslate">
-
-```
-$ cagefsctl --force-update 
-```
-</div>
-
-::: tip Notes
-
-1. Make sure that `php.ini` load path is set to <span class="notranslate">`/etc/php.ini`</span>
-
-2. Users will be able to override settings of those php.ini files (global or custom) via <span class="notranslate">PHP Selector</span>. If you want to prevent that, you should disable <span class="notranslate">PHP Selector</span> feature.
-
-3. Even if <span class="notranslate">PHP Selector</span> is disabled, user can override PHP settings by using <span class="notranslate">`ini_set() php`</span> function in PHP script, or by <span class="notranslate">`php -c`</span> command line option.
-
-4. If you modify anything in <span class="notranslate">`/etc/cagefs/custom.etc`</span> directory, you should execute:
-
-<div class="notranslate">
-
-```
-$ cagefsctl --update-etc
-```
-</div>
-
-in order to apply changes to CageFS for all users.
-
-OR 
-
-<div class="notranslate">
-
-```
-$ cagefsctl --update-etc user1 user2
-```
-</div>
-
-to apply changes to CageFS for specific users.
-
-:::
-
-#### How to substitute global php.ini for individual customer on cPanel server with EasyApache4
-
-:::tip Note
-It is enough to put `php.ini` in the directory where PHP script is located in order to run the PHP script with a custom `php.ini` when using SuPHP. Also, you can use <span class="notranslate">cPanel MultiPHP Manager</span> to create user’s custom `php.ini` file, and this approach should work for CGI, FCGI, and LSAPI. Recommended ways to manage `php.ini` settings per user are to use <span class="notranslate">cPanel MultiPHP</span> or <span class="notranslate">CloudLinux OS Shared PHP Selector</span> interfaces.
-:::
-
-1. For each user that needs custom file, create directory <span class="notranslate">`/etc/cagefs/custom.etc/USER_NAME/php.ini`</span>.
-    
-    For example, if you want to create a custom file for USER1 and USER2 you would create files:
-
-    <div class="notranslate">
-
-    ```
-    /etc/cagefs/custom.etc/USER1/php.ini
-    /etc/cagefs/custom.etc/USER2/php.ini
-    ```
-    </div>
-
-    Create such files for each user that should have a custom file.
-
-2. Execute the following command:
-
-    <div class="notranslate">
-
-    ```
-    $ cagefsctl --force-update
-    ```
-    </div>
-
-3. Configure `php.ini` load path for user’s domains.
-   
-* When using **suphp** handler, you should use `SuPHP_ConfigPath` directive in virtual host configuration for these domains, or use this directive in `.htaccess` files: `suPHP_ConfigPath/etc`.
-
-* When using **mod_lsapi**, you should use `lsapi_phprc` directive in virtual host configuration: `lsapi_phprc/etc/`.
-    You can find the detailed description of `mod_lsapi` directives [here](./#configuration-references).
-
-* When using **FCGI** or **CGI**, you should implement custom PHP wrapper and redefine the path to `php.ini` via `-c` command line option, like below:
-    <div class="notranslate">
-
-    ```
-    #!/bin/bash
-    [ -f /etc/php.ini ] && exec /usr/bin/php -c /etc/php.ini
-    exec /usr/bin/php
-    ```
-    </div>
-
-**Notes:**
-
-1. You should restart Apache web server after modifying virtual host configuration for the domains.
-2. Custom `php.ini` may break switching PHP version via <span class="notranslate">CloudLinux OS Shared PHP Selector</span> or <span class="notranslate">cPanel MultiPHP Manager</span> for the appropriate users or domains.
-3. When using cPanel ea-php for the domains, additional `php.ini` files may not be loaded, so you should load all needed PHP extensions in custom `/etc/php.ini` file:
-![](./images/custom_file_cPanel1.png)
-4. When using CloudLinux OS Shared alt-php, additional `php.ini` files will be loaded:
-![](./images/custom_file_cPanel2.png)
-5. If you have modified anything in `/etc/cagefs/custom.etc` directory, you should execute one of the following:
-
-    * to apply changes to CageFS for all users, run:
-  
-    <div class="notranslate">
-
-    ```
-    $ cagefsctl --update-etc
-    ```
-    </div>
-
-    * to apply changes to CageFS for specific users, run:
-  
-    <div class="notranslate">
-
-    ```
-    $ cagefsctl --update-etc user1 user2
-    ```
-    </div>
-
-
-#### Managing interpreter version
-
-
-Managing interpreter versions is done by means of manipulating a set of symbolic links that point to different versions of interpreter binaries. For example, if default PHP binary is <span class="notranslate"> `/usr/local/bin/php` </span> :
-
-* First we move the default binary inside CageFS to <span class="notranslate"> `/usr/share/cagefs-skeleton/usr/selector` </span> , and make <span class="notranslate"> /usr/local/bin/php </span> a symlink pointing to <span class="notranslate"> /etc/cl.selector/php </span> . This operation is done as part of CageFS deployment.
-* Next suppose we have additional PHP version, say 7.2.5. The information about all additional interpreter binaries and paths for them is kept in <span class="notranslate"> /etc/cl.selector/selector.conf </span> . This config file is updated by RPM package manager each time alternative PHP package is added, removed or updated
-* <span class="notranslate"> `/usr/bin/selectorctl --list --interpreter=php` </span> will get us list of all available PHP interpreter versions out of <span class="notranslate"> /etc/cl.selector/selector.conf file </span> .
-Next we want to know which PHP version is active for a given user (to supply a selected option in options list). We type:
-* <span class="notranslate"> `/usr/bin/selectorctl --user USERNAME --interpreter=php --user-current` </span> will retrieve PHP version set for a particular user. The script gets the path from <span class="notranslate"> `/var/cagefs/LAST_TWO_DIGITS_OF_UID/USERNAME/etc/cl.selector/php` </span> symlink, compares it with contents of <span class="notranslate"> /etc/cl.selector/selector.conf </span> file and if path is valid, prints out the current interpreter version.
-* <span class="notranslate"> `/usr/bin/selectorctl --user USERNAME --interpreter=php --set-user-current=7.2` </span> sets the current PHP version for particular user by creating symlink in <span class="notranslate"> `/var/cagefs/LAST_TWO_DIGITS_OF_UID/USERNAME/etc/cl.selector` </span> directory. All old symlinks are removed, and new symlinks are set.
-
-
-#### Including PHP Selector only with some packages (cPanel)
-
-
-<span class="notranslate"> cPanel </span> has a ' <span class="notranslate"> Feature Manager </span> ' in WHM that allows you to disable <span class="notranslate"> PHP Selector </span> for some of the packages that you offer.
-
-In reality it only disables the icon in <span class="notranslate"> cPanel </span> interface. Yet, in most cases it should be enough in shared hosting settings.
-
-You can find more info on ' <span class="notranslate"> Feature Manager </span> ' here: [http://docs.cpanel.net/twiki/bin/view/11_30/WHMDocs/FeatureManager](http://docs.cpanel.net/twiki/bin/view/11_30/WHMDocs/FeatureManager)
-
-
-Once <span class="notranslate"> PHP Selector </span> is enabled, you can find it in the <span class="notranslate"> Feature Manager </span> . Disabling it in <span class="notranslate"> Feature Manager </span> , will remove the icon for users that are using that particular <span class="notranslate"> 'Feature List' </span>
-
-<img src="./images/screen1-phpselector-featuremanager.png" width="478" height="575" />
-
-
-#### PHP extensions
-
-**Configuring Alt-PHP modules loading**
-
-
-<span class="notranslate"> CloudLinux OS Shared PHP Selector </span> and Alt-PHP can be used in conjunction with <span class="notranslate"> Plesk PHP Selector </span> and <span class="notranslate"> cPanel MultiPHP </span> . To be compatible, <span class="notranslate"> CloudLinux OS Shared PHP Selector </span> works as follows: modules that are selected in <span class="notranslate"> CloudLinux OS Shared PHP Selector </span> are loaded for Alt-PHP version selected in <span class="notranslate"> CloudLinux OS Shared PHP Selector </span> only. For the rest Alt-PHP versions default module set is loaded <span class="notranslate"> ( _/opt/alt/phpXX/etc/php.d/default.ini_ ) </span> . Described above is default behavior.
-
-::: tip Note
-If system default PHP version selected in <span class="notranslate"> cPanel MultiPHP Manager is not ea-php, then default module set is loaded for all Alt-PHP versions by default (/opt/alt/phpXX/etc/php.d/default.ini). </span>
-
-When <span class="notranslate"> "php.d.location = selector" option is in effect, modules selected via PHP Selector </span> will be loaded for all alt-php versions.
-:::
-
-
-This behavior is implemented in CageFS-6.1-10 and later.
-
-In <span class="notranslate"> LVE Manager </span> 1.0-9.40+ this behavior can be modified so that modules selected in <span class="notranslate"> CloudLinux OS Shared PHP Selector </span> would be loaded for all Alt-PHP versions (with CageFS enabled), which can be quite useful if you use  ‘ <span class="notranslate"> per directory </span> ’ or ‘ <span class="notranslate"> per domain </span> ’ Alt-PHP configuration and want to select modules using <span class="notranslate"> CloudLinux OS Shared PHP Selector </span> .
-
-To modify it, create a file <span class="notranslate"> _/etc/cl.selector/symlinks.rules_ </span> (read-only for regular users) with the following content: <span class="notranslate"> _php.d.location = selector_ </span>
-
-And run the command to apply changes:
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --apply-symlinks-rules
-```
-</div>
-To revert to the default behavior:
-
-* Delete <span class="notranslate"> _/etc/cl.selector/symlinks.rules_ </span> file.
-* Alternatively remove <span class="notranslate"> _php.d.location_ </span> option from the file.
-* Alternatively set <span class="notranslate"> _default_ </span> value for <span class="notranslate"> _php.d.location_ </span> option.
-
-And run the command to apply changes:
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --apply-symlinks-rules
-```
-</div>
-
-#### FFmpeg
-
-:::tip Note
-The PHP-FFmpeg project has not been renewed for the last few years and is not compatible with the RHEL 8 based systems. Since code for alt-PHP-FFmpeg is outdated and FFmpeg has a lot of third-party dependencies, this module is not available for CloudLinux OS Shared 8.
-:::
-
-Due to possible patent issues CloudLinux OS Shared does not provide <span class="notranslate"> FFmpeg </span> libraries ( [https://ffmpeg.org/legal.html](https://ffmpeg.org/legal.html) ). We highly recommend researching if you can legally install <span class="notranslate"> FFmpeg </span> extension on your server. This might differ based on where you and your servers are located. More information can be found on the link: [https://ffmpeg.org/legal.html](https://ffmpeg.org/legal.html)
-
-For your convenience we provide <span class="notranslate"> FFMPEG PHP </span> binding. For them to work, you need to install <span class="notranslate"> FFmpeg </span> package from the “<span class="notranslate">Nux Dextop</span>” repository following the [instructions](http://li.nux.ro/repos.html).
-
-Once <span class="notranslate"> FFmpeg </span> is installed you can install PHP bindings, by running:
-<div class="notranslate">
-
-```
-yum install alt-php*ffmpeg 
-```
-</div>
-
-Enable <span class="notranslate"> PHP-FFmpeg </span> extension via <span class="notranslate"> PHP Selector </span> :
-<div class="notranslate">
-
-```
-selectorctl --enable-extensions=ffmpeg --user USERNAME --version X.Y
-```
-</div>
-
-#### Native PHP configuration
-
-<span class="notranslate">PHP Selector</span> requires access to the <span class="notranslate">native PHP</span> version for proper work. It is specified in the file <span class="notranslate">`/etc/cl.selector/native.conf`</span> of the following content (example):
-<div class="notranslate">
-
-```
-php=/usr/bin/php-cgi
-php-cli=/usr/bin/php
-php.ini=/etc/php.ini
-lsphp=/usr/local/bin/lsphp
-php-fpm=/usr/local/sbin/php-fpm
-```
-</div>
-
-
-Then execute the following command to apply changes.
-<div class="notranslate">
-
-```
-cagefsctl --setup-cl-selector
-```
-</div>
-
-The file is created when installing CageFS on the servers with <span class="notranslate"> cPanel, Plesk, DA, Interworx and ISP Manager </span> , if it is missing. On all other servers the file is not being created at all.
-
-That is why, if the file is not created automatically, then it must be created manually and correct paths must be written to its directives.
-
-Access permission 644 must be set:
-<div class="notranslate">
-
-```
-chmod 0644 /etc/cl.selector/native.conf
-```
-</div>
-
-
-#### How to configure alt-php72-zts to use with PHP Selector
-
-**Requirements**
-
-To use `alt-php72-zts` with PHP Selector you need the following:
-
-* `cagefs-6.1.8-1` or later
-* `alt-php72-zts-7.2.21-4` or later
-
-**Using zts PHP**
-
-1. Install `alt-php72-zts` with the following command:
-  
-  <div class="notranslate">
-
-  ```
-  yum install alt-php72-zts
-  ```
-  </div>
-
-2. Make sure that <span class="notranslate">`/etc/cl.selector/selector.conf`</span> file contains correct paths to the PHP `zts` binaries.
-
-  You should remove the old lines:
-
-  <div class="notranslate">
-
-  ```
-  php 7.2 7.2.20 /opt/alt/php72/usr/bin/php-cgi
-  php-cli 7.2 7.2.20 /opt/alt/php72/usr/bin/php
-  ```
-  </div>
-
-  And replace them with the lines with the new paths:
-
-  <div class="notranslate">
-
-  ```
-  php 7.2 7.2.20 /opt/alt/php72/usr/bin/zts-php-cgi
-  php-cli 7.2 7.2.20 /opt/alt/php72/usr/bin/zts-php
-  ```
-  </div>
-
-3. Make sure that <span class="notranslate">`/opt/alt/php72/etc/php.d.all`</span> path refers to the directory containing `ini` files for `zts` PHP extensions:
-
-  <div class="notranslate">
-
-  ```
-  cd /opt/alt/php72/etc
-  ln -fsn php.d.all.zts php.d.all
-  ```
-  </div>
-
-4. Execute the following command:
-
-  <div class="notranslate">
-
-  ```
-  cagefsctl --setup-cl-selector
-  ```
-  </div>
-
-
-**Using non-zts PHP**
-
-1. Make sure that <span class="notranslate">`/etc/cl.selector/selector.conf`</span> file contains correct paths to the `non-zts` PHP binaries.
-   
-  You should remove the old lines:
-  
-  <div class="notranslate">
-
-  ```
-  php 7.2 7.2.20 /opt/alt/php72/usr/bin/zts-php-cgi
-  php-cli 7.2 7.2.20 /opt/alt/php72/usr/bin/zts-php
-  ```
-  </div>
-
-And replace them with the lines with the new paths:
-
-  <div class="notranslate">
-
-  ```
-  php 7.2 7.2.20 /opt/alt/php72/usr/bin/php-cgi
-  php-cli 7.2 7.2.20 /opt/alt/php72/usr/bin/php
-  ```
-  </div>
-  
-2. Make sure that <span class="notranslate">`/opt/alt/php72/etc/php.d.all`</span> path refers to the directory containing `ini` files for `non-zts` PHP extensions:
-
-  <div class="notranslate">
-
-  ```
-  cd /opt/alt/php72/etc
-  ln -fsn php.d.all.def php.d.all
-  ```
-  </div>
-
-3. Execute the following command:
-
-  <div class="notranslate">
-
-  ```
-  cagefsctl --setup-cl-selector
-  ```
-  </div>
-
-#### Using
-
-Once <span class="notranslate">PHP Selector</span> is installed, you will see the <span class="notranslate">[**Selector**](/shared/lve_manager/#selector-tab)</span> tab in the <span class="notranslate">**LVE Manager**</span>.
-
-Customers can use [PHP Selector client plugin](/shared/lve_manager/#php-selector-client-plugin) to change their PHP Selctor related settings.
-
-#### Custom PHP.ini options
-
-<span class="notranslate">PHP Selector</span> allows customer to edit php.ini settings. Admin has a full control over which settings can be modified.
-
-To allow settings to be modifiable, it has to be whitelisted in <span class="notranslate">`/etc/cl.selector/php.conf`</span>.
-
-Here are some of the examples of allowed directives:
-<div class="notranslate">
-
-```
-Directive = safe_mode
-Type      = bool
-Remark    = <5.4.0
-Comment   = Enables PHP safe mode. This mode puts a number of restrictions on scripts (say, access to file system) mainly for security reasons.
-```
-</div>
-
-<div class="notranslate">
-
-```
-Directive = safe_mode_include_dir
-Type      = value
-Remark    = <5.4.0
-Comment   = If PHP is in the safe mode and a script tries to access some files, files from this directory will bypass security (UID/GID) checks. The directory must also be in include_path. For example: /dir/inc
-```
-</div>
-
-| | |
-|-|-|
-|Directive | php.ini setting|
-|Type | bool, value (any text), list|
-|Range | list of values for list Type|
-|Comment | explanation of the setting to display in UI|
-
-Default values, that are shown in <span class="notranslate"> PHP Selector </span> web interface, are taken from <span class="notranslate"> '/opt/alt/phpXX/usr/bin/php -i' </span> runtime values, if
-directive is not there, it will use the output of phpinfo() function. So, if you wish to change default value of any option for
-"alternative" php version, please modify <span class="notranslate"> /opt/alt/phpXX/etc/php.ini </span> files (where XX = 55, 54, 53, etc according to php version).
-
-Admin can modify the settings using <span class="notranslate"> [selectorctl](/shared/command-line_tools/#selectorctl) </span> command.
-
-Users can use web interface to modify php.ini settings:
-
-![](./images/php_selector_options.png)
-
-
-#### End user files and directories
-
-The following files and directories are created inside CageFS for each customer:
-
-<span class="notranslate"> /etc/cl.selector </span> - PHP binaries symbolic links.
-
-<span class="notranslate"> /usr/selector/php - Native PHP </span> binaries.
-
-<span class="notranslate"> /etc/cl.php.d/alt-php* </span> - Links to enabled modules.
-
-<span class="notranslate"> /home/user/.cl.selector/alt_phpXX.cfg </span> - Config file for custom PHP options.
-
-like:
-
-<span class="notranslate"> /etc/cl.php.d/alt-php54/fileinfo.ini - /opt/alt/php54/etc/php.d.all/fileinfo.ini </span>
-
-
-#### Compiling your own extensions
-
-Sometimes you might want to compile your own PHP extension for your users to use. In most cases, it is better to contact our support by sending us a support [ticket](https://cloudlinux.zendesk.com/hc/requests/new) . We will try to provide such extension for you via regular updates within 5-7 days.
-
-If you have decided that you want to build it on your own, you would need to build it for each and every supported version of PHP that you have installed. The module installation process is a bit different from standard - you would need to use the version of phpize and php-config binaries that come with particular <span class="notranslate"> Alt-PHP </span> version.
-
-The full process for PHP 5.X and 7.X looks as follows:
-
-1. Download and unpack extension, cd into it's directory.
-
-2. Execute our version of phpize if necessary:
-
-<div class="notranslate">
-
-```
-/opt/alt/phpXX/usr/bin/phpize
-```
-</div>
-
-3. Execute configure with our binary:
-
-<div class="notranslate">
-
-```
-./configure --with-php-config=/opt/alt/phpXX/usr/bin/php-config
-```
-</div>
-
-4. Make the <span class="notranslate"> .so </span> file:
-
-<div class="notranslate">
-
-```
-make
-```
-</div>
-
-5. Copy it to the modules directory (on 32-bit server, use <span class="notranslate"> usr/lib/php/modules </span> ).
-
-<div class="notranslate">
-
-```
-cp -rp modules/*.so /opt/alt/phpXX/usr/lib64/php/modules/
-```
-</div>
-
-6. Add ini file for module to <span class="notranslate"> `/opt/alt/phpXX/etc/php.d.all` . </span>
-
-7. Register new <span class="notranslate"> Alt-PHP </span> version with:
-
-<div class="notranslate">
-
-```
-$ cagefsctl --setup-cl-selector
-```
-</div>
-
-#### Roll your own PHP
-
-To add your own PHP version in <span class="notranslate"> PHP Selector </span> :
-
-* Create directory in (like:  /opt/alt/php51), and mimic directory structure inside to be similar to the one of PHP versions bundled by <span class="notranslate"> CloudLinux OS Shared</span>.
-* Put all the ini files for all the modules into <span class="notranslate"> /opt/alt/php51/etc/php.d.all </span>
-* Create a symbolic link <span class="notranslate"> /opt/alt/php51/etc/php.d -> /etc/cl.php.d/alt-php51 </span>
-
-Place all such files into <span class="notranslate"> /opt/alt/php51/usr/lib/php/modules </span>
-
-Add an absolute path to PHP binaries into <span class="notranslate"> /etc/cl.selector/selector.conf </span> using the following format:
-
-<div class="notranslate">
-
-```
-php     5.1 5.1.2 /opt/alt/php51/usr/bin/php-cgi 
-php-cli 5.1 5.1.2 /opt/alt/php51/usr/bin/php 
-php-fpm 5.1 5.1.2 /opt/alt/php51/usr/sbin/php-fpm
-   ^     ^    ^                ^----- absolute path
-   |     |    |---------------------- real version
-   |     | -------------------------- version to display
-   |--------------------------------- binary to 'substitute'
-```
-</div>
-
-Execute:
-<div class="notranslate">
-
-```
-cagefsctl --setup-cl-selector
-```
-</div>
-
-The new PHP version must be available now for selection in <span class="notranslate">PHP Selector</span>.
-
-#### Detect user's PHP version
-
-
-:::tip Note
-<span class="notranslate">LVE Manager</span> 0.5-63 or higher
-:::
-
-<span class="notranslate"> PHP Selector </span> provides an easy way to figure out which versions are available and selected for end user from the command line. You can get this information by running:
-
-<div class="notranslate">
-
-```
-$ selectorctl --interpreter=php --user-summary --user=USERNAME
-```
-</div>
-
-<div class="notranslate">
-
-```
-The output:
-5.2 e - -
-5.3 e - s
-5.4 e - -
-5.5 e - -
-native e d -
-```
-</div>
-
-The first column defines the PHP version. <span class="notranslate"> _Native_ </span> means native PHP version, like the one installed by cPanel with EasyApache.
-
-The second column will contain either <span class="notranslate"> **e** </span> or **-.** If <span class="notranslate"> **e**  </span> is present, it means that given version is enabled, and can be selected by the end user.
-
-The third column can have values <span class="notranslate"> **d**   </span> or **-.** If <span class="notranslate"> **d** </span> is present, that version is considered a 'default' version. Only one PHP version will have **d** indicator.
-
-The fourth column can have values <span class="notranslate"> **s**   </span> or **-.** If <span class="notranslate"> **s** is present, that is the selected version, currently being used by the end user. Only one PHP version will have  <span class="notranslate"> **s** </span>  indicator. </span>
-
-In case a user is not inside CageFS, and as such doesn't use <span class="notranslate"> PHP Selector </span> , you will see the following error message:
-
-<div class="notranslate">
-
-```
-ERROR:User USERNAME not in CageFS
-```
-</div>
-
-#### PHP Selector without CageFS
-
-
-**[LVE Manager 2.0-11.1 or higher]**
-
-<span class="notranslate"> PHP Selector </span> can now be used with CageFS turned off (in case when there is only one user account on the server).
-
-To install run:
-<div class="notranslate">
-
-```
-yum groupinstall alt-phpyum install cagefs lvemanager
-```
-</div>
-
-(no need to initialize or turn on CageFS)
-
-<div class="notranslate">
-
-```
-selectorctl --setup-without-cagefs USER
-```
-</div>
-
-( <span class="notranslate"> USER </span> - the name of a user who is using selector. If not specified, the first available cPanel account username will be used).
-
-When executing <span class="notranslate">`--setup-without-cagefs`</span>, the following actions are performed:
-
-* Creating symlinks to the user modules and options for each <span class="notranslate"> Alt-PHP </span> version:  
-<span class="notranslate"> _/opt/alt/php55/link/conf/alt_php.ini -> /home/USER/.cl.selector/alt_php55.ini_ </span>
-
-* In user home directory creating:  
-<span class="notranslate"> _.cl.selector/_ </span>
-
-“Backup” settings files (selected version, modules, options):  
-<span class="notranslate"> _.cl.selector/defaults.cfg_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php44.cfg_ </span>
-
-Symlinks to the selected version:  
-<span class="notranslate"> _.cl.selector/lsphp -> /opt/alt/php44/usr/bin/lsphp_ </span>  
-<span class="notranslate"> _.cl.selector/php.ini -> /opt/alt/php44/etc/php.ini_ </span>  
-<span class="notranslate"> _.cl.selector/php-cli -> /opt/alt/php44/usr/bin/php_ </span>  
-<span class="notranslate"> _.cl.selector/php -> /opt/alt/php44/usr/bin/php-cgi_ </span>  
-
-Additional symlinks for environment variable <span class="notranslate"> $PATH </span> (search path) in the file <span class="notranslate"> ~/.bashrc </span> :  
-<span class="notranslate"> _.cl.selector/selector.path/_ </span>  
-<span class="notranslate"> _.cl.selector/selector.path/php-cgi -> ../php_ </span>  
-<span class="notranslate"> _.cl.selector/selector.path/php -> ../php-cli_ </span>  
-
-Generated ini files with selected modules and options for each version:
-<span class="notranslate"> _.cl.selector/alt_php44.ini_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php51.ini_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php52.ini_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php53.ini_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php54.ini_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php55.ini_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php56.ini_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php70.ini_ </span>  
-<span class="notranslate"> _.cl.selector/alt_php71.ini_ </span>  
-
-Symlinks above are being created according to the settings in <span class="notranslate"> ~/.cl.selector/defaults.cfg </span> and <span class="notranslate"> ~/.cl.selector/alt_php44.cfg </span> files (44 - corresponding PHP version), which are storing <span class="notranslate"> PHP Selector </span> settings for the user. These files are usually taken from user home directory backup or when migrating account from another server. Thus, when migrating account from server to server, <span class="notranslate"> PHP Selector </span> settings are saved.
-
-If no <span class="notranslate"> PHP Selector </span> settings backup files are found when running <span class="notranslate">`selectorctl --setup-without-cagefs`</span>, then default settings from <span class="notranslate">`/etc/cl.selector/defaults.cfg`</span> global file are applied (as in selector normal mode). If the file is absent, then native PHP version will be selected for the user.
-
-* The following line: <span class="notranslate"> _PATH=$HOME/.cl.selector/selector.path:$HOME/.cl.selector:$PATH_ </span>
-
-is being added to the user file <span class="notranslate">`~/.bashrc` </span>
-
-<span class="notranslate"> Apache </span> PHP handlers settings are not changed.
-
-* Also <span class="notranslate">`selectorctl --setup-without-cagefs`</span> command does the following: 
-
-  * Turns off link traversal protection (linksafe);
-  * Turns off cagefs service.
-
-To get back to the selector normal mode (“with CageFS”) run:
-<div class="notranslate">
-
-```
-selectorctl --revert-to-cagefs
-```
-</div>
-
-(CageFS should be initialized by using <span class="notranslate">`cagefsctl --init`</span> command before running the command above)
-
-This command removes symlinks:  
-<span class="notranslate">`/opt/alt/php55/link/conf/alt_php.ini` -> `/home/USER/.cl.selector/alt_php55.ini`</span>
-turns on link traversal protection (linksafe) and cagefs service.
-
-:::tip Note
-See also PHP Selector [CLI](/shared/command-line_tools/#php-selector)
-:::
-
-#### Configuring "global” php.ini options for all Alt-PHP versions
-
-:::tip Note
-CageFS 6.0-33 or higher, <span class="notranslate">LVE Manager</span> 2.0-11.2 or higher
-:::
-
-There is <span class="notranslate">`/etc/cl.selector/global_php.ini`</span> file, where you can specify values of PHP options that should be applied for all <span class="notranslate"> Alt-PHP </span> versions that are installed on a server. These settings will also be automatically applied to the new <span class="notranslate"> Alt-PHP </span> versions that will be installed later.
-
-Example:  
-<span class="notranslate"> _# cat /etc/cl.selector/global_php.ini_ </span>  
-<span class="notranslate"> _[Global PHP Settings]_ </span>  
-<span class="notranslate"> _date.timezone = Europe/Warsaw_ </span>  
-<span class="notranslate"> _error_log = error_log_ </span>  
-<span class="notranslate"> _memory_limit = 192M_ </span>  
-Sections are ignored. Only name of an option and a value have meaning.
-
-When an option is absent in <span class="notranslate"> _/etc/cl.selector/global_php.ini_ </span> file, than it is not changed (applied) to php.ini for <span class="notranslate"> Alt-PHP </span> versions.
-
-<span class="notranslate"> date.timezone </span> and <span class="notranslate"> error_log </span> options are handled differently than the others. When these options are not in <span class="notranslate"> _/etc/cl.selector/global_php.ini_ </span> file, than values for the options will be taken from <span class="notranslate"> "native" </span> php.ini file. And when the option is in php.ini for some <span class="notranslate"> Alt-PHP </span> version already (and its value is not empty), than value from <span class="notranslate"> _/etc/cl.selector/global_php.ini_ </span> will be NOT applied.
-
-:::tip Note
-CageFS version 6.1.5-1 or later
-:::
-
-The behavior above is changed for cPanel servers with EasyApache 4. The <span class="notranslate">`/usr/local/lib/php.ini`</span> file is removed for new installations of cPanel v80 and later.
-
-* When <span class="notranslate">`/usr/local/lib/php.ini`</span> file exists, <span class="notranslate">`error_log`</span> and <span class="notranslate">`date.timezone`</span> options will be taken from that <span class="notranslate">`php.ini`</span> file.
-* When <span class="notranslate">`/usr/local/lib/php.ini`</span> file does not exist, <span class="notranslate">`error_log`</span> and <span class="notranslate">`date.timezone`</span> options will be taken from the <span class="notranslate">`php.ini`</span> file for system default PHP version selected in MultiPHP Manager.
-  
-This functionality works when the system default PHP version is <span class="notranslate">`ea-php`</span> only. When the system default PHP version is <span class="notranslate">`alt-php`, `error_log`</span> and <span class="notranslate">`date.timezone`</span> directives will be NOT taken from that <span class="notranslate">`php.ini`</span> file.
-
-
-To confirm changes (not affecting <span class="notranslate"> "date.timezone" </span> and <span class="notranslate"> "error_log" </span> options) please run:
-
-<div class="notranslate">
-
-```
-/usr/sbin/cagefsctl --setup-cl-selector
-```
-</div>
-
-To confirm changes (including <span class="notranslate">`date.timezone`</span> and <span class="notranslate">`error_log`</span> options) please run:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --apply-global-php-ini
-```
-</div>
-or
-
-<div class="notranslate">
-
-```
-/usr/sbin/cagefsctl --apply-global-php-ini
-```
-</div>
-(two commands above work the same way).
-
-If you don't want to change <span class="notranslate">`error_log`</span>, but want to change <span class="notranslate">`date.timezone`</span>, you can execute:
-
-<div class="notranslate">
-
-```
-selectorctl --apply-global-php-ini date.timezone
-```
-</div>
-
-Similarly, command <span class="notranslate"> `selectorctl --apply-global-php-ini error_log` </span> applies <span class="notranslate"> error_log </span> and all other options specified in <span class="notranslate"> _/etc/cl.selector/global_php.ini_ </span> file, except <span class="notranslate"> date.timezone </span> .
-
-So, you can specify 0, 1 or 2 parameters from the list: <span class="notranslate"> error_log, date.timezone </span> .
-
-Using <span class="notranslate"> `--apply-global-php-ini` </span> without arguments applies all global PHP options including two above.
-
-Example:
-
-<div class="notranslate">
-
-```
-selectorctl --apply-global-php-ini error_log
-selectorctl --apply-global-php-ini date.timezone
-selectorctl --apply-global-php-ini date.timezone error_log
-```
-</div>
-
-The latter command has the same effect as <span class="notranslate">`/usr/bin/selectorctl --apply-global-php-ini`</span>.
-
-:::tip Note
-See also PHP Selector [CLI](/shared/command-line_tools/#php-selector)
-:::
-
-
-### Integration with control panels
-
-* [PHP Selector integration with cPanel/WHM](https://cloudlinux.zendesk.com/hc/en-us/articles/360014084800-PHP-Selector-Integration-with-cPanel)
-* [PHP Selector integration with Plesk](https://cloudlinux.zendesk.com/hc/en-us/articles/115004582105-PHP-Selector-Integration-with-Plesk-Panel)
-* [PHP Selector integration with DirectAdmin](https://cloudlinux.zendesk.com/hc/en-us/articles/360010322460-PHP-Selector-Integration-with-DirectAdmin)
-
-This is the list of commands that we use to integrate <span class="notranslate">PHP Selector</span> with control panels.
-
-**PHP summary:**
-
-Command:
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --summary
-```
-</div>
-Result:
-<div class="notranslate">
-
-```
-4.4 e -
-5.1 e -
-5.2 e -
-5.3 e -
-5.4 e -
-5.5 e -
-5.6 e -
-7.0 e -
-7.1 e -
-native e d
-```
-</div>
-When native PHP version needs to be displayed:
-
-Command:
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --summary --show-native-version
-```
-</div>
-
-Result:
-<div class="notranslate">
-
-```
-4.4 e -
-5.1 e -
-5.2 e -
-5.3 e -
-5.4 e -
-5.5 e -
-5.6 e -
-7.0 e -
-7.1 e -
-native(5.6) e d
-```
-</div>
-
-The first column: PHP version  
-The second column: enabled or not ( <span class="notranslate"> e </span> - enabled)  
-The third column: if selected as default  ( <span class="notranslate"> d </span> - default)
-
-**Set default version:**
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --set-current=_VERSION_
-```
-</div>
-
-**Disable version:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --disable-alternative=_VERSION_
-```
-</div>
-
-**Enable version:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --enable-alternative=_VERSION_
-```
-</div>
-
-**List extensions for a version:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --list-extensions --version=5.6
-```
-</div>
-
-Result:
-<div class="notranslate">
-
-```
-- apc
-- bcmath
-- big_int
-- bitset
-- bloomy
-~ bz2
-- bz2_filter
-~ calendar
-- coin_acceptor
-- crack
-~ ctype
-+ curl
-```
-</div>
-
-+: enabled  
-~: included in php binary (cannot be disabled) or enabled in php global config file <span class="notranslate">_/opt/alt/phpXX/etc/php.ini_</span>  
--: disabled
-
-**Select default extensions (enable comma-separated list of extensions globally for a version):**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --version=5.6 --enable-extensions=pdo,json,mysql
-```
-</div>
-
-**Deselect default extensions (disable comma-separated list of extensions globally for a version):**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --version=5.6 --disable-extensions=pdo,json,mysql
-```
-</div>
-
-**Replace extensions with comma-separated list of extensions for a version globally:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --version=5.6 --replace-extensions=pdo,json,mysql
-```
-</div>
-
-**Select PHP version for a user:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --set-user-current=_VERSION_ --user=_USER_
-```
-</div>
-
-**List enabled extensions for a user:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --list-user-extensions --user=_USER_ --version=_VERSION_
-```
-</div>
-
-**Enable comma-separated list of extensions for a user:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --enable-user-extensions=pdo,json,mysql --user=_USER_ --version=_VERSION_
-```
-</div>
-
-**Reset user’s extensions to defaults:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --reset-user-extensions --user=_USER_ --version=_VERSION_
-```
-</div>
-
-**Replace user extensions with comma-separated list of extensions:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --replace-user-extensions=EXT_LIST --user=_USER_ --version=_VERSION_
-```
-</div>
-
-<span class="notranslate"> _EXT_LIST_ </span> _a is comma separated list of PHP extensions (for example:_  <span class="notranslate"> _pdo,json,mysql_ </span> )
-
-**List available options for php.ini editing:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --print-options --user=_USER_ --version=_VERSION_ [--json]
-```
-</div>
-
-**List available options for php.ini editing (print safe strings):**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --print-options-safe --user=_USER_ --version=_VERSION_ [--json]
-```
-</div>
-
-**Set php.ini options for end user:**
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --user=_USER_ --version=_VERSION_ --replace-options=_OPTIONS_ --base64 [--json]
-```
-</div>
-
-Here is an example of how you can generate <span class="notranslate"> _OPTIONS_ in base64 </span> format:
-
-<div class="notranslate">
-
-```
-OPTIONS=`echo disable_functions:exec,syslog|base64 -w 0`,`echo display_errors:off|base64 -w 0`,`echo post_max_size:128M|base64 -w 0`
-echo $OPTIONS
-```
-</div>
-
-See also [PHP Selector CLI tools](/command-line_tools/#php-selector).
-
-### Bundled PHP extensions
-
-Large number of PHP extensions are bundled with each version of PHP.
-
-* [PHP 4.4 extensions](./#php-4-4-extensions)
-* [PHP 5.1 extensions](./#php-5-1-extensions)
-* [PHP 5.2 extensions](./#php-5-2-extensions)
-* [PHP 5.3 extensions](./#php-5-3-extensions)
-* [PHP 5.4 extensions](./#php-5-4-extensions)
-* [PHP 5.5 extensions](./#php-5-5-extensions)
-* [PHP 5.6 extensions](./#php-5-6-extensions)
-* [PHP 7.0 extensions](./#php-7-0-extensions)
-* [PHP 7.1 extensions](./#php-7-1-extensions)
-* [PHP 7.2 extensions](./#php-7-2-extensions)
-* [PHP 7.3 extensions](./#php-7-3-extensions)
-* [PHP 7.4 extensions](./#php-7-4-extensions)
-* [PHP 8.0 extensions](./#php-8-0-extensions)
-* [PHP 8.1 extensions](./#php-8-1-extensions)
-* [PHP 8.2 extensions](./#php-8-2-extensions)
-
-#### PHP 4.4 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|bcmath <br>bz2 <br>calendar <br>ctype <br>curl <br>dba <br>dbase <br>dbx <br>domxml <br>exif | fileinfo <br>ftp <br>gd <br>gettext <br>gmp <br>iconv <br>imap <br>interbase <br>ioncube_loader <br>json <br>ldap  | mbstring <br>mcrypt <br>mhash <br>mysql <br>mysql <br>ncurses <br>odbc <br>openssl <br>overload <br>pcntl <br>pcre | pgsql <br>posix <br>pspell <br>readline <br>recode <br>session <br>shmop <br>snmp <br>sockets <br>sourceguardian | standard <br>sybase_ct <br>sysvmsg <br>sysvsem <br>sysvshm <br>tokenizer <br>wddx <br>xml <br>xmlrpc <br>zlib|
-</div>
-
-#### PHP 5.1 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|Reflection <br>SPL <br>SimpleXML <br>bcmath <br>big_int <br>bitset <br>bz2 <br>bz2_filter <br>calendar <br>coin_acceptor <br>crack <br>ctype <br>curl <br>date <br>dba <br>dbase <br>dom <br>doublemetaphone <br>exif | ftp <br>gd <br>geoip <br>gettext <br>gmagick <br>gmp <br>gnupg <br>haru <br>hash <br>huffman <br>iconv <br>idn <br>igbinary <br>imagick <br>imap <br>inclued <br>inotify <br>interbase  |  <br>oncube_loader<br>ldap <br>libxml <br>lzf <br>mbstring <br>mcrypt <br>memcache <br>msgpack <br>mysql <br>mysqli <br>ncurses <br>odbc <br>openssl <br>pcntl <br>pcre <br>pdo <br>pdo_oci* <br>pdo_firebird | pdo_mysql <br>pdo_odbc <br>pdo_pgsql <br>pdo_sqlite <br>pgsql <br>posix <br>pspell <br>quickhash <br>radius <br>readline <br>redis <br>session <br>shmop <br>snmp <br>sourceguardian <br>soap <br>sockets <br>ssh2  | standard <br>stats <br>stem <br>sybase_ct <br>sysvmsg <br>sysvsem <br>sysvshm <br>tidy <br>timezonedb <br>tokenizer <br>translit <br>wddx <br>xdebug <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br>xsl <br>zlib |
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-#### PHP 5.2 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|Reflection <br>SPL <br>SimpleXML <br>apc <br>apm <br>ares <br>bcmath <br>bcompiler <br>big_int <br>bitset <br>bloomy <br>bz2 <br>bz2_filter <br>calendar <br>coin_acceptor <br>crack <br>ctype <br>curl <br>date <br>dba <br>dbase <br>dbx <br>dom <br>doublemetaphone <br>eaccelerator <br>enchant <br>exif <br>ffmpeg** | fileinfo <br>filter <br>ftp <br>gd <br>gender <br>geoip <br>geos <br>gettext <br>gmagick <br>gmp <br>gnupg <br>haru <br>hash <br>hidef <br>htscanner <br>http <br>huffman <br>iconv <br>idn <br>igbinary <br>imagick <br>imap <br>inclued <br>inotify <br>interbase <br>intl <br>ioncube_loader| json <br>ldap <br>libxml <br>lzf <br>mailparse <br>mbstring <br>mcrypt <br>memcache <br>memcached <br>mhash <br>mongo <br>msgpack <br>mssql <br>mysql <br>mysqli <br>ncurses <br>oauth <br>odbc <br>opcache <br>openssl <br>pcntl <br>pcre <br>pdf <br>pdo <br>pdo_dblib <br>pdo_firebird |  <br>pdo_mysql <br>pdo_oci** <br>pdo_odbc <br>pdo_pgsql <br>pdo_sqlite <br>pgsql <br>phar <br>posix <br>pspell <br>quickhash <br>radius <br>rar <br>readline <br>recode <br>redis <br>rsync <br>session <br>shmop <br>snmp <br>soap <br>sockets <br>sourceguardian <br>spl_types <br>sqlite <br>ssh2 <br>standard <br>stats <br>stem | stomp <br>suhosin <br>sybase_ct <br>sysvmsg <br>sysvsem <br>sysvshm <br>tidy <br>timezonedb <br>tokenizer <br>translit <br>uploadprogress <br>uuid <br>wddx <br>xcache <br>xcache_3 <br>xdebug <br>xhprof <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br>xrange <br>xsl <br>xcache<sup>*</sup> <br>yaf <br>yaz <br>zend_optimizer <br>zip <br>zlib|
-</div>
-
-<sup>*</sup> CloudLinux 6
-
-<sup>**</sup> CloudLinux 6/7
-
-#### PHP 5.3 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|amqp<br> apc <br>apcu <br>apm <br>ares <br>bcmath <br>bcompiler <br>big_int <br>bitset <br>bloomy <br>brotli <br>bz2 <br>bz2_filter <br>calendar <br>clamav** <br>coin_acceptor <br>core <br>crack <br>ctype <br>curl <br>date <br>dba <br>dbase <br>dbx <br>dom <br>doublemetaphone <br>eaccelerator <br>eio <br>enchant <br>ereg <br>exif <br>ffmpeg* <br>fileinfo <br> filter <br>ftp | functional <br> gd <br>gender <br>geoip <br> geos <br> gettext <br>gmagick <br>gmp <br>gnupg <br>haru <br>hash <br>hidef <br>htscanner <br>http <br>huffman <br>iconv <br>idn <br>igbinary <br>imagick <br>imap <br>inclued <br>inotify <br>interbase <br>intl <br>ioncube_loader <br> jsmin <br>json <br>ldap <br>libevent <br>libxml <br>lzf | mailparse <br>mbstring <br>mcrypt <br>memcache <br>memcached <br>mhash <br>mongo <br>msgpack <br>mssql <br>mysql <br>mysqli <br>mysqlnd <br>ncurses <br>nd_mysql <br>nd_mysqli <br>nd_pdo_mysql <br>oauth <br>odbc <br>opcache <br>openssl <br>pcntl <br>pcre <br>pdf <br>pdo <br> pdo_oci* <br>pdo_dblib <br>pdo_firebird <br>pdo_mysql <br>pdo_odbc <br>pdo_pgsql <br>pdo_sqlite <br> pgsql | phalcon* <br>phar <br> posix <br>propro <br>pspell <br>quickhash <br>radius <br>raphf <br>rar <br>readline <br>recode <br>redis <br>reflection <br>rsync <br>session <br>shmop <br>simplexml <br>snmp <br>soap <br>sockets <br>sourceguardian <br> solr <br>spl <br>spl_types <br>sqlite <br>sqlite3 <br>ssh2 <br>standard <br>stats <br>stem <br>stomp <br>suhosin | sybase_ct <br>sysvmsg <br> sysvsem <br> sysvshm <br>tidy <br> tideways <br>timezonedb <br>tokenizer <br>trader <br>translit <br>uploadprogress <br>uri_template <br>uuid <br>wddx <br>weakref <br>xcache* <br>xcache_3 <br>xdebug <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br>xrange <br>xsl <br> xhprof <br>yaf <br>yaml <br>yaz <br>zend_guard_loader <br>zip <br>zlib <br>zmq|
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-#### PHP 5.4 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|aapm** <br>amqp <br> apc <br>apcu <br>apm <br>ares <br>bcmath <br>big_int <br>bitset <br>brotli <br>bz2 <br>bz2_filter <br>calendar <br>core <br>ctype <br>curl <br>clos_ssa <br>date <br>dba <br>dbase <br>dbx <br>dom <br>doublemetaphone <br>eaccelerator <br>eio <br>enchant <br>ereg <br>exif <br>ffmpeg* <br>fileinfo <br>filter <br>ftp <br>functional <br>gd <br> gender | geoip <br> geos <br>gettext <br>gmagick <br>gmp <br>gnupg <br>haru <br>hash <br>hidef <br>htscanner <br>http <br>iconv <br>igbinary <br>imagick <br>imap <br>inclued <br>inotify <br>interbase <br>intl <br>ioncube_loader <br>json <br>ldap <br>libevent <br>libsodium <br>libxml <br>lzf <br> luasandbox* <br>mailparse <br>mbstring| mcrypt <br>memcache <br>memcached <br>mhash <br>mongo <br>mongodb <br>msgpack <br>mssql <br>mysql <br>mysqli <br>mysqlnd <br>ncurses <br>nd_mysql <br>nd_mysqli <br>nd_pdo_mysql <br>oauth <br>oci8* <br>odbc <br>opcache <br>openssl <br>pcntl <br>pcre <br>pdf <br>pdo <br>pdo_dblib <br>pdo_firebird <br>pdo_mysql <br>pdo_odbc <br>pdo_pgsql <br>pdo_sqlite <br> pdo_oci* <br>pgsql <br>phalcon* <br>phar  | posix <br>propro <br>pspell <br>quickhash <br>radius <br>raphf <br>rar <br>readline <br>recode <br>redis <br>reflection <br>rsync <br>session <br>shmop <br>simplexml <br>snmp <br>soap <br>sockets <br> solr <br>sourceguardian <br>spl <br>spl_types <br>sqlite3 <br>ssh2 <br>standard <br>stats <br>stem <br>stomp <br>suhosin <br>sybase_ct <br>sysvmsg | sysvsem <br>sysvshm <br>tidy <br> tideways <br> timezonedb <br>tokenizer <br>trader <br>translit <br>uploadprogress <br>uri_template <br>uuid <br>wddx <br>weakref <br>xcache* <br>xcache_3 <br>xdebug <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br>xrange <br>xray*** <br>xsl <br> xhprof <br> jsmin <br> yaf <br>yaml <br>yaz <br>zend_guard_loader <br>zip <br>zlib <br>zmq|
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-<sup>***</sup> CloudLinux 7/8
-
-#### PHP 5.5 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|aapm** <br>amqp <br> apcu <br>apm <br>ares <br>bcmath <br>big_int <br>bitset <br>brotli <br>bz2 <br>bz2_filter <br>calendar <br>clamav** <br>core <br>ctype <br>curl <br> clos_ssa <br>date <br>dba <br>dbase <br>dbx <br>dom <br>doublemetaphone <br> diseval <br>eio <br>enchant <br>ereg <br>exif <br>ffmpeg* <br>fileinfo <br>filter <br>ftp <br>gd <br>gender <br>geoip | geos <br> gettext <br>gmagick <br>gmp <br>gnupg <br>gRPC <br>haru <br>hash <br>hidef <br>htscanner <br>http <br>iconv <br>igbinary <br>imagick <br>imap <br>inotify <br>interbase <br>intl <br>ioncube_loader <br>jsmin <br>json <br>ldap <br>libevent <br>libsodium <br>libxml <br>lzf <br> luasandbox* <br>mailparse <br>mbstring <br>mcrypt | memcache <br>memcached <br>mhash <br>mongo <br>mongodb <br>msgpack <br>mssql <br>mysql <br>mysqli <br>mysqlnd <br>ncurses <br>nd_mysql <br>nd_mysqli <br>nd_pdo_mysql <br>oauth <br>oci8* <br>odbc <br>opcache* <br>openssl <br>pcntl <br>pcre <br>pdf <br>pdo <br>pdo_dblib <br>pdo_firebird <br>pdo_mysql <br>pdo_odbc <br>pdo_pgsql <br>pdo_sqlite <br> pdo_oci* <br>pgsql | phalcon* <br>phalcon3 <br>phar <br>posix <br>postal* <br>propro <br>pspell <br>quickhash <br>radius <br>raphf <br>rar <br>readline <br>recode <br>redis <br>reflection <br>rsync <br>session <br>shmop <br>simplexml <br>snmp <br>soap <br>sockets <br>sourceguardian <br> solr <br>spl <br>spl_types <br>sqlite3 <br>ssh2 <br>standard <br>stats <br>stem <br>stomp <br>suhosin | sybase_ct <br>sysvmsg <br>sysvsem <br>sysvshm <br>tidy <br> tideways <br>timezonedb <br>tokenizer <br>trader <br>translit <br>uploadprogress <br>uri_template <br>uuid <br>wddx <br>weakref <br>xcache_3 <br>xdebug <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br>xrange <br>xray <br>xsl <br> xhprof <br>yaf <br>yaml <br>yaz <br>zend_guard_loader <br>zip <br>zlib <br>zmq |
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-
-#### PHP 5.6 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|aapm** <br> amqp <br> apcu <br>apm <br>ares <br>bcmath <br>big_int <br>bitset <br>brotli <br>bz2 <br>bz2_filter <br>calendar <br>core <br>ctype <br>curl <br> clos_ssa** <br>date <br>dba <br> dbase <br>dbx <br>dom <br>doublemetaphone <br> diseval <br>eio <br>enchant <br>ereg <br>exif <br>ffmpeg* <br>fileinfo <br>filter <br>ftp <br>gd <br>gender <br>geoip <br>gettext | geos <br> gmagick <br>gmp <br>gnupg <br>gRPC <br>haru <br>hash <br>htscanner <br>http <br>iconv <br>igbinary <br>imagick <br>imap <br>inotify <br>interbase <br>intl <br>ioncube_loader <br> jsmin <br>json <br>ldap <br>libevent <br>libsodium <br>libxml <br>lzf <br> luasandbox* <br>mailparse <br>mbstring <br>mcrypt <br>memcache <br>memcached <br>mhash | mongo <br>mongodb <br>msgpack <br>mssql <br>mysql <br>mysqli <br>mysqlnd <br>ncurses <br>nd_mysql <br>nd_mysqli <br>nd_pdo_mysql <br>oauth <br>oci8 <br>odbc <br>opcache* <br>openssl <br>pcntl <br>pcre <br>pdf <br>pdo <br>pdo_dblib <br>pdo_firebird <br>pdo_mysql <br>pdo_odbc <br>pdo_pgsql <br>pdo_sqlite <br> pdo_oci* <br>pgsql <br>phalcon* <br>phalcon3 | phar <br>posix <br> postal** <br>propro <br>pspell <br>quickhash <br>radius <br>raphf <br>rar <br>readline <br>recode <br>redis <br>reflection <br>rsync <br>session <br>shmop <br>simplexml <br>snmp <br>soap <br>sockets <br>sourceguardian <br>spl <br>spl_types <br>sqlite3 <br>ssh2 <br>standard <br>stats <br>stem <br>stomp <br> solr | suhosin <br>sybase_ct <br>sysvmsg <br>sysvsem <br>sysvshm <br>tidy <br>timezonedb <br>tokenizer <br>trader <br>translit <br> tideways <br>uploadprogress <br>uri_template <br>uuid <br>wddx <br>xcache_3 <br>xdebug <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br>xrange <br>xray <br>xsl <br> xhprof <br>yaml <br>yaz <br>zend_guard_loader <br>zip <br>zlib <br>zmq|
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-
-#### PHP 7.0 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|aapm** <br>amqp <br> apcu <br>bcmath <br>bitset <br>brotli <br>bz2 <br>clos_ssa** <br> calendar <br>core <br>ctype <br>curl <br>date <br>dba <br>dbase <br>dom <br> diseval <br>eio <br>enchant <br>exif <br>fileinfo <br>filter <br>ftp <br> ffmpeg* <br>gd <br> gearman <br> gender <br> geos | geoip <br>gettext <br>gmagick <br>gmp <br>gnupg <br>gRPC <br>hash <br>htscanner <br>http <br>iconv <br>igbinary <br>imagick <br>imap <br>inotify <br>interbase <br>intl <br>ioncube_loader <br> jsmin <br>json <br>ldap <br>libsodium <br>libxml <br>lzf <br> luasandbox*  <br>mailparse <br>mbstring <br>mcrypt | memcached <br> memcache <br>mongodb <br>mysqli <br>mysqlnd <br>nd_mysqli <br>nd_pdo_mysql <br>_newrelic_ <br>oauth <br>oci8* <br>odbc <br>opcache <br>openssl <br>pcntl <br>pcre <br>pdf <br>pdo <br>pdo_dblib <br>pdo_firebird <br>pdo_mysql <br> psr <br>pdo_odbc <br>pdo_pgsql <br>pdo_sqlite <br>pdo_sqlsrv <br> pdo_oci  <br>pgsql <br>phalcon3 <br>phar | posix <br> postal** <br>propro <br>pspell <br> phalcon4 <br>raphf <br>rar <br>readline <br> rrd <br>redis <br>reflection <br> recode <br>session <br>shmop <br>simplexml <br>snmp<br>snuffleupagus <br>soap <br>sockets <br>sourceguardian <br> sodium <br> solr <br>spl <br>sqlite3 <br>sqlsrv <br>ssh2 <br>standard <br>stats <br>suhosin7 <br>sysvmsg | swoole <br> sysvsem <br>sysvshm <br>tidy <br>timezonedb <br>tokenizer <br>trader <br> tideways_xhprof <br>uploadprogress <br>uuid <br>vips* <br>vld** <br>wddx <br>xdebug <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br> xray <br>xsl <br>yaml <br>yaz <br> yaf <br>zip <br>zlib <br>zmq|
-</div>
-
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-::: tip Note
-To use <span class="notranslate">`newrelic`</span> extension you should set your own <span class="notranslate">`New Relic License Key`</span> in your own <span class="notranslate">`/opt/alt/php7*/etc/php.ini`</span> file.
-Please find more info about <span class="notranslate">New Relic License Key</span> in the <span class="notranslate">[New Relic documentation](https://docs.newrelic.com/docs/accounts/install-new-relic/account-setup/license-key)</span>.
-:::
-
-
-#### PHP 7.1 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|aapm** <br>amqp <br> snuffleupagus <br> vld <br> apcu <br>bcmath <br>brotli <br>bz2 <br> clos_ssa** <br> calendar <br>core <br>ctype <br>curl <br>date <br>dba <br>dbase <br>dom <br> diseval <br>eio <br>enchant <br>exif <br>fileinfo <br>filter <br>ftp <br> ffmpeg* <br>gd <br>gearman <br>gender <br>geoip <br>gettext | geos <br> gmagick <br>gmp <br>gnupg <br>gRPC <br>hash <br>htscanner <br>http <br>iconv <br>igbinary <br>imagick <br>imap <br>inotify <br>interbase <br>intl <br>ioncube_loader <br> jsmin <br> json <br>ldap <br>libsodium <br>libxml <br>lzf <br> luasandbox* <br>mailparse <br>mbstring <br>mcrypt <br>memcached | memcache <br> mongodb <br>mysqli <br>mysqlnd <br>nd_mysqli <br>nd_pdo_mysql <br>_newrelic_ <br>oauth <br>oci8 <br>odbc <br>opcache <br>openssl <br>pcntl <br>pcre <br>pdo <br>pdo_dblib <br>pdo_firebird <br>pdo_mysql <br>pdo_odbc <br>pdo_pgsql psr <br> <br>pdo_sqlite <br>pdo_sqlsrv <br>pgsql <br>phalcon3 <br>phar <br> pdf | pdo_oci <br> phalcon4 <br> posix <br>propro <br>pspell <br>psr** <br>raphf <br>rar <br>readline <br>redis <br>reflection <br>rrd <br> recode <br> solr <br>session <br>shmop <br>simplexml <br>snmp <br>soap <br>sockets <br>sourceguardian <br>spl <br> sodium <br> sqlite3 <br>sqlsrv <br>ssh2 <br>standard <br>stats <br>suhosin7 <br>sysvmsg | swoole <br> sysvsem <br>sysvshm <br>tidy <br>timezonedb <br>tokenizer <br>trader <br> tideways_xhprof <br>uploadprogress <br>uuid <br>vips* <br>wddx <br>xdebug <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br>xsl <br>xray <br> yaz <br> yaml <br> yaf <br>zip <br>zlib <br>zmq|
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-
-::: tip Note
-To use <span class="notranslate">`newrelic`</span> extension you should set your own <span class="notranslate">`New Relic License Key`</span> in your own <span class="notranslate">`/opt/alt/php7*/etc/php.ini`</span> file.
-Please find more info about <span class="notranslate">New Relic License Key</span> in the <span class="notranslate">[New Relic documentation](https://docs.newrelic.com/docs/accounts/install-new-relic/account-setup/license-key)</span>.
-:::
-
-#### PHP 7.2 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|aapm** <br> jsmin <br> psr <br> rrd <br> yaz <br> amqp <br> snuffleupagus <br> vld <br> apcu <br>bcmath <br>brotli <br>bz2 <br>calendar <br> clos_ssa** <br> core <br>ctype <br>curl <br>date <br>dba <br>dom <br> dbase <br> diseval  <br>eio <br>enchant <br>exif <br>fileinfo <br>filter <br>ftp <br> ffmpeg* <br>gd <br>gender <br>geoip <br>gettext | gearman <br> geos <br> gmagick <br>gmp <br>gnupg <br>gRPC <br>hash <br>http <br>iconv <br>igbinary <br>imagick <br>imap <br>inotify <br>interbase <br>intl <br>ioncube_loader <br>json <br>ldap <br>libxml <br>lzf <br> luasandbox* <br> mcrypt <br> memcache <br> mailparse <br>mbstring <br>memcached <br>mongodb | mysqli <br>mysqlnd <br>nd_mysqli <br>nd_pdo_mysql <br>_newrelic_ <br>oauth <br>oci8 <br>odbc <br>opcache <br>openssl <br>pcntl <br>pcre <br>pdo <br>pdo_dblib <br>pdo_firebird <br> pdf <br> pdo_oci <br> phalcon4  <br> pdo_mysql <br>pdo_odbc <br>pdo_pgsql <br>pdo_sqlite <br>pdo_sqlsrv <br>pgsql <br>phalcon3 <br>phar | posix <br>propro <br>pspell <br>raphf <br>readline <br>redis <br>reflection <br> recode <br> sodium <br> sourceguardian <br> swoole  <br>session <br>shmop <br>simplexml <br>snmp <br>soap <br>sockets <br>spl <br>sqlite3 <br>sqlsrv <br>ssh2 <br>standard <br>stats <br>sysvmsg <br>sysvsem | sysvshm <br>tidy <br>timezonedb <br>tokenizer <br>trader <br> tideways_xhprof <br>uploadprogress <br>uuid <br>vips* <br>wddx <br>xml <br>xmlreader <br>xmlrpc <br>xmlwriter <br>xsl <br> xdebug <br> yaf <br>yaml <br>zip <br>zlib <br>zmq <br> xray|
-</div>
-
-::: tip Note 
-To use <span class="notranslate">`newrelic`</span> extension you should set your own <span class="notranslate">`New Relic License Key`</span> in your own <span class="notranslate">`/opt/alt/php7*/etc/php.ini`</span> file.
-You can find more info about <span class="notranslate">New Relic License Key</span> in the <span class="notranslate">[New Relic documentation](https://docs.newrelic.com/docs/accounts/install-new-relic/account-setup/license-key)</span>.
-:::
-
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-
-#### PHP 7.3 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | | |
-|-|-|-|-|-|-|
-|ffmpeg* <br> aapm** <br>amqp <br> clos_ssa** <br> gearman <br> jsmin <br> mailparse <br> memcache <br> psr <br> rrd <br> solr <br> tideways_xhprof <br> zmq <br> snuffleupagus <br> vld <br> apcu <br> bz2 <br> brotli <br> calendar <br> core <br> ctype <br> curl <br> date <br> exif <br>enchant <br> filter <br> ftp <br> gettext <br> gmp <br>gnupg <br> hash <br> iconv <br> interbase <br> luasandbox* | libxml <br>mysqlnd <br>opcache <br> openssl <br> pcntl <br> pcre <br>pdo_pgsql <br> phar <br> readline <br> reflection <br> session <br> shmop <br> simplexml <br> sourceguardian <br> spl <br> sqlite3 <br>standard <br> snmp <br> stats <br> tokenizer | trader <br>xmlreader <br>bcmath <br>fileinfo <br> grpc <br>intl <br>lzf <br>nd_mysqli <br>pdf <br>pdo <br>posix <br>swoole <br>uploadprogress <br>xmlrpc <br>gd <br>http <br>ioncube_loader <br> mbstring | nd_pdo_mysql <br>pdo_dblib <br>pdo_sqlite <br>propro <br>soap <br>sysvmsg <br>uuid <br>xmlwriter <br>dbase <br>gender <br>igbinary <br>mcrypt <br>newrelic <br> pdo_firebird <br>pdo_sqlsrv <br>pspell <br>sockets <br>sysvsem <br>vips* <br>xsl | dba <br>geoip <br>imagick <br>json <br>memcached <br>oauth <br>pdo_mysql <br>pgsql <br> raphf <br>sodium <br>sysvshm <br>yaml <br>dom <br>geos <br>imap <br>ldap <br>mongodb <br>oci8 <br>pdo_oci | phalcon3 <br>recode <br>sqlsrv <br> tidy <br>wddx <br>yaz <br>eio <br>gmagick <br>inotify <br>leveldb <br>mysqli <br>odbc <br>pdo_odbc <br>phalcon4 <br>redis <br>ssh2 <br>timezonedb <br>xdebug <br>zip <br> xml <br> zlib <br> xray <br> yaf| 
-
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-:::tip Note
-To use <span class="notranslate">`newrelic`</span> extension you should set your own <span class="notranslate">`New Relic License Key`</span> in your own <span class="notranslate">`/opt/alt/php7*/etc/php.ini`</span> file.
-You can find more info about <span class="notranslate">New Relic License Key</span> in the <span class="notranslate">[New Relic documentation](https://docs.newrelic.com/docs/accounts/install-new-relic/account-setup/license-key)</span>.
-:::
-
-#### PHP 7.4 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|leveldb <br> sourceguardian <br> ffmpeg* <br> amqp <br> clos_ssa** <br> gearman <br> ioncube_ loader <br> jsmin <br> mailparse <br> mcrypt <br> memcache <br> psr <br> rrd <br> solr <br> ssh2 <br> tideways_xhprof <br> yaz <br> zmq <br> apcu <br> bcmath <br> brotli <br> bz2 <br> calendar <br> core <br> ctype <br> curl <br> date <br> dba <br> dbase <br> dom <br> eio <br> enchant <br> exif <br> fileinfo <br> filter <br> ftp <br> gd <br> gender <br> geoip <br> geos | gettext <br> gmagick <br> gmp <br> gnupg <br> grpc <br> hash <br> http <br> iconv <br> igbinary <br> imagick <br> imap <br> inotify <br> intl <br> json <br> ldap <br> libxml <br> luasandbox* <br> lzf <br> mbstring <br> memcached <br> mongodb | mysqli <br> mysqlnd <br> nd_mysqli <br> nd_pdo_mysql <br> newrelic <br> snuffleupagus <br> oauth <br> oci8 <br> odbc <br> opcache <br> openssl <br> pcntl <br> pcre <br> pdf <br> pdo <br> pdo_dblib <br> pdo_firebird <br> pdo_mysql <br> pdo_oci <br> pdo_odbc <br> pdo_pgsql <br> vld <br> pdo_sqlite <br> pdo_sqlsrv | pgsql <br> phalcon4 <br> phar <br> posix <br> propro <br> pspell <br> raphf <br> readline <br> redis <br> reflection <br>phalcon5 <br> session <br> shmop <br> simplexml <br> snmp <br> soap <br> sockets <br> sodium <br> spl <br> sqlite3 <br> sqlsrv <br> standard | stats <br> swoole <br> sysvmsg <br> sysvsem <br> sysvshm <br> tidy <br> timezonedb <br> tokenizer <br> trader <br> xray <br> uploadprogress <br> uuid <br> vips* <br> xdebug <br> xml <br> xmlreader <br> xmlrpc <br> xmlwriter <br> xsl <br> yaml <br> zip <br> zlib |
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7
-
-#### PHP 8.0 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|brotli <br> amqp <br> clos_ssa*** <br> core <br> date <br> filter <br> gearman <br> geoip <br> gmagick <br> gnupg*** <br> grpc <br> apcu <br> bcmath <br> bz2 <br> calendar <br> ctype <br> curl <br> dba <br> dbase <br> dom <br> enchant <br> exif <br> ffi** <br> fileinfo | hash <br> igbinary <br> inotify <br> jsmin <br> json <br> libxml <br> mcrypt <br> memcache ftp <br> gd <br> gettext <br> gmp <br> iconv <br> imagick <br> imap <br> intl <br> ldap <br> lzf <br> mailparse <br> mbstring | mongodb <br> newrelic <br> oauth <br> oci8 <br> openssl <br> pcntl <br> pcre <br> pdo_oci <br> pdo_sqlsrv <br> readline <br> redis <br> reflection <br> rrd <br> session memcached <br> mysqli <br> mysqlnd <br> nd_mysqli <br> nd_pdo_mysql <br> odbc <br> opcache <br> pdo <br> pdo_dblib <br> pdo_firebird <br> pdo_mysql <br> pdo_odbc | snuffleupagus <br> solr <br> SPL <br> sqlsrv <br> ssh2 <br> standard <br> swoole <br> tideways_xhprof <br> trader pdo_pgsql <br> pdo_sqlite <br> pgsql <br> phar <br> posix <br> pspell <br> psr <br> raphf <br> shmop <br> simplexml <br> snmp <br> soap <br> sockets | uploadprogress <br> uuid <br> vips* <br> vld <br> xdebug <br> xmlrpc** <br> yaml <br> yaz <br> zip <br> zlib sodium <br> sqlite3 <br> sysvmsg <br> sysvsem <br> sysvshm <br> tidy <br> timezonedb <br> tokenizer <br> xml <br> xmlreader <br> xmlwriter <br> xsl <br> zmq <br>sourceguardian <br> phalcon5 <br> xray |
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7/8
-
-<sup>***</sup> CloudLinux 7
-
-#### PHP 8.1 extensions
-
-
-<div class="notranslate">
-
-| |  |  |  | |
-|-|-|-|-|-|
-|amqp <br> apcu <br> bcmath <br> brotli <br> bz2 <br> calendar <br> clos_ssa*** <br> Core <br> ctype <br> curl <br> date <br> dba <br> dbase <br> dom <br> enchant <br> exif <br> ffi** <br> fileinfo <br> filter <br> ftp | gd <br> geoip <br> gearman <br> gettext <br> gmagick <br> gmp <br> gnupg** <br> grpc <br> hash <br> ioncube_loader <br> iconv <br> igbinary <br> imagick <br> imap <br> inotify <br> intl <br> jsmin <br> json <br> ldap <br> libxml <br> lzf <br> mailparse <br> mbstring <br> mcrypt | memcache <br> memcached <br> mongodb <br> mysqli <br> mysqlnd <br> nd_mysqli <br> nd_pdo_mysql <br> newrelic <br> oauth <br> oci8 <br> odbc <br> opcache <br> openssl <br> pcntl <br> pcre <br> pdo <br> pdo_dblib <br> pdo_mysql <br> pdo_oci <br> pdo_odbc <br> phalcon5 <br> pdo_pgsql <br> pdo_firebird <br> pdo_sqlite <br> pdo_sqlsr | pgsql <br> phar <br> posix <br> process <br> pspell <br> psr <br> rrd <br> raphf <br> readline <br> redis <br> Reflection <br> session <br> shmop <br> SimpleXML v snmp <br> solr <br> sourceguardian <br> soap <br> sockets <br> sodium <br> SPL <br> sqlite3 <br> sqlsrv <br> ssh2 <br> standard <br> swoole | sysvmsg <br> sysvsem <br> sysvshm <br> tideways_xhprof <br> tidy <br> timezonedb <br> tokenizer <br> trader <br> uploadprogress <br> uuid <br> vips* <br> xdebug <br> xml <br> xmlreader <br> xmlrpc** <br> xmlwriter <br> xsl <br> yaf <br> yaml <br> zip <br> zlib <br> zmq <br> xray |
-</div>
-
-<sup>*</sup> CloudLinux 6/7
-
-<sup>**</sup> CloudLinux 7/8
-
-<sup>***</sup> CloudLinux 7
-
-
-
-#### PHP 8.2 extensions
-
-
-| | | | | |
-|-|-|-|-|-|
-|amqp** <br> apcu** <br> bcmath <br> brotli** <br> bz2 <br> calendar <br> Core <br> ctype <br> curl <br> date <br> dba <br> dbase** <br> dom <br> enchant <br> exif <br> ffi <br> fileinfo <br> filter <br> ftp <br> gd <br> gearman** <br> geoip** | gettext <br> gmagick** <br> gmp <br> gnupg* <br> grpc** <br> hash <br> iconv <br> igbinary** <br> imagick** <br> imap <br> inotify** <br> intl <br> jsmin** <br> json <br> ldap <br> libxml <br> lzf** <br> mailparse** <br> mbstring <br> mcrypt** <br> memcache** <br> memcached** | mongodb** <br> mysqlnd <br> nd_mysqli <br> nd_pdo_mysql <br> oauth** <br> oci8** <br> odbc <br> opcache <br> openssl <br> pcntl <br> pcre** <br> pdo <br> pdo_dblib <br> pdo_firebird <br> pdo_mysql* <br> pdo_oci** <br> pdo_odbc <br> pdo_pgsql <br> pdo_sqlite <br> pdo_sqlsrv** <br> pgsql | phar <br> posix <br> pspell <br> psr** <br> random <br> raphf** <br> readline <br> redis** <br> Reflection <br> rrd** <br> session <br> shmop <br> SimpleXML <br> snmp <br> soap <br> sockets <br> sodium <br> solr** <br> SPL <br> sqlite3 <br> sqlsrv** <br> ssh2** | standard <br> swoole** <br> sysvmsg <br> sysvsem <br> sysvshm <br> tideways_xhprof** <br> tidy <br> timezonedb** <br> tokenizer <br> trader** <br> uploadprogress** <br> uuid** <br> vips* <br> xdebug** <br> xml <br> xmlreader <br> xmlrpc** <br> xmlwriter <br> xsl <br> yaml** <br> zip <br> zlib <br> zmq**|
-
-
-<sup>*</sup> CloudLinux 7
-
-<sup>**</sup> CloudLinux 7/8
-
-## Python Selector
-
-### General information
-
-<span class="notranslate">Python Selector</span> is a CloudLinux OS Shared component that allows each user to easily deploy and manage Python applications. Users can manage applications at the control panel interface level or from the command line (CLI).
-
-### Requirements
-
-* cPanel or DirectAdmin control panel. Plesk isn't supported.
-* Apache or LiteSpeed webserver. Apache + Nginx (as a reverse proxy) combination is also supported.
-* Python Selector uses <span class="notranslate">`mod_passenger`</span> to host Python. For more details about <span class="notranslate">`mod_passenger`</span>, please read [documentation](https://www.phusionpassenger.com/). The needed version will be installed along with Python Selector.
-
-### Supported versions
-
-* Python Selector supports the following alt-python versions for all actual CloudLinux OS Shared versions:
-
-  * <span class="notranslate">`alt-python 2.7`</span>
-  * <span class="notranslate">`alt-python 3.3`</span>
-  * <span class="notranslate">`alt-python 3.4`</span>
-  * <span class="notranslate">`alt-python 3.5`</span>
-  * <span class="notranslate">`alt-python 3.6`</span>
-  * <span class="notranslate">`alt-python 3.7`</span>
-  * <span class="notranslate">`alt-python 3.8`</span>
-  * <span class="notranslate">`alt-python 3.9`</span>
-  * <span class="notranslate">`alt-python 3.10`</span>
-  
-### Installation
-
-You can install Python Selector using the [CloudLinux OS Shared Installation Wizard](/shared/lve_manager/#cloudlinux-os-shared-installation-wizard).
-
-After installation, please make sure that you have set appropriate checkboxes in CloudLinux Manager Options tab to show Python App in the web-interface.
-
-#### Manual installation
-
-Here you can find the installation steps for supported control panels:
-
-* [cPanel](./#cpanel-2)
-* [DirectAdmin](./#directadmin)
-
-#### cPanel
-
-To use Python Selector, it is required to install the following:
-
-* alternative Python packages by running the following command:
-  
-<div class="notranslate">
-
-```
-yum groupinstall alt-python
-```
-</div>
-
-* CloudLinux Manager, LVE Utils and Phusion Passenger to create isolated Python environments by running the following command:
-
-<div class="notranslate">
-
-```
-yum install lvemanager lve-utils alt-python-virtualenv
-```
-</div>
-    
-Phusion Passenger could be installed by using **either** ```ea-ruby24-mod_passenger``` **or** ```ea-ruby27-mod_passenger```. ```ea-ruby27-mod_passenger``` is **not** compatible with systems running CloudLinux OS Shared OS 6. CloudLinux OS Shared OS 7 supports **both** ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```. If your system runs CloudLinux OS Shared OS 8, you can **only** use ```ea-ruby27-mod_passenger```.
-
-Adding Python module requires executing permissions to <span class="notranslate">`gcc/make`</span> binaries.
-Please enable compilers in Compiler Access section of WHM, then run:
-
-<div class="notranslate">
-
-```
-cagefsctl --force-update
-```
-</div>
-
-* We recommend use CageFS for better security. See [CageFS documentation for details](./#cagefs).
-
-#### DirectAdmin
- 
-To use Python Selector, it is required to install the following:
-
-* alternative Python packages by running the following command:
-
-<div class="notranslate">
-
-```
-yum groupinstall alt-python
-```
-</div>
- 
-* CloudLinux Manager, LVE Utils and Phusion Passenger to create isolated Python environments by running the following command:
-
-<div class="notranslate">
-
-```
-yum install lve-utils lvemanager alt-python-virtualenv alt-mod-passenger
-```
-</div>
-
-* We recommend use CageFS for better security. See [CageFS documentation for details](./#cagefs).
-
-
-* See also [Python Selector UI](/shared/lve_manager/#python-selector-2).
-* See also [Python Selector CLI](/shared/command-line_tools/#python-selector).
-
-## Ruby Selector
-
-### General information and requirements
-
-We have the ability to deploy <span class="notranslate">Ruby</span> applications via an application server. <span class="notranslate">Ruby Selector</span> uses <span class="notranslate">`mod_passenger`</span> to host <span class="notranslate"> Ruby</span> applications.
-
-Ruby Selector works only on cPanel/WHM servers.
-
-You can find a list of supported <span class="notranslate">`alt-ruby`</span> versions using the following commands.
-
-<div class="notranslate">
-
-```
-yum grouplist | grep alt-ruby
-```
-</div>
-
-
-### Installation and update
-
-::: tip Note
-The instructions below are suitable only for EasyApache 3 and EasyApache 4. You should follow [this instruction](https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:enable_ruby_python_selector) if you use LiteSpeed.
-:::
-
-To use <span class="notranslate">Ruby Selector</span> install alternative <span class="notranslate">Ruby</span> packages:
-
-<div class="notranslate">
-
-```
-yum groupinstall alt-ruby 
-```
-</div>
-
-::: tip Note
-After installation, please make sure that you have unmarked appropriate checkboxes in <span class="notranslate"> VE Manager Options</span> tab to show <span class="notranslate">Ruby App</span> in web-interface. Find the instructions on the [link](./#hide-ruby-selector-icon).
-:::
-
-::: tip Note
-Adding Ruby modules requires executing permissions to <span class="notranslate">`gcc/make`</span> binaries. Please enable compilers in Compiler Access section of WHM, then run: <span class="notranslate">`cagefsctl --force-update`</span>
-:::
-
-### Configuration and using
-
-* [End user access](/shared/lve_manager/#ruby-selector-client-plugin)
-* [Hide Ruby Selector icon](./#hide-ruby-selector-icon)
-* [Deploying Redmine using Ruby Selector](./#deploying-redmine-using-ruby-selector)
-* [EasyApache 4](./#easyapache-4-2)
-
-#### End user access
-
-You can find an example of Ruby application setup [here](https://cloudlinux.zendesk.com/hc/en-us/articles/115004495049-How-to-run-Redmine-with-Ruby-Selector)
-
-:::tip Note
-See also Ruby Selector [CLI](/shared/command-line_tools/#ruby-selector) section.
-:::
-
-#### Hide Ruby Selector icon
-
-It is possible to hide or show <span class="notranslate">Ruby Selector</span> icon by marking or unmarking proper checkboxes in <span class="notranslate"> LVE Manager Options</span> tab.
-
-![](./images/CL-hide-ruby.png)
-
-The same result can be accomplished in CLI by running:
-
-<div class="notranslate">
-
-```
-cloudlinux-config set --json --data '{"options":{"uiSettings":{"hideRubyApp":false}}}'
-```
-</div>
- 
-:::tip Note
-If you are using cPanel/WHM, you can also configure hide/show <span class="notranslate">CloudLinux OS Shared Ruby Selectors</span> in <span class="notranslate">WHM | Feature Manager</span>.
-For that, you’d need to first uncheck <span class="notranslate">`Hide Ruby App in web-interface`</span> in the <span class="notranslate">LVE Manager</span>. This will make the menu appear for all accounts. After that, you are free to disable this app in <span class="notranslate">WHM | Feature Manager</span> for the required feature lists.
-:::
-
-#### Deploying Redmine using Ruby Selector
-
-::: tip Note
-You can find <span class="notranslate"> Redmine </span> version 2.6.0 and newer deployment guide [here](https://cloudlinux.zendesk.com/hc/en-us/articles/115004495049-How-to-run-Redmine-with-Ruby-Selector)
-:::
-
-#### EasyApache 4
-
-:::tip Note
-```ea-apache24-mod-alt-passenger``` is deprecated in favor of ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```
-:::
-
-Starting with cPanel/WHM version 66 provides <span class="notranslate">```ea-ruby24-mod_passenger```</span> (more information on the [link](https://documentation.cpanel.net/display/66Docs/Application+Manager)), this allows creating <span class="notranslate"> Ruby </span> applications with cPanel application manager.
-
-CloudLinux OS Shared features its own <span class="notranslate">Python and  Ruby Selectors</span>, which allow creating applications with one of <span class="notranslate">```mod_passenger```</span> Apache modules:
-
-* ```ea-ruby24-mod_passenger```
-* ```ea-ruby27-mod_passenger```
-
-```ea-ruby27-mod_passenger``` is **not** compatible with systems running CloudLinux OS Shared 6. CloudLinux OS Shared 7 supports **both** ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```. If your system runs CloudLinux OS 8, you can **only** use ```ea-ruby27-mod_passenger```.
-
-The <span class="notranslate"> ```ea-ruby2X-mod_passenger``` </span> allows you to run applications via <span class="notranslate"> cPanel application manager </span> and <span class="notranslate"> Ruby Selector</span>.
-
-To install, run:
-<div class="notranslate">
-
-```
-# yum install lvemanager alt-python-virtualenv
-# yum install ea-ruby24-mod_passenger
-```
-</div>
-
-or:
-
-<div class="notranslate">
-
-```
-# yum install lvemanager alt-python-virtualenv
-# yum install ea-ruby27-mod_passenger
-```
-</div>
-
-See also [Ruby Selector CLI tools](/shared/command-line_tools/#ruby-selector).
-
-
-## Node.js Selector
-
-### General information and requirements
-
-* [Requirements](./#requirements-3)
-* [Limitation](./#limitations)
-
-<span class="notranslate"> Node.js Selector </span>  is a CloudLinux OS Shared component that allows each user to easily create Node.js applications, choose Node.js version and other parameters for applications based on their needs.
-
-#### **Requirements**
-
-* <span class="notranslate"> Node.js Selector </span>  supports Node.js versions 6.x, 8.x, 9.x, 10.x, 11.x, 12.x, 14.x, 16.x, 18.x, 19.x.
-* <span class="notranslate"> Node.js Selector requires LVE Manager 4.0 </span> or later.
-* It supports cPanel and DirectAdmin servers as well as non-panel installations (Plesk is not supported as it already has Node.js support.) For more details, please go to Plesk & Node.js documentation [here](https://www.plesk.com/blog/product-technology/node-js-plesk-onyx/) and [here](https://docs.plesk.com/en-US/onyx/administrator-guide/website-management/nodejs-support.76652/) .
-* Node.js Selector uses <span class="notranslate">`mod_passenger`</span> to host Node.js. For more details about <span class="notranslate"> mod_passenger </span>  and Node.js, please read documentation  [here](https://www.phusionpassenger.com/library/walkthroughs/deploy/nodejs/)  and  [here](https://www.phusionpassenger.com/library/walkthroughs/deploy/nodejs/ownserver/apache/oss/el7/deploy_app.html) .
-* <span class="notranslate"> Node.js Selector </span> supports both EasyApache 3 and EasyApache 4.
-
-#### **Limitations**
-
-Since Node.js Selector uses <span class="notranslate">`mod_passenger`</span> to host Node.js, then Node.js Selector has the same limitations as Phusion Passenger. Phusion Passenger cannot load ECMAScript modules and can only load Common js modules.
-If you get an ERR_REQUIRE_ESM error when starting an application app.js.
-
-```
-Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: app.js
-```
-
-In this case you can use the following cjs wrapper app_wrapper.cjs to load esm script app.js:
-
-```
-cat app_wrapper.cjs
-(() => import('app.js'))();
-```
-
-### Installation and update
-
-:::tip Note
-Node.js Selector support is added to LiteSpeed Web Server starting from the 5.3RC1 release. See details [here](https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:node.js_selector).
-:::
-
-**cPanel**
-
-To use <span class="notranslate">Node.js Selector</span>, install <span class="notranslate">Node.js</span> packages by running the following command:
-<div class="notranslate">
-
-```
-yum groupinstall alt-nodejs
-```
-</div>
-Also, please install <span class="notranslate"> LVE Manager, LVE Utils and Phusion Passenger </span> by running the following command:
-<div class="notranslate">
-
-```
-yum install lvemanager lve-utils
-```
-</div>
-
-Phusion Passenger could be installed by using **either** ```ea-ruby24-mod_passenger``` **or** ```ea-ruby27-mod_passenger```. ```ea-ruby27-mod_passenger``` is **not** compatible with systems running CloudLinux OS Shared 6. CloudLinux OS Shared 7 supports **both** ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```. If your system runs CloudLinux OS Shared 8, you can **only** use ```ea-ruby27-mod_passenger```.
-    
-:::tip Note
-```ea-apache24-mod-alt-passenger``` is deprecated in favor of ```ea-ruby24-mod_passenger``` and ```ea-ruby27-mod_passenger```
-:::
-
-For EasyApache 3:
-<div class="notranslate">
-
-```
-yum install lvemanager lve-utils alt-mod-passenger
-```
-</div>
-And we recommend to install CageFS for better security (not mandatory) by running the following command:
-<div class="notranslate">
-
-```
-yum install cagefs
-```
-</div>
-
-::: tip Note
-If during Node.js Selector usage on cPanel servers you get "ENOMEM npm ERR! errno-12" error, try to increase Memory limit in <span class="notranslate"> cPanel WHM → Server Configuration → Tweak Settings → System → Max cPanel process memory, </span> then restart cPanel service with the following command to apply changes.
-:::
-
-
-CloudLinux OS Shared 7:
-<div class="notranslate">
-
-```
-systemctl restart cpanel.service
-```
-</div>
-
-CloudLinux OS Shared 6:
-<div class="notranslate">
-```
-service cpanel restart
-```
-</div>
-
-**DirectAdmin**
-
-To use <span class="notranslate"> Node.js Selector, please install Node.js </span> packages by running the following command:
-<div class="notranslate">
-
-```
-yum groupinstall alt-nodejs6 alt-nodejs8 alt-nodejs9
-```
-</div>
-Also, please install <span class="notranslate"> LVE Manager, LVE Utils and Fusion Passenger </span> by running the following command:
-<div class="notranslate">
-
-```
-yum install lvemanager lve-utils alt-mod-passenger
-```
-</div>
-And we recommend to install CageFS for better security (not mandatory) by running the following command:
-<div class="notranslate">
-
-```
-yum install cagefs
-```
-</div>
-
-
-
-### Node.js deployment
-
-
-* The first approach - remote usage of Node.js Interpreters of different versions
-* The second approach - remote usage of the cloudlinux-selector utility.
-
-* [Remote usage of Node.js interpreters](./#remote-usage-of-node-js-interpreters)
-* [Remote usage of the cloudlinux-selector utility](./#remote-usage-of-the-cloudlinux-selector-utility)
-
-#### Remote usage of Node.js interpreters
-
-1. Create a Node.js project in <span class="notranslate"> IntelliJ IDEA/WebStorm </span> . You can download [this archive](https://docs.cloudlinux.com/nodejs_example.zip) and use it as a basis.
-2. Install <span class="notranslate"> alt-nodejs </span> packages on the server in use. See [installation instructions](./#installation-and-update-7).
-3. Create an application on the server. You can do it by three ways:
-  * Via UI of the Node.js plugin.
-  * Using the following command to create an application:
-
-<div class="notranslate">
-
-```
-cloudlinux-selector create --interprete=nodejs --json --app-root=<USER_NAME> --app-uri=<APP_NAME> --app-mode=develompent --version=<VERSION> --domain=<DOMAIN>
-```
-</div>  
-
-::: tip Note
-In the <span class="notranslate"> IntelliJ IDEA </span> you can create and run any remote script <span class="notranslate"> (Preferences — Remote SSH External Tools — Add).</span>
-:::
-
-![](./images/createapp_zoom70.png)
-
-  * Choose a location of the application on the server and synchronize the files with the <span class="notranslate"> IntelliJ IDEA </span> project.
-4. Set up <span class="notranslate"> Run/Debug Configurations </span> in the project created.
-
-![](./images/setconfiguration_zoom70.png)
-
-  * Specify a path to the remote Node.js interpreter. To be able to specify the remote interpreter, you should install the <span class="notranslate"> _Node.js Remote Interpreter_ </span> plugin first. Please find more information [here](https://www.jetbrains.com/help/idea/configure-node-js-remote-interpreter.html) , using server access credentials for a user <span class="notranslate"> _(Main menu → Run → Edit configurations...)_ </span> .
-  * Specify initial _JavaScript file_ that will be run with the <span class="notranslate"> _node_ </span> command (it is the _app.js_ file from the archive).
-  * Specify <span class="notranslate"> _Path Mappings_ </span> between a local and a remote project <span class="notranslate"> _(Preferences → Deployments → Add)_ </span> . If you have created your application with the <span class="notranslate"> _cloudlinux-selector utility_ </span> or via plugin UI the <span class="notranslate"> _Path Mappings_ </span> should be as follows:
-
-<div class="notranslate">
-
-```
-/home/<USER_NAME>/<APP_NAME>
-```
-</div>
-
-5. Synchronize the project directories on the local and the remote machine as per <span class="notranslate"> _Path Mappings_ </span> specified.
-6. Deploy the modules on the remote and the local machine with the <span class="notranslate"> **_npm install_** </span> command (if there are dependent modules). In the UI you can click the <span class="notranslate"> _Run NPM Install_ </span> button.
-7. Run Node.js application with the configuration set at the 4th step <span class="notranslate"> _(Main menu → Run → Run… → Select configuration)_ </span> .
-
-![](./images/runapp_zoom60.png)
-
-8. If you are using the application from the archive attached, you can see the running application on port 3003 — <span class="notranslate"> _http://DOMAIN:3003_ . </span>
-
-::: tip Note
-The port should be available to a server user.
-:::
-
-![](./images/runningappdomain_zoom70.png)
-
-The following information should be displayed on this page:
-* A version of the running Node.js interpreter;
-* Current environment variables;
-* The current time.
-
-So that, you can be sure that deployed modules are used properly.
-
-If you’d like to use a different version of Node.js to run an application, change a path to the interpreter in the configuration settings of the running.  
-To apply all changes to the project, synchronize all changes with the server and restart the running application.
-
-9. To debug a script, set breakpoints in the code and run the configuration via Main Menu <span class="notranslate"> _(Main menu → Run → Debug… → Select configuration)_ </span> .
-
-Useful links:
-* <span class="notranslate"> IntelliJ IDEA </span> : [https://www.jetbrains.com/help/idea/configure-node-js-remote-interpreter.html](https://www.jetbrains.com/help/idea/configure-node-js-remote-interpreter.html)
-* Plugin <span class="notranslate"> _Node.js Remote Interpreter_ </span> : [https://plugins.jetbrains.com/plugin/8116-node-js-remote-interpreter](https://plugins.jetbrains.com/plugin/8116-node-js-remote-interpreter)
-* <span class="notranslate"> WebStorm </span> : [https://www.jetbrains.com/help/webstorm/configure-node-js-remote-interpreter.html](https://www.jetbrains.com/help/webstorm/configure-node-js-remote-interpreter.html)
-
-::: tip Note
-It is not required to install <span class="notranslate"> _Passenger_ </span> while working in <span class="notranslate"> IDE </span> if you are using this approach.
-:::
-
-#### Remote usage of the cloudlinux-selector utility
-
-
-1. Create an application via UI or with the command as described in the Remote Usage of Node.js Interpreters approach, step 3 (a,b).
-2. Set up project mapping on the local machine with the created remote application <span class="notranslate"> _/home/<USER_NAME>/<APP_NAME> (Preferences → Deployments → Add)_ </span>.
-3. Set up the remote commands of <span class="notranslate"> cloudlinux-selector _(Preferences → Remote SSH External Tools → Add)_ </span> for the following actions:
-  * Restart application;
-  * Install packages;
-  * Run script;
-  * Change Node.js version for the application.
-You can see the running app at <span class="notranslate"> http://DOMAIN/APPLICATION_URL </span>
-To apply all changes, restart the application.
-
-* See also [Node.js Selector CLI tools](/shared/command-line_tools/#node-js-selector).
-* See also [Node.js Selector UI](/shared/lve_manager/#node-js-selector-2).
-
-### Troubleshooting
-
-* [Debugging errors](./#debugging-errors)
-
-#### Debugging errors
-
-Since <span class="notranslate"> alt-mod-passenger-5.3.7-2,</span> directives such as PassengerFriendlyErrorPages and PassengerAppEnv are available for use from htaccess file. This allows end users to see errors from their application during the development process. For example, if you add one of the following lines to the htaccess file on the application page, you will see the information (if there was an error) similar to one on the picture.
-<div class="notranslate">
-
-```
-PassengerAppEnv development
-```
-</div>
-or
-<div class="notranslate">
-
-```
-PassengerFriendlyErrorPages on
-```
-</div>
-
-![](./images/errorapplog.png)
-
-This is a much more convenient approach to developing an application and debugging errors. On the other hand, if these directives are turned off you will see:
-
-![](./images/errorapplogsorry.png)
-
-In this case, there is no useful information for debugging errors and this is suitable for production mode. More information about [PassengerFriendlyErrorPages](https://www.phusionpassenger.com/library/config/apache/reference/#passengerfriendlyerrorpages) and [PassengerAppEnv](https://www.phusionpassenger.com/library/config/apache/reference/#passengerappenv).
-
-
-## Apache mod_lsapi PRO
-
-### General information and requirements
-
-mod_lsapi PRO is an [Apache HTTP Server](https://httpd.apache.org/) module based on [LiteSpeed Technologies API](https://www.litespeedtech.com/open-source/litespeed-sapi) . It serves to execute PHP scripts on a web-server by analogy with other modules like mod_suphp, php-fpm, mod_php. However, mod_lsapi PRO usage offers excellent PHP performance, low memory footprint coupled with great security and support for opcode caching.
-
-**How does it work?**
-
-1. Apache passes handling for PHP request to mod_lsapi PRO;
-2. mod_lsapi PRO use liblsapi to transfer request to lsphp parent process;
-3. lsphp is forking child process which executes the request and returns data to mod_lsapi PRO;
-![](./images/mod_lsapidiagrammnew.jpg)  
-_mod_lsapi PRO integrates with Apache, allows to handle concurrent requests and manages the lsphp processes_
-
-* If there are no requests for lsapi_backend_pgrp_max_idle seconds, lsphp parent process will be  terminated;
-* If there are no lsphp child processes available when a new request comes, the new lsphp child process will be created;
-* lsphp childs process concurrent requests simultaneously;
-* The maximum number of simultaneously running lsphp child processes can be set by the lsapi_backend_children directive.
-
-**What is lsphp?**
-
-lsphp - PHP + LSAPI. What is PHP LSAPI? [LiteSpeed Server Application Programming Interface](https://www.litespeedtech.com/open-source/litespeed-sapi/php) (LSAPI) is designed specifically for seamless, optimized communication between LiteSpeed Web Server and third-party web applications. Now with mod_lsapi PRO this protocol is available for Apache 2.2/2.4.
-
-Using mod_lsapi PRO, we have seen the higher performance than Apache with mod_php, easier installation than php-fpm and easier integration with any control panel. mod_lsapi PRO means faster and more stable dynamic web pages.
-
-**Requirements**
-
-Currently, the mod_lsapi is not compatible with:
-
-* Apache mod_ruid2 - should be disabled;
-* Apache mod_itk - should be disabled;
-* PHP-FPM - should be disabled because PHP-FPM is also a PHP Handler just as mod_lsapi.
-
-**Optional requirements**
-
-* Configured LVE containers for end-users ( **recommended - higher security level** );
-* Installed and configured mod_hostinglimitsfor Apache ( **recommended - higher security level** );
-* Installed mod_suexec for Apache and configured [SuExecUserGroup](https://httpd.apache.org/docs/2.4/mod/mod_suexec.html#page-header) directive for each virtual host ( **recommended - higher security level** );
-* Enabled CageFS for end-users ( **recommended - higher security level** );
-* PHP Selector with alt-php - an easy way to select different PHP versions for each end-user provided by CloudLinux OS Shared;
-* ea-php - alternative to alt-php provided by cPanel (for cPanel only).
-
-### Installation
-
-mod_lsapi PRO can be installed through YUM package manager, however, the installation process varies depending on the control panel.
-
-Select the control panel you are using:
-* [cPanel](./#installing-on-cpanel-servers-with-easyapache-4)
-* [Plesk](./#installing-on-plesk-servers)
-* [DirectAdmin](./#installing-on-directadmin-servers)
-* [No control panel](./#installing-on-servers-with-no-control-panel)
-
-
-:::tip Note
-See also [mod_lsapi PRO](/shared/command-line_tools/#apache-mod-lsapi-pro).
-:::
-
-#### Installing on cPanel servers with EasyApache 4
-
-Install mod_lsapi PRO and related packages through YUM package manager as follows:
-<div class="notranslate">
-
-```
-$ yum install liblsapi liblsapi-devel
-$ yum install ea-apache24-mod_lsapi
-```
-</div>
-After installing mod_lsapi PRO packages run the next command to setup mod_lsapi to cPanel:
-<div class="notranslate">
-
-```
-$ /usr/bin/switch_mod_lsapi --setup
-```
-</div>
-Now, when the module is installed, restart Apache to ensure that the mod_lsapi PRO is enabled:
-<div class="notranslate">
-
-```
-$ service httpd restart
-```
-</div>
-Now the lsapi handler is available for managing through cPanel MultiPHP Manager.
-
-For more details about swith_mod_lsapi, please visit [switch_mod_lsapi tool](/shared/command-line_tools/#apache-mod-lsapi-pro).
-
-
-#### Installing on Plesk servers
-
-Install mod_lsapi PRO and related packages through YUM package manager as follows:
-<div class="notranslate">
-
-```
-$ yum install liblsapi liblsapi-devel
-$ yum install mod_lsapi
-```
-</div>
-Once completed, run the command to setup mod_lsapi PRO and register LSPHP handlers to Plesk Panel:
-<div class="notranslate">
-
-```
-$ /usr/bin/switch_mod_lsapi --setup
-```
-</div>
-
-Now, when the module is installed, restart Apache to ensure that mod_lsapi PRO is enabled:
-<div class="notranslate">
-
-```
-$ service httpd restart
-```
-</div>
-
-Now LSPHPXY alt-php PHP handlers are available for managing through Plesk PHP Settings.
-
-![](./images/plesk-php-settings.png)
-
-For more details about swith_mod_lsapi, please visit [switch_mod_lsapi tool](/shared/command-line_tools/#apache-mod-lsapi-pro).
-
-
-#### Installing on DirectAdmin servers
-
-Installation process is done with custombuild script:
-<div class="notranslate">
-
-```
-$ yum install liblsapi liblsapi-devel
-$ cd /usr/local/directadmin/custombuild
-$ ./build update
-$ ./build set php1_mode lsphp
-$ ./build php n
-$ ./build apache
-```
-</div>
-Restart Apache afterwards:
-<div class="notranslate">
-
-```
-$ service httpd restart
-```
-</div>
-Now all domains under php1_mode are using lsphp handler and no further actions are required to enable mod_lsapi PRO on DirectAdmin.
-
-#### Installing on servers with no control panel
-
-Install mod_lsapi PRO and related packages through YUM package manager as follows:
-<div class="notranslate">
-
-```
-$ yum install liblsapi liblsapi-devel
-$ yum install mod_lsapi
-```
-</div>
-Once completed, run a command to setup mod_lsapi PRO:
-<div class="notranslate">
-
-```
-$ /usr/bin/switch_mod_lsapi --setup
-```
-</div>
-Now, when the module is installed, restart Apache to ensure that mod_lsapi PRO is enabled:
-<div class="notranslate">
-
-```
-$ service httpd restart
-```
-</div>
-
-If you are using an alternative Apache - [httpd24](https://www.cloudlinux.com/cloudlinux-os-blog/entry/httpd24-updated-for-cloudlinux-6) , then install mod_lsapi as follows:
-
-<div class="notranslate">
-
-```
-$ yum install liblsapi liblsapi-devel
-$ yum install httpd24-mod_lsapi
-```
-</div>
-Once completed, run a command to setup mod_lsapi PRO:
-<div class="notranslate">
-
-```
-$ /usr/bin/switch_mod_lsapi --setup
-```
-</div>
-Now, when the module is installed, restart Apache to ensure that mod_lsapi PRO is enabled:
-<div class="notranslate">
-
-```
-$ service httpd24 restart
-```
-</div>
-
-For more details about swith_mod_lsapi, please visit [switch_mod_lsapi tool](/shared/command-line_tools/#apache-mod-lsapi-pro).
-
-
-### Uninstalling
-
-
-Uninstall mod_lsapi PRO is performed depending on your control panel.
-
-Select the control panel you are using:
-* [cPanel](./#uninstall-procedure-for-cpanel-servers-with-easyapache-4)
-* [Plesk](./#uninstall-procedure-for-plesk-servers)
-* [DirectAdmin](./#uninstall-procedure-for-directadmin-servers)
-* [No control panel](./#uninstall-procedure-for-servers-with-no-control-panel)
-
-
-#### Uninstall procedure for cPanel servers with EasyApache 4
-
-To remove lsapi handler from cPanel MultiPHP Manager and uninstall mod_lsapi PRO, run a command:
-<div class="notranslate">
-
-```
-$ /usr/bin/switch_mod_lsapi --uninstall
-```
-</div>
-Then remove packages with YUM package manager:
-<div class="notranslate">
-
-```
-$ yum erase liblsapi liblsapi-devel ea-apache24-mod_lsapi
-```
-</div>
-Restart Apache afterwards:
-<div class="notranslate">
-
-```
-$ service httpd restart
-```
-</div>
-Now mod_lsapi PRO is fully uninstalled.
-
-
-#### Uninstall procedure for Plesk servers
-
-To unregister LSPHP handlers and uninstall mod_lsapi PRO, run the command:
-<div class="notranslate">
-
-```
-$ /usr/bin/switch_mod_lsapi --uninstall
-```
-</div>
-Then remove packages with YUM package manager:
-<div class="notranslate">
-
-```
-$ yum erase liblsapi liblsapi-devel mod_lsapi
-```
-</div>
-Restart Apache afterwards:
-<div class="notranslate">
-
-```
-$ service httpd restart
-```
-</div>
-Now LSPHPXY alt-php PHP handlers and mod_lsapi PRO are fully uninstalled.
-
-
-#### Uninstall procedure for DirectAdmin servers
-
-Uninstall is done with custombuild script:
-<div class="notranslate">
-
-```
-$ cd /usr/local/directadmin/custombuild
-$ ./build update
-$ ./build set php1_release [any other php mode]
-$ ./build php n
-$ ./build apache
-```
-</div>
-The following PHP modes are available for DirectAdmin:
-
-* mod_php
-* fastcgi
-* php-fpm
-* suphp
-
-Restart Apache afterwards:
-<div class="notranslate">
-
-```
-$ service httpd restart
-```
-</div>
-Now all domains under php1_mode are using the chosen handler and mod_lsapi PRO is fully uninstalled.
-
-#### Uninstall procedure for servers with no control panel
-
-To uninstall mod_lsapi PRO, run the command:
-<div class="notranslate">
-
-```
-$ /usr/bin/switch_mod_lsapi --uninstall
-```
-</div>
-Then remove packages with YUM package manager:
-<div class="notranslate">
-
-```
-$ yum erase liblsapi liblsapi-devel mod_lsapi
-$ rm [path to mod_lsapi.conf]
-```
-</div>
-Restart Apache to restore the standard PHP handler:
-<div class="notranslate">
-
-```
-$ service httpd restart
-```
-</div>
-
-If you are using an alternative Apache: - [httpd24](https://www.cloudlinux.com/cloudlinux-os-blog/entry/httpd24-updated-for-cloudlinux-6), then uninstall mod_lsapi PRO as follows:
-
-<div class="notranslate">
-
-```
-$ /usr/bin/switch_mod_lsapi --uninstall
-```
-</div>
-Then remove packages with YUM package manager:
-<div class="notranslate">
-
-```
-$ yum erase liblsapi liblsapi-devel httpd24-mod_lsapi
-$ rm [path to mod_lsapi.conf]
-```
-</div>
-Restart Apache afterwards:
-<div class="notranslate">
-
-```
-$ service httpd24 restart
-```
-</div>
-Now mod_lsapi PRO is fully uninstalled.
-
-
-### Configuration
-
-* [Configuration references](./#configuration-references)
-
-In order to get mod_lsapi PRO work properly, you'll need to configure Apache. To do this, we use a separate _lsapi.conf_ file.
-
-First of all, for the mod_lsapi PRO work, you need to ensure that the module is loaded. In your lsapi.conf you need to make sure the [LoadModule](http://httpd.apache.org/docs/current/mod/mod_so.html#loadmodule) directive has not been commented out. A correctly configured directive may look like this:
-<div class="notranslate">
-
-```
-LoadModule lsapi_module modules/mod_lsapi.so
-```
-</div>
-
-In order to enable the module to process requests, you need to add the lsapi_engine directive to your _lsapi.conf_ file as follows:
-<div class="notranslate">
-
-```
-lsapi_engine On
-```
-</div>
-
-The mod_lsapi PRO handler can be enabled using the [AddType](https://httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype) directive. The AddType directive tells Apache that a given filename extension should be handled by mod_lsapi PRO. Apache will assume that and will attempt to execute it when that particular resource is requested by a client.
-<div class="notranslate">
-
-```
-AddType application/x-httpd-lsphp .php
-```
-</div>
-
-If no handler is explicitly set for a request, the specified content type will be used as the handler name, therefore, please disable php.conf or any other PHP handler for using mod_lsapi PRO. In this example application/x-httpd-lsphp is a default handler by which mod_lsapi PRO process requests with lsphp binary from _/usr/local/bin/_ directory.
-
-The final lsapi.conf configuration might look like this:
-<div class="notranslate">
-
-```
-LoadModule lsapi_module modules/mod_lsapi.so
-
-
-<IfModule lsapi_module>      
-	lsapi_engine On      
-	AddType application/x-httpd-lsphp .php      
-	lsapi_backend_connect_timeout 100000
-	lsapi_backend_connect_tries 10
-	lsapi_backend_children 20
-	lsapi_backend_pgrp_max_idle 30
-	lsapi_backend_max_process_time 300
-	lsapi_debug Off
-</IfModule>
-```
-</div>
-
-In order to mod_lsapi PRO work lsapi.conf should be loaded to Apache through [Include](https://httpd.apache.org/docs/2.4/mod/core.html#include) directive.
-
-For more detailed description of the module directives please visit [Configuration reference](./#configuration-references).  
-For installation guide mod_lsapi PRO please visit [Installation](./#installation-3).
-
-#### Configuration references
-
-
-[mod_lsapi customization](./#mod-lsapi-customization):
-* [lsapi_engine](./#lsapi-engine)  
-* [lsapi_socket_path](./#lsapi-socket-path)  
-* [lsapi_poll_timeout](./#lsapi-poll-timeout)  
-* [lsapi_per_user](./#lsapi-per-user)  
-* [lsapi_output_buffering](./#lsapi-output-buffering)  
-* [lsapi_disable_reject_mode](./#lsapi-disable-reject-mode)  
-* [lsapi_terminate_backends_on_exit](./#lsapi-terminate-backends-on-exit)  
-* [lsapi_avoid_zombies](./#lsapi-avoid-zombies)  
-* [lsapi_use_req_hostname](./#lsapi-use-req-hostname)  
-* [lsapi_debug](./#lsapi-debug)
-
-[Tuning LSPHP backend](./#tuning-lsphp-backend):
-* [lsapi_set_env](./#lsapi-set-env)
-* [lsapi_set_env_path](./#lsapi-set-env-path)
-* [lsapi_backend_children](./#lsapi-backend-children)
-* [lsapi_backend_connect_tries](./#lsapi-backend-connect-tries)
-* [lsapi_backend_connect_timeout](./#lsapi-backend-connect-timeout)
-* [lsapi_backend_max_process_time](./#lsapi-backend-max-process-time)
-* [lsapi_backend_pgrp_max_idle](./#lsapi-backend-pgrp-max-idle)
-* [lsapi_backend_use_own_log](./#lsapi-backend-use-own-log)
-* [lsapi_backend_common_own_log](./#lsapi-backend-common-own-log)
-* [lsapi_backend_coredump](./#lsapi-backend-coredump)
-* [lsapi_backend_accept_notify](./#lsapi-backend-accept-notify)
-* [lsapi_backend_pgrp_max_reqs](./#lsapi-backend-pgrp-max-reqs)
-* [lsapi_backend_pgrp_max_crashes](./#lsapi-backend-pgrp-max-crashes)
-* [lsapi_backend_loglevel_info](./#lsapi-backend-loglevel-info)
-* [lsapi_backend_oom_score_adj](./#lsapi-backend-oom-score-adj)
-* [lsapi-server-tweak](./#lsapi-server-tweak) Beta
- 
-[Connection pool mode](./#connection-pool-mode):
-* [lsapi_with_connection_pool](./#lsapi-with-connection-pool)
-* [lsapi_backend_max_idle](./#lsapi-backend-max-idle)
-* [lsapi_backend_max_reqs](./#lsapi-backend-max-reqs)
-
-[CRIU support](./#criu-support-cloudlinux7-only):
-* [lsapi_criu](./#lsapi-criu)
-* [lsapi_criu_socket_path](./#lsapi-criu-socket-path)
-* [lsapi_criu_imgs_dir_path](./#lsapi-criu-imgs-dir-path)
-* [lsapi_backend_initial_start](./#lsapi-backend-initial-start)
-* [lsapi_criu_use_shm](./#lsapi-criu-use-shm)
-* [lsapi_backend_semtimedwait](./#lsapi-backend-semtimedwait)
-* [lsapi_reset_criu_on_apache_restart](./#lsapi-reset-criu-on-apache-restart)
-* [lsapi_criu_debug](./#lsapi-criu-debug)
-
-[PHP configuration management](./#php-configuration-management):
-* [lsapi_process_phpini](./#lsapi-process-phpini)
-* [lsapi_phpini](./#lsapi-phpini)
-* [lsapi_phprc](./#lsapi-phprc)
-* [lsapi_tmpdir](./#lsapi-tmpdir)
-* [lsapi_enable_user_ini](./#lsapi-enable-user-ini)
-* [lsapi_user_ini_homedir](./#lsapi-user-ini-homedir)
-* [lsapi_keep_http200](./#lsapi-keep-http200)
-* [lsapi_mod_php_behaviour](./#lsapi-mod-php-behaviour)
-* [php_value, php_admin_value, php_flag, php_admin_flag](./#php-valuephp-admin-valuephp-flagphp-admin-flag)
-
-[Security](./#security):
-* [lsapi_use_suexec](./#lsapi-use-suexec)
-* [lsapi_user_group](./#lsapi-user-group)
-* [lsapi_uid_gid](./#lsapi-uid-gid)
-* [lsapi_use_default_uid](./#lsapi-use-default-uid)
-* [lsapi_target_perm](./#lsapi-target-perm)
-* [lsapi_paranoid](./#lsapi-paranoid)
-* [lsapi_check_document_root](./#lsapi-check-document-root)
-* [lsapi_disable_forced_pwd_var](./#lsapi-disable-forced-pwd-var)
-* [lsapi_max_resend_buffer](./#lsapi-max-resend-buffer)
-
-#### **mod_lsapi customization**
-
-#### **lsapi_engine**
-
-**Syntax** : lsapi_engine on/off  
-**Default** : lsapi_engine off  
-**Context** : httpd.conf, htaccess  
-
-**Description** :  
-Switching mod_lsapi handler on or off.
-
----
-
-#### **lsapi_socket_path**
-
-**Syntax** : lsapi_socket_path [path]
-**Default** : lsapi_socket_path `/var/mod_lsapi`  
-**Context** : httpd.conf  
-
-**Description:**  
-Path to backend lsphp sockets. By default `/var/mod_lsapi`
-
----
-
-#### **lsapi_poll_timeout**
-
-**Syntax** : lsapi_poll_timeout [number]  
-**Default** : lsapi_poll_timeout 300  
-**Context** : httpd.conf, htaccess  
-
-**Description** :  
-Time to wait for response from the lsphp daemon, in seconds. 0 stands for infinity. For preventing long running processes which can use EP (limit number of entry processes). Default value is 300. Should be more or equal to 0. In the case of wrong format, the default value will be used.
-
----
-
-#### **lsapi_per_user**
-
-**Syntax** : lsapi_per_user On/Off  
-**Default** : lsapi_per_user Off  
-**Context** : httpd.conf  
-
-**Description** :  
-Invoke master lsPHP process not per VirtualHost but per account.
-When On, invoke backend not per VirtualHost but per account.
-Default value is Off.
-It is possible, for example, to set it to On in global config file and to Off in config files of some particular Virtual Hosts.
-Then these Virtual Hosts will have a dedicated backend process, while others will have backend processes shared on account basis.
-
----
-
-#### **lsapi_output_buffering**
-
-**Syntax** : lsapi_output_buffering On/Off  
-**Default** : lsapi_output_buffering On  
-**Context** : httpd.conf, virtualhost, htaccess  
-
-**Description** :  
-Enable or disable output buffering on Apache level. Default value is On.
-
----
-
-#### **lsapi_disable_reject_mode**
-
-**Syntax** : lsapi_disable_reject_mode On/Off  
-**Default** : lsapi_disable_reject_mode Off  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-If a new HTTP request is coming to LSPHP daemon when all LSPHP workers are still busy, it can process this situation in two different ways. In REJECT mode LSPHP daemon will reject such request immediately. Otherwise, in legacy mode, LSPHP daemon will put this request into infinite queue, until one or more LSPHP daemon becomes free. When HTTP request is rejected in REJECT mode, mod_lsapi will write into Apache error_log the following message: Connect to backend rejected, and the client will receive 507 HTTP response.
-By default LSPHP daemon in CloudLinux OS Shared uses REJECT mode. It can be switched off with this option.
-
----
-
-#### **lsapi_terminate_backends_on_exit**
-
-**Syntax** : lsapi_terminate_backends_on_exit On/Off  
-**Default** : lsapi_terminate_backends_on_exit On  
-**Context** : httpd.conf  
-
-**Description** :  
-httpd.conf, On - stop lsphp services on apache restart, Off - leave live started lsphp services on apache restart (for php+opcache). The lsphp will not restart, even if Apache gets restarted.
-
----
-
-#### **lsapi_avoid_zombies**
-
-**Syntax** : lsapi_avoid_zombies On/Off  
-**Default** : lsapi_avoid_zombies Off  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-Enable or disable a mechanism to avoid creation of zombie processes by lsphp. Default value is Off.
-
----
-
-#### **lsapi_use_req_hostname**
-
-**Syntax** : lsapi_use_req_hostname On/Off  
-**Default** : lsapi_use_req_hostname Off  
-**Context** : httpd.conf, virtualhosts  
-
-**Description** :  
-By default, we are using hostname from the server_rec structure (off), it means that mod_lsapi takes hostname from the VirtualHost section of the configuration file. Using hostname from the request_rec structure (On) means that mod_lsapi takes hostname from the HOST section of the request. It could be useful for those who use dynamically generated configs for virtual hosts for example with mod_lua.
-
----
-
-#### **lsapi_sentry**
-
-**Syntax** : lsapi_sentry On/Off  
-**Default** : lsapi_sentry On  
-**Context** : httpd.conf  
-
-**Description** :  
-When this option is enabled, errors that occur in the operation of the mod_lsapi will be sent to the remote sentry server. You can see the error messages that were sent to the sentry server in the directory /var/log/mod_lsapi. If you do not want to send error notifications from your server, you can disable this directive in lsapi.conf.
-
----
-
-#### **lsapi_debug**
-
-**Syntax** : lsapi_debug On/Off  
-**Default** : lsapi_debug Off  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-Extended debug logging.
-
----
-
-#### **Tuning LSPHP backend**
-
-#### **lsapi_set_env**
-
-**Syntax** : lsapi_set_env VAR_NAME [VAR_VALUE]  
-**Default** : -  
-**Context** : httpd.conf  
-
-**Description** :  
-Pass env variable to lsphp. By default lsphp environment have only TEMP, TMP and PATH variables set.  
-Example: lsapi_set_env TMP "/var/lsphp-tmp"  
-Note: PATH env var default "/usr/local/bin:/usr/bin:/bin" cannot be changed because of security reasons.  
-To change it, use explicitly lsapi_set_env_path option.
-
-:::tip Beta
-When the `lsapi_server_tweak` option is switched `On`, this option can be used in the virtualhost context.
-:::
-
----
-
-#### **lsapi_set_env_path**
-
-**Syntax** : lsapi_set_env_path [path(s)]  
-**Default** : lsapi_set_env_path /usr/local/bin:/usr/bin:/bin  
-**Context** : httpd.conf  
-
-**Description** :  
-Change PATH variable in the environment of lsPHP processes. Default path /usr/local/bin:/usr/bin:/bin will be used if not set.
-
-:::tip Beta
-When the `lsapi_server_tweak` option is switched `On`, this option can be used in the virtualhost context.
-:::
-
----
-
-#### **lsapi_backend_children**
-
-**Syntax** : lsapi_backend_children [number]  
-**Default** : lsapi_backend_children [EP]  
-**Context** : httpd.conf  
-
-**Description** :  
-Sets maximum number of simultaneously running child backend processes. Optional, a default directive value is equal to 120.   LSAPI_CHILDREN environment variable is set according to the following rules:
-* If NPROC and EP are unlimited, the directive value is used.
-* If NPROC is set to any limited value and the directive value is set to a number less than NPROC-1, the directive value is used.
-* If the value is bigger than NPROC-1 and EP is set to unlimited, NPROC-1 is used.
-* If the value is bigger than NPROC-1 and EP is set to any limited value, EP+1 is used.
-
-For example, with the default lve settings NPROC=100 and EP=20, the effective LSAPI_CHILDREN will be EP+1, that is LSAPI_CHILDREN=21.
-
----
-
-#### **lsapi_backend_connect_tries**
-
-**Syntax** : lsapi_backend_connect_tries [number]  
-**Default** : lsapi_backend_connect_tries 20  
-**Context** : httpd.conf  
-
-**Description** :  
-Number of retries to connects to lsPHP daemon.
-
----
-
-#### **lsapi_backend_connect_timeout**
-
-**Syntax** : lsapi_backend_connect_timeout [number]  
-**Default** : lsapi_backend_connect_timeout 500000  
-**Context** : httpd.conf  
-
-**Description** :  
-Number of usec to wait while lsPHP starts (if not started on request).
-
----
-
-#### **lsapi_backend_max_process_time**
-
-**Syntax** : lsapi_backend_max_process_time [number]  
-**Default** : lsapi_backend_max_process_time 300  
-**Context** : httpd.conf, virtualhost 
-
-**Description** :  
-Sets env variable LSAPI_MAX_PROCESS_TIME  
-Optional. Default value is 300.  
-Timeout to kill runaway processes.
-
----
-
-#### **lsapi_backend_pgrp_max_idle**
-
-**Syntax** : lsapi_backend_pgrp_max_idle [number]  
-**Default** : lsapi_backend_pgrp_max_idle 30  
-**Context** : httpd.conf  
-
-**Description** :  
-Sets env variable LSAPI_PGRP_MAX_IDLE, in seconds.    
-Controls how long a control process will wait for a new request before it exits. # 0 stands for infinite.  
-Optional, default value is 30.  
-Should be more or equal to 0.  
-
----
-
-#### **lsapi_backend_use_own_log**
-
-**Syntax** : lsapi_backend_use_own_log On/Off  
-**Default** : lsapi_backend_use_own_log Off  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-Redirecting log output of backend processes from Apache error_log to dedicated log file or files, depending on value of lsapi_backend_common_own_log option. If Off, use Apache error log file for backend output, or separate file otherwise.
-
----
-
-#### **lsapi_backend_common_own_log**
-
-**Syntax** : lsapi_backend_common_own_log On/Off  
-**Default** : lsapi_backend_common_own_log Off  
-**Context** : httpd.conf, virtualhost 
-
-**Description** :  
-It will be used only when lsapi_backend_use_own_log set to On. On - backend processes of the all virtual hosts will share the common log file. Off - every virtual host will have its own backend log file.
-
----
-
-#### **lsapi_backend_coredump**
-
-**Syntax** : lsapi_backend_coredump On/Off  
-**Default** : lsapi_backend_coredump Off  
-**Context** : httpd.conf, htaccess  
-
-**Description** :  
-env variable LSAPI_ALLOW_CORE_DUMP (On or Off). Pass LSAPI_ALLOW_CORE_DUMP to lsphp or not. If it will be passed - core dump on lsphp crash will be created.  
-Off by default.  
-By default LSAPI application will not leave a core dump file when crashed. If you want to have LSAPI PHP dump a core file, you should set this environment variable. If set, regardless the value has been set to, core files will be created under the directory that the PHP script in.
-
----
-
-#### **lsapi_backend_accept_notify**
-
-**Syntax** : lsapi_backend_accept_notify On/Off  
-**Default** : lsapi_backend_accept_notify On  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-Switch LSAPI_ACCEPT_NOTIFY mode for lsphp. This option can be used both in Global and VirtualHost scopes.This mode is incompatible with PHP 4.4.
-
----
-
-#### **lsapi_backend_pgrp_max_reqs**
-
-**Syntax** : lsapi_backend_prgrp_max_reqs [number]  
-**Default** : lsapi_backend_max_reqs 0  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-Controls how many requests a control process will process before it exits. Should be more or equal to 0. In the case of wrong format, a default value will be used. Optional, the default value is 0, which means an unlimited number of requests.
-
----
-
-#### **lsapi_backend_pgrp_max_crashes**
-
-**Syntax** : lsapi_backend_prgrp_max_crashes [number]  
-**Default** : lsapi_backend_max_crashes 0  
-**Context** : httpd.conf, virtualhost
-
-**Description** :  
-Controls how many crashes of its worker processes a control process will detect before it exits. Should be more or equal to 0. In the case of wrong format, a default value will be used. Optional, the default value is 0, which means an unlimited number of crashes.
-
----
-
-#### **lsapi_backend_loglevel_info**
-
-**Syntax**: lsapi_backend_loglevel_info [On/Off]
-
-**Default**: lsapi_backend_loglevel_info Off
-
-**Context**: httpd.conf, virtualhost
-
-**Description**:  Controls which log level will be used to write PHP warnings and notices into Apache’s error_log. Optional, the default value is `Off`. In that case `LOG_WARNING` log level will be used. Otherwise, with `On` value, `LOG_INFO` log level will be used.
-
----
-
-#### **lsapi_backend_oom_score_adj**
-
-**Syntax**: lsapi_backend_oom_score_adj [number]
-
-**Default**: lsapi_backend_oom_score_adj 0
-
-**Context**: httpd.conf, virtualhost
-
-**Description**:  This option can be used to apply **oom_score_adj** values for PHP processes created by mod_lsapi. Value is an integer in the -1000 to 1000 range. The lower the value, the lower the chance that the process will be killed.
-When your server becomes low on free memory and an OOM killer is invoked then desirable that lsphp processes are sacrificed to free up memory. To do this, you need to set oom_score_adj to a large value.
-For more information on setting value **oom_score_adj**, see the page [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html)
-
----
-
-#### **lsapi_server_tweak** <Badge text="beta" />
-
-**Syntax**: lsapi_server_tweak [On/Off]
-
-**Default**: lsapi_server_tweak Off
-
-**Context**: httpd.conf
-
-**Description**: This option, when switched on, allows the use of `lsapi_set_env` and `lsapi_set_env_path` config options in the virtualhost context.
-
----
-
-#### **Connection pool mode**
-
-#### **lsapi_with_connection_pool**
-
-**Syntax** : lsapi_with_connection_pool On/Off  
-**Default** : lsapi_with_connection_pool Off  
-**Context** : httpd.conf  
-
-**Description** :  
-On/Off - disable enable connect pool, default is Off.
-
----
-
-#### **lsapi_backend_max_idle**
-
-**Syntax** : lsapi_backend_max_idle [number]  
-**Default** : lsapi_backend_max_idle 300  
-**Context** : httpd.conf  
-
-**Description** :  
-It is relevant only with lsapi_with_connection_pool option switched on. Controls how long a worker process will wait for a new request before it exits. 0 stands for infinite. Should be more or equal to 0. In the case of wrong format default value will be used. Optional, default value is 300.
-
----
-
-#### **lsapi_backend_max_reqs**
-
-**Syntax** : lsapi_backend_max_reqs [number]  
-**Default** : lsapi_backend_max_reqs 10000  
-**Context** : httpd.conf  
-
-**Description** :  
-It is relevant only with lsapi_with_connection_pool option switched on. Controls how many requests a worker process will process before it exits. Should be more than 0. In the case of wrong format default value will be used. Optional, default value is 10000.
-
----
-
-#### **CRIU support**
-
-#### **lsapi_criu**
-
-**Syntax** : lsapi_criu On/Off  
-**Default** : lsapi_criu Off  
-**Context** : httpd.conf  
-
-**Description** :  
-Enable/disable CRIU for lsphp freezing. Default: Off.
-
----
-
-#### **lsapi_criu_socket_path**
-
-**Syntax** : lsapi_criu_socket_path [path]  
-**Default** : lsapi_criu_socket_path /var/run/criu/criu_service.socket  
-**Context** : httpd.conf  
-
-**Description** :  
-Set path to socket for communication with criu service. Default: /var/run/criu/criu_service.socket.
-
----
-
-#### **lsapi_criu_imgs_dir_path**
-
-**Syntax** : lsapi_criu_imgs_dir_path [path]  
-**Default** : lsapi_criu_imgs_dir_path /var/mod_lsapi/  
-**Context** : httpd.conf  
-
-**Description** :  
-Path to folder where images of freezed PHP will be stored. Should be path. Default: /var/mod_lsapi/
-
----
-
-#### **lsapi_backend_initial_start**
-
-**Syntax** : lsapi_backend_initial_start [number]  
-**Default** : lsapi_backend_initial_start 0  
-**Context** : httpd.conf  
-
-**Description** :  
-Number of requests to virtualhost, when lsphp will be freezed.  Default: 0 - means disable freezing.
-
----
-
-#### **lsapi_criu_use_shm**
-
-**Syntax** : lsapi_criu_use_shm Off/Signals  
-**Default** : lsapi_criu_use_shm Off  
-**Context** : httpd.conf  
-
-**Description** :  
-Method of requests counting. Off - use shared memory. Signals - use signals from child processes to parent. Default: Off
-
----
-
-#### **lsapi_backend_semtimedwait**
-
-**Syntax** : lsapi_backend_semtimedwait On/Off  
-**Default** : lsapi_backend_semtimedwait On  
-**Context** : httpd.conf  
-
-**Description** :  
-Use semaphore for checking when lsphp process will be started. Speed of start lsphp increased with semaphore using. This method avoid cycles of waiting for lsphp start. Default: On.
-
-----
-
-#### **lsapi_reset_criu_on_apache_restart**
-
-**Syntax** : lsapi_reset_criu_on_apache_restart On/Off  
-**Default** : lsapi_reset_criu_on_apache_restart Off  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-This option allows cleaning all CRIU images on Apache restart.  
-Setting lsapi_reset_criu_on_apache_restart to On means that on each Apache restart the CRIU images which are stored in directory specified by lsapi_criu_imgs_dir_path directive will be recreated on new request to domain(only after restart).  
-If this option set to Off then CRIU images won’t be recreated on Apache restart.
-
-----
-
-#### **lsapi_criu_debug**
-
-**Syntax**: lsapi_criu_debug On/Off  
-**Default**: lsapi_criu_debug Off  
-**Context**: httpd.conf, virtualhost  
-
-**Description** :  
-Enable/disable CRIU related debug logging.
-
-----
-
-#### **PHP configuration management**
-
-#### **lsapi_process_phpini**
-
-**Syntax** : lsapi_process_phpini On/Off  
-**Default** : lsapi_process_phpini Off  
-**Context** : httpd.conf, virtualhost, directory  
-
-**Description** :  
-Enable or disable phpini_* directive processing. Default value is Off.
-
----
-
-#### **lsapi_phpini**
-
-**Syntax** : lsapi_phpini [path]  
-**Default** : lsapi_phpini -  
-**Context** : httpd.conf, virtualhost, htaccess  
-
-**Description** :  
-When lsapi_process_phpini option switched to Off, these values will be silently ignored. lsapi_phpini values with absolute filename of php.ini file can be inserted into .htaccess files in order to set custom php.ini which will override/complement settings from system default php.ini.
-
----
-
-#### **lsapi_phprc**
-
-**Syntax** : lsapi_phprc [No | Env | Auto | DocRoot]  
-**Default** : lsapi_phprc No  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :
-The value of PHPRC env variable.  
-Special values are "No", "Env", "Auto" and "DocRoot".  
-Default value is "No" - without PHPRC at all.  
-"Auto" value stands for php.ini from DocumentRoot of the corresponding VirtualHost if it is present, or from user's home directory otherwise "DocRoot" value stands for php.ini from DocumentRoot of the corresponding VirtualHost.  
-"Env" value for using PHPRC from the environment, to set it with SetEnv config option, for example  
-lsapi_phprc No  
-lsapi_phprc Auto  
-lsapi_phprc DocRoot  
-lsapi_phprc Env  
-lsapi_phprc /etc/
-
----
-
-#### **lsapi_tmpdir**
-
-**Syntax** : lsapi_tmpdir [path]  
-**Default** : lsapi_tmpdir /tmp  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-Set alternate request body temporary files directory.
-
----
-
-#### **lsapi_enable_user_ini**
-
-**Syntax** : lsapi_enable_user_ini On/Off  
-**Default** : lsapi_enable_user_ini Off  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-Enable .user.ini files for backend. Same as suphp, php-fpm and fcgid mechanism of .user.ini. Default value is Off.
-
----
-
-#### **lsapi_user_ini_homedir**
-
-**Syntax** : lsapi_user_ini_homedir On/Off  
-**Default** : lsapi_user_ini_homedir Off  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-If lsapi_enable_user_ini option is set to On, then enable/disable processing .user.ini file in home directory also. Default value is Off.
-
----
-
-#### **lsapi_keep_http200**
-
-**Syntax** : lsapi_keep_http200 On/Off  
-**Default** : lsapi_keep_http200 Off  
-**Context** : httpd.conf, .htaccess  
-
-**Description** :  
-If set to On, always keep backend's response status as mod_php does. If set to Off, response status can be overridden by Apache as suphp does (in case of call via ErrorDocument directive).
-
----
-
-#### **lsapi_mod_php_behaviour**
-
-**Syntax** : lsapi_mod_php_behaviour On/Off  
-**Default** : lsapi_mod_php_behaviour On  
-**Context** : httpd.conf, virtualhost, directory  
-
-**Description** :  
-On/Off - disable php_* directives, default On.
-
----
-
-#### **php_value, php_admin_value, php_flag, php_admin_flag**
-
-**Syntax** : [php_value|php_admin_value|php_flag|php_admin_flag]  
-**Default** :  
-**Context** : httpd.conf, virtualhost, htaccess  
-
-**Description** :  
-mod_php emulation.
-
----
-
-#### **Security**
-
-#### **lsapi_use_suexec**
-
-**Syntax** : lsapi_use_suexec On/Off  
-**Default** : lsapi_use_suexec On  
-**Context** : httpd.conf  
-
-**Description** :  
-Use or not suexec to a target user.
-
----
-
-#### **lsapi_user_group**
-
-**Syntax** : lsapi_user_group [user_name] [group_name]  
-**Default** : -  
-**Context** : httpd.conf, virtualhost, directory  
-
-**Description** :  
-Set user & group for requests.  
-
----
-
-#### **lsapi_uid_gid**
-
-**Syntax** : lsapi_uid_gid [uid] [gid]  
-**Default** : -  
-**Context** : httpd.conf, virtualhost, directory  
-
-**Description** :  
-Set user & group for request.
-
----
-
-#### **lsapi_use_default_uid**
-
-**Syntax** : lsapi_use_default_uid On/Off  
-**Default** : lsapi_use_default_uid On  
-**Context** : httpd.conf  
-
-**Description** :  
-Use default Apache UID/GID if no uid/gid set. Values: On/Off. If Off, and no UID/GID set, error 503 will be returned.
-
----
-
-#### **lsapi_target_perm**
-
-**Syntax** : lsapi_target_perm On/Off  
-**Default** : lsapi_target_perm Off  
-**Context** : httpd.conf  
-
-**Description** :  
-Check target PHP script permissions. If set to On, lsapi will check that script is owned by the same user, as user under which it is being executed. Return 503 error if they don't match. Default: Off.
-
----
-
-#### **lsapi_paranoid**
-
-**Syntax** : lsapi_paranoid On/Off  
-**Default** : lsapi_paranoid Off  
-**Context** : httpd.conf  
-
-**Description** :  
-Check or not permissions of target php scripts. Optional, default value is Off.
-
----
-
-#### **lsapi_check_document_root**
-
-**Syntax** : lsapi_check_document_root On/Off  
-**Default** : lsapi_check_document_root On  
-**Context** : httpd.conf  
-
-**Description** :  
-Check or not owner of DOCUMENT_ROOT. Optional, default value is On.
-
----
-
-#### **lsapi_disable_forced_pwd_var**
-
-**Syntax** : lsapi_disable_forced_pwd_var On/Off  
-**Default** : lsapi_disable_forced_pwd_var Off  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-To disable addition of PWD variable. Default value is Off. If set to On, the PWD variable will not be added into a backend environment.
-
----
-
-#### **lsapi_max_resend_buffer**
-
-**Syntax** : lsapi_max_resend_buffer [number]tmp  
-**Default** : lsapi_max_resend_buffer 200  
-**Context** : httpd.conf, virtualhost  
-
-**Description** :  
-Maximum buffer in KiB to resend for request that has a body (like POST request body).
-
-
-See also [Apache mod_lsapi PRO CLI tools](/shared/command-line_tools/#apache-mod-lsapi-pro).
-
-### Troubleshooting
-
-**Debugging mod_lsapi issues: error_log & sulsphp_log**
-
-
-mod_lsapi errors will be located in error_log and sulsphp_log.
-Note that errors can appear in both logs at the same time, and you might need to refer to both of them to solve the issue.
-
-See next table for more details:
-
-| |  | |
-|-|--|-|
-|**error_log** | **sulsphp_log** | **Solution**|
-|Could not connect to lsphp backend: connect to lsphp failed: 111 Connection refused. Increase memory limit for LVE ID |uid: (xxx/xxxxxxxx) gid: (xxx/xxxxxxxxxx) cmd: /usr/local/bin/lsphp  | Increase pmem or vmem limits for the user uid.|
-|Error sending request: ReceiveLSHeader: nothing to read from backend socket |No need to check this log.  | lsphp was killed. It can be due to apache restart or lfd. If you see this  message too often - change <span class="notranslate">  lsapi_terminate_backends_on_exit </span> to <span class="notranslate"> Off </span> in lsapi.conf or add to <span class="notranslate"> /etc/csf/csf.pignore </span> the following lines: <span class="notranslate"> exe:/usr/local/bin/lsphp </span> pexe:/opt/alt/php.*/usr/bin/lsphp|
-|Error sending request (lsphp is killed?): ReceiveLSHeader: nothing to read from backend socket, referer: http://XXXXXXX  Child process with pid: XXXXX was killed by signal: 11, core dump: 0 |No need to check this log.  | lsphp has crashed. Next slide will explain what to do (core dump creating). Also, check configuration options for apc and suhosin in php.ini. Once you have a core file generated at DocumentRoot contact [https://cloudlinux.zendesk.com/](https://cloudlinux.zendesk.com/hc/) so we can investigate the cause.|
-|Could not connect to lsphp backend: connect to lsphp failed: 111 Connection refused |file is writable by others: (///usr/local/bin/lsphp)  | Incorrect lsphp file permissions. For fixing: <span class="notranslate"> chmod 755 /usr/local/bin/lsphp </span> cagefsctl --force-update.|
-|Could not determine uid/gid for request |No need to check this log.  | UID/GID are not set in  virtualhost. Set <span class="notranslate"> lsapi_use_default_uid On </span> in lsapi.conf (it is <span class="notranslate"> On </span> by default since 0.1-98 version, this solution is for older versions).|
-|Own id for script file (/xxxx/xxx/xxxx) is xxx; should be xxxx |No need to check this log.  | File is not owned by the user PHP executed by. To overwrite (insecure), set <span class="notranslate"> lsapi_target_perm Off </span> in lsapi.conf. |
-|Could not connect to lsphp backend: connect to lsphp failed: 111 Connection refused |Entering jail error  | Check if СageFS enabled. Try running <span class="notranslate"> cagefsctl --remount-all. </span>|
-|Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: backend process reset connection: errno 104 (possibly memory limit for LVE ID XXXX too small) |uid: (xxx/xxxxxxxx)  gid: (xxx/xxxxxxxxxx)  cmd: /usr/local/bin/lsphp  | Increase PMEM limits for the user UID.|
-|Reached max children process limit: XX, extra: 0, current: XX, please increase LSAPI_CHILDREN.<br><br>Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: backend process reset connection: errno 104 (possibly memory limit for LVE ID XXXX too small) |uid: (xxx/xxxxxxxx)  gid: (xxx/xxxxxxxxxx)  cmd: /usr/local/bin/lsphp  | Increase value of <span class="notranslate"> lsapi_backend_children </span> for UID in vhost.conf or globally in lsapi.conf.|
-|fork() failed, please increase process limit: Cannot allocate memory<br><br>Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: backend process reset connection: errno 104 (possibly memory limit for LVE ID XXXX too small) |uid:(xxx); gid:(xxx); uid limit warning: EP should be < than NPROC, current EP: XX, NPROC: XX<br><br>uid: (xxx/xxxxxxxx) gid: (xxx/xxxxxxxxxx) cmd: /usr/local/bin/lsphp  | Increase NPROC limits for the UID. It should be greater than EP and <span class="notranslate"> lsapi_backend_children. </span>|
-|Child process with pid: XXXXXX was killed by signal: 9, core dump: 0<br><br>Backend error on sending request(GET /XXXX HTTP/1.1); uri(/XXXX) content-length(0) (lsphp is killed?): ReceiveAckHdr: nothing to read from backend socket (LVE ID XXXX |uid: (xxx/xxxxxxxx) gid: (xxx/xxxxxxxxxx) cmd: /usr/local/bin/lsphp  | These errors occurs when the amount of PMEM limits is incommensurable with the number of EP. Increase PMEM limits or decrease EP number for the user UID.|
-|totBytesRead (X) != bodyLen (X), referer: XXXX<br><br>Backend error on sending request(POST /XXXX HTTP/1.1); uri(/XXXX) content-length(X) (lsphp is killed?): ReceiveAckHdr: nothing to read from backend socket (LVE ID XXXX)<br><br>lsphp(XXXX): Child process with pid: XXXX was killed by signal: 15, core dump: 0 |No need to check this log.  | Increase LimitRequestBody (Apache) or/and SecRequestBodyNoFilesLimit (mod_security) configuration limits|
-|Connect to backend failed: connect to lsphp failed: 13 |No need to check this log.  | Check that `mod_ruid2` is disabled|
-|Connect to backend rejected on sending request(POST /XXXXX HTTP/1.1); uri(/XXXXX) |No need to check this log.|Set <span class="notranslate">`lsapi_disable_reject_mode On`</span> in your <span class="notranslate">`lsapi.conf`</span> and reload Apache. This way LSPHP daemon will put requests that cannot be served by LSPHP daemon right away into infinite queue, until one or more LSPHP daemon becomes free. Visit [Configuration Reference](./#configuration-references) for more info.|
-
-
-**Non-standard apache user**
-
-If apache runs under a username other than <span class="notranslate"> "apache" </span> or <span class="notranslate"> "nobody" </span> , you should rebuild sulsphp (where username is built in for security reasons) with corresponding username:
-<div class="notranslate">
-
-```
-$ yum install liblsapi liblsapi-devel   
-$ cd ~$ wget [https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz)  
-$ tar zxvf mod_lsapi.tar.gz  
-$ cd mod-lsapi-0.1-37  
-$ cmake -DHTTPD_USER=<new user name> .  
-$ make
-$ make install
-```
-</div>
-This will:<br>  
-- Install: <span class="notranslate"> /usr/lib/apache/mod_lsapi. </span> so (or to another correct httpd modules path)<br>
-- Install: <span class="notranslate"> /usr/sbin/sulsphp </span>
-
-**lsphp started under user apache/nobody**
-
-Check if SuExecUserGroup specified for virtual hosts. This parameter is used by mod_lsapi for user identification.
-
-**Could not connect to lsphp backend: connect failed: 111 Connection refused**
-
-* Switch in lsapi.conf or <span class="notranslate"> mod_lsapi.conf </span> value to: <span class="notranslate"> lsapi_terminate_backends_on_exit Off </span>
-
-* Check if empty: <span class="notranslate"> cat /etc/cron.d/kill_orphaned_php-cron | grep lsphp </span> , then run:
-
-<div class="notranslate">
-
-```
-yum install lve-utils
-```
-</div>
-Then restart cron service.
-
-**Running PHP for users with UID < 99**
-
-If you need to run PHP using mod_lsapi using users with UID < 99, you would need to re-compile sulsphp:
-
-<div class="notranslate">
-
-```
-$ yum install liblsapi liblsapi-devel
-$ cd ~
-$ wget [https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz)
-$ tar zxvf mod_lsapi.tar.gz
-$ cd mod-lsapi-0.1-XX
-$ cmake -DUID_MIN=80 -DGID_MIN=80 .
-$ make
-$ make install
-```
-</div>
-will be installed<br>  
-- Installing: <span class="notranslate"> /usr/lib/apache/mod_lsapi.so </span> (or another httpd modules path)<br>
-- Installing: <span class="notranslate"> /usr/sbin/sulsphp </span>
-
-**Apache binary called not httpd (httpd.event, httpd.worker)**
-
-<div class="notranslate">
-
-```
-$ yum install liblsapi liblsapi-devel 
-$ cd ~
-$ wget https://repo.cloudlinux.com/cloudlinux/sources/da/mod_lsapi.tar.gz        
-$ tar zxvf mod_lsapi.tar.gz
-$ cd mod-lsapi-0.1-XX
-$ cmake -DPARENT_NAME="<apache binary name>".
-$ make
-$ make install
-```
-</div>
-Will be installed:<br>
-- Installing: <span class="notranslate"> /usr/lib/apache/mod_lsapi.so </span> (or another httpd modules path)<br>
-- Installing: <span class="notranslate"> /usr/sbin/sulsphp </span>
-
-**WHMCS Status page not accessible after installing CL and mod_lsapi (cPanel).**
-
-* add <span class="notranslate"> user: useradd </span> userstat
-* add to file (to the end of file before <span class="notranslate"> \</IfModule>) /usr/local/apache/conf/conf.d/lsapi.conf: <Directory /usr/local/apache/htdocs/>  </span>
-lsapi_user_group userstat userstat
-\</Directory>
-* service httpd restart
-
-This is safe solution for easyapache rebuilding and cpanel-mod-lsapi updating.
-
-**PHP page with Suhosin return 503 error**
-
-Make php.ini for suhosin as recommended below:
-<div class="notranslate">
-
-```
-[suhosin]
-suhosin.simulation = Off
-suhosin.mail.protect = 1
-suhosin.cookie.disallow_nul = Off
-suhosin.cookie.max_array_depth = 1000
-suhosin.cookie.max_array_index_length = 500
-suhosin.cookie.max_name_length = 500
-suhosin.cookie.max_totalname_length = 500
-suhosin.cookie.max_value_length = 200000
-suhosin.cookie.max_vars = 16384
-suhosin.get.disallow_nul = Off
-suhosin.get.max_array_depth = 1000
-suhosin.get.max_array_index_length = 500
-suhosin.get.max_name_length = 500
-suhosin.get.max_totalname_length = 500
-suhosin.get.max_value_length = 1000000
-suhosin.get.max_vars = 16384
-suhosin.post.disallow_nul = Off
-suhosin.post.max_array_depth = 1000
-suhosin.post.max_array_index_length = 500
-suhosin.post.max_name_length = 500
-suhosin.post.max_totalname_length = 500
-suhosin.post.max_value_length = 1000000
-suhosin.post.max_vars = 16384
-suhosin.request.disallow_nul = Off
-suhosin.request.max_array_depth = 1000
-suhosin.request.max_array_index_length = 500
-suhosin.request.max_totalname_length = 500
-suhosin.request.max_value_length = 1000000
-suhosin.request.max_vars = 16384
-suhosin.request.max_varname_length = 524288
-suhosin.upload.max_uploads = 300
-suhosin.upload.disallow_elf = Off
-suhosin.session.cryptua = Off
-suhosin.session.encrypt = Off
-suhosin.session.max_id_length = 1024
-suhosin.executor.allow_symlink = Off
-suhosin.executor.disable_eval = Off
-suhosin.executor.disable_emodifier = Off
-suhosin.executor.include.max_traversal = 8
-```
-</div>
-
-**PHP page with APC return 503 error**
-
-Make php.ini for APC as recommended below:
-<div class="notranslate">
-
-```
-[apc]...apc.shm_segments=1apc.shm_size=32...
-```
-</div>
-shared memory should be not less than 32MB
-
-**Messages appearing in error_log: Child process with pid: XXXXX was killed by signal: 11, core dump: 0**
-
-This means that lsphp was crashed. The solution is:
-
-* Check if apc for user enabled. Tune its options as described in previous slide.
-* Check if suhosin is enabled for user. Tune its options as described in this article.
-* If previous items do not help, contact us at [https://helpdesk.cloudlinux.com/](https://helpdesk.cloudlinux.com/)
-
-**How to get lsphp core dump on crash**
-
-* Configure mod_lsapi to allow lsphp to generate core dumps. In mod_lsapi.conf:
-
-<div class="notranslate">
-
-```
-lsapi_backend_coredump On
-```
-</div>
-
-* Enable core file generation in sysctl:
-
-<div class="notranslate">
-
-```
-sysctl -w ‘kernel.core_uses_pid=1’
-sysctl -w ‘kernel.core_pattern=core.%p’
-```
-</div>
-
-* Configure system to change max size of core files. In <span class="notranslate">/etc/security/limits.conf</span> add:
-
-<div class="notranslate">
-
-```
-user1 soft core unlimited
-user1 hard core unlimited
-```
-</div>
-where <span class="notranslate">user1</span> is the username for which lsphp crashes.
-
-* If <span class="notranslate">/etc/profile.d/limits.sh</span> exists, look up for the following lines:
-
-<div class="notranslate">
-
-```
-if [ "$LIMITUSER" != "root" ]; then
-ulimit -n 100 -u 35 -m 200000 -d 200000 -s 8192 -c 200000 -v unlimited 2>/dev/null
-```
-</div>
-Substring <span class="notranslate">“-c 200000”</span> must be replaced with <span class="notranslate">“-c unlimited”</span> .
-
-* Add line into <span class="notranslate">ulimit -c unlimited into apachectl</span> script just after another invokes of the <span class="notranslate">ulimit</span> command.
-
-* Do cold restart of Apache with the command like this:
-
-<div class="notranslate">
-
-```
-service httpd stop; sleep 2; killall lsphp; service httpd start
-```
-</div>
-
-* You can make sure that ulimit for lsphp is changed to unlimited successfully with the following command:
-
-<div class="notranslate">
-
-```
-cat /proc/PID/limits | grep ‘Max core file size’
-```
-</div>
-
-where PID is a pid of any lsphp process. <span class="notranslate">ps -u user1 | grep lsphp </span>
-
-* Core dump of lsphp will be created in the DocumentRoot of the corresponding virtual server.
-On cPanel server it should map to
-
-**mod_lsapi is not included in output of httpd -M after installation and setup command for cPanel EasyApache 3**
-
-1. Check if the file <span class="notranslate"> _/usr/local/apache/conf/conf.d/lsapi.conf_ </span> exists and not empty;
-
-2. Check if output of the command
-
-<div class="notranslate">
-
-```
-cat /usr/local/apache/conf/httpd.conf | grep "/usr/local/apache/conf/conf.d/\*\.conf"
-```
-</div>
-is not empty.
-
-If it is empty:
-
-1. Add to <span class="notranslate"> "include" </span> section of <span class="notranslate"> _/var/cpanel/conf/apache/main_ </span> string:
-
-<span class="notranslate"> </span>
-```
-"include": '"/usr/local/apache/conf/conf.d/*.conf"'
- "include":
- "directive": 'include'
- "items":
- ...
- -
- "include": '"/usr/local/apache/conf/conf.d/*.conf"' 
- "listen":
-```
-
-2. Do:
-
-<div class="notranslate">
-
-```
-mkdir -p /usr/local/apache/conf/conf.d/;                                                                                 
-cp /usr/share/lve/modlscapi/confs/lsapi.conf /usr/local/apache/conf/conf.d/lsapi.conf
-```
-</div>
-
-3. Call:
-
-<div class="notranslate">
-
-```
-/scripts/rebuildhttpdconf/scripts/restartsrv_httpd
-```
-</div>
-
-See also mod_lsapi PRO FAQ [here](https://cloudlinux.zendesk.com/hc/articles/360025828414-Apache-mod-lsapi-PRO-FAQ).
-
-### CRIU Support
-
-
-:::tip Note
-<span class="notranslate"> CloudLinux OS Shared</span> 7, <span class="notranslate"> CloudLinux OS Shared</span> 7 Hybrid, and <span class="notranslate"> CloudLinux OS Shared</span> 8 only
-:::
-
-CRIU is <span class="notranslate"> _Checkpoint/Restore In Userspace_ </span> , (pronounced <span class="notranslate"> kree-oo </span> ), is a software tool for Linux operating system. Using this tool, you can freeze a running application (or part of it) and checkpoint it as a collection of files on disk. You can then use the files to restore the application and run it exactly as it was during the time of freeze (more information on the link [https://criu.org/Main_Page](https://criu.org/Main_Page) ).
-
-mod_lsapi-1.1-1 is the first beta version with freezing PHP implemented. mod_lsapi now supports the following parameters:
-
-| |  |  | |
-|-|--|--|-|
-|**Option name** | **Description** | **Values** | **Default**|
-|lsapi_criu | Enable/disable CRIU for lsphp freezing. | <span class="notranslate"> On/Off </span> | <span class="notranslate"> Off </span>|
-|lsapi_criu_socket_path | Set path to socket for communication with criu service. | [path to socket] | <span class="notranslate"> /var/run/criu/criu_service.socket </span>|
-|lsapi_backend_semtimedwait | Enable/disable flag for notification about lsphp started. This method avoid cycles of waiting for lsphp start. | <span class="notranslate"> On/Off </span> | <span class="notranslate"> On </span>|
-|lsapi_backend_initial_start | Number of request when lsphp should be freezed. | [number] 0 - no freezing | 0|
-|lsapi_criu_use_shm | Method of requests counting. <span class="notranslate"> Off </span> - use shared memory. <span class="notranslate"> Signals </span> - use signals from child processes to parent. | <span class="notranslate"> Off/Signals </span> | <span class="notranslate"> Off </span>|
-|lsapi_criu_imgs_dir_path | Path to folder where imgs of freezed PHP will be stored. | [path] | <span class="notranslate"> /var/mod_lsapi/ </span>|
-|lsapi_criu_debug | Enable/Disable CRIU related debug logging. | <span class="notranslate"> On/Off </span> | <span class="notranslate"> Off </span>|
-
-Example:
-<div class="notranslate">
-
-```
-lsapi_criu On
-lsapi_criu_socket_path /var/run/criu/criu_service.socket
-lsapi_backend_semtimedwait On
-lsapi_backend_initial_start 15
-lsapi_criu_use_shm Off
-lsapi_criu_debug Off
-```
-</div>
-
-When Apache module mod_lsapi detects CRIU enabled (lsapi_criu On) it prepares a directory for images (on the first request of virtualhost) to store ( <span class="notranslate"> lsapi_criu_imgs_dir_path /var/mod_lsapi/[dir_name] </span> ), and starts lsphp process. Lsphp increases counter ( <span class="notranslate"> lsapi_criu_use_shm Off|Signals </span> ) via shared memory or signals, when counter reaches limit ( <span class="notranslate"> lsapi_backend_initial_start 15 </span> ), lsphp sends the request to CRIU for freezing. CRIU service makes images of requested processes. Lsphp will not be frozen if counter has not reached the limit. The next time when lsphp will be stopped, it will be unfrozen from the images.
-
-The images of the processes will be saved even if Apache is restarted. But all images will be deleted after server restart by default configuration. This can be modified by setting the new path <span class="notranslate"> lsapi_criu_imgs_dir_path </span> .
-
-:::warning Important!
-If php.ini or configuration file from php.d is changed, the images must be deleted manually.
-:::
-
-:::tip Note 
-CRIU (version lower than criu-lve-3.6-1) can't correctly freeze <span class="notranslate"> lsphp </span> with <span class="notranslate"> PrivateTmp </span> enabled. For correct work, <span class="notranslate"> PrivateTmp </span> must be disabled in <span class="notranslate"> httpd.service file </span> . 
-:::
-
-To disable it, copy <span class="notranslate"> _httpd.service_ </span> to <span class="notranslate"> _/etc/systemd/system_ </span> and change there <span class="notranslate"> PrivateTmp: 
-  </span>
-<div class="notranslate">
-
-```
-# cat httpd.service
-[Unit]
-Description=Apache web server managed by cPanel Easy
-ApacheConditionPathExists=!/etc/httpddisable
-ConditionPathExists=!/etc/apachedisable
-ConditionPathExists=!/etc/httpdisable
-
-[Service]Type=forking
-ExecStart=/usr/local/cpanel/scripts/restartsrv_httpd --no-verbose
-PIDFile=/var/run/apache2/httpd.pid
-PrivateTmp=false 
-
-[Install]
-WantedBy=multi-user.target 
-```
-</div>
-Or it would be technically better to provide a small override of service file rather than copying the whole new version in <span class="notranslate"> /etc/systemd/system </span> 
-
-[http://www.freedesktop.org/software/systemd/man/systemd.unit.html](http://www.freedesktop.org/software/systemd/man/systemd.unit.html)
-
-<div class="notranslate">
-
-```
-mkdir /etc/systemd/system/httpd.service.d
-echo "[Service]" >  /etc/systemd/system/httpd.service.d/nopt.conf
-echo "PrivateTmp=false" >> /etc/systemd/system/httpd.service.d/nopt.conf
-```
-</div>
-
-and
-
-<div class="notranslate">
-
-```
-# systemctl daemon-reload
-```
-</div>
-
-#### CRIU Installation
-
-Criu is installed with dependency to mod_lsapi package. To activate it:
-
-1. Enable service and start it:
-
-<div class="notranslate">
-
-```
-systemctl enable criu
-systemctl start criu
-```
-</div>
-
-2. Edit lsapi.conf file, turn CRIU On and set some defaults:
-
-<div class="notranslate">
-
-```
-lsapi_criu On
-lsapi_criu_socket_path /var/run/criu/criu_service.socket
-lsapi_backend_semtimedwait On
-lsapi_backend_initial_start 15
-lsapi_criu_use_shm Off
-```
-</div>
-
-3. Restart apache:
-
-<div class="notranslate">
-
-```
-service httpd restart
-```
-</div>
-
-#### CRIU Image Cleanup
-
-1. An option added to the Apache configuration for cleaning all the images earlier saved by CRIU.
-
-| |  |  | |
-|-|--|--|-|
-|**Option name** | **Description** | **Value** | **Default**|
-|<span class="notranslate">lsapi_reset_criu_on_apache_restart</span> | This option allows cleaning all CRIU images on Apache restart. | <span class="notranslate"> On/Off </span> | <span class="notranslate"> Off </span>|
-
-On the next restart of Apache all of the images will be cleaned.
-
-It can be enabled by writing <span class="notranslate">lsapi_reset_criu_on_apache_restart On </span> in _lsapi.conf_ (Virtual Host and .htaccess do not allow to use this option).
-
-Note that this option works only if <span class="notranslate">lsapi_terminate_backends_on_exit</span> is <span class="notranslate">  On  </span> (default value is <span class="notranslate"> On </span> , it is set in _lsapi.conf_ too).
-
-2. If you need to clean CRIU images for one user you can simply add file to the user's directory with CRIU images (default <span class="notranslate"> _/var/mod_lsapi/lsapi_ * _criu_imgs_ </span> ). On the next restart of lsphp the images will be cleaned.
-
-3. Global reset flag for cleaning all earlier saved images by CRIU.
-
-Current mod_lsapi allows cleaning all images only with one flag file.
-
-Create <span class="notranslate"> /usr/share/criu/mod_lsapi/lsphp.criu.reset </span> file. Also don't forget to set such permissions <span class="notranslate"> [nobody:nobody] </span> (or <span class="notranslate"> [apache:apache] </span> for non cPanel) and access mode [700] to the <span class="notranslate"> /usr/share/criu/mod_lsapi </span> directory.
-
-Steps to do :
-
-<div class="notranslate">
-
-```
-mkdir /usr/share/criumkdir /usr/share/criu/mod_lsapi
-chown nobody:nobody /usr/share/criu/mod_lsapi
-touch /usr/share/criu/mod_lsapi/lsphp.criu.reset
-```
-</div>
-
-On the next requests to all virtual hosts images will be recreated (deleted first and created again later - it depends on lsapi_backend_initial_start value).
-
-4. Аdded possibility to clean CRIU images from user space.
-
-If a user needs to clean CRIU images for lsphp, he should create a file: <span class="notranslate"> ~/mod_lsapi_reset_me_[vhost_name] </span>. Where <span class="notranslate"> [vhost_name] </span> is a ServerName from the VirtualHost block in the configuration file. On the next restart of lsphp, the images will be cleaned.
-
-_Example:_
-
-<div class="notranslate">
-
-```
-cd; touch mod_lsapi_reset_me_criu.test.com
-```
-</div>
-
-where _vhost.conf_ contains:  
-<span class="notranslate">`ServerName criu.test.com`</span>
-
-This mode is enabled by default and creates a separate lsphp process for each virtual host.
-
-<span class="notranslate">`mod_lsapi_reset_me[vhost_name]`</span> flag will not work for a user when lsapi_per_user option is <span class="notranslate">`On`</span>.
-
-5. There is (default <span class="notranslate">`off`</span>) option in mod_lsapi that creates only one lsphp process for a user, regardless of the number of his virtual hosts. We don't recommend to use this option with CRIU, but if you use it, make sure that your virtual hosts (under the same user) have the same environment configurations. If they are not the same, this may cause undesirable lsphp process operation.
-
-
-
-## Additional integration components
-
-CloudLinux OS Shared uses various ways to integrate with existing system.
-
-### LVE PAM module
-
-pam_lve.so is a PAM module that sets up LVE environment. It provides easy way to setup LVE for SSH sessions, as well as other PAM enabled applications, such as crontab, su, etc.
-
-pam_lve.so is installed by default when you convert existing server.
-
-Installation:
-
-<div class="notranslate">
-
-```
-# yum install pam_lve
-```
-</div>
-
-After you install <span class="notranslate"> RPM </span>, add the following line to the PAM config file for the required application:
-
-<div class="notranslate">
-
-```
-session    required     pam_lve.so 500 1 wheel,other
-```
-</div>
-
-In this line:
-* 500 stands for minimum UID for which LVE will be setup. For any user with UID < 500, LVE will not be setup. If <span class="notranslate">CageFS</span> is installed, use:
-<span class="notranslate">`cagefsctl --set-min-uid UID`</span> to setup minimum UID. The parameter in PAM files will be ignored in that case.
-* 1 stands for <span class="notranslate">CageFS</span> enabled (0 – <span class="notranslate">CageFS</span> disabled)
-* 3rd optional argument defines group of users that will not be placed into LVE or <span class="notranslate">CageFS</span>. Starting with **pam_lve 0.3-7** you can specify multiple groups, comma separated.
-
-:::tip Warning
-It is crucial to place all users that su or sudo to root into that group. Otherwise, once such user gains root, user will be inside LVE, and all applications restarted by that user will be inside that user LVE as well.
-:::
-
-:::tip Warning
-Please do not add the `pam_lve.so` in the PAM configuration for sudo. It can affect user’s work with the resource usage plugin, and Python/Node.js/PHP selector plugins.
-:::
-
-For example, to enable LVE for SSH access, add that line to the `/etc/pam.d/sshd`. To enable LVE for SU, add that line to the `/etc/pam.d/su`.
-
-By default, module will not place users with group wheel into lve. If you want to use different group to define users that will not be placed into LVE by pam_lve - pass it as the 3rd argument.
-
-:::tip Warning
-Be careful when you test it, as if you incorrectly add this line to the `/etc/pam.d/sshd`, it will lock you out ssh. Don't log out of your current SSH session, until you sure it works.
-:::
-
-For preventing cases when user enters under usual user (using ssh) and then tries to enter as super user (via sudo or su) - pam_sulve was created, which tries to enter to LVE=1 and leaves it right away. If action fails, user gets message:
-
-<div class="notranslate">
-
-```
-!!!!  WARNING: YOU ARE INSIDE LVE !!!!
-```
-</div>
-
-To check if pam_sulve is enabled on the server:
-
-<div class="notranslate">
-
-```
-grep pam_sulve.so /etc/pam.d/*
-```
-</div>
-
-should not be empty.
-
-### LVE wrappers
-
-* [Placing programs inside LVE](./#placing-programs-inside-lve)
-
-LVE wrappers are the set of tools that allow system administrator to run various users, programs & daemons within Lightweight Virtual Environment. This allows system administrator to have control over system resources such program can have. Additionally it prevents misbehaving programs running within LVE to drain system resources and slow down or take down the whole system. The tools are provided by lve-wrappers RPM.
-
-You can install them by running:
-
-<div class="notranslate">
-
-```
-$ yum install lve-wrappers
-```
-</div>
-
-#### Placing programs inside LVE
-
-LVE Wrappers provide two tools for placing programs inside LVE: <span class="notranslate">`lve_wrapper`</span> and `lve_suwrapper`.
-
-`/bin/lve_wrapper` can be used by any non-root user, as long as that user is in group lve (see `/etc/groups` file).
-
-**Syntax**
-
-<div class="notranslate">
-
-```
-lve_wrapper <command_to_run>
-```
-</div>
-
-**Example**
-
-<div class="notranslate">
-
-```
-$ lve_wrapper make install
-```
-</div>
-
-The program will be executed within LVE with ID matching user's id.
-
-`/bin/lve_suwrapper` can be used by root user or any user in group lve (see `/etc/groups` file) to execute command within specified LVE.
-
-**Syntax**
-
-<div class="notranslate">
-
-```
-lve_suwrapper LVE_ID <command_to_run>
-```
-</div>
-
-**Example**
-
-<div class="notranslate">
-
-```
-# lve_suwrapper 10000 /etc/init.d/postgresql start
-```
-</div>
-
-**Switches**
-
-* `-f` - force namespace
-* `-n` - without namespace
-* `-c` - remove CPU limits (requires `lve_wrapper` >= 2.1.2)
-
-### MPM ITK
-
-CloudLinux OS Shared <span class="notranslate">httpd RPM</span> comes with <span class="notranslate"> MPM ITK </span> built in. Yet, if you would like to build your own Apache, you need to apply our patch for <span class="notranslate"> MPM ITK </span>
-
-* Download file: [https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
-* Extract: <span class="notranslate">apache2.2-mpm-itk-seculrelve12.patch</span>
-* And apply this patch to your Apache source code.
-
-When running <span class="notranslate"> MPM ITK </span>, you should disable <span class="notranslate">mod_hostinglimits</span>. All the functionality needed by <span class="notranslate"> MPM ITK </span> is already built into the patch.
-
-Directives which can be used by Apache with <span class="notranslate"> ITK </span> patch:
-
-* <span class="notranslate">`AssignUserID`</span> - uses ID as LVE ID
-* <span class="notranslate">`LVEErrorCodeITK`</span> - error code to display on LVE error (508 by default)
-* <span class="notranslate">`LVERetryAfterITK`</span> - same as <span class="notranslate">`LVERetryAfter`</span> - respond with <span class="notranslate">`Retry-After`</span> header when LVE error 508 occurs
-* <span class="notranslate">`LVEId`</span> - ovverides id used for LVE ID instead of <span class="notranslate">`AssignUserID`</span>
-* <span class="notranslate">`LVEUser`</span> - overrides user to use to retrieve LVE ID, instead of AssignUserID
-
-### HostingLimits module for Apache
-
-* [Additional notes](./#additional-notes)
-* [Installation](./#installation-4)
-* [Directives](./#directives)
-  * [SecureLinks](./#securelinks)
-  * [SkipErrors](./#skiperrors)
-  * [AllowedHandlers](./#allowedhandlers)
-  * [DenyHandlers](./#denyhandlers)
-  * [LVEErrorCode](./#lveerrorcode)
-  * [LVEid](./#lveid)
-  * [LVEUser](./#lveuser)
-  * [LVEUserGroupID](./#lveusergroupid)
-  * [LVERetryAfter](./#lveretryafter)
-  * [LVESitesDebug](./#lvesitesdebug)
-  * [LVEParseMode](./#lveparsemode)
-  * [LVEPathRegexp](./#lvepathregexp)
-  * [LVELimitRecheckTimeout](./#lvelimitrechecktimeout)
-  * [LVEUse429](./#lveuse429)
-
-mod_hostinglimits works with existing <span class="notranslate"> CGI/PHP </span> modules, to put them into LVE context. In most cases the <span class="notranslate"> CGI/PHP </span> process will be placed into LVE with the ID of the user that sites belongs to. mod_hostinglimits detects the user from `SuexecUserGroup` (<span class="notranslate">suexec</span> module), <span class="notranslate">`SuPHP_UserGroup`</span> (from mod_suphp), `AssignUserID` (<span class="notranslate">MPM ITK</span>), <span class="notranslate">`RUidGid` (mod_ruid2 </span> ) directives.
-
-This can be overwritten via LVEId or LVEUser parameter on the Directory level.
-
-:::tip Note
-Those parameters will not work with mod_fcgid and mod_cgid.
-:::
-
-The order of detection looks as follows:
-
-* LVEId
-* LVEUser
-* SuexecUserGroup
-* suPHP_UserGroup
-* RUidGid
-* AssignUserID
-
-
-:::tip Note
-LVE doesn't work for mod_include #include due to its "filter" nature.
-:::
-
-Example:
-
-<div class="notranslate">
-
-```
-LoadModule hostinglimits_module modules/mod_hostinglimits.so
-<IfModule mod_hostinglimits.c>
- AllowedHandlers cgi-script php5-script php4-script
- SecureLinks On
-</IfModule>
-```
-</div>
-
-#### **Additional notes**
-
-**mod_hostinglimits** (since version 1.0-22) supports <span class="notranslate">`min-uid - cagefsctl --set-min-uid=600`</span>.
-
-Min UID is read on Apache start/restart and stored in the memory during apache runtime.
-
-If the min UID has changed, you should restart Apache for **mod_hostinglimits** applying new min UID value. Full min UID is supported only with APR.
-
-The following message should appear:
-
-<div class="notranslate">
-
-```
-[notice] mod_hostinglimits: found apr extention version 3.
-```
-</div>
-
-This means that the correct APR is installed with mod_hostinglimits.
-
-mod_hostinglimist has variable for Apache CustomLog format string <span class="notranslate">`%{LVE_ID}y`</span>.
-
-**How to use**:
-
-LogFormat 
-
-<div class="notranslate">
-
-```
-"%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" req for lve "%{LVE_ID}y"
-```
-</div>
-
-combined
-
-shows in access_log the following info:
-
-<div class="notranslate">
-
-```
-*.*.*.* - - [09/Apr/2015:07:17:06 -0400] "GET /1.php HTTP/1.1" 200 43435 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0" req for lve 500
-
-*.*.*.* - - [09/Apr/2015:07:17:06 -0400] "GET /1.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2524 "************/1.php""Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0" req for lve 500
-
-*.*.*.* - - [09/Apr/2015:07:17:06 -0400] "GET /1.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2146 "************/1.php""Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Firefox/24.0" req for lve 500
-```
-</div>
-
-#### Installation
-
-**cPanel**
-
-Installed by default during EasyApache build. Requires <span class="notranslate">`lve-stats`</span> & <span class="notranslate">`lve-utils`</span> packages to be installed.
-
-**DirectAdmin**
-
-Can be built using <span class="notranslate"> custombuild</span>:
-
-<div class="notranslate">
-
-```
-$ yum install liblve-devel
-$ cd /usr/local/directadmin/custombuild
-$ ./build update
-$ ./build set cloudlinux yes
-$ ./build apache
-$ ./build rewrite_confs
-```
-</div>
-
-If you run `suphp`, then run the following:
-
-<div class="notranslate">
-
-```
-$ ./build suphp
-```
-</div>
-
-**Plesk**
-
-<div class="notranslate">
-
-```
-$ yum install mod_hostinglimits
-```
-</div>
-
-**ISPmanager**
-
-<div class="notranslate">
-
-```
-$ yum install mod_hostinglimits
-```
-</div>
-
-**InterWorx**
-
-<div class="notranslate">
-
-```
-$ yum install mod_hostinglimits
-```
-</div>
-
-**H-Sphere**
-
-Included by default in H-Sphere 3.5+
-
-**Standard Apache from RPM**
-
-<div class="notranslate">
-
-```
-$ yum install mod_hostinglimits
-```
-</div>
-
-**Custom Apache installation**
-
-Compile from the source: [https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz)
-
-<div class="notranslate">
-
-```
-$ wget https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz
-$ yum install cmake
-$ tar -zxvf mod_hostinglimits*.tar.gz
-$ cd mod_hostinglimits*
-$ cmake .
-$ make
-$ make install
-```
-</div>
-
-* Apache Module Identifier: `hostinglimits_module`
-* Source Files: `mod_hostinglimits.c`
-* Compatibility: MPM prefork, worker, event, ITK
-
-#### Directives
-
-<div class="notranslate">
-
-#### **SecureLinks**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Makes sure that for any virtual hosts, only files owned by user specified via SuexecUserGroup or other ways as described above are served. For files owned by any other user apache will return <span class="notranslate">`Access Denied`</span> error. The directive will not affect VirtualHost without user id specified, or with uid < 100|
-|**Syntax**| <span class="notranslate">`SecureLinks On`</span>|
-|**Default**| <span class="notranslate">`SecureLinks Off`</span>|
-|**Context**| server config|
-
-Prevents apache from serving files not owned by user, stopping symlink attacks against php config files.
-
-**Example**
-
-<div class="notranslate">
-
-```
-SecureLinks On
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **SkipErrors**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Allow apache to continue if LVE is not available|
-|**Syntax**| <span class="notranslate">`SkipErrors On`</span>|
-|**Default**| <span class="notranslate">`SkipErrors On`</span>|
-|**Context**| server config|
-|**<font color="Red">Status</font>**| <font color="Red">deprecated</font>|
-
-Prevents Apache from exiting if LVE is not available.
-
-**Example**
-
-<div class="notranslate">
-
-```
-SkipErrors Off
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **AllowedHandlers**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| List of handlers that should be placed into LVE, support regexp|
-|**Syntax**|`AllowedHandlers cgi-script %^php%  my-script`|
-|**Default**| cgi-script %php% fcgid-script application/x-miva-compiled|
-|**Context**| server config|
-
-This directive allows to list handlers which will be intercepted and placed into LVE.
-
-**Examples**
-
-* Match requests handled by cgi-script handler:
-  
-  <div class="notranslate">
-  
-  ```
-  AllowedHandlers cgi-script 
-  ```
-  </div>
-
-* Match all requests:
-  
-  <div class="notranslate">
-  
-  ```
-  AllowedHandlers *
-  ```
-  </div>
-  
-* Match all requests that handled by handler that contains PHP:
-  
-  <div class="notranslate">
-  
-  ```
-  AllowedHandlers %php%
-  ```
-  </div>
-* Match all requests handled by handler that starts with PHP:
-  
-  <div class="notranslate">
-  
-  ```
-  AllowedHandlers %^php%
-  ```
-  </div>
-
-The default modhostinglimits module configuration only handles cgi scripts and ignores static content like html files and images.
-With the default configuration, an Apache server denial of service situation can occur when there are many requests for large html files and images. But on the other hand, processing all static files is unprofitable, since when processing many small files, the load average will increase significantly due to the overhead of entering/exiting lve. Therefore, it is better to enable processing only for a subset of static files based on criteria such as file location or file name extension using Apache directives as Location, Directory and Files.
-
-This functionality is available since version 1.0-40.
-
-In the following example, the module hostinglimits will process files for a URLs starting with weightcontent, for files with an .avi extension, and for files from the video subdirectory.
-
-  ```
-<IfModule mod_hostinglimits.c>
-
-   SkipErrors Off
-   AllowedHandlers cgi-script %php% fcgid-script application/x-miva-compiled
-
-  <LocationMatch "^/weigthcontent/">
-   AllowedHandlers *
-  </LocationMatch>
-
-  <Files "*.avi">
-   AllowedHandlers *
-  </Files>
-
-  <DirectoryMatch "/home/user[0-5]/public_html/video/">
-   AllowedHandlers *
-  </DirectoryMatch>
-
-</IfModule>
-  ```
-
-***
-
-<div class="notranslate">
-
-#### **DenyHandlers**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| List of handlers that should not be placed into LVE, support regexp|
-|**Syntax**| <span class="notranslate">`DenyHandlers text/html`</span>|
-|**Default**| none|
-|**Context**| server config|
-
-This directive works together with AllowHandlers, to exclude some handlers from being allowed in LVE.
-
-**Example**:
-
-Match all requests, but <span class="notranslate">`text/*`</span>
-
-<div class="notranslate">
-
-```
-AllowedHandlers *DenyHandlers %text/*%
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVEErrorCode**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Error code to display once entry is rejected due to maxEntryProcs|
-|**Syntax**| values from 500 to 510|
-|**Default**| 508|
-|**Context**| directory config|
-
-Specifies ErrorCode to use on LVE error (like too many concurrent processes running).
-
-The message that will be displayed by default is:
-<div class="notranslate">
-
-```
-Resource Limit Is Reached.
-
-The website is temporarily unable to serve your request as it exceeded resource limit. 
-
-Please try again later.
-```
-</div>
-
-You can redefine error message using `ErrorDocument` directive
-
-Example:
-<div class="notranslate">
-
-```
-LVEErrorCode 508ErrorDocument 508 508.html
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVEid**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Allows to setup separate LVE ID on per directory level. If not set, user ID of a corresponding user is used.|
-|**Syntax**|<span class="notranslate">`LVEId number`</span>|
-|**Default**| User Id is used|
-|**Context**| directory config|
-
-Specifies LVE id for particular directory
-
-**Example**:
-
-<div class="notranslate">
-
-```
-<Directory "/home/user1/domain.com/forums">
- LVEId 10001
-</Directory>
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVEUser**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Allows to setup separate LVE ID on per directory level.|
-|**Syntax**|<span class="notranslate">`LVEUser username`</span>|
-|**Default**| none|
-|**Context**| directory config|
-
-Specifies LVE ID for particular directory.
-
-**Example**:
-
-<div class="notranslate">
-
-```
-<Directory "/home/user1/domain.com/forums">
-       LVEUser user1
-</Directory>
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVEUserGroupID**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Use group ID instead of user ID for LVE container number.|
-|**Syntax**| <span class="notranslate">`LVEUserGroupID On/Off`</span>|
-|**Default**| User Id is used|
-|**Context**| global config only|
-
-* If the option enabled, group ID will be used instead of a user ID. Apache will display the following string in error logs:
-
-<div class="notranslate">
-
-```
-mod_hostinglimits: use GroupID instead of UID 
-mod_hostinglimits: found apr extension version 2 
-mod_hostinglimits: apr_lve_environment_init_group check ok
-```
-</div>
-
-* If a compatible apr library is not found, the following error message will be display in error logs.
-
-<div class="notranslate">
-
-```
-mod_hostinglimits:  apr_lve_* not found!!!
-```
-</div>
-
-**Example**:
-
-<div class="notranslate">
-
-```
-<Directory "/home/user1/domain.com/forums">
-       LVEUserGroupID On
-</Directory>
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVERetryAfter**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Returns Retry-After header when LVE error 508 occurs.|
-|**Syntax**|`LERetryAfter MINUTES`|
-|**Default**| 240 minutes|
-|**Context**| directory config|
-
-Specifies interval for <span class="notranslate">`Retry-After`</span> header. The <span class="notranslate">`Retry-After`</span> response-header field can be used to indicate how long the service is expected to be unavailable to the requesting client.
-
-**Example**:
-
-<div class="notranslate">
-
-```
-LVERetryAfter 180
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVESitesDebug**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Provides extended debug info for listed sites.|
-|**Syntax**|<span class="notranslate">`LVESitesDebug test.com test2.com`</span>|
-|**Default**| <span class="notranslate"> none </span>|
-|**Context**| directory config|
-
-Specifies virtual hosts to provide extra debugging information.
-
-**Example**:
-
-<div class="notranslate">
-
-```
-<Directory "/home/user1/domain.com/forums">
-       LVESitesDebug abc.com yx.cnet
-</Directory>
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVEParseMode**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Determines the way LVE ID will be extraced. In Conf|
-|**Syntax**|`LVEParseMode CONF` `PATH` `OWNER` [`REDIS`](/shared/limits/#redis-support-for-hostinglimits)|
-|Default: | <span class="notranslate">`CONF`</span>|
-|Context: | directory config|
-
-* In `CONF` mode, standard way to extract LVE ID is used (SuexecUserGroup, LVEId, or similar directives).
-
-* In <span class="notranslate">`PATH`</span> mode, username is extracted from the home directory path. The default way to match username is via the following regexp: <span class="notranslate">`/home/([^/]*)/`</span> . Custom regexp can be specified in LVEPathRegexp.
-
-* In <span class="notranslate">`OWNER`</span> mode, the owner of the file is used as an LVE ID.
-
-* In <span class="notranslate">[`REDIS`](/shared/limits/#redis-support-for-hostinglimits)</span> mode, LVE ID is retrieved from Redis database.
-
-**Example**:
-
-<div class="notranslate">
-
-```
-LVEParseMode CONF
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVEPathRegexp**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Regexp used to extract username from the path. Used in conjuction with `LVEParseMode PATH`|
-|**Syntax**|`LVEPathRegexp regexp`|
-|**Default**| <span class="notranslate">`/home/([^/]*)/`</span>|
-|**Context**| directory config|
-
-Used to extract usersname via path.
-
-**Example**:
-
-<div class="notranslate">
-
-```
-LVEPathRegexp /home/([^/]*)/
-```
-</div>
-
-***
-
-<div class="notranslate">
-
-#### **LVELimitRecheckTimeout**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Timeout in milliseconds, a site will return EP without lve_enter for LA decreasing after this time|
-|**Syntax**|`LVELimitRecheckTimeout number`|
-|**Default**| 0|
-|**Context**| httpd.conf, virtualhost|
-
-Example:
-<span class="notranslate"> </span>
-```
-LVELimitRecheckTimeout 1000
-```
-
-<div class="notranslate">
-
-#### **LVEUse429**
-
-</div>
-
-| | |
-|-|-|
-|**Description**| Use 429 error code as code returned on max entry limits ( <span class="notranslate"> on/off </span> ).|
-|**Syntax**|`LVEUse429 on`|
-|**Default**|<span class="notranslate">`off`</span>|
-|**Context**| httpd.conf, virtualhost|
-
-**Example**:
-
-<div class="notranslate">
-
-```
-LVEUse429 on
-```
-</div>
-
-Available for RPM based panels, EasyApache 4 and DirectAdmin.
-
-### cPanel/WHM JSON API
-
-* [Parameters](./#parameters)
-* [Manage reseller limits/users/packages via cPanel/WHM JSON API - JSONHandler](/shared/cloudlinux_os_components/#manage-reseller-limits-users-packages-via-cpanel-whm-json-api-jsonhandler)
-* [Using a WHM API token](./#using-a-whm-api-token)
-
-CloudLinux OS Shared offers JSON API for [lvectl](/shared/command-line_tools/#lvectl) via WHM. You can access it using the following URL:
-
-<div class="notranslate">
-
-```
-https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=list
-```
-</div>
-
-The output will look as follows:
-
-<div class="notranslate">
-
-```
-{"data":[{"ID":"default","CPU":"30","NCPU":"1","PMEM":"1024M","VMEM":"1024M","EP":"28","NPROC":"0","IO":"2048"}]}
-```
-</div>
-
-#### **Parameters**
-
-|||
-|-|-|
-|<span class="notranslate">`cgiaction`</span>|always <span class="notranslate">`jsonhandler`</span>|
-|<span class="notranslate">`handler`</span>|should match [lvectl](/shared/command-line_tools/#lvectl) command|
-
-For commands like <span class="notranslate">`set`, `destroy`</span> & <span class="notranslate">`delete`</span>, where you need to specify LVE (user) ID, like `lveid=500` (matches user ID 500).
-
-**Example**:
-
-<div class="notranslate">
-
-```
-https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set&lveid=500&speed=30%&io=2048
-
-https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set&lveid=500&speed=300Mhz&io=2048
-
-https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set&lveid=500&speed=3Ghz&io=2048
-```
-</div>
-
-:::tip Note
-**Speed** limit can be specified in several units of measure - <span class="notranslate"> %, MHz, GHz </span>. The figures will be different according to the unit of measure.
-:::
-
-**Output**:
-
-<div class="notranslate">
-
-```
-{"status":"OK"}
-```
-</div>
-
-To do `set default`, use `lveid=0`, like:
-
-<div class="notranslate">
-
-```
-https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set&lveid=0&speed=30%&io=2048
-```
-</div>
-
-For commands like <span class="notranslate">`apply all`, `destroy all`</span>, use:
-
-<div class="notranslate">
-
-```
-handler=apply-all
-
-handler=destroy-all
-```
-</div>
-
-You can use the following commands that allow to specify user name instead of user ID:
-
-| | |
-|-|-|
-|<span class="notranslate">`set-user`</span> | Set parameters for a LVE and/or create a LVE using username instead of ID.|
-|<span class="notranslate"> `list-user  ` </span> | List loaded LVEs, display username instead of user ID.|
-|<span class="notranslate"> `delete-user ` </span> | Delete LVE and set configuration for that user to defaults.|
-
-If the limits for users are set with <span class="notranslate"> cPanel LVE Extension</span>, then turnkey billing solutions can be applied (e.g. WHMCS).
-
-
-#### Manage reseller limits/users/packages via cPanel/WHM JSON API (JSONHandler)
-
-|  |  |  |
-|----|----|--|
-|**Action**|**lvectl command**|**JSONHandler**|
-|enable  reseller limits|<span class="notranslate">`lvectl set-reseller res1 --speed=35%`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set-reseller&lveid=res1&speed=30%&io=2048`|
-|disable reseller limits|<span class="notranslate">`lvectl remove-reseller res1`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=remove-reseller&lveid=res1`|
-|set default limits for reseller|<span class="notranslate">`lvectl set-reseller-default res1 --speed=91%`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set-reseller-default&lveid=res1&speed=30%`|
-|set limits for package, created by reseller|<span class="notranslate">`lvectl package-set res1_pack1 --reseller res1 --speed=88%`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=package-set&lveid=res1_pack1&reseller=res1&speed=30%`|
-|set limits for user, created by reseller|<span class="notranslate">`lvectl set-user r1user1 --reseller res1 --speed=77%`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set-user&lveid=r1user1&reseller=res1&speed=30%`|
-|set unlimited for user, created by reseller|<span class="notranslate">`lvectl set-user r1user1 --reseller res1 --unlimited`</span>|`https://IP:2087/cpsess_YOURTOKEN/cgi/CloudLinux.cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=set-user&lveid=r1user1&reseller=res1&unlimited`|
-
-#### Using a WHM API token
-
-You can use a WHM API token with curl as follows:
-
-<div clas="code">
-
-```
-curl -X POST -k -s -H "Authorization: whm root:WHM_TOKEN" "https://SERVER_IP:2087/cgi/CloudLinux.cgi?cgiaction=jsonhandler&handler=LVE_METHOD&PARAMETERS
-```
-</div>
-
-Where:
-
-* <span class="notranslate">`WHM_TOKEN`</span> – a generated WHM API token (see: [Creating an API token](https://documentation.cpanel.net/display/DD/Guide+to+API+Authentication+-+API+Tokens+in+WHM#0ac291c40e454694a8b981c45988c1cb))
-* <span class="notranslate">`LVE_METHOD`</span> – lvectl method (for example: <span class="notranslate">`list`</span>. See also: [lvectl](/command-line_tools/#lvectl))
-* <span class="notranslate">`PARAMETERS`</span> – all other parametrs and options for a method according to the [documentation](/command-line_tools/#lvectl)
-
-
-### mod_proctitle
-
-* [How to read mod_proctitle information](./#how-to-read-mod-proctitle-information)
-* [Tuning parameters](./#tuning-parameters)
-
-mod_proctitle is a module for gathering URL information per request. It is available only for Apache 2.4 now.
-
-
-**For installation:**
-
-cPanel EasyApache 3 and non cPanel ( _CloudLinux 7 only for non cPanel_ ):
-
-<div class="notranslate">
-
-```
-# yum install mod_proctitle --enablerepo=cloudlinux-updates-testing
-# service httpd restart
-```
-</div>
-
-cPanel EasyApache 4:
-
-<div class="notranslate">
-
-```
-# yum install ea-apache24-mod_proctitle
-# service httpd restart
-```
-</div>
-DirectAdmin:
-<div class="notranslate">
- 
-```
-# cd /usr/local/directadmin/custombuild
-# ./build update
-# ./build mod_procticle
-```
-</div>
-
-#### How to read mod_proctitle information
-
-**How to read information gathered by the module**
-
-
-For reading information saved by module use the following script (the script is not in the package):
-<div class="notranslate">
-
-```
-#!/bin/bash
-
-httpd=httpd 
-
-for pid in `/usr/bin/pgrep $httpd`; do
-    for tid in `ls /proc/$pid/task`; do
-		found=no
-		for shm in `ls /dev/shm/apache_title_shm_${pid}_${tid}_* 2>/dev/null`; do
-			found=yes
-			title=`/usr/bin/tr -d '\0' < $shm`
-			thread_id=`/bin/basename "${shm}" | sed "s/apache_title_shm_${pid}_${tid}_//"`
-			echo "$pid.$tid - $thread_id - $title"
-		break
-		done
-	if [ "$found" = "no" ]; then
-		echo "$pid.$tid not found"
-	fi
-    done
-done
-```
-</div>
-Here are the examples of saved by module:
-<div class="notranslate">
-
-```
-# sh proctitles_info.sh
-571258.571258 NOT FOUND
-571300.571300 NOT FOUND
-571303.571303 - 000000000000000 - 1466513333.6 test.cloudlinux.com GET /1.php HTTP/1.1
-571304.571304 - 000000000000000 - 1466513335.3 test.cloudlinux.com GET /1.php HTTP/1.1
-571305.571305 - 000000000000000 - httpd
-571306.571306 - 000000000000000 - httpd
-571307.571307 - 000000000000000 - httpd
-571372.571372 - 000000000000000 - httpd
-571374.571374 - 000000000000000 - httpd
-
-Item info:
-[pid].[tid] - [posix thread id] - [request info]
-```
-</div>
-
-Request information can contain:
-
-<span class="notranslate"> _NOT FOUND_ </span> - means that process of Apache doesn't handle requests.<br>
-<span class="notranslate"> _httpd_ </span> - request is active and waiting for new connection.<br>
-<span class="notranslate"> _[seconds].[tenths of second] [host] [METHOD] [URL] [PROTOCOL]_ </span>
-
-#### Tuning parameters
-
-**Module parameters for tuning**
-
-| | |
-|-|-|
-|WatchHandlers | List of handlers for monitoring (httpd.conf, virtualhost).|
-|ProctitleUseFilter On/Off | Use old method of cleaning information or new via filter (for prefork better to use <span class="notranslate"> Off </span> )|
-
-### alt-suexec
-
-**What is <span class="notranslate">alt-suexec</span> package needed for?**
-
-If you use standard httpd from our repository, but your users' sites do not match standard Apache location of <span class="notranslate">`/var/www`</span>, then you should use alt-suexec.
-alt-suexec package brings suEXEC binaries pre-compiled for specific locations, like <span class="notranslate"> /home </span> .
-
-**How to switch suEXEC with alt-suexec**
-
-Based on httpd 2.2.16 basic for Cloudlinux OS Shared 6, httpd 2.4.6 basic for CloudLinux OS Shared 7 and httpd 2.4.37 basic for CloudLinux OS Shared 8, the package brings to a server a set of suEXECs with different <span class="notranslate">DOCUMENT ROOTs</span> and <span class="notranslate">MIN_UID/MIN_GID</span> parameters. The first set of suEXECs is listed by such modes:
-
-<div class="notranslate">
-
-```
-# switch_suexec -h
-USE_BIZ - DOCUMENT ROOT /biz/ MIN_UID 500 MIN_GID 100 CALLER apache
-USE_HOSTING - DOCUMENT ROOT /hosting/ MIN_UID 500 MIN_GID 100 CALLER apache
-USE_HSPHERE - DOCUMENT ROOT /hsphere/local MIN_UID 100 MIN_GID 100 CALLER httpd
-USE_HOME - DOCUMENT ROOT /home/ MIN_UID 500 MIN_GID 100 CALLER apache
-USE_WWW - DOCUMENT ROOT /var/www/ MIN_UID 500 MIN_GID 100 CALLER apache
-USE_FSROOT - DOCUMENT ROOT / MIN_UID 500 MIN_GID 100 CALLER apache
-USE_STORAGE - DOCUMENT ROOT /storage/content/ MIN_UID 500 MIN_GID 100 CALLER apache
-USE_DATAS - DOCUMENT ROOT /datas/ MIN_UID 500 MIN_GID 100 CALLER apache
-```
-</div>
-The package also brings its own utility for installing specific suEXEC:
-
-| | |
-|-|-|
-|-l | list of available suexec|
-|-u | update suexec according to <span class="notranslate"> /etc/sysconfig/alt-suexec </span>|
-|-s | set new suexec and install it|
-|-p | set new suexec path and install it|
-|-o | set new suexec owners and install it|
-|-r | restore native apache suexec|
-
-There are two ways to set up new suEXEC binary:
-
-1) via config file <span class="notranslate"> _/etc/sysconfig/alt-suexec_ </span>
-2) via utility _switch_suexec_
-
-Here are the examples of how to set up suEXEC with <span class="notranslate"> DOC_ROOT = "/home": </span>
-
-**1.**
-
-1) add string <span class="notranslate"> "USE_HOME" </span> to <span class="notranslate"> _/etc/sysconfig/alt-suexec_   </span>
-2) run the command <span class="notranslate"> switch_suexec -u </span>
-
-**2.**
-
-1) <span class="notranslate"> switch_suexec -sUSE_HOME </span>
-
-Result of both methods:
-<div class="notranslate">
-
-```
-# cat /etc/sysconfig/alt-suexec
-USE_HOME
-```
-</div>
-
-Here is standard suEXEC for CloudLinux OS Shared 6 clean server:
-<div class="notranslate">
-
-``` 
-# /usr/sbin/suexec -V
--D AP_DOC_ROOT="/var/www"
--D AP_GID_MIN=100
--D AP_HTTPD_USER="apache"
--D AP_LOG_EXEC="/var/log/httpd/suexec.log"
--D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
--D AP_UID_MIN=500
--D AP_USERDIR_SUFFIX="public_html"
--D AP_SAFE_DIRECTORY="/usr/local/safe-bin"
-```
-</div>
-
-Here is output of new suEXEC after <span class="notranslate"> USE_HOME </span> installtion:
-<div class="notranslate">
-
-``` 
-# /usr/sbin/suexec -V
--D AP_DOC_ROOT="/home/"
--D AP_GID_MIN=100
--D AP_HTTPD_USER="apache"
--D AP_LOG_EXEC="/var/log/httpd/suexec.log"
--D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
--D AP_UID_MIN=500
--D AP_USERDIR_SUFFIX="public_html"
--D AP_SAFE_DIRECTORY="/usr/local/safe-bin"
-```
-</div>
-
-Description of other switch_suexec parameters:
-
-| | |
-|-|-|
-|-p | if suexec binary file will be placed not in standard way <span class="notranslate"> /usr/sbin </span> - specify this new path with p-option|
-|-o | if suexec binary file not owned by <span class="notranslate"> root:apache </span> - specify new owner with o-option|
-
-For most cases -p and -o options for standard Apache are useless.
-
-Correct suEXEC will be restored even after httpd update or reinstall.
-
-List of pre-built suEXEC binary files stored without suid bit and not executable.
-
-**How to install alt-suexec?**
-
-For installation run the command:
-<div class="notranslate">
-
-```
-yum install alt-suexec
-```
-</div>
-
-**New suexec with custom parameters**
-
-If you need suEXEC with custom parameters absent in current set of alt-suexec, please submit a ticket on [https://cloudlinux.zendesk.com](https://cloudlinux.zendesk.com/) and we will add new suEXEC with needed parameters.
-
-### cPanel Nginx and application selectors
-
-Recently, cPanel added support for the [Nginx](https://documentation.cpanel.net/display/CKB/Nginx) web server and for [Python](https://documentation.cpanel.net/display/CKB/How+to+Install+a+Python+WSGI+Application) and [Node.js](https://documentation.cpanel.net/display/CKB/How+to+Install+a+Node.js+Application) applications. 
-
-We have checked the compatibility of ea-nginx and cPanel application Selectors with CloudLinux OS Shared LVE and CageFS.
-All tests passed successfully and all processes started by ea-nginx and cPanel selectors are launched inside LVE and CageFS.
-
-
-Don’t forget, you can use Ruby/Python/Node.js Selectors from CloudLinux OS Shared. Here you can find a large number of supported versions for Ruby/Python/Node.js applications.
-
-* [CloudLinux OS Shared Python Selector](./#python-selector)
-* [CloudLinux OS Shared Ruby Selector](./#ruby-selector)
-* [CloudLinux OS Shared NodeJS Selector](./#node-js-selector)
-
-:::tip Note
-Nginx support is currently experimental.
-:::
-
-### How to use Certbot with alt-python36
-
-To run Certbot with <span class="notranslate">`alt-python36`</span>, follow the next steps:
-
-1. Add a path to the <span class="notranslate">`alt-python36`</span> in the environment variable <span class="notranslate">`PATH`</span> as the first element: <span class="notranslate">`/opt/alt/python36/bin/`</span>.
-2. Run Certbot with the <span class="notranslate">`--no-bootstrap`</span> parameter.
-
-**Example:**
-
-The old command to run Certbot on CentOS 6/Cloudlinux OS Shared 6:
-
-<div class="notranslate">
-
-```
-# certbot-auto --nginx
-```
-</div>
-
-The new command to run Certbot on CentOS 6/CloudLinux OS Shared 6:
-
-<div class="notranslate">
-
-```
-# PATH="/opt/alt/python36/bin/:$PATH" certbot-auto --no-bootstrap --nginx
-```
-</div>
-
-## Apache suexec module
-
-### General information and requirements
-
-* [How does it work with CloudLinux OS Shared?](./#how-does-it-work-with-cloudlinux-os-shared)
-
-This module is used by the Apache HTTP Server to switch to another user before executing CGI programs. The suEXEC feature provides users of the Apache HTTP Server with the ability to run CGI and SSI programs under user IDs different from the user ID of the calling web server (<span class="notranslate">apache/nobody</span>). Normally, when a CGI or SSI program executes, it runs as the same user who is running the web server.
-
-If we are talking about shared hosting where different accounts are launched on the same server, the installation of this module is necessary to ensure security.
-
-#### How does it work with CloudLinux OS Shared?
-
-The DirectAdmin and CloudLinux OS Shared (for httpd, httpd24-httpd and cPanel EasyApache 4) both provide a patched version of suexec. For other distributions you can use patches available here:
-[https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
-
-1. Besides the ability to run CGI programs under user IDs, suexec with CloudLinux OS Shared patch adds the ability to run that script under CageFS. 
-  :::tip NOTE
-  Therefore, this module is necessary for the proper work of PHP Selector.
-  :::
-2. This module is also necessary for the proper work of mod_hostinglimits. The <span class="notranslate">`SuexecUserGroup`</span> directive indicates for `mod_hostinglimits` in which LVE the user process should be put in.
-
-
-### Configuration
-
-**SuexecUserGroup Directive**
-
-**Syntax**: <span class="notranslate">SuexecUserGroup User Group</span>
-
-**Context**: `httpd.conf`, `virtualhost`
-
-**Description**: The SuexecUserGroup directive allows you to specify a user and a group for CGI programs to run as. Startup will fail if this directive is specified but the suEXEC feature is disabled.
-
-::: warning Note
-Control panels such as cPanel, Plesk, and DirectAdmin add this directive to the Apache configuration automatically when creating a domain. If you use the server without a control panel, make sure this directive is added for each virtual host.
-:::
-
-
-### Installation
-
-The <span class="notranslate">`mod_suexec`</span> installation process varies depending on the control panel and Apache.
-
-* [Installing on cPanel servers with EasyApache 4](./#installing-on-cpanel-servers-with-easyapache-4-2)
-  * [Via command line](./#via-command-line)
-  * [Via administrator interface](./#via-administrator-interface)
-* [Installing on Plesk servers](./#installing-on-plesk-servers-2)
-* [Installing on DirectAdmin servers](./#installing-on-directadmin-servers-2)
-* [Installing on servers with no control panel](./#installing-on-servers-with-no-control-panel-2)
-
-#### Installing on cPanel servers with EasyApache 4
-
-#### Via command line
-
-1. Install `mod_suexec` through YUM package manager as follows:
-
-  <div class="notranslate">
-  
-  ```
-  $ yum install ea-apache24-mod_suexec
-  ```
-  </div>
-
-  :::warning NOTE
-  `ea-apache24-mod_suexec` conflicts with the `mod_ruid2` therefore, before installing the module, remove `ea-apache24-mod_ruid2` as follows: <span class="notranslate">`$ yum remove ea-apache24-mod_ruid2`</span>
-  :::
-
-2. Now, when the module is installed, restart Apache:
-
-  <div class="notranslate">
-  
-  ``` 
-  $ service httpd restart
-  ```
-  </div>
-
-  :::tip Note
-  If you use CageFS + PHP Selector, you should run the <span class="notranslate">`cagefsctl --force-update`</span> command.
-  :::
-
-#### Via administrator interface
-
-1. Open EasyApache4 page.
-2. Click <span class="notranslate">_Customize_</span> for <span class="notranslate">_Currently installed Packages_</span>.
-
-  ![](./images/mod_suexec_admin_ui_1.png)
-
-3. Click <span class="notranslate">_Apache Modules_</span>. Find <span class="notranslate">`mod_suexec`</span> and click <span class="notranslate">_Yes_</span> to install it.
-
-  ![](./images/mod_suexec_admin_ui_2.png)
-
-4. Select <span class="notranslate">_Review_</span> and <span class="notranslate">_Provision_</span>.
-
-  ![](./images/mod_suexec_admin_ui_3.png)
-
-5. Wait while <span class="notranslate">_Provision_</span> will be finished.
-   
-   :::tip Note
-   If you use CageFS + PHP Selector, you should run the <span class="notranslate">`cagefsctl --force-update`</span> command.
-   :::
-
-#### Installing on Plesk servers
-
-This module is integrated into Apache for Plesk control panel by default.
-
-#### Installing on DirectAdmin servers
-
-This module is integrated into Apache for DirectAdmin control panel by default.
-
-#### Installing on servers with no control panel
-
-This module is integrated into httpd Apache rpm provided by Cloudlinux OS Shared by default.
-
-If you are using an alternative Apache - [httpd24](https://www.cloudlinux.com/cloudlinux-os-blog/entry/httpd24-updated-for-cloudlinux-6), nothing has to be done as this module is also integrated into httpd24-httpd Apache rpm provided by Cloudlinux by default.
-
diff --git a/docs/shared/cloudlinux_os_components/images/CL-hide-ruby.png b/docs/shared/cloudlinux_os_components/images/CL-hide-ruby.png
deleted file mode 100644
index d6ce17628..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/CL-hide-ruby.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/CageFS-enabled.png b/docs/shared/cloudlinux_os_components/images/CageFS-enabled.png
deleted file mode 100644
index 2e194cd91..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/CageFS-enabled.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/CageFS-init.png b/docs/shared/cloudlinux_os_components/images/CageFS-init.png
deleted file mode 100644
index 904432cfe..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/CageFS-init.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/Chart1 (1).png b/docs/shared/cloudlinux_os_components/images/Chart1 (1).png
deleted file mode 100644
index b39e8835e..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/Chart1 (1).png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/Chart1.png b/docs/shared/cloudlinux_os_components/images/Chart1.png
deleted file mode 100644
index b39e8835e..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/Chart1.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/Chart2 (1).png b/docs/shared/cloudlinux_os_components/images/Chart2 (1).png
deleted file mode 100644
index 86d6b220f..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/Chart2 (1).png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/Chart2.png b/docs/shared/cloudlinux_os_components/images/Chart2.png
deleted file mode 100644
index 86d6b220f..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/Chart2.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/Chart3 (1).png b/docs/shared/cloudlinux_os_components/images/Chart3 (1).png
deleted file mode 100644
index 185631bcc..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/Chart3 (1).png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/Chart3.png b/docs/shared/cloudlinux_os_components/images/Chart3.png
deleted file mode 100644
index 185631bcc..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/Chart3.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/LiteSpeedAdditionSettings.png b/docs/shared/cloudlinux_os_components/images/LiteSpeedAdditionSettings.png
deleted file mode 100644
index 0b00adeed..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/LiteSpeedAdditionSettings.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/LiteSpeedExternalAppTab.png b/docs/shared/cloudlinux_os_components/images/LiteSpeedExternalAppTab.png
deleted file mode 100644
index 5cdd2c4da..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/LiteSpeedExternalAppTab.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/LiteSpeedForOtherCP.png b/docs/shared/cloudlinux_os_components/images/LiteSpeedForOtherCP.png
deleted file mode 100644
index 3bcaf8cef..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/LiteSpeedForOtherCP.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/LiteSpeedForPlesk.png b/docs/shared/cloudlinux_os_components/images/LiteSpeedForPlesk.png
deleted file mode 100644
index 1f720c8ea..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/LiteSpeedForPlesk.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/LiteSpeedHandlerName.png b/docs/shared/cloudlinux_os_components/images/LiteSpeedHandlerName.png
deleted file mode 100644
index 1fa405134..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/LiteSpeedHandlerName.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/LiteSpeedOtherCP.png b/docs/shared/cloudlinux_os_components/images/LiteSpeedOtherCP.png
deleted file mode 100644
index 409af0e32..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/LiteSpeedOtherCP.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/LiteSpeedPlesk.png b/docs/shared/cloudlinux_os_components/images/LiteSpeedPlesk.png
deleted file mode 100644
index 42efbf6e2..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/LiteSpeedPlesk.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/LiteSpeedScriptHandler.png b/docs/shared/cloudlinux_os_components/images/LiteSpeedScriptHandler.png
deleted file mode 100644
index dcab0a38a..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/LiteSpeedScriptHandler.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/NewTurnedOff.png b/docs/shared/cloudlinux_os_components/images/NewTurnedOff.png
deleted file mode 100644
index a92ae57d5..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/NewTurnedOff.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/NewTurnedOn.png b/docs/shared/cloudlinux_os_components/images/NewTurnedOn.png
deleted file mode 100644
index 5b3f12478..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/NewTurnedOn.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/cageFS-verify.png b/docs/shared/cloudlinux_os_components/images/cageFS-verify.png
deleted file mode 100644
index 7f0c014a7..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/cageFS-verify.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/check-ea-php.png b/docs/shared/cloudlinux_os_components/images/check-ea-php.png
deleted file mode 100644
index 4b7a451de..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/check-ea-php.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/createapp_zoom70.png b/docs/shared/cloudlinux_os_components/images/createapp_zoom70.png
deleted file mode 100644
index cf7b12e6f..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/createapp_zoom70.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/custom_file_cPanel1.png b/docs/shared/cloudlinux_os_components/images/custom_file_cPanel1.png
deleted file mode 100644
index 16fa12f8a..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/custom_file_cPanel1.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/custom_file_cPanel2.png b/docs/shared/cloudlinux_os_components/images/custom_file_cPanel2.png
deleted file mode 100644
index c052dcd66..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/custom_file_cPanel2.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/enable-CageFS-to-user.png b/docs/shared/cloudlinux_os_components/images/enable-CageFS-to-user.png
deleted file mode 100644
index 4517b0d91..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/enable-CageFS-to-user.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/errorapplog (1).png b/docs/shared/cloudlinux_os_components/images/errorapplog (1).png
deleted file mode 100644
index 5b59fa9be..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/errorapplog (1).png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/errorapplog.png b/docs/shared/cloudlinux_os_components/images/errorapplog.png
deleted file mode 100644
index 5b59fa9be..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/errorapplog.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/errorapplogsorry.png b/docs/shared/cloudlinux_os_components/images/errorapplogsorry.png
deleted file mode 100644
index 9f0852841..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/errorapplogsorry.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/img1-zoom73.png b/docs/shared/cloudlinux_os_components/images/img1-zoom73.png
deleted file mode 100644
index 82be26b88..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/img1-zoom73.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/img2-zoom71.png b/docs/shared/cloudlinux_os_components/images/img2-zoom71.png
deleted file mode 100644
index 2a4338881..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/img2-zoom71.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/img3.jpg b/docs/shared/cloudlinux_os_components/images/img3.jpg
deleted file mode 100644
index c491f110c..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/img3.jpg and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/ispmanager_cagefs_user_zoom98.png b/docs/shared/cloudlinux_os_components/images/ispmanager_cagefs_user_zoom98.png
deleted file mode 100644
index 8825eec2c..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/ispmanager_cagefs_user_zoom98.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/mod_lsapidiagrammnew.jpg b/docs/shared/cloudlinux_os_components/images/mod_lsapidiagrammnew.jpg
deleted file mode 100644
index 057f314cc..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/mod_lsapidiagrammnew.jpg and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_1.png b/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_1.png
deleted file mode 100644
index 3d9df813d..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_1.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_2.png b/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_2.png
deleted file mode 100644
index a652a1ef5..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_2.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_3.png b/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_3.png
deleted file mode 100644
index 5d2310fc8..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/mod_suexec_admin_ui_3.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/not-initialized.png b/docs/shared/cloudlinux_os_components/images/not-initialized.png
deleted file mode 100644
index 3d88bec65..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/not-initialized.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/php-handlers.png b/docs/shared/cloudlinux_os_components/images/php-handlers.png
deleted file mode 100644
index 33453f929..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/php-handlers.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/php_selector_options.png b/docs/shared/cloudlinux_os_components/images/php_selector_options.png
deleted file mode 100644
index 50ba47b44..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/php_selector_options.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/plesk-php-settings.png b/docs/shared/cloudlinux_os_components/images/plesk-php-settings.png
deleted file mode 100644
index 85349ccf3..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/plesk-php-settings.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/plesk_cagefs_icon.png b/docs/shared/cloudlinux_os_components/images/plesk_cagefs_icon.png
deleted file mode 100644
index cb532fea5..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/plesk_cagefs_icon.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/plesk_cagefs_manager_disable_all.png b/docs/shared/cloudlinux_os_components/images/plesk_cagefs_manager_disable_all.png
deleted file mode 100644
index 5b7f05506..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/plesk_cagefs_manager_disable_all.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/runapp_zoom60.png b/docs/shared/cloudlinux_os_components/images/runapp_zoom60.png
deleted file mode 100644
index db94e82fd..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/runapp_zoom60.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/runningappdomain_zoom70.png b/docs/shared/cloudlinux_os_components/images/runningappdomain_zoom70.png
deleted file mode 100644
index 2327e78bd..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/runningappdomain_zoom70.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/screen1-phpselector-featuremanager.png b/docs/shared/cloudlinux_os_components/images/screen1-phpselector-featuremanager.png
deleted file mode 100644
index 57149b7d3..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/screen1-phpselector-featuremanager.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_components/images/setconfiguration_zoom70.png b/docs/shared/cloudlinux_os_components/images/setconfiguration_zoom70.png
deleted file mode 100644
index ec4e44890..000000000
Binary files a/docs/shared/cloudlinux_os_components/images/setconfiguration_zoom70.png and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_kernel/.DS_Store b/docs/shared/cloudlinux_os_kernel/.DS_Store
deleted file mode 100644
index 5822e5ea5..000000000
Binary files a/docs/shared/cloudlinux_os_kernel/.DS_Store and /dev/null differ
diff --git a/docs/shared/cloudlinux_os_kernel/README.md b/docs/shared/cloudlinux_os_kernel/README.md
deleted file mode 100644
index ca67d9e0c..000000000
--- a/docs/shared/cloudlinux_os_kernel/README.md
+++ /dev/null
@@ -1,1092 +0,0 @@
-# CloudLinux OS kernel
-
-This documentation describes specific features of the CloudLinux kernel. In other cases the kernel has the same features and innovations as any similar RHEL kernel.
-More information about the actual kernel changes and releases can be obtained from our [changelog](https://changelog.cloudlinux.com/).
-
-* [Hybrid Kernels](./#hybrid-kernels)
-* [SecureLinks and Link Traversal Protection](./#securelinks-and-link-traversal-protection)
-* [File change API](./#file-change-api)
-* [Tuned-profiles-cloudlinux](./#tuned-profiles-cloudlinux)
-* [Kernel config variables](./#kernel-config-variables)
-* [Virtualized /proc filesystem](./#virtualized-proc-filesystem)
-* [Ptrace block](./#ptrace-block)
-* [Xen XVDA](./#xen-xvda)
-* [Umask behavior](./#umask-behavior)
-* [IO limits latency](./#io-limits-latency)
-* [Reading LVE usage](./#reading-lve-usage)
-* [Flashcache](./#flashcache)
-* [OOM killer for LVE processes](./#oom-killer-for-lve-processes)
-* [File system quotas](./#file-system-quotas)
-* [Enter LVE when using cPanel utilities](./#enter-lve-when-using-cpanel-utilities)
-* [Proactive reporting kernel crash events with Sentry and Kernel Panic Receiver](./#proactive-reporting-kernel-crash-events-with-sentry-and-kernel-panic-receiver)
-
-## Hybrid Kernels
-
-Hybrid kernels give you the ability to take advantage of the benefits and features available in newer kernels without having to completely upgrade to another version of the operating system. Example - for the CloudLinux 7 kernel, based on version 3.10, you can install a hybrid kernel (same as on CloudLinux 8), which is based on version 4.18. This provides more kernel options, memory and overall optimization, as well as a positive impact on system performance.
-
-#### How to migrate from the normal kernel to hybrid one
-
-::: tip Note
-The system must have an active CloudLinux OS license
-:::
-
-:::warning Warning
-If you use `yum-plugin-protectbase`, please make sure it is disabled before stating the normal-to-hybrid script.
-:::
-
-You should perform the following commands:
-
-```
-yum update
-normal-to-hybrid
-```
-Then if the script execution is completed without errors - perform the server reboot.
-
-::: tip Note
-You can always migrate from the hybrid kernel to normal one with the following commands:
-```
-yum update
-hybrid-to-normal
-```
-:::
-
-#### Known limitations and issues of hybrid kernels
-
-**CloudLinux OS Shared 6 Hybrid kernel**
-
-1. We do not remove Hybrid kernel after migration from Hybrid to the normal channel, but we remove <span class="notranslate"> linux-firmware </span> package which is needed to boot Hybrid kernel. This is because <span class="notranslate"> CloudLinux OS Shared</span> 6 does not allow to remove the package of currently running kernel. Thus please don't reboot the server back to Hybrid kernel after you remove it.
-
-2. Kernel module signature isn't checking for now, as 3.10 kernel is using x509 certificates to generate keys and CloudLinux OS Shared 6 cannot detect signatures created in such way.
-
-## SecureLinks and Link Traversal Protection
-
-::: tip Note
-Link Traversal Protection is disabled by default for the CloudLinux OS Shared.
-:::
-
-CloudLinux OS Shared and CloudLinux OS Admin provides comprehensive protection against 
-symbolic link attacks popular in shared hosting environment.
-
-The protection requires setting multiple kernel parameters to be enabled:
-
-**SecureLinks:**
-* [fs.enforce_symlinksifowner](./#fs-enforce-symlinksifowner)
-* [fs.symlinkown_gid](./#fs-symlinkown-gid)
-
-**Link Traversal Protection:**
-* [fs.protected_symlinks_create](./#fs-protected-symlinks-create)
-* [fs.process_symlinks_by_task](./#fs-process-symlinks-by-task)
-
-Please reffer to [this article](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/configuring-kernel-parameters-at-runtime_managing-monitoring-and-updating-the-kernel#doc-wrapper) in order to know how to setup these parameters.
-
-#### **fs.enforce_symlinksifowner**
-
-To protect against symlink attack where attacker tricks Apache web server to read some other user PHP config files, or other sensitive file, enable:
-
-```
-fs.enforce_symlinksifowner=1
-```
-
-Setting this parameter will deny any process running under gid _fs.symlinkown_gid_ to follow the symlink if owner of the link doesn’t match the owner of the target file.
-
-Defaults:
-
-```
-fs.enforce_symlinksifowner = 1
-fs.symlinkown_gid = 48
-```
-
-| | |
-|-|-|
-|<span class="notranslate"> _fs.enforce_symlinksifowner = 0_ </span> | do not check <span class="notranslate"> symlink </span> ownership|
-|<span class="notranslate"> _fs.enforce_symlinksifowner = 1_ </span> | deny if <span class="notranslate"> symlink </span> ownership doesn’t match target, and process <span class="notranslate"> gid </span> matches <span class="notranslate"> _symlinkown_gid</span>|
-
-When <span class="notranslate"> _fs.enforce_symlinksifowner_ </span> set to 1, processes with <span class="notranslate"> GID </span> 48 will not be able to follow <span class="notranslate"> symlinks </span> if they are owned by <span class="notranslate"> user1 </span> , but point to file owned <span class="notranslate"> user2 </span> .
-
-:::tip Note
-_fs.enforce_symlinksifowner = 2_ is deprecated and can cause issues for the system operation.
-:::
-
-##### **fs.symlinkown_gid**
-
-On standard Apache installation, this webserver is usually running under GID 48.
-On cPanel servers, Apache is running under user nobody, GID 99.
-
-To change GID of processes that cannot follow symlink, edit the file _/etc/sysctl.conf_ , add the line:
-
-```
-fs.symlinkown_gid = XX
-```
-
-And execute:
-
-```
-$ sysctl -p
-```
-
-To disable symlink owner match protection feature, set  _fs.enforce_symlinksifowner = 0_ in _/etc/sysctl.conf_ , and execute:
-
-```
-$ sysctl -p
-```
-
-::: tip Note
-_fs.symlinkown_gid_ parameter values for httpd service user and _fs.proc_super_gid_ for nagios service user is written to _/etc/sysctl.d/90-cloudlinux.conf_.
-:::
-
-#### **fs.protected_symlinks_create** <Badge text="cPanel"/>
-
-:::warning Warning
-When used outside CageFS (from cPanel tools for instance), <span class="notranslate">`fs.protected_symlinks_create`</span> isn't sufficient for symlink protection.
-To fully protect symlink access in this case, use <span class="notranslate">`fs.process_symlinks_by_task=1`</span> in addition to <span class="notranslate">`fs.protected_symlinks_create=1`</span>.
-:::
-
-<span class="notranslate"> [CageFS](/shared/cloudlinux_os_components/#cagefs) </span> is extremely powerful at stopping most information disclosure attacks, where a hacker could read sensitive files like <span class="notranslate">_/etc/passwd_</span> .
-
-Yet, <span class="notranslate"> CageFS </span> does not work in each and every situation. For example, on <span class="notranslate"> cPanel </span> servers, it is not enabled in <span class="notranslate"> WebDAV </span> server, <span class="notranslate"> cPanel </span> file manager and webmail, as well as some FTP servers don’t include proper change rooting.
-
-This allows an attacker to create symlink or hardlink to a sensitive file like <span class="notranslate"> _/etc/passwd_ </span> and then use <span class="notranslate"> WebDAV </span> , filemanager, or webmail to read the content of that file.
-
-You can prevent such attacks by preventing user from creating symlinks and hardlinks to files that they don’t own.
-
-This is done by set following kernel options to 1:
-<div class="notranslate">
-
-```
-fs.protected_symlinks_create = 1
-fs.protected_hardlinks_create = 1
-```
-</div>  
-
-::: danger
-We do not recommend to use protected_symlinks option for cPanel users as it might break some of the cPanel functionality.
-Please read the known issues section before enabling this feature.
-:::
-
-* [Known issues with fs.protected_symlinks_create=1 on cPanel servers](./#known-issues-with-fs-protected-symlinks-create-1-on-cpanel-servers)
-
-#### **fs.process_symlinks_by_task** <Badge text="cPanel"/>
-
-::: tip Note
-This option only available on CloudLinux 7 Hybrid or on CloudLinux 8 Shared and Admin editions.
-Also please note that this feature is available for cPanel only.
-:::
-
-This parameter is needed to protect against symlink vulnerability where an attacker might get access to files out of the CageFS via cPanel tools: File Manager, WebDAV, Webmail, etc. When a symlink is accessed from cPanel tools (non-root user case) we check whether the current process UID matches the symlink target UID.
-
-To enable the protection for CloudLinux OS Shared , set the <span class="notranslate">`fs.process_symlinks_by_task`</span> parameter to 1:
-<div class="notranslate">
-
-```
-fs.process_symlinks_by_task=1
-```
-</div>
-
-To disable the protection for CloudLinux OS Shared 7 hybrid, set the <span class="notranslate">`fs.process_symlinks_by_task`</span> parameter to 0:
-<div class="notranslate">
-
-```
-fs.process_symlinks_by_task=0
-```
-</div>
-
-#### Known issues with fs.protected_symlinks_create=1 on cPanel servers
-
-Here are some examples of what may go wrong on cPanel servers. If <span class="notranslate">`fs.protected_symlinks_create=1`</span> is set on the server, it can cause the following issues:
-
-* `rsync` is failed
-
-If you use the `rsync` to copy/transfer files and they contain symlinks, you'll see the errors like these:
-
-<div class="notranslate">
-
-```
-"rsync error: some files could not be transferred (code 23)" and the transfer will be failed. 
-```
-</div> 
-
- It affects `rsync` tasks as well as cPanel transfer tools.
-
-* backup extracting may not work. Errors during the restoration:
-  
-<div class="notranslate">
-
-```
-Error extracting /home/domain/backups/home.tar.gz : /bin/tar: .cagefs/tmp/mysql.sock: Cannot create symlink to `/var/lib/mysql/mysql.sock'.
-Permission denied. /bin/tar: .cagefs/tmp/.s.PGSQL.5432: Cannot create symlink to `/var/run/postgres/.s.PGSQL.5432': No such file or directory.
-```
-</div> 
-
-Any backup for accounts (including cPanel backup) cannot be extracted.
-
-* `dmesg` is flooded with the <span class="notranslate">`may_create_sym_link`</span> messages like:
-
-<div class="notranslate">
-
-```
-may_create_sym_link: can't find ea-phpXX in cron
-may_create_sym_link: can't find ea-phpXX in ea-php-cli
-```
-</div> 
-
-It's popping up each second and may increase the size of the <span class="notranslate">`/var/log/messages`</span> file.
-
-## File change API
-
-### General
-
-**General description**
-
-One of the main problems on a shared hosting system for file backup operations is to figure out which files have changed. Using <span class="notranslate"> INOTIFY </span> on a 1T drive with a large number of small files and directories guarantees slow startup times, and a lot of context switching between kernel and userspace - generating additional load. On the other hand scanning disk for newly modified files is very <span class="notranslate"> IO </span> intensive, and can kill the performance of the fastest disks.
-
-**CloudLinux OS Shared approach**
-
-<span class="notranslate"> CloudLinux File Change API </span> is a kernel level technology with the user space interface that buffers lists of modified files in the kernel and then off-loads that list to user space daemon.
-
-After that - any software (with enough permissions) can get a list of files that has been modified for the last 24 hours.
-
-The software is very simple to use and produces the  list of modified files. As such we expect file backup software, including integrated cPanel backup system to integrate with this <span class="notranslate"> API </span> soon.
-
-### Usage and integration
-
-**Userland utilities**
-
-<span class="notranslate">/usr/bin/cloudlinux-backup-helper </span> is a utility for getting the list of changed files.
-
-It is supposed to be run by a super user only.
-
-Command line parameters:
-<div class="notranslate">
-
-```
--t | --timestamp retrieve file names for files modified after specified timestamp
--u | --uid       retrieve file names for particular UID only
-```
-</div>
-If no UID specified, are retrieved for all users. If no timestamp specified, all database events are shown.
-
-**Output format**
-<div class="notranslate">
-
-```
-protocol version (1 right now), timestamp (in seconds) - up to which time data was collected
-UID:absolute path to file changed
-UID:absolute path to file changed
-…
-```
-</div>   
-
-:::tip Note
-The timestamp in output is needed so you can clearly identify from which timestamp to get list of changed files next.
-:::
-
-**_Examples:_**
-<div class="notranslate">
-
-```
-[root@localhost ~]# cloudlinux-backup-helper -t 1495533489 -u <UID>
-1,1495533925
-1001:/home/user2/public_html/output.txt
-1001:/home/user2/public_html/info.php
-[root@localhost ~]# cloudlinux-backup-helper -t 1495533489
-1,1495533925
-1000:/home/user1/.bashrc
-1001:/home/user2/public_html/output.txt
-1001:/home/user2/public_html/info.php
-1003:/home/user3/logs/data.log
-```
-</div>
-**Getting changed files by end user**
-
-<span class="notranslate">/usr/bin/cloudlinux-backup-helper-uid</span>  is a SUID wrapper for the  <span class="notranslate"> cloudlinux-backup-helper </span>  utility that enables an end user to get the list of files changed. It accepts timestamp argument only and retrieves data of the user who is running it only.
-
-**_Examples:_**
-<div class="notranslate">
-
-```
-[user@localhost ~]$ cloudlinux-backup-helper-uid               
-1,1495530576
-1000:/home/user/.bash_history 
-
-[user@localhost ~]$ cloudlinux-backup-helper-uid -t 1495547922
-1,1495548343
-1000:/home/user/file1.txt
-1000:/home/user/file2.txt
-```
-</div>
-This command is available within CageFS.
-
-### Installation and configuration
-
-
-<span class="notranslate"> **cloudlinux-fchange-0.1-5** </span>
-
-**Requirements**
-
-<span class="notranslate"> CloudLinux OS </span> 6 (requires Hybrid kernel) or 7
-Kernel Version: 3.10.0-427.36.1.lve1.4.47
-
-**Installation and configuration**
-
-To install <span class="notranslate"> cloudlinux-fchange </span> system run:
-
-_CloudLinux OS Shared 7:_
-<div class="notranslate">
-
-```
-yum install cloudlinux-fchange --enablerepo=cloudlinux-updates-testing
-```
-</div>
-
-_CloudLinux OS Shared 6 Hybrid:_
-
-<div class="notranslate">
-
-```
-yum install cloudlinux-fchange --enablerepo=cloudlinux-hybrid-testing
-```
-</div>
-Configuration file can be found in <span class="notranslate">/etc/sysconfig/cloudlinux-fchange </span>
-
-Database containing list of modified files is located at <span class="notranslate">/var/lve/cloudlinux-fchange.db </span> by default.
-
-**Starting and stopping**
-
-After successful installation the event collecting daemon starts automatically, providing all <span class="notranslate"> kernel-exposed </span> data are in place.
-
-To start daemon:
-<span class="notranslate">_CloudLinux OS Shared 7:_ </span>
-
-<div class="notranslate">
-
-```
-systemctl start cloudlinux-file-change-collector
-```
-</div>
-
-_CloudLinux OS Shared 6 Hybrid:_
-
-<div class="notranslate">
-
-```
-service cloudlinux-file-change-collector start
-```
-</div>
-To stop daemon:
-<span class="notranslate"> </span>
-_CloudLinux OS Shared 7:_
-
-<div class="notranslate">
-
-```
-systemctl stop cloudlinux-file-change-collector
-```
-</div>
-
-_CloudLinux OS Shared 6 Hybrid:_
-
-<div class="notranslate">
-
-```
-service cloudlinux-file-change-collector stop
-```
-</div>
-
-
-To uninstall <span class="notranslate"> cloudlinux-fchange </span> run:
-<div class="notranslate">
-
-```
-yum remove cloudlinux-fchange
-```
-</div>
-
-### Configuration details
-
-
-Configuration resides in <span class="notranslate">/etc/sysconfig/cloudlinux-fchange</span>. The following is the default configuration (see comments):
-<div class="notranslate">
-
-```
-# sqlite database file path. If commented out a default value is used
-#database_path=/var/lve/cloudlinux-fchange.db
-
-# If uncommented paths starting with 'include' one are processed only
-# Pay attention this parameter is a regular string, not a regex
-# To include more than one item just specify several lines to include:
-# include=/one
-# include=/two
-
-# If uncommented exclude paths which contain 'exclude'
-# Pay attention this parameter is a regular string, not a regex
-# To exclude more than one item just specify several lines to exclude:
-# exclude=var
-# exclude=tmp
-
-# Daemon polling interval in seconds
-polling_interval=5 
-
-# Time to keep entries in days. Does not clean if commented out or zero
-time_to_keep=1
-
-# User read-only mode minimal UID
-# If file change collector stopped, all users with UID >= user_ro_mode_min_uid
-# are restricted to write to their home directory. This prevents to miss
-# a file change event.
-# Value of -1 (default) allows to disable the feature
-user_ro_mode_min_uid=-1
-
-# Minimal UID of events to be processed.
-# Events of users with UID less then specified are not handled.
-# By default 500 (non-system users for redhat-based systems)
-#minimal_event_uid=500
- 
-# SQLite shared lock prevents setting more restrictive locks. That is a
-# process cannot write to a database table when a concurrent process reads
-# from the table. As saving data to database is considered far more important
-# than getting them (data could be reread a second later after all), database
-# writer could try to terminate concurrent reading processes. Just set
-# terminate rivals to 'yes' to turn this ability on.
-# terminate_rivals=no 
-
-# Events to be handled. Currently the following types of events are processed:
-# 1. file creation
-# 2. file deletion
-# 3. directory creation
-# 4. directory deletion
-# 5. file content/metadata modification
-# 6. file/directory attributes/ownership modification
-# 7. hardlink creation
-# 8. symlink creation
-# 9. file/directory moving/renaming
-# By default all events are processed. Keep in mind that events for a filepath
-# are cached, i.e if a file was deleted and then a file with the same absolute
-# name is created, only the deletion event is triggerred. Changing file
-# modification timestamp with command 'touch' will trigger modification event
-# as if a file content is modified.
-# Currently supported options are:
-# file_created, file_modified, file_deleted, dir_created, dir_deleted,
-# owner_changed, attrib_changed, moved, hardlink_created, symlink_created, all
-# Options that don't have 'file' or 'dir' prefix, applied to both files and
-# directories. To set more than one options, separate them with commas,
-# e.g. event_types=file_created,file_deleted,file_modified. Unknown options are
-# ignored.
-#
-# event_types=all
-```
-</div>
-
-:::tip Note
-Please keep in mind, that current implementation implies that one process is writing to a database and another is reading from it. As reading sets shared lock to a database table, the writing process cannot write to the table until the lock is released. That’s why passing a timestamp to cloudlinux-backup-helpermatters: this way the number of records to be returned is substantially decreased, lowering the processing time and filtering out old records. Likewise, pay attention to narrowing the scope of events being recorded. Chances are that changing attributes, ownership, directory creation/deletion, symlink events are not relevant and there’s no need to keep them.
-:::
-
-### Low-level access
-
-:::tip Note
-Using this options is dangerous, and might cause problems with <span class="notranslate">CloudLinux File Change API.</span>
-:::
-
-The kernel exposes the functionality to /proc/sys/fs/datacycle/ folder.
-
-1. <span class="notranslate"> **enable** </span> - enable/disable the functionality. Write 1 to this file to enable, 0 to disable. If disabled, no events are coming to events file.
-
-2. <span class="notranslate"> **events** </span> - the modified files log itself. Events in the format <span class="notranslate"> <EVENT_ID>:<EVENT_TYPE_ID>:<USER_ID>:<FILE_PATH> </span> are constantly appending to the end of the file if datacycle enabled. File events are never duplicated: if we have file modification event, we would not get file deletion event if the file has been later deleted. This events buffer has limited capacity, therefore from time to time, the events log requires flushing.
-
-3. <span class="notranslate"> **flush** </span> - a file for clearing events log. For flushing, the last <span class="notranslate"> event_id </span> from the events file is written to this file. Right after this, events log is truncated to that <span class="notranslate"> event_id </span> .
-
-4. <span class="notranslate"> **user_ro_mode** </span> - forbidding users with UIDs equal or bigger that set in this file writing to their home directories. At the boot, the file has -1. When it’s written positive value, say 500, the system starts effectively preventing users from modifying their home dirs (on write attempt a user gets <span class="notranslate"> ‘read-only filesystem’ </span> error). This feature is designed to prevent users from updating their home dirs when events are not handled.
-
-5. <span class="notranslate"> **entries_in_buffer** </span> - just counter of log entries of events file.
-
-6. <span class="notranslate"> **min_event_uid** </span> - this file has minimal UID of events to be handled. Events from users with smaller UID are not handled. By default 500 (non-system users in redhat-based systems).
-
-## Tuned-profiles-cloudlinux
-
-The <span class="notranslate"> **_tuned-profiles-cloudlinux_** </span> package brings a range of kernel under-the-hood tunings to address high LA, iowait issues what were detected earlier on particular users deploys. The package also encloses OOM adjustments to prioritize the elimination of overrun PHP, <span class="notranslate"> lsphp, Phusion Passenger </span> workers processes over other processes (e.g. ssh, a cron job).
-
-There are three profiles provided by CloudLinux OS Shared:
-<div class="notranslate">
-
-```
-# tuned-adm list | grep cloudlinux
-- cloudlinux-default          - Default CloudLinux tuned profile
-- cloudlinux-dummy            - Empty CloudLinux tuned profile
-- cloudlinux-vz               - Empty CloudLinux tuned profile
-```
-</div>
-
-
-<span class="notranslate"> cloudlinux-dummy</span> and  <span class="notranslate"> cloudlinux-vz</span> are used for internal needs or when  <span class="notranslate"> Virtuozzo/OpenVZ </span>  detected and actually do nothing.  
-
-<span class="notranslate"> cloudlinux-default </span> is one to be used, it actually does the following:
-
-1. Switches CPU power consumption mode to the maximum. CPU operates at maximum performance at the maximum clock rate:
-
-<div class="notranslate">
-
-```
-governor=performance
-energy_perf_bias=performance
-```
-</div>
-
-::: tip Note
-If standard software CPU governors are used.
-:::
-
-
-
- 2. Applies the following kernel options:  
-<span class="notranslate"> 
-vm.force_scan_thresh=100 </span> - Improves kernel memory clean-up in case of big number of running LVE.
-
-UBC parameters set the limits for the containers:
-
-<span class="notranslate">  ubc.dirty_ratio=100 </span> - Defines maximum RAM percentage for dirty memory pages.
-<span class="notranslate"> dirty_background_ratio=75</span> - Defines RAM percentage when to allow writing dirty pages on the disk.
-
-3. _[CloudLinux OS Shared 7 only]_ Detects used disk types and changes elevator to <span class="notranslate"> 'deadline' </span> for HDD and to <span class="notranslate"> 'noop' </span> for SSD in <span class="notranslate"> /sys/block/[blockname]/queue/scheduler </span> . 
-
-::: tip Note
-<span class="notranslate">The script uses /sys/block/[blockname]/queue/rotational flag, some RAID controllers can not set it properly. For example, SSD used for RAID but rotational is set to 1 by RAID driver. As a workaround add the following to /etc/rc.d/rc.local to make it applied on boot:</span>
-:::
-
-<div class="notranslate">
-
-```
-echo "noop" > /sys/block/[blockname]/queue/scheduler  
-echo "0" > /sys/block/[blockname]/queue/rotational
-```
-</div>
-
-
-Where <span class="notranslate"> _[blockname]_ </span> is used device name, like <span class="notranslate"> _sda/sdb_ </span> .
-
-And make it executable:
-<div class="notranslate">
-
-```
-chmod +x /etc/rc.d/rc.local
-```
-</div>
-
-4. _[CloudLinux OS Shared 7 only]_ The profile sets <span class="notranslate"> I/O </span> scheduler. For the normal discs the <span class="notranslate"> Deadline Scheduler </span> is set to improve <span class="notranslate"> IO </span> performance and decrease <span class="notranslate"> IO </span> latency, for SSD - noop.
-When configuring scheduler <span class="notranslate"> I/O </span> queue is changed and set to the value 1024 which improves overall <span class="notranslate"> I/O </span> subsystem performance by caching <span class="notranslate"> IO </span> requests in memory.
-
-5. Disables transparent <span class="notranslate"> HugePage </span> .
-
-6. Provides adjustment group file for OOM-Killer to kill overrun php, lsphp and <span class="notranslate"> Phusion Passenger </span> workers first.
-
-To install:
-
-<div class="notranslate">
-
-```
-yum install tuned-profiles-cloudlinux
-```
-</div>
-
-To start using a profile:
-
-<div class="notranslate">
-
-```
-tuned-adm profile cloudlinux-default
-```
-</div>
-
-To stop using a profile:
-
-<div class="notranslate">
-
-```
-tuned-adm off
-```
-</div>
-
-
-## Kernel config variables
-
-Starting from **lvemanager 4.0-25.5**, **lve-utils 3.0-21.2**, and **cagefs-6.1-26**, CloudLinux OS Shared utilities can read/write kernel config variables from a custom config /etc/sysctl.d/90-cloudlinux.conf (earlier, the parameters were read/written only from sysctl.conf ).
-
-CloudLinux OS Shared utilities get parameter by using `sysctl` system utility. So for now, even if a config variable is not set in the `sysctl.conf` and in the `/etc/sysctl.d` config files, this variable will be read by `sysctl` utility directly from `/proc/sys`.
-
-If you changed some kernel variables in `/etc/sysctl.d/90-cloudlinux.conf` you need to apply these changes to the kernel parameter by running the command:
-
-<div class="notranslate">
-
-```
-sysctl --system
-```
-</div>
-
-After that, the variable can be read by the sysctl utility.
-
-Starting from **cagefs-6.1-27**,  fs.proc_can_see_other_uid will be migrated (one time) from /etc/sysctl.conf into /etc/sysctl.d/90-cloudlinux.conf . If this variable is not set in either file, it will default to 0.
-It is strongly advised against setting this variable in 90-cloudlinux.conf . Define it in /etc/sysctl.conf or in some other config file with an index number greater than 90-cloudlinux.conf , e.g. `/etc/sysctl.d/95-custom.conf`.
-
-Starting from **lve-utils-3.0-23.7**  fs.proc_super_gid and fs.symlinkown_gid will be migrated (one time) from /etc/sysctl.conf into /etc/sysctl.d/90-cloudlinux.conf .
-
-For **lve-utils** versions from 3.0-21.2 to 3.0-23.7 the migration was performed the same way, but during every package install/update.
-Variables setting guidelines are the same as for CageFS (see above).
-
-As requested by some our customers, we've implemented a new kernel setting to hide `/proc/net/{tcp,udp,unix}` files for additional security/isolation.
-You can hide them by runnign `sysctl -w kernel.proc_disable_net=1` command, and by default, it's `0` (nothing hidden).
-Currently this is implemented for CloudLinux OS Shared 7 only.
-
-## Virtualized /proc filesystem
-
-You can prevent user from seeing processes of other users (via ps/top command) as well as special files in /proc file system by setting fs.proc_can_see_other_uid sysctl.
-
-To do that, edit /etc/sysctl.conf
-<div class="notranslate">
-
-```
-fs.proc_can_see_other_uid=0
-fs.proc_super_gid=600
-```
-</div>
-And do:
-<div class="notranslate">
-
-```
-# sysctl -p
-```
-</div>
-fs.proc_can_see_other_uid=0
-
-If fs.proc_can_see_other_uid is set to 0, users will not be able to see special files. If it is set to 1 - user will see other processes IDs in /proc filesystem.
-
-fs.proc_super_gid=XX
-
-The fs.proc_super_gid sets group ID which will see system files in /proc, add any users to that group so they will see all files in /proc. Usually needed by some monitoring users like nagios or zabbix and [cldetect utility](/shared/command-line_tools/#cldetect) can configure few most commonly used monitoring software automatically.
-
-#### Automatic configuration of a group in the fs.proc_super_gid
-
-Starting from **lve-utils v.4.2.0-1**, when installing (not updating) the `lve-utils` package it automatically creates the `clsupergid` group and registers this group in the `fs.proc_super_gid` (if this group was not created before).
-If a group was created in the `fs.proc_super_gid` earlier all stays the same.
-
-
-Virtualized /proc filesystem in CloudLinux OS Shared 8/CloudLinux OS Shared 7 hybrid will display all files to unprivileged users. But unprivileged users will have access only to the following files (as well as directories for PIDs for the user):
-<div class="notranslate">
-
-```
-/proc/cpuinfo
-/proc/version
-/proc/stat
-/proc/uptime
-/proc/loadavg
-/proc/filesystems
-/proc/stat
-/proc/cmdline
-/proc/meminfo
-/proc/mounts
-/proc/net/tcp
-/proc/net/tcp6
-/proc/net/udp
-/proc/net/udp6
-/proc/net/assocs
-/proc/net/raw
-/proc/net/raw6
-/proc/net/unix
-/proc/net/dev
-```
-</div>
-
-:::tip Note
-Starting from lve-utils 3.0-21.2, fs.proc_super_gid parameter in da_add_admin utility is written to /etc/sysctl.d/90-cloudlinux.conf.
-:::
-
-### Remounting procfs with "hidepid" option
-
-In **lve-utils-2.1-3.2** and later `/proc` can be remounted with `hidepid=2` option to enable additional protection for procfs. This remount is performed in lve_namespaces service.
-This option is in sync with `fs.proc_can_see_other_uid` kernel parameter described above.
-When `/etc/sysctl.conf` does not contain `fs.proc_can_see_other_uid` setting, the protection is off (procfs is remounted with `hidepid=0` option). In this case `fs.proc_super_gid` setting is ignored. Users are able to see full `/proc` including processes of other users on a server. This is a default behavior.
-
-If `/etc/sysctl.conf` contains `fs.proc_can_see_other_uid=1` setting, then `/proc` will be remounted with `hidepid=0` option (disable `hidepid` protection for all users).
-If `/etc/sysctl.conf` contains `fs.proc_can_see_other_uid=0` setting, then `/proc` will be remounted with `hidepid=2` option (enable `hidepid` protection for all users).
-If `/etc/sysctl.conf` contains `fs.proc_can_see_other_uid=0` and `fs.proc_super_gid=$GID` settings, then `/proc` will be remounted with `hidepid=2, gid=$GID` options (enable `hidepid` for all users except users in group with gid $GID).
-
-To apply `/etc/sysctl.conf` changes, you should execute
-<div class="notranslate">
-
-```
-service lve_namespaces restart
-```
-</div>
- Or
-<div class="notranslate">
- 
-```
-/usr/share/cloudlinux/remount_proc.py
-```
-</div>
-
-So, admin can prevent users from seeing processes of other users via `fs.proc_can_see_other_uid` and `fs.proc_super_gid` settings in `/etc/sysctl.conf`, like earlier.
-
-Also, you can override this by specifying desired options for `/proc` in `/etc/fstab`.
-
-To disable hidepid, add to `/etc/fstab` the following:
-<div class="notranslate">
-
-```
-proc /proc proc defaults,hidepid=0,gid=0 0 0
-```
-</div>
-Or you can specify desired hidepid and gid values explicitly:
-<div class="notranslate">
-
-```
-proc /proc proc defaults,hidepid=2,gid=clsupergid 0 0
-```
-</div>
- You should execute
-<div class="notranslate">
- 
-```
-mount -o remount /proc
-```
-</div>
-
-to apply `/etc/fstab` changes.  
-Nevertheless, we recommend to manage procfs mount options via `/etc/sysctl.conf` as described above for backward compatibility. 
-
-::: tip Note
-There is a known issue on CloudLinux OS Shared 6 systems. User cannot see full /proc inside CageFS even when this user is in “super” group, that should see full /proc. This issue does not affect users with CageFS disabled. CloudLinux OS Shared 7 is not affected.
-:::
-
-::: tip Note
-Starting from lve-utils 3.0-21.2, lve_namespaces service can read parameters from the /etc/sysctl.d/90-cloudlinux.conf.
-:::
-
-::: tip Note
-Even if fs.proc_can_see_other_uid and fs.proc_super_gid parameters are not set in config files but specified in /proc/sys, then when restarting lve_namespaces service the parameters from /proc/sys will be used. So, /proc will be remounted according to these parameters.
-:::
-
-### Remounting procfs on CloudLinux OS Shared 8
-
-On CloudLinux OS Shared 8, starting from the kernel version `4.18.0-193.28.1.lve1.el8.x86_64` remounting is controlled by the kernel.
-
-As before, admins are able to change the settings `fs.proc_can_see_other_uid` and `fs.proc_super_gid` in the `/etc/sysctl.d/90-cloudlinux.conf` or `/etc/sysctl.conf`.
-
-To apply changes, execute the following command:
-
-```
-sysctl --system
-```
-
-It is no longer needed to manually run the `/usr/share/cloudlinux/remount_proc.py` to remount `/proc`.
-
-::: tip Note
-On Cloudlinux OS Shared 8, changing the `/etc/fstab` file for setting `/proc` remounting with the `hidepid=` option **will not cause any effect** as remounting is totally controlled by the kernel and depends on the `fs.proc_can_see_other_uid` option.
-:::
-
-## Ptrace block
-
-Starting with kernel 3.10.0-427.18.s2.lve1.4.21 ( <span class="notranslate"> CloudLinux  OS Shared</span> 7) and 2.6.32-673.26.1.lve1.4.17 ( <span class="notranslate"> CloudLinux OS Shared</span> 6) we re-implemented <span class="notranslate"> ptrace block </span> to protect against <span class="notranslate"> ptrace </span> family of vulnerabilities. It prevents end user from using any <span class="notranslate"> ptrace </span> related functionality, including such commands as <span class="notranslate"> strace, lsof </span> or <span class="notranslate"> gdb </span> .
-
-By default, <span class="notranslate"> CloudLinux OS Shared</span> doesn't prevent <span class="notranslate"> ptrace </span> functionality.
-
-Defaults:
-<div class="notranslate">
-
-```
-kernel.user_ptrace = 1
-kernel.user_ptrace_self = 1
-```
-</div>
-
-The option <span class="notranslate"> kernel.user_ptrace </span> disables <span class="notranslate"> PTRACE_ATTACH </span> functionality, option <span class="notranslate"> kernel.user_ptrace_self </span> disables <span class="notranslate"> PTRACE_TRACEME </span> .
-
-To disable all <span class="notranslate"> ptrace </span> functionality change both <span class="notranslate"> sysctl </span> options to 0, add this section to <span class="notranslate"> /etc/sysctl.conf </span> :
-<div class="notranslate">
-
-```
-## CL. Disable ptrace for users
-kernel.user_ptrace = 0
-kernel.user_ptrace_self = 0
-##
-```
-</div>
-
-Apply changes with:
-<div class="notranslate">
-
-```
-$ sysctl -p
-```
-</div>
-
-Different software could need different access to <span class="notranslate"> ptrace </span> , you may need to change only one option to 0 to make them working. In this case, there will be only partial <span class="notranslate"> ptrace </span> protection. 
-
-::: danger
-ptrace protection is known to break PSA service for Plesk 11
-:::
-
-## Xen XVDA
-
-2.6.32 kernels have different mode of naming <span class="notranslate"> Xen XVDA </span> drives.
-
-By adding <span class="notranslate"> xen_blkfront.sda_is_xvda=0 </span> to kernel boot line in <span class="notranslate"> grub.conf </span> you will make sure no naming translation is done, and the drives will be identified as <span class="notranslate"> xvde </span> .
-
-By default, this option is set to 1 in the kernel, and drives are detected as <span class="notranslate"> xvda </span> .
-This is needed only for CloudLinux OS Shared 6 and <span class="notranslate"> Hybrid </span> kernels.
-
-## Umask behavior
-
-:::tip Note
-CloudLinux OS Shared 6, CloudLinux OS Shared 6 hybrid, CloudLinux OS Shared 7, CloudLinux OS Shared 7 hybrid kernels.
-::: 
- 
-Starting from the kernel module **lve-kmod-2.0-10**, the behavior of umask is changed.
-
-Now, when entering LVE task's original umask value is preserved, instead of using LVE's umask value.
-This behavior is typical for all kernels: CloudLinux OS Shared 6, CloudLinux OS Shared 6 hybrid, CloudLinux OS Shared 7, CloudLinux OS Shared 7 hybrid kernels. 
-
-## IO limits latency
-
-**[lve1.2.29+]**
-
-When customer reaches <span class="notranslate"> IO Limit, the processes that are waiting for  <span class="notranslate"> IO will be placed to sleep to make sure they don't go over the limit. That could make some processes sleep for a very long time. </span> </span>
-By defining <span class="notranslate"> IO latency, you can make sure that no process sleeps due to  <span class="notranslate"> IO limit for more then X milliseconds. By doing so, you will also let customers to burst through the limits, and use up more than they were limited too in some instances. </span> </span>
-
-This option is <span class="notranslate"> OFF by default. </span>
-
-_For CloudLinux OS Shared 6 , CloudLinux OS Shared 7, CloudLinux OS Shared 8 (kmodlve 2.1-2 and later):_
-
-To enable <span class="notranslate"> IO </span> Limits latency and set it to 10 seconds:
-<div class="notranslate">
-
-```
-# echo 10000 > /sys/module/kmodlve/parameters/latency
-```
-</div>
-To disable latency:
-<div class="notranslate">
-
-```
-# echo 2000000000 > /sys/module/kmodlve/parameters/latency
-```
-</div>
-
-It is possible to set, for example, 1000 as a permanent value. To do so, create a file <span class="notranslate">/etc/modprobe.d/kmodlve.conf </span> with the following content:  
-<span class="notranslate">`options kmodlve latency=1000` </span>
-
-
-_For <span class="notranslate"> CloudLinux OS Shared</span> 5 (OBSOLETE):_
-
-To enable <span class="notranslate"> IO </span> Limits latency and set it to 10 seconds:
-<div class="notranslate">
-
-```
-# echo 10000 > /sys/module/iolimits/**parameters/latency
-```
-</div>
-To disable latency:
-<div class="notranslate">
-
-```
-# echo 2000000000 > /sys/module/iolimits/**parameters/latency
-```
-</div>
-
-
-## Reading LVE usage
-
-CloudLinux OS Shared kernel provides real time usage data in file.
-
-All the statistics can be read from that file in real time. Depending on your kernel version you will get either Version 6 of the file, or version 4 of the file.
-You can detect the version by reading the first line of the file. It should look like:
- 
-6:LVE... for version 6  
-4:LVE... for version 4
-
-First line presents headers for the data.
-Second line shows default limits for the server, with all other values being 0.
-The rest of the lines present limits & usage data on per <span class="notranslate"> LVE </span> bases.
-
-Version 6 (CL6 & hybrid kernels):
-<div class="notranslate">
-
-```
-6:LVE        EP        lCPU        lIO        CPU        MEM        IO        lMEM        lEP        nCPU        fMEM        fEP        lMEMPHY        lCPUW        lNPROC        MEMPHY        fMEMPHY        NPROC        fNPROC
-0        0        25        1024        0        0        0        262144        20        1        0        0        262144        100        0        0        0        00
-300        0        25        1024        1862407        0        0        262144        20        1        0        0        262144        100        0        31        000
-```
-</div>
-
-| |  |  | |
-|-|--|--|-|
-|**Label** | **Description** | **Value** | **Supported versions**|
-|<span class="notranslate"> LVE </span> | <span class="notranslate"> LVE ID </span> | number | |
-|<span class="notranslate"> EP </span> | Number of <span class="notranslate"> entry processes </span> | number | |
-|<span class="notranslate"> lCPU </span> | <span class="notranslate"> CPU </span> Limit | % relative to total <span class="notranslate"> CPU power </span> | |
-|<span class="notranslate"> lIO </span> | <span class="notranslate"> IO </span> limits for CL6 | KB/s for v6, from 1 to 100 for v4 | |
-|<span class="notranslate"> CPU </span> | <span class="notranslate"> CPU </span> usage since reboot | in nanoseconds for v6, hertz for v4 | |
-|<span class="notranslate"> MEM </span> | Virtual memory usage | number of 4k pages | |
-|<span class="notranslate"> IO </span> | <span class="notranslate"> IO </span> usage | KB/s for v6, 0 for v4 | |
-|<span class="notranslate"> lMEM </span> | Virtual memory limit | number of 4k pages | |
-|<span class="notranslate"> lEP </span> | <span class="notranslate"> Entry Processes </span> limit | number | |
-|<span class="notranslate"> nCPU </span> | Number of cores limit | number of cores | |
-|<span class="notranslate"> fMEM </span> | <span class="notranslate"> Virtual memory </span> faults | number of faults | |
-|<span class="notranslate"> fEP </span> | <span class="notranslate"> Entry Processes </span> faults | number of faults | v6+|
-|<span class="notranslate"> lMEMPHY </span> | Physical memory limit | number | v6+|
-|<span class="notranslate"> lCPUW </span> | <span class="notranslate"> CPU </span> weight (not used) | from 1 to 100 | v6+|
-|<span class="notranslate"> lNPROC </span> | <span class="notranslate"> Number of processes </span> limit | number | v6+|
-|<span class="notranslate"> MEMPHY </span> | Physical memory usage | number of 4k pages | v6+|
-|<span class="notranslate"> fMEMPHY </span> | Physical memory faults | number of faults | v6+|
-|<span class="notranslate"> NPROC </span> | <span class="notranslate"> Number of processes </span> | number | v6+|
-|<span class="notranslate"> fNPROC </span> | <span class="notranslate"> Number of processes </span> faults | number of faults | v6+|
-|<span class="notranslate"> IOPS </span> | <span class="notranslate"> IO </span> operations since reboot | number | v8+|
-
-## Flashcache
-
-:::tip Note
-Available only for x86_64, <span class="notranslate">CloudLinux</span> OS Shared 6 and Hybrid servers
-:::
-
-<span class="notranslate"> Flashcache </span> is a module originally written and released by <span class="notranslate">  Facebook (Mohan Srinivasan, Paul Saab </span> and <span class="notranslate"> Vadim Tkachenko </span> ) in April of 2010. It is a kernel module that allows Writethrough caching of a drive on another drive. This is most often used for caching a rotational drive on a smaller solid-state drive for performance reasons. This gives you the speed of an <span class="notranslate"> SSD </span> and the size of a standard rotational drive for recently cached files. <span class="notranslate"> Facebook </span> originally wrote the module to speed up database <span class="notranslate"> I/O </span> , but it is easily extended to any <span class="notranslate"> I/O </span> .
-
-To install on <span class="notranslate"> CloudLinux OS Shared</span> 6 & Hybrid servers:
-<div class="notranslate">
-
-```
-$ yum install flashcache
-```
-</div>
-
-More info on <span class="notranslate"> flashcache </span> : [https://github.com/facebook/flashcache/](https://github.com/facebook/flashcache/)
-
-<span class="notranslate"> ArchLinux </span> has a good page explaining how to use <span class="notranslate"> flashcache </span> :
-[https://wiki.archlinux.org/index.php/Flashcache](https://wiki.archlinux.org/index.php/Flashcache)
-
-
-## OOM killer for LVE processes
-
-When <span class="notranslate">LVE</span> reaches its memory limit, the processes inside that <span class="notranslate"> LVE </span> are killed by <span class="notranslate"> OOM Killer </span> and appropriate message is written to <span class="notranslate"> /var/log/messages </span> . When any <span class="notranslate"> LVE </span> hits huge number of memory limits in short period of time, then <span class="notranslate"> OOM Killer </span> could cause system overload. Starting from kernel 2.6.32-673.26.1.lve1.4.15 ( <span class="notranslate"> CloudLinux OS Shared</span> 6) and from kernel 3.10.0-427.18.2.lve1.4.14 ( <span class="notranslate"> CloudLinux OS Shared</span> 7) heavy <span class="notranslate"> OOM Killer </span> could be disabled. If so - lightweight <span class="notranslate"> SIGKILL </span> will be used instead.
-
-:::tip Note
-It is recommended to disable OOM killer for LVE processes and use SIGKILL instead
-:::
-
-By default <span class="notranslate"> OOM Killer </span> is enabled, to disable it please run:
-
-_For <span class="notranslate"> CloudLinux OS Shared</span> 6_ :
-<div class="notranslate">
-
-```
-# echo 1 > /proc/sys/ubc/ubc_oom_disable
-```
-</div>
-
-Also, add the following to <span class="notranslate"> _/etc/sysctl.conf_ </span> file to apply the same during boot:
-<div class="notranslate">
-
-```
-ubc.ubc_oom_disable=1
-```
-</div>
-
-_For <span class="notranslate"> CloudLinux OS Shared</span> 7:_
-
-<div class="notranslate">
-
-```
-# echo 1 > /proc/sys/kernel/memcg_oom_disable
-```
-</div>
-
-Also, add the following to <span class="notranslate">`/etc/sysctl.conf`</span> file to apply the same during boot:
-
-<div class="notranslate">
-
-```
-kernel.memcg_oom_disable=1
-```
-</div>
-
-
-## File system quotas
-
-
-In <span class="notranslate">**Ext4**</span> file system, the process with enabled capability <span class="notranslate"> CAP_SYS_RESOURCE </span> is not checked on the quota exceeding by default. It allows userland utilities <span class="notranslate"> _selectorctl_ </span> and <span class="notranslate"> _cagefs_ </span> to operate without fails even if a user exceeds a quota.
-
-To disable quota checking in <span class="notranslate">**XFS**</span> file system set <span class="notranslate">`cap_res_quota_disable`</span> option to 1 using the following command:
-
-<div class="notranslate">
-
-```
-# echo 1 > /proc/sys/fs/xfs/cap_res_quota_disable
-```
-</div>
-
-## Enter LVE when using cPanel utilities <Badge text="cPanel"/> <Badge text="CloudLinux OS Shared 7 hybrid"/> <Badge text="experimental" type="warn"/>
-
-cPanel tools might use more resources than desired, so to limit resource usage, you might want to enter the corresponding LVE when using cPanel tools on-behalf of a non-root user.
-
-
-This feature is considered experimental, as in this case there might be contention for LVE limits between cPanel tools and web-requests for a given user, which might not be suitable.
-
-The <span class="notranslate">`lve_setuid_enter`</span> parameter controls whether you want to enter the corresponding LVE when using cPanel tools on behalf of a non-root user.
-
-By default, the feature is disabled (0), to enable it, run the following for CloudLinux OS Shared 7 hybrid:
-
-<div class="notranslate">
-
-```
-# echo 1 > /sys/module/kmodlve/parameters/lve_setuid_enter
-```
-</div>
-
-## Proactive reporting kernel crash events with Sentry and Kernel Panic Receiver
-
-As updating the kernel is one of the most sensitive tasks, we'd like to achieve the maximum stability along the way.
-In case something goes wrong, proactive reacting to kernel crashes can help tremendously.
-
-Our new tool, _Kernel Panic Receiver_, released in [June 2020](https://blog.cloudlinux.com/kernel-panic-receiver-a-new-tool-to-organize-kernel-panic-logs) allows you to to organize kernel panic logs.
-Kernel Panic Receiver is an open-source component designed to pre-emptively resolve any kernel-related issues.
-
-Visit the [Kernel Panic Receiver project GitHub page](https://github.com/cloudlinux/kernel_panic_receiver).
-
-#### Usage
-
-To send required kernel logs from the clients' machines to _Kernel Panic Receiver_, we configure the default Linux kernel feature called _netconsole_.
-
-The configuration is done by the `initscripts` package, starting from the following versions:
-
-* For CloudLinux OS Shared 6: `9.03.61-1.cloudlinux`
-* For CloudLinux OS Shared 7: `9.49.49-1.cloudlinux`
-* For CloudLinux OS Shared 8: `10.00.4-1.cloudlinux`
-
-To update the `initscripts` package, run the following command:
-
-```
-yum update initscripts --enablerepo=cloudlinux-updates-testing
-```
-
-When a kernel panic occurs, the _netconsole_ module sends logs to our server as plain text via the UDP protocol.
-
-#### What data is transferred by netconsole?
-
-The _netconsole_ sends only OOPs-related messages from the kernel ring buffer. It doesn't transfer any sensitive data, such as usernames, encryption keys, paths, etc. So, there are no security problems you should worry about.
-
-### Disabling the feature
-
-If you don't want to send us the data, you can turn the _netconsole_ service off (we don't recommend it, though).
-To disable transferring the data, just comment the `SYSLOGADDR` parameter in the _netconsole_ config file (`/etc/sysconfig/netconsole`):
-
-```
-# For more information about this data transmission, check this page:
-# https://cloudlinux.zendesk.com/hc/en-us/articles/360016481200
-# SYSLOGADDR=sentrykernel.cloudlinux.com
-```
-
-And stop the _netconsole_ service by running the following command:
-
-```
-service netconsole stop
-```
-
-:::tip Note
-_Netconsole_ is used only for Kernel Panic Receiver, so disabling it doesn't lead to issues with other CloudLinux OS Shared services.
-:::
diff --git a/docs/shared/command-line_tools/.DS_Store b/docs/shared/command-line_tools/.DS_Store
deleted file mode 100644
index 0f9c48595..000000000
Binary files a/docs/shared/command-line_tools/.DS_Store and /dev/null differ
diff --git a/docs/shared/command-line_tools/README.md b/docs/shared/command-line_tools/README.md
deleted file mode 100644
index 5641a489d..000000000
--- a/docs/shared/command-line_tools/README.md
+++ /dev/null
@@ -1,4061 +0,0 @@
-# Command-line tools (CLI)
-
-The list of the commands (CLI) you can use to manage CloudLinux OS components.
-
-* [CageFS](./#cagefs)
-* [LVE-stats 2](./#lve-stats-2)
-* [MySQL Governor](./#mysql-governor)
-* [PHP Selector](./#php-selector)
-* [Python Selector](./#python-selector)
-* [Ruby Selector](./#ruby-selector)
-* [Node.js Selector](./#node-js-selector)
-* [Apache mod_lsapi PRO](./#apache-mod-lsapi-pro)
-* [Website monitoring tool and Slow Site analyzer](./#website-monitoring-tool-and-slow-site-analyzer)
-* [X-Ray Autotracing](./#x-ray-autotracing)
-* [Other CLI tools](./#other-cli-tools)
-
-## CageFS
-
-* [Running command inside CageFS](./#running-command-inside-cagefs)
-* [Sanity check](./#sanity-check)
-
-`cagefsctl` is used to manage CageFS. It allows initializing and updating CageFS, as well as enabling/disabling CageFS for individual users.
-
-Use the following syntax to manage CageFS:
-<span class="notranslate">`/usr/sbin/cagefsctl [OPTIONS]`</span>
-
-
-Options:
-
-| | | |
-|-|-|-|
-|-i | <span class="notranslate"> --init </span> |initialize CageFS (create CageFS if it does not exist)|
-|-r | <span class="notranslate"> --reinit </span> |reinitialize CageFS (make backup and recreate CageFS)|
-|-u | <span class="notranslate"> --update </span> |update files in CageFS (add new and modified files to CageFS, remove unneeded files)|
-|-f | <span class="notranslate"> --force </span> |recreate CageFS (do not make backup, overwrite existing files)|
-|-d | <span class="notranslate"> --dont-clean </span> |do not delete any files from skeleton (use with <span class="notranslate"> --update </span> option)|
-|-k | <span class="notranslate"> --hardlink </span> |use hardlinks if possible|
-| | <span class="notranslate"> --create-mp </span> |Creates _/etc/cagefs/cagefs.mp_ file|
-| | <span class="notranslate"> --mount-skel </span> |mount CageFS skeleton directory|
-| | <span class="notranslate"> --unmount-skel </span> |unmount CageFS skeleton directory|
-| | <span class="notranslate"> --remove-all </span> |disable CageFS, remove templates and _/var/cagefs_ directory|
-| | <span class="notranslate"> --sanity-check </span> |perform basic self-diagnistics of common cagefs-related issues (mostly useful for support)|
-| | <span class="notranslate"> --addrpm </span> |add rpm-packages in CageFS (run <span class="notranslate"> `cagefsctl --update` </span> in order to apply changes)|
-| | <span class="notranslate"> --delrpm </span> |remove rpm-packages from CageFS (run <span class="notranslate"> `cagefsctl --update` </span> in order to apply changes)|
-| | <span class="notranslate"> --list-rpm </span> |list rpm-packages that are installed in CageFS|
-|-e | <span class="notranslate"> --enter </span> |enter into user's CageFS as root|
-| | <span class="notranslate"> --update-list </span> |update specified files only (paths are read from stdin)|
-| | <span class="notranslate"> --update-etc </span> |update _/etc_ directory of all or specified users|
-| | <span class="notranslate"> --set-update-period </span> |set min period of update of CageFS in days (default = 1 day)|
-| | <span class="notranslate"> --force-update </span> |force update of CageFS (ignore period of update)|
-| | <span class="notranslate"> --force-update-etc </span> |force update of _/etc_ directories for users in CageFS|
-| | <span class="notranslate"> --reconfigure-cagefs </span> |configure CageFS integration with other software (control panels, database servers, etc)|
-
-Use the following syntax to manage users:    
-<span class="notranslate"> `/usr/sbin/cagefsctl [OPTIONS] username [more usernames]` </span>
-
-Options:
-
-| | | |
-|-|-|-|
-|-m | <span class="notranslate"> --remount </span> |remount specified user(s)|
-|-M | <span class="notranslate"> --remount-all </span> |remount CageFS skeleton directory and all users (use this each time you have changed _cagefs.mp_ file|
-|-w | <span class="notranslate"> --unmount </span> |unmount specified user(s)|
-|____ | <span class="notranslate"> --unmount-dir </span> |unmount specified dir for all users|
-|-W | <span class="notranslate"> --unmount-all </span> |unmount CageFS skeleton directory and all users|
-|-l | <span class="notranslate"> --list </span> |list users that entered in CageFS|
-| | <span class="notranslate"> --list-logged-in </span> |list users that entered in CageFS via SSH|
-| | <span class="notranslate"> --enable </span> |enable CageFS for the user|
-| | <span class="notranslate"> --disable </span> |disable CageFS for the user|
-| | <span class="notranslate"> --enable-all </span> |enable all users, except specified in _/etc/cagefs/users.disabled_|
-| | <span class="notranslate"> --disable-all </span> |disable all users, except specified in _/etc/cagefs/users.enabled_|
-| | <span class="notranslate"> --display-user-mode </span> |display the current mode ( <span class="notranslate"> "Enable All" </span> or <span class="notranslate"> "Disable All" </span> )|
-| | <span class="notranslate"> --toggle-mode </span> |toggle mode saving current lists of users (lists of enabled and disabled users remain unchanged)|
-| | <span class="notranslate"> --list-enabled </span> |list enabled users|
-| | <span class="notranslate"> --list-disabled </span> |list disabled users|
-| | <span class="notranslate"> --user-status </span> |print status of specified user (enabled or disabled)|
-| | <span class="notranslate"> --getprefix </span> |display prefix for user|
-
-<span class="notranslate"> PHP Selector </span> related options:
- 
-| | |
-|-|-|
-| <span class="notranslate"> --setup-cl-selector </span> | setup <span class="notranslate"> PHP Selector </span> or register new alt-php versions|
-| <span class="notranslate"> --remove-cls-selector </span> |unregister alt-php versions, switch users to default php version when needed|
-| <span class="notranslate"> --rebuild-alt-php-ini </span> |rebuild _alt_php.ini_ file for specified users (or all users if none specified)|
-| <span class="notranslate"> --validate-alt-php-ini </span> |same as <span class="notranslate"> `--rebuild-alt-php-ini` </span> but also validates _alt_php.ini_ options|
-| <span class="notranslate"> --cl-selector-reset-versions </span> |reset php version for specifed users to default (or all users if none specified)|
-| <span class="notranslate"> --cl-selector-reset-modules </span> |reset php modules (extensions) for specific users to defaults (or all users if none specified)|
-| <span class="notranslate"> --create-virt-mp </span> |create virtual mount points for the user|
-| <span class="notranslate"> --create-virt-mp-all </span> |create virtual mount points for all users|
-| <span class="notranslate"> --remount-virtmp </span> |create virtual mount points and remount user|
-| <span class="notranslate"> --apply-global-php-ini </span> |use with 0, 1 or 2 arguments from the list: <span class="notranslate"> `error_log`, `date.timezone` </span> without arguments applies all global php options including the two above|
-
-Common options:
-
-| | | |
-|-|-|-|
-|___ | <span class="notranslate"> --disable-cagefs </span> |disable CageFS|
-| | <span class="notranslate"> --cagefs-status </span> |print CageFS status: ( <span class="notranslate"> enabled </span> or <span class="notranslate"> disabled </span> )|
-| | <span class="notranslate"> --set-min-uid </span> |Set min <span class="notranslate"> UID </span> |
-| | <span class="notranslate"> --get-min-uid </span> |Display current MIN_UID setting|
-| | <span class="notranslate"> --print-suids </span> |Print list of <span class="notranslate"> SUID </span> and SGID programs in skeleton|
-| | <span class="notranslate"> --do-not-ask </span> |assume <span class="notranslate"> "yes" </span> in all queries (should be the first option in command)|
-| | <span class="notranslate"> --clean-var-cagefs </span> |clean _/var/cagefs_ directory (remove data of non-existent users)|
-| | <span class="notranslate"> --set-tmpwatch </span> |set `tmpwatch` command and parameters (save to _/etc/cagefs/cagefs.ini_ file)|
-| | <span class="notranslate"> --tmpwatch </span> |execute tmpwatch (remove outdated files in tmp directories in CageFS for all users)|
-| | <span class="notranslate"> --toggle-plugin </span> |disable/enable CageFS plugin|
-|-v | <span class="notranslate"> --verbose </span> |verbose output|
-| | <span class="notranslate"> --wait-lock </span> |wait for end of execution of other `cagefsctl` processes (when needed) before execution of the command|
-|-h | <span class="notranslate"> --help </span> |this message|
-
-
-
-#### Running command inside CageFS
-
-::: tip Note
-lve-wrappers 0.6-1+
-:::
-
-Sometimes you will need to execute a command as user inside CageFS.
-
-If a user has shell enabled - you can simply use:
-<div class="notranslate">
-
-```
-$ /bin/su - $USERNAME  -c _command_
-```
-</div>
-Yet, if a user have they shell disabled, it wouldn't work. To solve this issue, we have added command:
-<div class="notranslate">
-
-```
-$ /sbin/cagefs_enter_user [--root] [--no-fork] $USERNAME _command_
-```
-</div>
-
-**Options**:
-
-* `--root` – tells the utility not to reset UID and GID to user ones. It might be dangerous to call untrusted commands.
-* `--no-fork` – do not create a child process for a called command. The called command will replace the cagefs_enter process with exec.
-* `--no-cpu-limit`- remove all CPU limits (requires `kmod-lve` >= 2.0.36)
-* `--no-io-and-memory-limit` - remove all limits of IO and Memory (requires `kmod-lve` >= 2.0.36)
-
-If you disable CageFS for a user, then <span class="notranslate"> `cagefs_enter` </span> will be executed without <span class="notranslate"> `proxyexec` </span> .
-
-You can forcibly disable <span class="notranslate"> `cagefs_enter` </span> start via <span class="notranslate"> `proxyexec` </span> for all users (regardless if CageFS is enabled or disabled) by specifying the parameter <span class="notranslate"> _cagefs_enter_proxied=0_ in _/etc/sysconfig/cloudlinux_ </span>.
-
-<span class="notranslate"> _/bin/cagefs_enter.proxied_ </span> can be executed instead of <span class="notranslate"> _/bin/cagefs_enter_ </span> to enter CageFS without <span class="notranslate"> `proxyexec` </span> . Note that starting <span class="notranslate"> `cagefs_enter` </span> via <span class="notranslate"> `proxyexec` </span> is necessary to enable sending local notification messages to users with enabled CageFS. <span class="notranslate"> `cagefs_enter` </span> is executed via <span class="notranslate"> `proxyexec` </span> by default.
-
-
-#### Sanity check
-
-
-:::tip Note
-CageFS 6.0-34+
-:::
-
-CageFS <span class="notranslate">`--sanity-check`</span> utility allows to check CageFS configuration consistency, so that an administrator can save the time investigating issues with CageFS and ensure that custom configuration is correct.
-
-To start, run the command:
-<div class="notranslate">
-
-```
-cagefsctl --sanity-check
-```
-</div>
-At the moment 7 types of check are implemented:
-
-1. _Check cagefs mount points exists_ - reads _cagefs.mp_ file and verifies if the directories specified in it really exist on the disk. To learn more, visit [Mount points](/shared/cloudlinux_os_components/#mount-points) and [Split by username](/shared/cloudlinux_os_components/#split-by-username)
-
-2. _Check cagefs <span class="notranslate"> `users.enabled` </span> is a directory_ - ensures that if  <span class="notranslate"> _/etc/cagefs/users.enabled_ </span> exists, then it is a directory, not a file (if it is recognized as a file, then it would cause a breakdown).
-
-3. _Check cagefs <span class="notranslate"> `users.disabled` </span> is a directory_ - ensures that if  <span class="notranslate"> _/etc/cagefs/users.disabled_ </span> exists, then it is a directory, not a file (if it is recognized as a file, then it would cause a breakdown).
-
-4. _Check cagefs <span class="notranslate"> `disable.etcfs` </span> exists_ - checks if <span class="notranslate"> _/etc/cagefs/etc.safe/disable.etcfs_ </span> exists.
-
-5. _Check cagefs users can enter cagefs_ - chooses two users in the system with enabled CageFS (the first and the second ones in the unsorted list) and tries to log in to CageFS under their credentials and see what happens. It runs <span class="notranslate"> `su -l "$USER" -s /bin/bash -c "whoami"` </span> and compares the output with the <span class="notranslate"> $USER </span> and <span class="notranslate"> su </span> command retcode estimation.
-
-::: tip Note
-If a login fails, it can be due to various reasons, that can only be determined in manual mode. The checker only gives the output of the command.
-:::
-
-6. _Check cagefs proxy commands configs are parsable_ - tries to load <span class="notranslate"> _/etc/cagefs/*.proxy.commands_ </span> files and parse them to check the syntax. In case of any parsing error the test will fail. To learn more, visit [Executing by proxy](/shared/cloudlinux_os_components/#executing-by-proxy).
-
-7. _Check cagefs virt.mp files syntax_ - reads all _/var/cagefs///virt.mp_ files (if any) and checks their syntax validity. At the moment there are only two checks of the syntax: the file is not empty if it exists, and the file is not starting with the sub directory definitions (with @). To learn more, visit [Per-user virtual mount points](/shared/cloudlinux_os_components/#per-user-virtual-mount-points)
-
-8. _Check MultiPHP system default PHP version_ – checks that MultiPHP system default PHP version is **NOT** Alt-PHP. That means <span class="notranslate"> PHP Selector </span> should work properly. If MultiPHP system default PHP version is Alt-PHP, <span class="notranslate"> PHP Selector </span> does not work and should be disabled. To learn more on how to disable <span class="notranslate"> PHP Selector, </span> visit [cPanel LVE Manager](/shared/cloudlinux_os_components/#php-selector) 
-
-Possible results of the checks:
-
-* <span class="notranslate"> OK </span> - the check succeeded.
-
-* <span class="notranslate"> FAILED </span> - the check revealed a problem.
-
-* <span class="notranslate"> SKIPPED </span> - the check was skipped as it made no sense in such environment (e.g. wrong control panel) or can not be performed for some reason (e.g no users with enabled CageFS found). The actual result does not mean that a problem exists and can be considered as positive.
-
-* <span class="notranslate"> INTERNAL_TEST_ERROR </span> - the check failed because of a problem inside the checker itself. Must be reported to the developers.
-
-In case if at least one of the checks resulted neither <span class="notranslate"> OK </span> nor <span class="notranslate"> SKIPPED </span> then the checker will end with ret code >0.
-
-
-## LVE-stats 2
-
-* [lveinfo](./#lveinfo)
-* [lvechart](./#lvechart)
-* [dbgovchart](./#dbgovchart)
-* [lve-read-snapshot](./#lve-read-snapshot)
-* [lve-create-db](./#lve-create-db)
-* [cloudlinux-top](./#cloudlinux-top)
-  * [Usage](./#usage)
-  * [Output format](./#output-format)
-  * [Units of measurement](./#units-of-measurement)
-  * [Errors handling](./#errors-handling)
-  * [Examples](./#examples)
-* [cloudlinux-statistics](./#cloudlinux-statistics)
-  * [Usage](./#usage-2)
-  * [Output format](./#output-format-2)
-  * [Units of measurement](./#units-of-measurement-2)
-  * [Errors handling](./#errors-handling-2)
-  * [Examples](./#examples-2)
-
-| | |
-|-|-|
-|<span class="notranslate"> `/usr/sbin/lveinfo` </span> |utility to display historical information about LVE usage.|
-|<span class="notranslate"> `/usr/sbin/lvechart` </span> |creates a chart representing LVE usage for user.|
-|<span class="notranslate"> `/usr/sbin/dbgovchart` </span> |creates a chart representing MySQL usage for user.|
-|<span class="notranslate"> `/usr/sbin/lve-read-snapshot` </span> |displays information from system state (snapshots) for user.|
-|<span class="notranslate"> `/usr/sbin/lve-create-db` </span> |creates/recreates database for <span class="notranslate">lve-stats</span>.|
-|<span class="notranslate"> `/usr/sbin/cloudlinux-top` </span> |utility provides information about current MySQL and LVE usage of a running system in JSON format.|
-|<span class="notranslate"> `/usr/sbin/cloudlinux-statistics` </span> |utility provides historical information about resource usage.|
-
-<div class="notranslate">
-
-#### lveinfo
-
-</div>
-
-:::tip Note
-<span class="notranslate">lve-stats-2.2-2</span>
-:::
-
-**Usage**
-
-<div class="notranslate">
-
-```
-lveinfo [-h] [-v] [--dbgov DBGOV] [-f YYYY-MM-DD[HH:MM]]
-
-              [-t YYYY-MM-DD[HH:MM]] [--period PERIOD] [-u USER | --id ID]
-
-              [-d] [-o ALIAS] [-b ALIAS [ALIAS ...]] [-p 0..100]
-
-              [--by-fault ALIAS [ALIAS ...]] [-r FAULTS]
-
-              [--style {user,admin}] [-l LIMIT] [-c [PATH] | -j]
-
-              [--server_id SERVER_ID] [--servers-info]
-
-              [--show-all | --show-columns COLUMN_NAME [COLUMN_NAME ...]]
-
-              [--time-unit TIME_UNIT] [-m {v1,v2}]
-
-              [--blank-value [BLANK_VALUE]]
-```
-</div>
-
-<span class="notranslate">`lveinfo`</span> is an utility to display historical information about LVE usage.
-
-**Optional arguments**
-
-* <span class="notranslate"> `-h, --help` </span> – show this help message and exit
-* <span class="notranslate"> `-v, --version` </span> – show program's version number and exit
-* <span class="notranslate"> `--dbgov DBGOV` </span> – show <span class="notranslate"> MySql Governor</span> statistic
-* <span class="notranslate"> `-u USER, --user USER` </span> – use username instead of <span class="notranslate"> LVE id</span>, and show only record for that user
-* <span class="notranslate"> `--id ID` </span> – will display record only for that <span class="notranslate"> LVE id</span>
-* <span class="notranslate"> `-d, --display-username` </span> – try to convert <span class="notranslate"> LVE id</span> into username when possible
-* <span class="notranslate"> `-o ALIAS, --order-by ALIAS` </span> – orders results by one of the following:
-  | | | |
-  |-|-|-|
-  |<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|DESCRIPTION|
-  |<span class="notranslate">`cpu_avg`</span>|<span class="notranslate">`aCPU`</span>|average CPU usage|
-  |<span class="notranslate">`cpu_max`</span>|<span class="notranslate">`mCPU`</span>|max CPU usage|
-  |<span class="notranslate">`total_cpu_faults`</span>|<span class="notranslate">`CPUf`</span>|total number of max CPU usage faults|
-  |<span class="notranslate">`vmem_avg`</span>|<span class="notranslate">`aVMem`</span>|average virtual memory usage||<span class="notranslate">`vmem_max`</span>|<span class="notranslate">`mVMem`</span>|average virtual memory usage||<span class="notranslate">`total_vmem_faults`</span>|<span class="notranslate">`VMemF`</span>|total number of out of virtual memory faults|
-  |<span class="notranslate">`mep_avg`</span>|<span class="notranslate">`aEP`</span>|average number of entry processes (concurrent connections)|
-  |<span class="notranslate">`mep_max`</span>|<span class="notranslate">`mEP`</span>|max number of entry processes (concurrent connections)|
-  |<span class="notranslate">`total_ep_faults`</span>|<span class="notranslate">`EPf`</span>|total number of max entry processes faults|
-  |<span class="notranslate">`pmem_avg`</span>|<span class="notranslate">`aPMem`</span>|average physical memory usage (LVE version >= 6)|
-  |<span class="notranslate">`pmem_max`</span>|<span class="notranslate">`mPMem`</span>|max physical memory usage (LVE version >= 6)|
-  |<span class="notranslate">`nproc_avg`</span>|<span class="notranslate">`aNproc`</span>|average number of processes (LVE version >= 6)|
-  |<span class="notranslate">`nproc_max`</span>|<span class="notranslate">`mNproc`</span>|max number of processes (LVE version >= 6)|
-  |<span class="notranslate">`io_avg`</span>|<span class="notranslate">`aIO`</span>|average io usage (LVE version >= 6)|
-  |<span class="notranslate">`io_max`</span>|<span class="notranslate">`mIO`</span>|max io usage (LVE version >= 6)|
-  |<span class="notranslate">`total_pmem_faults`</span>|<span class="notranslate">`PMemF`</span>|total number of out of physical memory faults (LVE version >= 6)|
-  |<span class="notranslate">`total_nproc_faults`</span>|<span class="notranslate">`NprocF`</span>|total number of max processes faults (LVE version >= 6)|
-  |<span class="notranslate">`total_io_faults`</span>|<span class="notranslate">`IOf`</span>|total number of max io faults (LVE version >= 6)|
-  |<span class="notranslate">`iops_avg`</span>|<span class="notranslate">`aIOPS`</span>|average io operations (LVE version >= 8)|
-  |<span class="notranslate">`iops_max`</span>|<span class="notranslate">`mIOPS`</span>|max io operations (LVE version >= 8)|
-  |<span class="notranslate">`total_iops_faults`</span>|<span class="notranslate">`IOPSf`</span>|total number of max io operations faults (LVE version >= 8)|
-  |<span class="notranslate">`any_faults`</span>|<span class="notranslate">`anyF`</span>|total number of faults of all types|
-* <span class="notranslate"> `-b ALIAS [ALIAS ...]` `--by-usage ALIAS [ALIAS ...]`</span> – show LVEs with usage (averaged) within 90 percent of the limit available values:
-
-  | | | | |
-  |-|-|-|-|
-  |<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|DESCRIPTION|
-  |<span class="notranslate">`cpu_avg`</span>|<span class="notranslate">`cpu`</span>|<span class="notranslate">`aCPU`</span>|average CPU usage|
-  |<span class="notranslate">`cpu_max`</span>|<span class="notranslate">`cpu_max`</span>|<span class="notranslate">`mCPU`</span>|max CPU usage|
-  |<span class="notranslate">`vmem_avg`</span>|<span class="notranslate">`vmem`</span>|<span class="notranslate">`aVMem`</span>|average virtual memory usage|
-  |<span class="notranslate">`vmem_max`</span>|<span class="notranslate">`vmem_max`</span>|<span class="notranslate">`mVMem`</span>|max virtual memory usage|
-  |<span class="notranslate">`mep_avg`</span>|<span class="notranslate">`mep`</span>|<span class="notranslate">`aEP`</span>|average number of entry processes (concurrent connections)|
-  |<span class="notranslate">`mep_max`</span>|<span class="notranslate">`mep_max`</span>|<span class="notranslate">`mEP`</span>|max number of entry processes (concurrent connections)|
-  |<span class="notranslate">`pmem_avg`</span>|<span class="notranslate">`pmem`</span>|<span class="notranslate">`aPMem`</span>|average physical memory usage (LVE version >= 6)|
-  |<span class="notranslate">`pmem_max`</span>|<span class="notranslate">`pmem_max`</span>|<span class="notranslate">`mPMem`</span>|max physical memory usage (LVE version >= 6)|
-  |<span class="notranslate">`nproc_avg`</span>|<span class="notranslate">`nproc`</span>|<span class="notranslate">`aNproc`</span>|average number of processes (LVE version >= 6)|
-  |<span class="notranslate">`nproc_max`</span>|<span class="notranslate">`nproc_max`</span>|<span class="notranslate">`mNproc`</span>|max number of processes (LVE version >= 6)|
-  |<span class="notranslate">`io_avg`</span>|<span class="notranslate">`io`</span>|<span class="notranslate">`aIO`</span>|average io usage (LVE version >= 6)|
-  |<span class="notranslate">`io_max`</span>|<span class="notranslate">`io_max`</span>|<span class="notranslate">`mIO`</span>|max io usage (LVE version >= 6)|
-  |<span class="notranslate">`iops_avg`</span>|<span class="notranslate">`iops`</span>|<span class="notranslate">`aIOPS`</span>|average io operations (LVE version >= 8)|
-  |<span class="notranslate">`iops_max`</span>|<span class="notranslate">`iops_max`</span>|<span class="notranslate">`mIOPS`</span>|max io operations (LVE version >= 8)|
-
-* <span class="notranslate">`-p 0..100`, `--percentage 0..100`</span> – defines percentage for <span class="notranslate">`--by-usage`</span> option; default `90`
-* <span class="notranslate"> `--style {user,admin}` </span> – deprecated, not used.
-* <span class="notranslate"> `-l LIMIT`, `--limit LIMIT` </span> – max number of results to display, `10` by default, if `0` no limit
-* <span class="notranslate"> `-c [PATH]`, `--csv [PATH]` </span> – save statistics in CSV format; `-` by default (output to screen)
-* <span class="notranslate"> `-j`, `--json` </span> – display output in JSON format
-* <span class="notranslate"> `--server_id SERVER_ID` </span> – used with central database for multiple servers, default <span class="notranslate">`localhost`</span>
-* <span class="notranslate"> `--servers-info` </span> – show servers LVE versions
-* <span class="notranslate"> `--show-all` </span> – full output (show all limits); brief output is default; equivalent <span class="notranslate">`--show-columns all`</span>
-* <span class="notranslate"> `-show-columns COLUMN_NAME [COLUMN_NAME ...]` </span> – show only the listed columns; <span class="notranslate">`all`</span> for all supported columns
-  
-  | | |
-  |-|-|
-  |<span class="notranslate">COLUMN_NAME</span> |DESCRIPTION|
-  |<span class="notranslate"> `From ` </span> |Show start period statistics|
-  |<span class="notranslate"> `To  ` </span> |Show end period statistics|
-  |<span class="notranslate"> `ID ` </span> |LVE Id or username|
-  |<span class="notranslate"> `aCPU` </span> |Average <span class="notranslate"> CPU</span> usage|
-  |<span class="notranslate"> `uCPU` </span> |The percentage of user-allocated resource <span class="notranslate">CPU</span>|
-  |<span class="notranslate"> `mCPU` </span> |deprecated|
-  |<span class="notranslate"> `lCPU` </span> |<span class="notranslate">CPU</span> limit|
-  |<span class="notranslate">`CPUf`</span> |Out Of <span class="notranslate">CPU</span> usage Faults|
-  |<span class="notranslate">`aEP`</span> | Average Entry Processes|
-  |<span class="notranslate">`uEP` </span> |The percentage of user-allocated resource Entry processes|
-  |<span class="notranslate">`mEP` </span> |deprecated|
-  |<span class="notranslate">`lEP` </span> |maxEntryProc limit|
-  |<span class="notranslate">`aVMem` </span> |Average Virtual Memory Usage|
-  |<span class="notranslate">`uVMem ` </span> |The percentage of user-allocated resource Virtual Memory|
-  |<span class="notranslate">`mVMem` </span> |deprecated|
-  |<span class="notranslate">`lVMem` </span> |Virtual Memory Limit|
-  |<span class="notranslate">`VMemF` </span> |Out Of Memory Faults|
-  |<span class="notranslate">`EPf` </span> |Entry processes faults|
-  |<span class="notranslate">`aPMem` </span> |Average Physical Memory Usage (LVE version >= 6)|
-  |<span class="notranslate">`uPMem` </span> |The percentage of user-allocated resource Physical Memory (LVE version >= 6)|
-  |<span class="notranslate">`mPMem` </span> |deprecated (LVE version >= 6)|
-  |<span class="notranslate">`lPMem` </span> |Physical Memory Limit (LVE version >= 6)|
-  |<span class="notranslate">`aNproc` </span> |Average Number of processes (LVE version >= 6)|
-  |<span class="notranslate">`uNproc` </span> |The percentage of user-allocated resource Number of processes (LVE version >= 6)|
-  |<span class="notranslate">`mNproc` </span> |deprecated (LVE version >= 6)|
-  |<span class="notranslate">`lNproc` </span> |Limit of Number of processes (LVE version >= 6)|
-  |<span class="notranslate">`PMemF` </span> |Out Of Physical Memory Faults (LVE version >= 6)|
-  |<span class="notranslate">`NprocF` </span> |Number of processes faults (LVE version >= 6)|
-  |<span class="notranslate">`aIO` </span> |Average <span class="notranslate">I/O</span> (LVE version >= 6)|
-  |<span class="notranslate">`uIO` </span> |The percentage of user-allocated resource <span class="notranslate">I/O</span> (LVE version >= 6)|
-  |<span class="notranslate">`mIO` </span> |deprecated (LVE version >= 6)|
-  |<span class="notranslate">`lIO` </span> |<span class="notranslate">I/O</span> Limit (LVE version >= 6)|
-  |<span class="notranslate">`IOf` </span> |Out Of <span class="notranslate">I/O</span> usage Faults (LVE version >= 6)|
-  |<span class="notranslate">`aIOPS` </span> |Average <span class="notranslate">I/O</span> Operations (LVE version >= 8)|
-  |<span class="notranslate">`mIOPS` </span> |deprecated (LVE version >= 8)|
-  |<span class="notranslate">`uIOPS` </span> |The percentage of user-allocated resource <span class="notranslate">I/O</span> Operations (LVE version >= 8)|
-  |<span class="notranslate">`lIOPS` </span> |<span class="notranslate">I/O</span> Operations Limit (LVE version >= 8)|
-  |<span class="notranslate">`IOPSf` </span> |Out Of <span class="notranslate">I/O</span> Operations Faults (LVE version >= 8)|
-
-* <span class="notranslate"> `--time-unit TIME_UNIT` </span> – time step for grouping statistic in minutes; 1 min., by default; can use <span class="notranslate">`m\|h\|d`</span> suffixes; for example: `1h or 1h30m or 1d12h`
-* <span class="notranslate"> `-m {v1,v2}`, `--compat {v1,v2}` </span> – `v1` - return old output mode; `v2` - new mode; default `v1`; you can change default in config
-* <span class="notranslate"> `--blank-value [BLANK_VALUE]` </span> – Use to fill unsupported limits; default `-`
-* <span class="notranslate"> `-f YYYY-MM-DD[ HH:MM]`,  `--from YYYY-MM-DD[ HH:MM]`</span> – run report from date and time in <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present last 10 minutes are assumed
-* <span class="notranslate"> `-t YYYY-MM-DD[ HH:MM]`,  `--to YYYY-MM-DD[ HH:MM]`</span> – run report up to date and time in <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, reports results up to now
-* <span class="notranslate"> `--period PERIOD` </span> – time period; specify minutes with <span class="notranslate"> `m`, `h`</span> - hours, days with <span class="notranslate"> `d`</span>, and values: <span class="notranslate"> `today`, `yesterday`; `5m`</span> - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, as well as <span class="notranslate"> `today`</span>
-* <span class="notranslate"> `--by-fault ALIAS [ALIAS ...]` </span> – show LVEs which failed on max processes limit or memory limit
-  
-  | | | | |
-  |-|-|-|-|
-  |<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|<span class="notranslate">ALIAS</span>|DESCRIPTION|
-  |<span class="notranslate">`mcpu`</span>|<span class="notranslate">`cpu`</span>|<span class="notranslate">`CPUf`</span>|total number of max CPU usage faults|
-  |<span class="notranslate">`mem`</span>|<span class="notranslate">`vmem`</span>|<span class="notranslate">`VMemF`</span>|total number of out of virtual memory faults|
-  |<span class="notranslate">`mep`</span>|<span class="notranslate">`ep`</span>|<span class="notranslate">`EPf`</span>|total number of max entry processes faults|
-  |<span class="notranslate">`pmem`</span>|<span class="notranslate">`pmem`</span>|<span class="notranslate">`PMemF`</span>|total number of out of physical memory faults (LVE version >= 6)|
-  |<span class="notranslate">`nproc`</span>|<span class="notranslate">`nproc`</span>|<span class="notranslate">`NprocF`</span>|total number of max processes faults (LVE version >= 6)|
-  |<span class="notranslate">`io`</span>|<span class="notranslate">`io`</span>|<span class="notranslate">`IOf`</span>|total number of max io faults (LVE version >= 6)|
-  |<span class="notranslate">`iops`</span>|<span class="notranslate">`iops`</span>|<span class="notranslate">`IOPSf`</span>|total number of max io operations faults (LVE version >= 8)|
-  |<span class="notranslate">`any_faults`</span>|<span class="notranslate">`any`</span>|<span class="notranslate">`anyF`</span>|total number of faults of all types|
-* <span class="notranslate"> `-r FAULTS, --threshold FAULTS` </span>– in combination with <span class="notranslate">`--by-fault`</span>, shows only LVEs with number of faults above; default `1`
-  
-Prefixes <span class="notranslate">`Kb`, `Mb` </span> and <span class="notranslate">`Gb`</span> indicates powers of 1024.
-
-:::tip Note
-All <span class="notranslate">ALIAS</span> options are not case sensitive.
-:::
-
-<div class="notranslate">
-
-#### lvechart
-
-</div>
-
-`/usr/sbin/lvechart` - creates a chart representing LVE usage for user.
-
-**Usage**
-
-<div class="notranslate">
-
-```
-/usr/sbin/lvechart [OPTIONS]
-```
-</div>
-
-**Acceptable options**
-
-| | |
-|-|-|
-|<span class="notranslate"> `--help ` </span> |This help screen|
-|<span class="notranslate"> `--version` </span> |Version number|
-|<span class="notranslate"> `--from` </span> |Run report from date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format (if not present, last 10 minutes are assumed)|
-|<span class="notranslate"> `--to=` </span> |Run report up to date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format (if not present, reports results up to now)|
-|<span class="notranslate"> `--period=` </span> |Time period: specify minutes with `m`, `h` - hours, days with `d`, and values: <span class="notranslate">`today`</span>, <span class="notranslate">`yesterday`</span>; `5m` - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, as well as today|
-|<span class="notranslate"> `--id= ` </span> |<span class="notranslate">`LVE id`</span> will display record only for that <span class="notranslate">LVE id</span>|
-|<span class="notranslate"> `--user=` </span> |Use username instead of <span class="notranslate"> LVE id </span>, and show only record for that user|
-|<span class="notranslate"> `--server= ` </span> |<span class="notranslate">`Server id`</span> will display record for that server, instead of default (current)|
-|<span class="notranslate"> `--output= ` </span> |Filename to save chart as, if not present, output will be sent to STDOUT|
-|<span class="notranslate"> `--show-all` </span> |Show all graphs (by default shows graphs for which limits are set)|
-|<span class="notranslate"> `--style=` </span> |<span class="notranslate">`admin`, `user`</span> set chart style,  <span class="notranslate">CPU</span> limits are normalized to 100% in user’s style|
-|<span class="notranslate"> `--format=` </span> |<span class="notranslate">`svg`, `png`</span> set chart output format|
-
-<div class="notranslate">
-
-#### dbgovchart
-
-</div>
-
-
-`/usr/sbin/dbgovchart` - creates a chart representing MySQL usage for user.`
-
-**Usage**
-
-<div class="notranslate">
-
-```
-/usr/sbin/dbgovchart [OPTIONS]
-```
-</div>
-
-**Acceptable options**
-
-| | |
-|-|-|
-|<span class="notranslate"> `--help ` </span> |This help screen|
-|<span class="notranslate"> `--version` </span> |Version number|
-|<span class="notranslate"> `--from=` </span> |Run report from date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format (if not present, last 10 minutes are assumed)|
-|<span class="notranslate"> `--to=` </span> |Run report up to date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format (if not present, reports results up to now)|
-|<span class="notranslate"> `--period=` </span> |Time period: specify minutes with `m`,  `h` - hours, days with `d`, and values: <span class="notranslate">`today`</span>, <span class="notranslate">`yesterday`</span>; `5m` - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, as well as today`|
-|<span class="notranslate"> `--user=` </span> |mysql username|
-|<span class="notranslate"> `--output= ` </span> |Filename to save chart as, if not present, output will be sent to <span class="notranslate">STDOUT</span>|
-|<span class="notranslate"> `--show-all` </span> |Show all graphs (by default shows graphs for which limits are set)|
-|<span class="notranslate"> `--server=` </span> | <span class="notranslate"> `Server id`</span> will display record for that server, instead of default (current)|
-|<span class="notranslate"> `--style=` </span> | <span class="notranslate">`admin`, `user`</span> set chart style,  <span class="notranslate">CPU</span> limits are normalized to 100% in user’s style|
-|<span class="notranslate"> `--format=` </span> | <span class="notranslate">`svg`, `png`</span> set chart output format|
-
-<div class="notranslate">
-
-#### lve-read-snapshot
-
-</div>
-
-**Usage**
-
-<div class="notranslate">
-
-```
-lve-read-snapshot [-h] [--version] [-f FROM [FROM ...]] [-t TO [TO ...]
-                  [ -p PERIOD | --timestamp TIMESTAMP]
-                  [-i ID | -u USER] [-l] [-o file] [-j] [--stats]
-                  [--unit unit]
-```
-</div>
-
-Reads LVE system state snapshots for <span class="notranslate">LVE/user</span>.
-
-**Optional arguments**
-
-* <span class="notranslate">`-h, --help`</span> – show this help message and exit
-* <span class="notranslate">`--version`</span> – version number
-* <span class="notranslate">`-f FROM [FROM ...]`, `--from FROM [FROM ...]`</span> – run report from date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format, if not present last 10 minutes are assumed (default: `2016-10-24 19:28`)
-* <span class="notranslate">`-t TO [TO ...]`, `--to TO [TO ...]`</span> – run report up to date and time in <span class="notranslate">`YYYY-MM-DD HH:MM`</span> format, if not present, reports results up to now (default: `2016-10-24 19:38`)
-* <span class="notranslate">`-p PERIOD`, `--period PERIOD`</span> – time period specify minutes with `m`, `h` - hours, days with `d`, and values: <span class="notranslate">`today`, `yesterday`</span>, `5m` - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, as well as today (default: `10m`)
-* <span class="notranslate">`--timestamp TIMESTAMP`</span> – time stamp in unix format for get one snapshot (default: <span class="notranslate">`None`</span>)
-* <span class="notranslate">`-i ID, --id ID`</span> – LVE id to show records for (default: <span class="notranslate">`None`</span>)
-* <span class="notranslate">`-u USER`, `--user USER`</span> – user account to show records for (default: <span class="notranslate">`None`</span>)
-* <span class="notranslate">`-l`, `--list`</span> – show timestamp list only (default: <span class="notranslate"> `False`</span>)
-* <span class="notranslate">`-o file`, `--output file`</span> – filename to save snaphots report to, if not present,output will be sent to <span class="notranslate">STDOUT</span> (default: <span class="notranslate">`None`</span>)
-* <span class="notranslate">`-j`, `--json`</span> – output in json format (default: <span class="notranslate">`False`</span>)
-* <span class="notranslate">`--stats`</span> – output stats, instead of snapshots (default: <span class="notranslate">`False`</span>)
-* <span class="notranslate">`--unit unit`</span> – group stats by time unit. Example values `3h`, `24h`, `1d`, `1w`. Other possible value is <span class="notranslate">`auto`</span> for grouping by each incident (default: <span class="notranslate">`1d`</span>)
-  
-One of <span class="notranslate">`-u --user`</span> or <span class="notranslate">`-i --id`</span> should be specified.
-
-<div class="notranslate">
-
-#### lve-create-db
-
-</div>
-
-**Usage**
-
-<div class="notranslate">
-
-```
-lve-create-db [-h] [--recreate] [--print-sql]
-                   [--update-serverid-prompt] [--update-serverid-auto]
-                   [--validate]
-```
-</div>
-
-Creates a database for <span class="notranslate">lve-stats</span>.
-
-**Optional arguments**
-
-* <span class="notranslate">`-h`, `--help`</span> – show this help message and exit
-* <span class="notranslate">`--recreate`</span> – drops and recreates database even if tables exists (default: <span class="notranslate">`False`</span>)
-* <span class="notranslate">`--print-sql`</span> – prints sql and exits, without creating db (default: <span class="notranslate">`False`</span>)
-* <span class="notranslate">`--update-serverid-prompt`</span> – update exist server ID or create new one (default: <span class="notranslate">`False`</span>)
-* <span class="notranslate">`--update-serverid-auto`</span> – update exist server ID with <span class="notranslate">uuid</span> (default: <span class="notranslate">`False`</span>)
-* <span class="notranslate">`--validate`</span> – check the correctness of the database structure (default: <span class="notranslate">`False`</span>)
-
-#### cloudlinux-top
-
-Utility provides information about current MySQL and LVE usage of a running system in JSON format.
-
-#### **Usage**
-
-<div class="notranslate">
-
-```
-cloudlinux_top [-h] [-v] [-j] [--hide-mysql]
-               [-u USERNAME | -r FOR_RESELLER] [-d DOMAIN] [-m MAX]
-               [-o ORDER_BY]
-```
-</div>
-
-**Optional arguments**
-
-* <span class="notranslate"> `-h, --help` </span> – show this help message and exit
-* <span class="notranslate"> `-v, --version`   </span> – show program version number and exit
-* <span class="notranslate"> `-j, --json`   </span> – return data in JSON format
-* <span class="notranslate"> `--hide-mysql`   </span> | `don't show MySQL related info
-* <span class="notranslate"> `-u USERNAME`, `--username USERNAME` </span> – show data only for a specific user. Can be used to filter the output; returns users with username <span class="notranslate">`%USERNAME%`</span>
-* <span class="notranslate"> `-r FOR_RESELLER`, `--for-reseller FOR_RESELLER` </span> – get information only about specified reseller and his users
-* <span class="notranslate"> `-d DOMAIN`, `--domain DOMAIN` </span> – show data only for a specific domain. Can be used to filter the output; returns users with domain <span class="notranslate">`%DOMAIN%`</span>
-* <span class="notranslate"> `-m MAX`, `--max MAX` </span> – show up to <span class="notranslate">`N`</span> records. If <span class="notranslate">`--max`</span> key is omitted. By default will show top 25 users
-* <span class="notranslate"> `-o ORDER_BY`, `--order-by ORDER_BY` </span> – sort output by resource usage; available options: <span class="notranslate">`cpu`, `mysql_cpu`, `io`, `mysql_io`, `iops`, `ep`, `nproc`, `pmem`</span>
-
-#### **Output format**
-
-<div class="notranslate">
-
-```
-{
-  "mySqlGov": "enabled",              # possible values: enabled, error
-  "mySqlGovMode": "abusers",          # see “MySQL Governor > Modes Of Operation”
-                                      # if MySQL Governor is not enabled, value is "none"
- 
-  "resellers": [                      # list of resellers (available only with
-                                      # reseller limits feature)
-      {
-          "id": 1000020005,           # internal record id
-          "limit": <lve_section>,     # current limits (last 5 seconds)
-          "name": "reseller_name",    # reseller’s login in control panel
-          "usage": <lve_section>      # current usage (last 5 seconds)
-      }
-  ],
-  "result": "success",                # see the ‘errors handling’ section
-  "timestamp": 1522858537.337549,
-  "users": [
-      {
-          "domain": "domain.com",     # user’s primary domain (from control panel)
-          "id": 20005,                # lve_id, same as user id in /etc/passwd file
-          "limit": <lve_section>,     # limits for last 5 seconds
-          "reseller": "reseler1",     # user’s reseller (from control panel)
-          "usage": <lve_section>,     # usage for last 5 seconds
-          "username": "user"          # username from /etc/passwd file or “N/A” if user
-                                      # with such id does not exist
-       }
-   ]
- }
-```
-</div>
-
-The structure<sup> *</sup> of <span class="notranslate">`<lve_section>`</span>:
-
-<div class="notranslate">
-
-```
-{
-"cpu": {
- "all": 50.0,      # CPU usage or limit (LVE only)
- "mysql": 0.0*     # CPU usage or limit (MySQL Governor only)
-},
-"ep": 1.0,           # number of entry processes
-"io": {
- "all": 0.0,       # IO usage or limit (LVE only)
- "mysql": 0.0**     # IO usage or limit (MySQL Governor only)
-},
-"iops": 0.0,         # IO operations per second
-"mem": 258048,       # memory usage or limit
-"pno": 1.0           # number of processes
-}
-```
-</div>
-
-
-:::tip Note
-* you can modify this structure using <span class="notranslate">`--show`</span> option, see [usage examples](./#examples) for details.
-* MySQL values are only present when <span class="notranslate">MySQL Governor</span> statistics is available and <span class="notranslate">`--hide-mysql`</span> options is not used.
-:::
-
-#### **Units of measurement**
-
-For <span class="notranslate">`limits`</span> and <span class="notranslate">`usage`</span> sections we use the following units of measurement.
-
-| | |
-|-|-|
-|**Value** | **Units of measurement**|
-|<span class="notranslate"> cpu (lve and mysql) </span> | percentage of one <span class="notranslate"> CPU </span> core|
-|<span class="notranslate"> io (lve and mysql) </span> | bytes per second|
-|<span class="notranslate"> iops </span> | number of <span class="notranslate"> IO </span> operations per second|
-|<span class="notranslate"> mem </span> | bytes|
-|<span class="notranslate"> ep </span> | number of entry processes|
-|<span class="notranslate"> pno </span> | number of processes|
-
-
-#### **Errors handling**
-
-The format of the error message is the same as in the other <span class="notranslate">`cloudlinux- *`</span> utilities. When everything is ok, the <span class="notranslate">`result`</span> value is <span class="notranslate">`success`</span>. Otherwise, it contains error message. In case of unexpected errors, the output will be as follows.
-
-<div class="notranslate">
-
-```
-# cloudlinux-top --json 
-{
-  "context": {
-      "error_text": "Very bad error"
-  },
-  "result": "An error occured: \"%(error_text)s\"",
-  "timestamp": 1523871939.639394
-}
-```
-</div>
-
-
-#### **Examples**
-
-
-* get 100 users ordered by <span class="notranslate"> CPU </span> usage
-
-  <div class="notranslate">
-
-  ```
-  # cloudlinux-top --json --order-by cpu --max=100
-  ```
-  </div>
-
-* get information about one user
-
-  <div class="notranslate">
-
-  ```
-  # cloudlinux-top --json -u username
-  ```
-  </div>
-
-* get information about reseller and his users
-
-  <div class="notranslate">
-
-  ```
-  # cloudlinux-top --json --for-reseller=reseller_name
-  ```
-  </div>
-
-* show only <span class="notranslate">IO</span> limits and usage
-
-  <div class="notranslate">
-
-  ```
-  # cloudlinux-top --json --show=io
-  ```
-  </div>
-
-<div class="notranslate">
-
-#### cloudlinux-statistics
-
-</div>
-
-<span class="notranslate">cloudlinux-statistics</span> is a <span class="notranslate">CLI</span> utility that provides historical information about resource usage.
-
-#### **Usage**
-
-<div class="notranslate">
-
-```
-cloudlinux-statistics [-h] [-j] [-v] [--by-usage BY_USAGE]
-                      [--percentage 0..100] [--by-fault BY_FAULT]
-                      [--threshold THRESHOLD] [--server_id SERVER_ID]
-                      [-f FROM] [-t TO] [--period PERIOD]
-                      [--limit LIMIT]
-                      [--show COLUMN_NAME [COLUMN_NAME ...]]
-                      [-o ORDER_BY] [--id ID] [--time-unit TIME_UNIT]
-                      [-r FOR_RESELLER]
-```
-</div>
-
-**Optional arguments**
-
-* <span class="notranslate"> `-h`, `--help` </span> – show this help message and exit
-* <span class="notranslate"> `-j`, `--json` </span> – return data in JSON format
-* <span class="notranslate"> `-v`, `--version` </span> – show program version number and exit
-* <span class="notranslate"> `--server_id SERVER_ID`, `--server-id SERVER_ID` </span> – can be used with the central database for multiple servers; default `...`
-* <span class="notranslate"> `--limit LIMIT` </span> – limit the number of results to display, `0` is unlimited
-* <span class="notranslate"> `--show COLUMN_NAME [COLUMN_NAME ...]` </span> – show only listed columns; <span class="notranslate">`all`</span> for all supported columns (fields)
-  | | |
-  |-|-|
-  |<span class="notranslate">Key</span>|Fields to show|
-  |<span class="notranslate">`all`</span>|all available fields|
-  |<span class="notranslate">`cpu`</span>|CPU field|
-  |<span class="notranslate">`io`</span>|IO field|
-  |<span class="notranslate">`iops`</span>|IOPS field|
-  |<span class="notranslate">`ep`</span>|entry processes (concurrent connections) field|
-  |<span class="notranslate">`nproc`</span>|number of processes field|
-  |<span class="notranslate">`pmem`</span>|physical memory field|
-  |<span class="notranslate">`vmem`</span>|virtual memory field|
-  |<span class="notranslate">`mysql`</span>|`mysql_cpu` & `mysql_io` field|
-
-* <span class="notranslate"> `-o ORDER_BY`, `--order-by ORDER_BY` </span> – order results by one of the following keys (fields):
-  | | |
-  |-|-|
-  |FIELD|DESCRIPTION|
-  |<span class="notranslate">`any_faults`</span>|total number of faults of all types|
-  |<span class="notranslate">`cpu`</span>|average CPU usage|
-  |<span class="notranslate">`mysql_cpu`</span>|average MySQL CPU usage|
-  |<span class="notranslate">`io`</span>|average IO usage|
-  |<span class="notranslate">`mysql_io`</span>|average MySQL IO usage|
-  |<span class="notranslate">`iops`</span>|average IO operations; (LVE version >= 8)|
-  |<span class="notranslate">`ep`</span>|average number of entry processes (concurrent connections)|
-  |<span class="notranslate">`nproc`</span>|average number of processes|
-  |<span class="notranslate">`pmem`</span>|average physical memory usage|
-  |<span class="notranslate">`vmem`</span>|average virtual memory usage|
-  |<span class="notranslate">`cpu_faults`</span>|total number of CPU usage faults|
-  |<span class="notranslate">`io_faults`</span>|total number of max IO faults|
-  |<span class="notranslate">`iops_fault`</span>|total number of max IO operations faults; (LVE version >= 8)|
-  |<span class="notranslate">`ep_faults`</span>|total number of max entry processes faults|
-  |<span class="notranslate">`nproc_faults`</span>|total number of max processes faults|
-  |<span class="notranslate">`pmem_faults`</span>|total number of out of physical memory faults|
-  |<span class="notranslate">`vmem_faults`</span>|total number of out of virtual memory faults|
-
-* <span class="notranslate"> `-r FOR_RESELLER`, `--for-reseller FOR_RESELLER` </span> – show statistics only for given reseller and his users
-
-Filter items by resource usage.
-
-* <span class="notranslate"> `--by-usage BY_USAGE` </span> – show LVEs with usage (averaged) within 90 percent of the limit available values
-  | | |
-  |-|-|
-  |FIELD|DESCRIPTION|
-  |<span class="notranslate">`cpu`</span>|average CPU usage|
-  |<span class="notranslate">`mysql_cpu`</span>|average MySQL CPU usage|
-  |<span class="notranslate">`io`</span>|average IO usage|
-  |<span class="notranslate">`mysql_io`</span>|average MySQL IO usage|
-  |<span class="notranslate">`iops`</span>|average IO operations; (LVE version >= 8)|
-  |<span class="notranslate">`ep`</span>|average number of entry processes (concurrent connections)|
-  |<span class="notranslate">`nproc`</span>|average number of processes|
-  |<span class="notranslate">`pmem`</span>|average physical memory usage|
-  |<span class="notranslate">`vmem`</span>|average virtual memory usage|
-
-* <span class="notranslate"> `-percentage 0..100` </span> – define percentage for <span class="notranslate">`--by-usage`</span> option; default `90`
-
-Filter items by the number of faults.
-
-* <span class="notranslate"> `--by-fault BY_FAULT` </span> – show only accounts that have some faults for the given limit
-  | | |
-  |-|-|
-  |FIELD|DESCRIPTION|
-  |<span class="notranslate">`any`</span>|faults of all types|
-  |<span class="notranslate">`cpu`</span>|CPU usage faults|
-  |<span class="notranslate">`io`</span>|max IO usage faults|
-  |<span class="notranslate">`iops`</span>|max IO operations faults; (LVE version >= 8)|
-  |<span class="notranslate">`ep`</span>|max entry processes faults|
-  |<span class="notranslate">`nproc`</span>|max processes faults|
-  |<span class="notranslate">`pmem`</span>|out of physical memory faults|
-  |<span class="notranslate">`vmem`</span>|out of virtual memory faults|
-
-* <span class="notranslate"> `--threshold THRESHOLD` </span> – in combination with <span class="notranslate">`--by-fault`</span> shows only accounts with the number of faults more than given; default `1`
-
-Filter items by a time interval.
-
-Allows to get information for the given period of time; you can either set <span class="notranslate">`--from`</span> and <span class="notranslate">`--to`</span> options, or just get information for the recent time period using <span class="notranslate">`--period option`.</span>
-
-:::tip Note
-<span class="notranslate">`--from`</span> and <span class="notranslate">`--to`</span> values are ignored when <span class="notranslate">`--period`</span> is set.
-:::
-
-* <span class="notranslate"> `-f FROM`, `--from FROM` </span> – run report from date and time in <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, last 10 minutes are assumed
-* <span class="notranslate"> `-t TO`, `--to TO` </span> – run report up to date and time in <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, reports results up to now
-* <span class="notranslate"> `--period PERIOD` </span> – time period; specify minutes with <span class="notranslate">`m`</span>, hours with <span class="notranslate">`h`</span>, days with <span class="notranslate">`d`</span>, and values: <span class="notranslate">`today`, `yesterday`</span>; `5m` - last 5 minutes, `4h` - last four hours, `2d` - last 2 days, and <span class="notranslate">`today`</span>
-
-Get detailed statistics.
-
-* <span class="notranslate"> `--id ID` </span> – get detailed statistics for database record with the given id
-* <span class="notranslate"> `--time-unit TIME_UNIT` </span> – group statistics using the given time; 1 minute by default. For example: <span class="notranslate">`1h`</span> or <span class="notranslate">`1h30m`</span> or <span class="notranslate">`dynamic`</span>; available only in pair with <span class="notranslate">`--id`</span>
-
-
-#### **Output format**
-
-There are two different JSON formats used for **summary statistics** and **detailed statistics**.
-
-**Summary statistics**
-
-<div class="notranslate">
-
-```
-# cloudlinux-statistics --json
- {
- "resellers": [
-   {
-     "usage": <lve_section>,
-     "faults": <lve_section>,
-     "name": "reseller",
-     "limits": <lve_section>,
-     "id": 1000020005
-   }
- ],
- "timestamp": 1522920637,
- "mySqlGov": "enabled",            # possible values: ”enabled”, “error”
- "result": "success",
- "users": [
-   {
-     "username": "username",
-     "domain": "example.com",
-     "reseller": "reseller",
-     "limits": <lve_section>,
-     "faults": <lve_section>,
-     "usage": <lve_section>,
-     "id": 20005
-   }
- ]
- }
-```
-</div>
-
-**Detailed statistics**
-
-<div class="notranslate">
-
-```
-# cloudlinux-statistics --json --id=20001
- {
- "timestamp": 1523011550,
- "mySqlGov": "enabled",           # possible values: ”enabled”, “error”
- "result": "success",
- "user": [
-   {
-     "usage": <lve_section>,
-     "faults": <lve_section>,
-     "from": 1523011144,
-     "limits": <lve_section>,
-     "to": 1523011143
-   },
- ...
-   {
-     "usage": <lve_section>,
-     "faults": <lve_section>,
-     "from": 1523011204,
-     "limits": <lve_section>,
-     "to": 1523011203
-   }
- ]
- }
-```
-</div>
-
-For both, **summary statistics** and **detailed statistics**, <span class="notranslate">`<lve_section>`</span> is the same and looks like following<sup> *</sup>.
-
-<div class="notranslate">
-
-```
-{
-   "ep": {
-     "lve": 1        # number of entry processes
-   },
-   "vmem": {
-     "lve": 2428928  # virtual memory usage or limit (deprecated)
-   },
-   "iops": {
-     "lve": 0        # io operations per second
-   },
-   "io": {
-     "lve": 0.0,     # io usage or limit (lve only)
-     "mysql": 0.0**   # io usage or limit (mysql only)
-   },
-   "nproc": {
-     "lve": 1        # number of processes in lve
-   },
-   "cpu": {
-     "lve": 25.6,    # cpu usage (lve only)
-     "mysql": 0.0*   # cpu usage (mysql governor only)
-   },
-   "pmem": {
-     "lve": 360448   # physical memory usage or limit
-   }
- }
-```
-</div>
-
-:::tip Note
-* you can specify only required fields using <span class="notranslate">`--show`</span> option;
-* <span class="notranslate">`mysql`</span> fields are only available with <span class="notranslate"> [MySQL Governor](/shared/cloudlinux_os_components/#installation-and-update-3)</span> installed.
-:::
-
-#### **Units of measurement**
-
-For <span class="notranslate">`limits`</span> and <span class="notranslate">`usage`</span> sections we use the following units of measurement.
-
-| | |
-|-|-|
-|Value|Units of measurement|
-|<span class="notranslate">`cpu` (LVE and MySQL)</span> | percentage of one <span class="notranslate">CPU</span> core|
-|<span class="notranslate">`io` (LVE and MySQL) </span> | bytes per second|
-|<span class="notranslate">`iops`</span> | number of <span class="notranslate">IO</span> operations per second|
-|<span class="notranslate">`pmem`</span> and <span class="notranslate">`vmem`</span> | bytes|
-|<span class="notranslate">`ep`</span> | number of entry processes|
-|<span class="notranslate">`nproc`</span> | number of processes in LVE|
-
-#### **Errors handling**
-
-The format of the error message is the same as in the other <span class="notranslate">`cloudlinux- *`</span> utilities. When everything is ok, the <span class="notranslate">`result`</span> value is <span class="notranslate">`success`</span>. Otherwise, it contains error message.
-
-<div class="notranslate">
-
-```
-# cloudlinux-statistics --json 
-{
-  "context": {
-      "error_text": "Very bad error"
-  },
-  "result": "An error occured: \"%(error_text)s\"",
-  "timestamp": 1523871939.639394
-}
-```
-</div>
-
-#### **Examples**
-
-
-* get top 10 users ordered by <span class="notranslate">CPU</span> usage for today
-
-<div class="notranslate">
-
-```
-# cloudlinux-statistics --json --order-by=cpu --period=today --limit=10
-```
-</div>
-
-* get users that hit <span class="notranslate">IO</span> limit more than 10 times for today
-
-<div class="notranslate">
-
-```
-# cloudlinux-statistics --json --period=today --by-fault=io --threshold=10
-```
-</diV>
-
-* get users that used more than 80% of <span class="notranslate">CPU</span> in last 24 hours
-
-<div class="notranslate">
-
-```
-# cloudlinux-statistics --json --by-usage=cpu --percentage=80 --period=24h
-```
-</div>
-
-* get information only about reseller and his users
-
-<div class="notranslate">
-
-```
-# cloudlinux-statistics --json --for-reseller=reseller_name
-```
-</div>
-
-* get information only about <span class="notranslate">CPU</span> and <span class="notranslate">IO</span> usage
-
-<div class="notranslate">
-
-```
-# cloudlinux-statistics --json --show=cpu,io
-```
-</div>
-
-
-## MySQL Governor
-
-* [dbtop](./#dbtop)
-* [dbctl](./#dbctl)
-* [lveinfo --dbgov](./#lveinfo-dbgov)
-* [dbgovchart](./#dbgovchart-2)
-
-* <span class="notranslate">`dbtop`</span> monitors MySQL usage on per user bases.
-* <span class="notranslate">`dbctl`</span> is a command line tool to manage <span class="notranslate">DB Governor</span> configuration.
-* <span class="notranslate">`lveinfo --dbgov`</span> provides historical information about usage and customer restrictions. 
-* <span class="notranslate">`dbgovchart`</span> generates charts for MySQL usage.
-
-
-#### dbtop
-
-Utility to monitor MySQL usage. Requires <span class="notranslate">`db_governor`</span> to be running. It shows usage for the current, mid and long intervals.
-
-**Options:**
-
-| | |
-|-|-|
-| <span class="notranslate"> -c </span> |show one time user list (no interactive mode) | 
-| <span class="notranslate"> -r interval </span> |refresh interval for interactive mode (in seconds)|
-
-**Control keys**
-
-| | |
-|-|-|
-|<span class="notranslate"> z </span> |toggle color mode and two-color mode | 
-|<span class="notranslate"> q </span> | <span class="notranslate"> F10, Ctrl-c </span> - quit program | 
-|<span class="notranslate"> u </span> |sort table by username | 
-|<span class="notranslate"> c </span> |sort table by cpu column | 
-|<span class="notranslate"> r </span> |sort table by read column | 
-|<span class="notranslate"> w </span> |sort table by write column | 
-|<span class="notranslate"> l </span> |sort by restriction level | 
-|<span class="notranslate"> t </span> |sort by time before restrictions will be lifted.|
-
-Control keys, that sort table, displays into header of table bold and underlined symbol.
-Sorted field will be highlighted by *.
-<span class="notranslate"> CAUSE </span> field shows current stage, reason for restriction and number of seconds before restriction will be lifted:
-Values of column ' <span class="notranslate"> CAUSE </span> ' - cause of restriction or freezing:
-Possible stages:
-* `-` <span class="notranslate"> OK </span>
-* `1` - Restriction 1
-* `2` - Restriction 2
-* `3` - Restriction 3
-* `4` - Restriction level 4
-
-| | |
-|-|-|
-| <span class="notranslate"> c - current </span> |(current value of parameter)|
-| <span class="notranslate"> s - short </span> |(average value of 5 last values of parameter)|
-| <span class="notranslate"> m - middle </span> |(average value of 15 last values of parameter)|
-| <span class="notranslate"> l - long </span> |(average value of 30 last values of parameter)|
-| |and parameter which is cause of restriction|
-| <span class="notranslate"> 1/s:busy_time/12 </span> | first level restricted account with short average restriction <span class="notranslate"> by busy_time </span> with 12 seconds left before re-enabled.|
-
-**Display fields:**
-
-* <span class="notranslate"> cpu </span> - number in %, shows <span class="notranslate"> cpu </span> usage by user
-  * <span class="notranslate"> read </span> - number of bytes (kbytes, mbytes, gbytes) which user reads per second
-  * <span class="notranslate"> write </span> - number of bytes (kbytes, mbytes, gbytes) write user reads per second
-
-
-Accounts highlighted in _red_ color means that the account is restricted.  
-Accounts highlighted in _blue_ color are in cool down period
-
-Command line parameters of <span class="notranslate"> dbtop </span> utility:  
-<span class="notranslate"> -r - dbtop </span> refresh period in seconds ( <span class="notranslate"> dbtop -r12 </span> )
-
-#### dbctl
-
-
-usage: <span class="notranslate"> dbctl command [parameter] [options] </span>
-
-**Commands:**
-
-| | |
-|-|-|
-| <span class="notranslate"> set </span> |set parameters for a <span class="notranslate"> db_governor </span> |
-| <span class="notranslate"> list </span> |list users & their limits. It will list all users who had been active since <span class="notranslate"> Governor </span> restart,  as well as those for who explicit limits were set|
-| <span class="notranslate"> list-restricted </span> |list restricted customers, with their limits, restriction reason, and time period they will still be restricted|
-| <span class="notranslate"> ignore </span> |ignore particular user|
-| <span class="notranslate"> watch </span> |start observing particular user again|
-| <span class="notranslate"> delete </span> |remove limits for user/use defaults|
-| <span class="notranslate"> restrict </span> |restrict user using lowest level (or if <span class="notranslate"> --level </span> specified, using the specified level)|
-| <span class="notranslate"> unrestrict </span> |unrestrict username (configuration file remains unchanged)|
-| <span class="notranslate"> unrestrict-all </span> |unrestrict all restricted users (configuration file remains unchanged)|
-| <span class="notranslate"> --help </span> |show this message|
-| <span class="notranslate"> --version </span> |version number|
-| <span class="notranslate"> --lve-mode </span> |set <span class="notranslate"> DB Governor </span> mode of operation. Available values: <span class="notranslate"> off/abusers/all/single/on </span> |
-| | <span class="notranslate"> off </span> - monitor only, don't throttle|
-| | <span class="notranslate"> abusers </span> - when user reaches the limit, put user's queries into LVE for that user (experimental)|
-| | <span class="notranslate"> all </span> - user's queries always run inside LVE for that user (experimental)|
-| | <span class="notranslate"> single </span> - single LVE for all abusers.|
-| | <span class="notranslate"> on </span> - same as <span class="notranslate"> single </span> (deprecated)|
-
-**Parameters**
-
-| | |
-|-|-|
-| <span class="notranslate"> default </span> |set default parameter|
-| <span class="notranslate"> usrename </span> |set parameter for user|
-
-**Options**
-
-| | |
-|-|-|
-| <span class="notranslate"> --cpu=N </span> |limit <span class="notranslate"> CPU </span> (pct) usage|
-| <span class="notranslate"> --read=N </span> |limit <span class="notranslate"> READ </span> (MB/s) usage|
-| <span class="notranslate"> --write=N </span> |limit <span class="notranslate"> WRITE </span> (MB/s) usage|
-| <span class="notranslate"> --level=N </span> |level (1,2,3 or 4) specified (deprecated) - this option is available only for period mode:|
-
-<span class="notranslate"> <restrict_mode use="period"/> </span> (see [Configuration](/shared/cloudlinux_os_components/#configuration-and-operation))
-
-The default mode is " <span class="notranslate"> limit </span> " - when a user hits limits, the account will be marked as restricted and if the user does not hit the limit again during " <span class="notranslate"> unlimit=1m </span> " account will be unrestricted. This mode doesn't have any additional levels/penalties.  
-<span class="notranslate"> <restrict_mode use="limit" unlimit="1m"/> </span>
-
-Changing the <span class="notranslate"> "unlimit" </span> can be done only via the configuration file (see [Configuration](/shared/cloudlinux_os_components/#configuration-and-operation)).
-
-<span class="notranslate"> --slow=N: </span> limit time (in seconds) for long running <span class="notranslate"> SELECT </span> queries
-
-Options for parameter <span class="notranslate">`list`</span>:
-
-| | |
-|-|-|
-| `--kb` |show limits in Kbytes no pretty print|
-| `--bb` |show limits in bytes no pretty print|
-| `--mb` |show limits in Mbytes no pretty print|
-
-Examples:
-<div class="notranslate">
-
-```
-$ dbctl set test2 --cpu=150,100,70,50 --read=2048,1500,1000,800
-```
-</div>
-
-sets individual limits for <span class="notranslate"> cpu (current, short, middle </span> period) and <span class="notranslate"> read (current, short, middle, long </span> periods) for user <span class="notranslate"> test2 </span>
-<div class="notranslate">
-
-```
-$ dbctl set default --cpu=70,60,50,40
-```
-</div>
-
-changes default <span class="notranslate"> cpu </span> limits.
-
-All new limits will be applied immediately
-
-To unrestrict user:
-<div class="notranslate">
-
-```
-$ dbctl unrestrict username
-```
-</div>
-
-To unrestrict all users:
-<div class="notranslate">
-
-```
-$ dbctl unrestrict-all 
-```
-</div>
-
-To restrict user:
-<div class="notranslate">
-
-```
-$ dbctl restrict dbgov
-```
-</div>
-
-To restrict user to level 2 restriction:
-<div class="notranslate">
-
-```
-$ dbctl restrict dbgov --level=2
-```
-</div>
-
-To make <span class="notranslate"> Governor </span> to ignore user:
-<div class="notranslate">
-
-```
-$ dbctl ignore username
-```
-</div>
-
-Delete user's limits, and use defaults instead:
-<div class="notranslate">
-
-```
-$ dbctl delete username
-```
-</div>
-
-Show limits as bytes:
-<div class="notranslate">
-
-```
-$dbctl list --bb
-```
-</div>
-
-#### lveinfo --dbgov
-
-<div class="notranslate">
-
-```
-$ lveinfo --dbgov --help
-```
-</div>
-
-Displays information about DB Governor historical usage
-
-**Usage**:
-
-<div class="notranslate">
-
-```
-lveinfo [OPTIONS]
-```
-</div>
-
-**Optional arguments**:
-
-| | |
-|-|-|
-|`-h`, <span class="notranslate">`--help`</span>|show this help message and exit|
-|<span class="notranslate">`-u USER`</span>, <span class="notranslate">`--user USER`</span>|system user name|
-|<span class="notranslate">`--id ID`</span>|user id|
-|<span class="notranslate">`-l LIMIT`</span>, <span class="notranslate">`--limit LIMIT`</span>|max number of results to display, if 0 – no limit|
-|<span class="notranslate">`--by-usage ALIAS [ALIAS ...]`</span>|show LVEs with usage (averaged) within 90 percent of the limit;<br>available values:<br><span class="notranslate">`COLUMN_NAME`–`ALIAS`</span>–DESCRIPTION<br><span class="notranslate">`cpu`–`CPU`–`average CPU usage`</span><br><span class="notranslate">`io`–`IO`–`average IO usage`</span>|
-|<span class="notranslate">`-p 0..100`</span>, <span class="notranslate">`--percentage 0..100`</span>|defines percentage for the <span class="notranslate">`--by-usage`</span> option; default is 90|
-|<span class="notranslate">`-o ALIAS`</span>, <span class="notranslate">`--order-by ALIAS`</span>|orders results by one of the following:<br><span class="notranslate">`ALIAS`</span> – DESCRIPTION<br><span class="notranslate">`con`</span> – average connections (deprecated)<br><span class="notranslate">`cpu`</span> – average CPU usage<br><span class="notranslate">`read`</span> – average READ usage<br><span class="notranslate">`write`</span> – average WRITE usage<br><span class="notranslate">`io`</span> – average READ+WRITE usage|
-|<span class="notranslate">`-b ALIAS [ALIAS ...]`</span>, <span class="notranslate">`--format ALIAS [ALIAS ...]`</span>|show only specific fields into output:<br>COLUMN_NAME – <span class="notranslate">`ALIAS`</span> – DESCRIPTION<br><span class="notranslate">`ts`</span> – <span class="notranslate">`TS`</span> – timestamp records<br><span class="notranslate">`username`</span> – <span class="notranslate">`USER`</span> – user name<br><span class="notranslate">`id`</span> – <span class="notranslate">`ID`</span>user id<br><span class="notranslate">`cpu`</span> – <span class="notranslate">`CPU`</span> – average CPU usage<br><span class="notranslate">`read`</span> – <span class="notranslate">`READ`</span> – average READ usage<br><span class="notranslate">`write`</span> – <span class="notranslate">`WRITE`</span> – average WRITE usage<br><span class="notranslate">`con`</span> – <span class="notranslate">`CON`</span> – average connections (deprecated)<br><span class="notranslate">`lcpu`</span> – <span class="notranslate">`lCPU`</span> – CPU limit<br><span class="notranslate">`lread`</span> – <span class="notranslate">`lREAD`</span> – READ limit<br><span class="notranslate">`lwrite`</span> – <span class="notranslate">`lWRITE`</span> – WRITE limit<br><span class="notranslate">`-`</span> – <span class="notranslate">`RESTRICT`</span> – <span class="notranslate">`C`</span> - CPU restrict, <span class="notranslate">`R`</span> - read restrict, <span class="notranslate">`W`</span> - write restrict |
-|<span class="notranslate">`--show-all`</span>|full output (show all limits); brief output is default|
-|<span class="notranslate">`--server_id SERVER_ID`</span>, <span class="notranslate">`--server-id SERVER_ID`</span>|used with central database for multiple servers, default is <span class="notranslate">`2d823047-a`</span>|
-|<span class="notranslate">`--time-unit TIME_UNIT`</span>|time step for grouping statistic in minutes; 1 min. by default; can use <span class="notranslate">`m`,`h`,`d`</span> suffixes or can use <span class="notranslate">`dyn[amic]`</span> for using in the <span class="notranslate">`v1`</span> mode; for example: <span class="notranslate">`1h`</span> or <span class="notranslate">`1h30m`</span> or <span class="notranslate">`1d12h`</span>|
-|<span class="notranslate">`-c [PATH]`</span>, <span class="notranslate">`--csv [PATH]`</span>|save statistics in CSV format; <span class="notranslate">`-`</span> by default (output to screen)|
-|<span class="notranslate">`-j`</span>, <span class="notranslate">`--json`</span>|display output in JSON format|
-|<span class="notranslate">`-f FROM`</span>, <span class="notranslate">`--from FROM`</span>|run report from date and time in the <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, the last 10 minutes are assumed|
-|<span class="notranslate">`-t TO`</span>, <span class="notranslate">`--to TO`</span>|run a report up to date and time in the <span class="notranslate">`[YY]YY-MM-DD[ HH:MM]`</span> format; if not present, reports results up to now|
-|<span class="notranslate">`--period PERIOD`</span>|time period; specify minutes with <span class="notranslate">`m`</span>, hours with <span class="notranslate">`h`</span>, days with <span class="notranslate">`d`</span> and values: <span class="notranslate">`today`, `yesterday`; `5m`</span> - last 5 minutes, <span class="notranslate">`4h`</span> - last four hours, <span class="notranslate">`2d`</span> - last 2 days, as well as <span class="notranslate">`today`</span>|
-
-
-#### dbgovchart
-
-
-<span class="notranslate"> dbgovchart </span> is analog of <span class="notranslate"> lvechart </span> tool to create charts representing customer's to MySQL usage
-
-Usage: <span class="notranslate"> `/usr/sbin/dbgovchart [OPTIONS]` </span>
-
-Acceptable options are:
-<div class="notranslate">
-
-```
---help      This help screen
---version   Version number
---from=     Run report from date and time in YYYY-MM-DD HH:MM format
-            if not present last 10 minutes are assumed
---to=       Run report up to date and time in YYYY-MM-DD HH:MM format
-            if not present, reports results up to now
---period=   Time period
-            specify minutes with m,  h - hours, days with d, and values:
-            today, yesterday
-            5m - last 5 minutes, 4h - last four hours, 2d - last 2 days,
-            as well as today
---user=     mysql username
---output=   Filename to save chart as, if not present, output will be sent to STDOUT
---show-all  Show all graphs (by default shows graphs for which limits are set)
-```
-</div>
-
-Charts examples:
-
-![](./images/1111_2.png)
-
-
-## PHP Selector
-
-* [selectorctl](./#selectorctl)
-
-| | |
-|-|-|
-|<span class="notranslate"> /usr/bin/alt-php-mysql-reconfigure.py </span> | Reconfigures <span class="notranslate"> alt-php </span> extensions to use correct MySQL library, based on the one installed in the system.|
-
-#### selectorctl
-
-<span class="notranslate">`selectorctl`</span> is a new tool that replaces <span class="notranslate">`cl-selector`</span> (which is deprecated and should not be used anymore) and <span class="notranslate">`piniset`</span>. It is available starting with **CageFS 5.1.3**.
-
-All new features will be implemented as part of <span class="notranslate">`selectorctl`</span>.
-
-**Common options**
-
-| | |
-|-|-|
-|<span class="notranslate"> --interpreter (-i) </span> : | chooses the interpreter to work with. Currently only PHP is supported. If omitted, <span class="notranslate"> --interpreter=php </span> is implied.|
-|<span class="notranslate"> --version (-v) </span> : | specifies alternatives version to work with|
-|<span class="notranslate"> --user (-u) </span> : | specifies user to take action upon.|
-|<span class="notranslate"> --show-native-version (-V) </span> : | prints the version of native interpreter|
-
-**Global options**
-
-The global options modify settings in <span class="notranslate"> /etc/cl.selector/defaults.cfg </span> file.
-
-| | |
-|-|-|
-|<span class="notranslate"> --list (-l) </span> : | lists all available alternatives for an interpreter. For instance on server with Alt-PHP installed, it produces the following output. Columns are: short alternative version, full alternative version and path to php-cgi binary. |
-| |<span class="notranslate"> $ selectorctl --list <br>5.2 5.2.17 /opt/alt/php52/usr/bin/php-cgi <br>5.3 5.3.28 /opt/alt/php53/usr/bin/php-cgi <br>5.4 5.4.23 /opt/alt/php54/usr/bin/php-cgi <br>5.5 5.5.7 /opt/alt/php55/usr/bin/php-cgi </span>|
-|<span class="notranslate"> --summary (-S) </span> : | prints alternatives state summary. Output format: alternative version, state ('e' for 'enabled', '-' otherwise), chosen as default one or not ('d' for 'default', '-' otherwise). For example:| 
-| |<span class="notranslate"> $ selectorctl --summary <br>5.2 e - <br>5.3 e - <br>5.4 e - <br>5.5 e - <br>native e d </span>|
-| |if used with <span class="notranslate"> `--show-native-version` </span> displays version for native interpreter:|
-| |<span class="notranslate"> $ selectorctl --summary --show-native-version <br>5.2 e - <br>5.3 e - <br>5.4 e - <br>5.5 e - <br>native(5.3) e d </span>|
-|<span class="notranslate"> --current (-C) </span> : | prints currently globally selected default version (it is stored in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_ </span> file):|
-| |<span class="notranslate"> $ selectorctl --current <br>native native /usr/bin/php </span>|
-| |If used with <span class="notranslate"> `--show-native-version` </span> , native interpreter version is displayed as well:|
-| |<span class="notranslate"> --current --show-native-version <br>native(5.3) native(5.3.19) /usr/bin/php </span> |
-|<span class="notranslate"> --set-current (-B): </span>  | sets specified version as globally default one (in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_ </span> file). For example, to set current default version of PHP to 5.4, use:|
-| |<span class="notranslate"> $ selectorctl --set-current=5.4 </span>|
-|<span class="notranslate"> --disable-alternative (-N): </span> | adds <span class="notranslate"> state=disabled </span> option to alternative section. With it a corresponding alternative gets removed from user alternatives selection list. For instance to disable PHP 5.2, run:|
-| |<span class="notranslate"> $ selectorctl --disable-alternative=5.2 </span>|
-|<span class="notranslate"> --enable-alternative (-Y): </span> | Enables alternative version, removes <span class="notranslate"> state=disabled </span> option, if present, from alternative section. For example to enable PHP 5.2:|
-| |<span class="notranslate"> $ selectorctl --enable-alternative=5.2 </span>|
-|<span class="notranslate"> --enable-extensions (-E): </span> | enables extensions for particular PHP version by adding comma-separated list of extensions of modules for alternative in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_ </span> . Requires <span class="notranslate"> --version </span> option. For example:|
-| |<span class="notranslate"> $ selectorctl --enable-extensions=pdo,phar --version=5.2 </span>|
-|<span class="notranslate"> --disable-extensions (-D): </span>  | removes extensions for a particular PHP version. Comma-separated list of extensions will be removed from <span class="notranslate"> /etc/cl.selector/defaults.cfg </span> . Requires <span class="notranslate"> --version </span> . Example:|
-| |<span class="notranslate"> $ selectorctl --disable-extensions=pdo,phar --version=5.2 </span>|
-|<span class="notranslate"> --replace-extensions (-R): </span> | replaces all extensions for particular PHP version to the list of comma separated extensions. Requires <span class="notranslate"> `--version`  option </span> . Example:|
-| |<span class="notranslate"> $ selectorctl --replace-extensions=pdo,phar --version=5.2 </span>|
-|<span class="notranslate"> --list-extensions (-G): </span> | lists extensions for an alternative for a particular version. Requires <span class="notranslate"> --version </span> . Example:|
-| |<span class="notranslate"> $ selectorctl --list-extensions --version=5.3 <br>~ xml <br>- xmlreader <br>- xmlrpc <br>- xmlwriter <br>- xrange <br>+ xsl </span>|
-| |Plus sign (+) stands for 'enabled', minus (–) for 'disabled', tilde (~) means compiled into interpreter or enabled in php global config file <span class="notranslate">_/opt/alt/phpXX/etc/php.ini_</span>. Enabled and disabled state relates to presence in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_</span> file.|
-
-**End user options**
-
-All end user settings are contained in individual user's alt_php.ini files and controlled using selectorctl command.
-
-| | |
-|-|-|
-|<span class="notranslate"> --user-summary (-s): </span>  | prints user alternatives state summary. Example:|
-| |<span class="notranslate"> $ selectorctl --user-summary --user=user1 <br>5.2 e - - <br>5.3 e - - <br>5.4 e - - <br>5.5 e - - <br>native e d s </span>|
-| |Columns are: alternative version, state ('e' for 'enabled', '-' otherwise), chosen as default one or not('d' for 'default', '-' otherwise), selected as user default one or not ('s' for 'selected', '-' otherwise). If used with <span class="notranslate"> `--show-native-version` </span> , version for native interpreter is shown in parenthesis:|
-| |<span class="notranslate"> $ selectorctl --user-summary --user=user1 --show-native-version <br>5.2 e - - <br>5.3 e - - <br>5.4 e - - <br>5.5 e - - <br>native(5.3) e d s </span>|
-| |<span class="notranslate"> `--user` </span> option is required. |
-|<span class="notranslate"> --current (-c): </span> | prints currently globally selected default version (in <span class="notranslate"> _/etc/cl.selector/defaults.cfg_ </span> file):|
-| |<span class="notranslate"> $ selectorctl --current <br>5.3 5.3.28 /opt/alt/php53/usr/bin/php-cgi </span>|  
-| |If used with <span class="notranslate"> `--show-native-version` </span> to display native version:|
-| |<span class="notranslate"> $ selectorctl --user-current --user=user1 <br>5.3 5.3.28 /opt/alt/php53/usr/bin/php-cgi </span>| 
-| |<span class="notranslate"> `--user` </span> option is required.|
-|<span class="notranslate"> --set-user-current (-b): </span> | sets specified version as the one to use for this end user:|
-| |<span class="notranslate"> $ selectorctl --set-user-current=5.4 --user=user1 </span>|
-| |changes user symlinks for the PHP interpreter to point to alternative 5.4.|
-| |<span class="notranslate"> --user </span> option is required.|
-|<span class="notranslate"> --enable-user-extensions (-e): </span> | Enables comma-separated list of extensions for the user user. Information is saved to <span class="notranslate"> _alt_php.ini_ </span> file. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options.|
-| |<span class="notranslate"> $ selectorctl --enable-user-extensions=pdo,phar --version=5.2 --user=user1 </span>|
-|<span class="notranslate"> --disable-user-extensions (-d): </span> | Disables extensions provided as comma-separated list. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options.|
-| |<span class="notranslate"> $ selectorctl --disable-user-extensions=pdo,phar --version=5.2 --user=user1 </span>|
-|<span class="notranslate">--for-all-users:</span> | Allows to enable/disable extensions for all users with the required PHP version. Works only with <span class="notranslate">`--enable-user-extensions`</span> or <span class="notranslate">`--disable-user-extensions`</span> option.|
-| |<span class="notranslate">`$ selectorctl --enable-user-extensions=gd --version=5.3 --for-all-users`</span><br><br><span class="notranslate">`$ selectorctl  --disable-user-extensions=gd --version=5.3 --for-all-users`</span>|
-|<span class="notranslate"> --replace-user-extensions (-r): </span> | Replaces extensions with a provided comma-separated list of extensions Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options:|
-| |<span class="notranslate"> $ selectorctl --replace-user-extensions=pdo,phar --version=5.2 --user=user1 </span>|
-|<span class="notranslate"> --reset-user-extensions (-t): </span> | Resets extensions for end user to default list of extensions as defined in <span class="notranslate"> default.cfg </span> . Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options.|
-| |<span class="notranslate"> $ selectorctl --reset-user-extensions --version=5.2 --user=user1 </span>|
-|<span class="notranslate"> --list-user-extensions (-g): </span> | lists enabled user extensions for an alternative. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options.|
-| |<span class="notranslate"> $ selectorctl --list-user-extensions --version=5.3 --user=user1 <br>xml <br>xmlreader <br>xmlrpc </span>|
-| |if <span class="notranslate"> `--all` </span> option present, command will list all alternatives extensions marked enabled or disabled for given user. For example:|
-| |<span class="notranslate"> $ selectorctl --list-user-extensions --version=5.3 --user=user1 --all <br>- xmlreader <br>- xmlrpc <br>- xmlwriter <br>- xrange <br>+ xsl </span>|
-| |Plus sign (+) stands for 'enabled', minus (–) stands for 'disabled'. Enabled and disabled state relates to presence or absence of corresponding extensions in user <span class="notranslate"> _alt_php.ini_ </span> file.|
-|<span class="notranslate"> --add-options (-k): </span> | adds options (as in <span class="notranslate"> _php.ini_ </span> ) to user <span class="notranslate"> _alt_php.ini_ </span> file. For example:|
-| |<span class="notranslate"> $ selectorctl --add-options=log_errors:on,display_errors:on --version=5.2 --user=user1 </span>
-| |adds <span class="notranslate"> `log_error` </span> and <span class="notranslate"> `display_errors` </span> options with values <span class="notranslate"> 'on' </span> to user <span class="notranslate"> _alt_php.ini_ </span> file overwriting default values for a user. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options.|
-|<span class="notranslate"> --replace-options (-m): </span> | replaces all options in user <span class="notranslate"> _alt_php.ini_ </span> file with specified ones. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options.|
-| |<span class="notranslate"> $ selectorctl --replace-options=log_errors:on,display_errors:on --version=5.2 --user=user1 </span>|
-|<span class="notranslate"> --delete-options (-x): </span> | removes custom options from user <span class="notranslate"> _alt_php.ini_ </span> file. Requires <span class="notranslate"> `--version` </span> and <span class="notranslate"> `--user` </span> options.|
-| |<span class="notranslate"> $ selectorctl --delete-options=log_errors,display_errors --version=5.2 --user=user1 </span>|
-|<span class="notranslate"> --print-options (-P): </span> | print options from <span class="notranslate"> _/etc/cl.selector/php.conf_ </span> file with default values or ones overwritten in user's <span class="notranslate"> _alt_php.ini_ </span> file.|
-| |<span class="notranslate"> $ selectorctl --print-options --version=5.2 --user=user1 <br>TITLE:allow_url_fopen <br>DEFAULT:On <br>COMMENT:Allows PHP file functions to retrieve data from remote <br>locations over FTP or HTTP. This option is a great security risk, <br>thus do not turn it on without necessity. <br>TYPE:bool <br>... </span>|
-| |Requires <span class="notranslate"> `--user`   </span> option. <span class="notranslate"> `--version` </span> option is optional. When <span class="notranslate"> `--version` </span> is omitted, options for current selected version will be printed. By default outputs as plain test. If <span class="notranslate"> `--json` ,  `--csv` ,  `--perl` </span> is specified, outputs data in corresponding format. For example, with <span class="notranslate"> `--perl` </span> option, the output is perl hash structure that can be evaluated. |
-|<span class="notranslate"> --reset-options (-z): </span> | removes custom options from <span class="notranslate"> _alt_php.ini_ </span> files for ALL users and versions. Backup files in home folders are cleared.|
-| |<span class="notranslate"> $ selectorctl --reset-options </span>|
-| |The ranges of affected customers or versions can be narrowed with <span class="notranslate"> `--version` </span> or <span class="notranslate"> `--user`  options </span> :|
-| |<span class="notranslate"> $ selectorctl --reset-options --user=user1,user2 --version=5.3,5.4 </span>|
-|<span class="notranslate"> --list-users (-L): </span> | list users that use particular version of interpreter, specified with <span class="notranslate"> `--version` </span> option. For example, to see all users that use PHP version 5.3:|
-| |<span class="notranslate"> $ selectorctl --list-users --version=5.3 </span>|
-|<span class="notranslate"> --change-to-version (-T): </span> | changes all (or particular user) from one interpreter version to another.|
-| |<span class="notranslate"> $ selectorctl --change-to-version=5.2 --version=5.3 </span>|
-
-**Additional options**
-
-| | |
-|-|-|
-|<span class="notranslate"> --base64 (-Q) </span> | Sometimes PHP options values can contain commas and other symbols that break command line formatting. In such a case convert a <span class="notranslate"> key:value </span> pair into <span class="notranslate"> base64 </span> and pass it as value for option-related arguments. For example, to add <span class="notranslate"> disable_functions=exec,popen,system </span> and <span class="notranslate"> display_errors=on </span> to user options, do the following:|
-| |$ selectorctl --add-options=`echo disable_functions:exec,popen,system|base64 -w 0`,`echo display_errors:on|base64 -w 0` --version=5.2 --user=user1 --base64|
-| |Option <span class="notranslate"> `-w 0`   </span> of <span class="notranslate"> base64 </span> executable stands for <span class="notranslate"> 'disable wrapping of lines' </span> . Without it <span class="notranslate"> base64 </span> output will break the command. |
-|<span class="notranslate"> --quiet </span> | makes <span class="notranslate"> selectorctl </span> continue when it encounter option not found in <span class="notranslate"> _php.conf_ </span>. Without it <span class="notranslate"> selectorctl </span> exits with error.|
-
-
-## Python Selector
-
-### New Python Selector
-
-* [Hoster](./#hoster)
-* [Examples](./#examples-3)
-* [Examples](./#examples-4)
-* [End user](./#end-user)
-
-:::warning Warning!
-selectorctl command line tool is not supported in the new Python Selector. You can use cloudlinux-selector command line tool instead.
-:::
-
-Below, there is a list of commands hoster and end user can run in a command line.
-
-#### Hoster
-
-:::tip Note
-When running user command as root, please use <span class="notranslate">`--user`</span> option.
-:::
-
-* Get all Python-related information: default version, a list of supported versions, status of Python Selector, a list of users, their applications, etc:
-  
-    <div class="notranslate">
-
-    ```
-    cloudlinux-selector [get] [--json] --interpreter python
-    ```
-    </div>
-
-    JSON output for <span class="notranslate">`get`</span> command:
-
-<div class="notranslate">
-
-```
-{
-  "selector_enabled": true | false, 
-  "default_version": "2.7.15", 
-  "result": "success", 
-  "timestamp": 1508667174.220027,
-  “cache_status”: “ready”,         //  or “updating” during automatic yum cache rebuild
-  "available_versions": {   //  begin of  “versions”
-      "2.7.15" : {   //   begin of version "2.7.15"
-          "status": "enabled",  //  enabled, disabled, not_installed, installing, removing, locked
-          “base_dir”: “/opt/alt/alt-python27”   //  empty when version is not installed
-          “users”: {   //  begin of  “users”
-              “user1”: {   //  begin of “user1”
-	“homedir”: “/home/user1”,		
-                 “applications”: {    //  begin of “applications”
-                     “apps_dir/app1” : {   //   begin of application “apps_dir/app1”
-                         “domain”: “cltest1.com”,
-                         “app_uri”: “apps/my-app1”,
-                         “startup_file” : “run.py”,
-                         “entry_point” : “app”,
-                         “app_status” : “started”,   // ‘started’ or ‘stopped’
-                         “config_files” : [
-                             “requirements.txt”,
-                             “requirements-migration.txt”
-                         ],
-                         “env_vars” : {
-                             “var1” : “value1”,
-                             “var2” : “value2”
-                         },
-                     },   // end of application “apps_dir/app1”
-                     “apps_dir/app2” : {    //   begin of application “apps_dir/app2”
-                          << data for application “apps_dir/app2”  (same structure as for application “apps_dir/app1” above) >>
-                     },   //  end of application “apps_dir/app2”
-                 },   //  end of “applications”
-              },   //  end of “user1”
-              “user2”: {   //  begin of “user2”
-                  << data for user “user2”  (same structure as for “user1” above) >>
-              },   //  end of “user2”
-          },   // end of “users”
-        },    //  end of version “2.7.15”
-      "8.21.5" : {   //   begin of version "3.3.7"
-            << data for version "3.3.7"  (same structure as for version “2.7.15” above) >>
-        },    //  end of version “3.3.7”
-    },    //  end of “versions”
-}   //   end of json
-```
-</div>
-
-* Set default version, supported versions, and status of Python Selector:
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-selector set [--json] --interpreter python (--selector-status <enabled,disabled> | --default-version <str> | --supported-versions <str>)
-    ```
-    </div>
-
-#### *Examples*
-
-1. Enable Python Selector:
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-selector set --json --interpreter python --selector-status enabled
-    ```
-    </div>
-2. Set default Python Selector version as 3.3:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector set --json --interpreter python --default-version 3.3
-    ```
-    </div>
-
-3. Set supported Python Selector version as 3.3:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector set --json --interpreter python --supported-versions='{"2.7": false, "3.3": true}'
-    ```
-    </div>
-
-4. Install a specific Python version:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector install-version --json --interpreter python --version 2.7
-    ```
-    </div>
-
-5. Uninstall a specific Python version:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector uninstall-version --json --interpreter python --version 2.7
-    ```
-    </div>
-
-6. Enable a specific Python version:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector enable-version --json --interpreter python --version 2.7
-    ```
-    </div>
-
-7. Disable a specific Python version:
-
-   <div class="notranslate">
-   
-    ```
-    cloudlinux-selector disable-version --json --interpreter python --version 2.7
-    ```
-    </div>
-
-* Change version for an application:
-    * For a specific application:
-        
-        <div class="notranslate">
-        
-        ```
-        cloudlinux-selector set [--json] --interpreter python --user <str> --app-root <str> --new-version <str>
-        ```
-        </div>
-
-    * For all applications that use specific Python version:
-        
-        <div class="notranslate">
-        
-        ```
-        cloudlinux-selector change-version-multiple --json --interpreter python --from-version <str> --new-version <str>
-        ```
-        </div>
-
-    * For multiple applications:
-        
-        <div class="notranslate">
-        
-        ```
-        cloudlinux-selector change-version-multiple --json --interpreter python --data  <pairs user:app-root as json> --new-version <str>
-        ```
-        </div>
-
-
-#### *Examples*
-
-1. Change version for a specific application:
-    
-    <div class="notranslate">
-
-    ```
-    cloudlinux-selector set --json --interpreter python --user user1 --app-root apps_dir/app1 --new-version 2.7
-    ```
-    </div>
-
-2. Change version for all applications that use version 2.7.15 to version 3.3.5:
-    
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector change-version-multiple --json --interpreter python --from-version 2.7 --new-version 3.3
-    ```
-    </div>
-
-3. Change version of multiple application(s) and/or multiple users:
-    
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector change-version-multiple --json --interpreter python --data <pairs user:app-root as json> --new-version <str>
-    ```
-    </div>
-
-**Example**
-
-<div class="notranslate">
-
-```
-cloudlinux-selector change-version-multiple --json --interpreter python --data [ {“user”: “user1”, “app_root”: “apps/app1”}, {“user”: “user2”, “app_root”: “apps/app1”} ]  --new-version 2.7
-```
-</div>
-
-Common output for all <span class="notranslate">`set`</span> commands:
-
-**in case of success:**
-
-<div class="notranslate">
-
-```
-{
-  "result": "success", 
-  "timestamp": 1508666792.863358
-}
-```
-</div>
-
-**in case of error:**
-
-<div class="notranslate">
-
-```
-{
-  "result": "Some error message",
-  "details" : "Traceback: ..." ,
-  "context": {},
-  "timestamp": 1508666792.863358
-}
-```
-</div>
-
-**in case of warning:**
-
-<div class="notranslate">
-
-```
-{
-  "result": "success",
-  "warning" : "Some warning message" ,
-  "context": {},
-  "timestamp": 1508666792.863358
-}
-```
-</div>
-
-#### End user
-
-:::tip Note
-To start all users CLI commands use <span class="notranslate">`cagefs_enter`</span> command:
-
-<div class="notranslate">
-
-```
-/bin/cagefs_enter.proxied /usr/sbin/cloudlinux-selector --json <other parameters>
-```
-</div>
-:::
-
-* Get config file for the user application:
-    
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector read-config [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> --config-file <name>
-    ```
-    </div>
-
-    **JSON output:**
-
-    <div class="notranslate">
-    
-    ```
-    {
-      	"result": "success", 
-     "timestamp": 1508666792.863358
-     	 “data”: “content of config file as Base64 encoded string”
-    }
-    ```
-    </div>
-
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector read-config --json --interpreter python  --user user1 --app-root app_dir/app1 --config-file requirements.txt
-    ```
-    </div>
-
-* Save config file for user application:
-  
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector save-config [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> --config-file <path> --content <content of config file as Base64 encoded string>
-    ```
-    </div>
-
-    **JSON output** (the same as for all <span class="notranslate">`set`</span> commands):
-
-    <div class="notranslate">
-    
-    ```
-    {
-      	"result": "success", 
-    "timestamp": 1508666792.863358
-    }
-    ```
-    </div>
-    
-    **Example:**
-    
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector save-config --json --interpreter python  --user user1 --app-root app_dir/app1 --config-file requirements.txt  --content VGh1ICAyIE5vdiAxMDo0MzoxMiBFRFQgMjAxNwo=
-    ```
-    </div>
-
-    :::tip Note
-    An output for all commands below is like in Hoster’s CLI, but filtered out by username.
-    :::
-
-* Get a list of applications for a specific user:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector [get] [--json] --interpreter python  [--user <str> | --domain <str>]
-    ```
-    </div>
-
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector get --json --interpreter python  --user user1
-    ```
-    </div>
-
-* Create user application:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector create [--json] --interpreter python  [--user <str> | --domain <str>]  --app-root <str> --app-uri <str> [--version <str>]  [--startup-file <str>] [--entry-point <str>] [--env-vars <json string>]
-    ```
-    </div>
-
-    **Example:**
-    
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector create --json --interpreter python --app-root my_apps/app1 --domain xyz.com --app-uri apps/app1 --version 2.7 --startup-file run.py --entry-point app
-    ```
-    </div>
-
-* Start, restart, stop, and destroy user application:
-    
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector (start | restart | stop | destroy) [--json] --interpreter python [--user <str> | --domain <str>] --app-root <str>
-    ```
-    </div>
-
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector start --json --interpreter python --user user1 --app-root my_apps/app1
-    ```
-    </div>
-
-* Set a custom path for Passenger log files:
-
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector --json create --interpreter=python --version=3.3 --user=cltest1 --app-root=p_app2 --app-uri=p_app2_uri --passenger-log-file=/home/cltest1/passenger.log
-    ```
-    </div>
-
-* Remove a custom path for Passenger log files:
-  
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector --json set --interpreter=python --user=cltest1 --app-root=p_app1 --passenger-log-file=""
-    ```
-    </div>
-
-* Change properties for an application:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector set [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> [--app-mode <str>]  [--new-app-root <str>]  [--new-domain <str>]  [--new-app-uri <str>]  [--new-version <str>]  [--startup-file <str>] [--entry-point <str>] [--env-vars <json string>] [--config-files <str>]
-    ```
-    </div>
-
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector set --json --interpreter python  --user user1 --app-root my_apps/app1 --app-mode production  --new-app-root new_apps/new_app1  --new-domain new.xyz.com --new-app-uri new_apps/app1  --new-version 8  --startup-file new_app.js --env-vars { “var1” : “value1”, “var2” : “value2” }  --config-files requirements.txt,reqs.txt
-    ```
-    </div>
-
-* Run <span class="notranslate">`PIP install`</span> for user application:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector install-modules [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> --requirements-file <path>
-    ```
-    </div>
-
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector install-modules --json --interpreter python --user user1 --app-root my_apps/app --requirements-file requirements.txt
-    ```
-    </div>
-
-* Optional: install or uninstall Python packages for user application:
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector (install-modules|uninstall-modules) [--json] --interpreter python  [--user <str> | --domain <str>] --app-root <str> --modules <module1[,module2...]>
-    ```
-    </div>
-
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector install-modules --json --interpreter python --user user1 --app-root my_apps/app --modules json-annotate,termcolor
-    ```
-    </div>
-
-* Optional: run Python script in virtual environment of user application, arguments <span class="notranslate">`<args>`</span> are passed to the script:
-    
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector run-script [--json] --interpreter python  [--user <str | --domain <str>>] --app-root <str> --script-name <str> [-- <args>...]
-    ```
-    </div>
-
-    **Example:**
-
-    <div class="notranslate">
-    
-    ```
-    cloudlinux-selector run-script --json --interpreter python --user user1 --app-root my_apps/app --script-name test_script -- --script_opt1 --script_opt2 script_arg1 script_arg2
-    ```
-    </div>
-
-    **JSON output:**
-    
-    <div class="notranslate">
-
-    ```
-    {
-      	"result": "success", 
-     	"timestamp": 1508666792.863358
-       	“data”: “script output as Base64 encoded string”
-    }
-    ```
-    </div>
-
-
-### Old Python Selector
-
-:::warning Warning!
-selectorctl command line tool is not supported in the new Python Selector. You can use cloudlinux-selector command line tool instead.
-:::
-
-To create application run:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python --version=VERSION [--user=USER] [--print-summary] [--json] --create-webapp <FOLDER_NAME> <URI>
-```
-</div>
-
-To delete application:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --destroy-webapp <FOLDER_NAME>
-```
-</div>
-
-To change application folder name:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --relocate-webapp <FOLDER_NAME> <NEW_FOLDER_NAME>
-```
-</div>
-
-To change application <span class="notranslate"> URI </span>:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=<python|ruby> [--user=USER] [--print-summary] [--json] --transit-webapp <FOLDER_NAME> <NEW_URI>
-```
-</div>
-
-To change application interpreter version:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --set-user-current --version=<NEW VERSION> <FOLDER_NAME>
-```
-</div>
-
-To set application <span class="notranslate"> WSGI </span> handler ( <span class="notranslate"> Python </span> only):
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --setup-wsgi=<file_path:callable> <FOLDER_NAME>
-```
-</div>
-
-To install modules to application environment:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --enable-user-extensions=<module1[,module2...]> <FOLDER_NAME>
-```
-</div>
-
-To remove modules from application environment:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --disable-user-extensions=<module1[,module2...]> <FOLDER_NAME>
-```
-</div>
-
-To list modules installed in application environment:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--print-summary] [--json] --list-user-extensions <FOLDER_NAME>
-```
-</div>
-
-To print applications summary for a user:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--json] --user-summary
-```
-</div>
-
-To list available interpreters:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER] [--json] --list
-```
-</div>
-
-
-## Ruby Selector
-
-To create application run:
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=ruby --version=VERSION [--user=USER] [--print-summary] [--json] --create-webapp <FOLDER_NAME> <URI>
-```
-</div>
-To delete application:
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=ruby [--user=USER] [--print-summary] [--json] --destroy-webapp <FOLDER_NAME>
-```
-</div>
-To change application folder name:
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=ruby [--user=USER] [--print-summary] [--json] --relocate-webapp <FOLDER_NAME> <NEW_FOLDER_NAME>
-```
-</div>
-
-To change application <span class="notranslate"> URI </span> :
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=ruby [--user=USER] [--print-summary] [--json] --transit-webapp <FOLDER_NAME> <NEW_URI>
-```
-</div>
-
-To change application interpreter version:
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=ruby [--user=USER] [--print-summary] [--json] --set-user-current --version=<NEW VERSION> <FOLDER_NAME>
-```
-</div>
-
-To restart application:
-<div class="notranslate">
-
-```
-selectorctl --interpreter ruby --user cltest1 --domain cltest1.com --restart-webapp testapp
-```
-</div>
-To choose <span class="notranslate"> Ruby </span> version:
-<div class="notranslate">
-
-```
-selectorctl --interpreter=ruby --user=$USER -v 2.0
-```
-</div>
-
-## Node.js Selector
-
-* [Hoster](./#hoster-2)
-* [End user](./#end-user-2)
-
-Below is a list of commands hoster and end user can run in a command line.
-
-#### **Hoster**
-
-Get information related to Node.js: default version, list of supported versions, status of <span class="notranslate"> Node.js Selector </span> , list of users, their applications, etc:
-<div class="notranslate">
-
-```
-cloudlinux-selector [get] [--json] --interpreter nodejs
-```
-</div>
-
-<span class="notranslate"> JSON </span> output for <span class="notranslate"> _get_ </span> command:
-<div class="notranslate">
-
-```
-{  
-"selector_enabled": true | false,   
-"default_version": "6.11.3",   
-"result": "success",   
-"timestamp": 1508667174.220027  
-"cache_status": "ready"         //  or “updating” during automatic yum cache rebuild  
-"available_versions": {   //  begin of  “versions”
-      "6.11.3" : {   //   begin of version "6.11.3"
-		"name_modifier": "",
-		"status": "enabled",  //  enabled, disabled, not_installed, installing, removing
-		“base_dir”: “/opt/alt/alt-nodejs6”   //  empty when version is not installed
-		“users”: {   //  begin of  “users”                      
-			“user1”: {   //  begin of “user1”
-				“homedir”: “/home/user1”,
-				“applications”: {    //  begin of “applications”
-					“apps_dir/app1” : {   //   begin of application “apps_dir/app1”
-						“domain”: “cltest1.com”,
-						“app_uri”: “apps/my-app1”,
-						“app_mode” : “development”,
-						“startup_file” : “app.js”,
-						“app_status” : “started”,   // ‘started’ or ‘stopped’
-						“config_files” : [
-							“package.json”,
-							“gruntfile.js”
-						],
-						“env_vars” : {
-							“var1” : “value1”,
-							“var2” : “value2”
-						},
-					},   // end of application “apps_dir/app1”
-					“apps_dir/app2” : {    //   begin of application “apps_dir/app2”
-						<< data for application “apps_dir/app2”  (same structure as for application “apps_dir/app1” above) >>
-					},   //  end of application “apps_dir/app2”
-				},   //  end of “applications”
-			},   //  end of “user1”
-			“user2”: {   //  begin of “user2”
-				<< data for user “user2”  (same structure as for “user1” above) >>
-			},   //  end of “user2”
-		},   // end of “users”
-	},    //  end of version “6.11.3”
-	"8.21.5" : {   //   begin of version "8.21.5"
-		<< data for version "8.21.5"  (same structure as for version “6.11.3” above) >>
-	},    //  end of version “8.21.5”
-},    //  end of “versions”}   //   end of json
-```
-</div>
-
-Set default version, supported versions, and status of <span class="notranslate"> Node.js Selector </span> :
-<div class="notranslate">
-
-```
-cloudlinux-selector set [--json] --interpreter nodejs (--selector-status <enabled,disabled> | --default-version <str> | --supported-versions <str>)
-```
-</div>
-
-::: tip Note
-<span class="notranslate"> Node.js Selector </span> is disabled by default. If an available Node.js version is not installed <span class="notranslate"> Node.js Selector </span> is always disabled and it is impossible to enable it.
-:::
-
-To set default Node.js version, please use the following command (note that required Node.js version should be enabled):
-<div class="notranslate">
-
-```
-cloudlinux-selector set --json --interpreter=nodejs --default-version=<ver>
-```
-</div>
-
-**Examples**:  
-This command enables <span class="notranslate"> Node.js Selector </span> :
-
-<div class="notranslate">
-
-```
-cloudlinux-selector set --json --interpreter nodejs --selector-status enabled
-```
-</div>
-
-This command sets default Node.js version as 6:
-<div class="notranslate">
-
-```
-cloudlinux-selector set --json --interpreter nodejs --default-version 6
-```
-</div>
-
-This command sets supported Node.js version as 8:
-<div class="notranslate">
-
-```
-cloudlinux-selector set --json --interpreter nodejs --supported-versions='{"6": false, "8": true}'
-```
-</div>
-
-Install required Node.js version:
-<div class="notranslate">
-
-```
-cloudlinux-selector install-version --json --interpreter nodejs --version 8
-```
-</div>
-
-Uninstall required Node.js version:
-<div class="notranslate">
-
-```
-cloudlinux-selector uninstall-version --json --interpreter nodejs --version 8
-```
-</div>
-
-Enable required Node.js version:
-<div class="notranslate">
-
-```
-cloudlinux-selector enable-version --json --interpreter nodejs --version 8
-```
-</div>
-
-Disable required Node.js version (note that it is impossible to disable default Node.js version):
-<div class="notranslate">
-
-```
-cloudlinux-selector disable-version --json --interpreter nodejs --version 8
-```
-</div>
-
-Change version for application(s):
-<div class="notranslate">
-
-```
-cloudlinux-selector set [--json] --interpreter nodejs ((--user <str> |  --domain <str>) --app-root <str> | --from-version <str>) --new-version <str>
-```
-</div>
-
-**Examples** :  
-This command changes version for the specific application:
-<div class="notranslate">
-
-```
-cloudlinux-selector set --json --interpreter nodejs --user user1 --app-root apps_dir/app1 --new-version 8
-```
-</div>
-
-Common output for all <span class="notranslate"> _set_ </span> commands:
-
-**_in case of success_** :
-<div class="notranslate">
-
-```
-{  "result": "success",   "timestamp": 1508666792.863358}
-```
-</div>
-
-**_in case of error:_**
-<div class="notranslate">
-
-```
-{  "result": "Some error message",  "details" : "Traceback: ..." ,  "context": {},  "timestamp": 1508666792.863358}
-```
-</div>
-
-**_in case of warning:_**
-<div class="notranslate">
-
-```
-{  "result": "success",  "warning" : "Some warning message" ,  "context": {},  "timestamp": 1508666792.863358}
-```
-</div>
-
-To resolve issues related to <span class="notranslate"> _install-version/uninstall-version_ </span> commands (because they are running in the background) you may use this log file <span class="notranslate"> _/var/log/cl-nodejs-last-yum.log_ </span>
-It contains full <span class="notranslate"> _yum_ </span> output from the <span class="notranslate"> **_latest_** </span> performed operation (install or uninstall) and it will be rewritten with each operation.
-
-#### **End user**
-
-::: danger
-options --user and --domain are mutually exclusive now.
-:::
-
-Get config file for the user applications
-
-<div class="notranslate">
-
-```
-cloudlinux-selector read-config [--json] --interpreter nodejs  [(--user <str> |  --domain <str>)] --app-root <str> --config-file <name>
-```
-</div>
-
-JSON output:
-
-<div class="notranslate">
-
-```
-{
-    "result": "success",
-	"timestamp": 1508666792.863358
-	"data": "content of config file as Base64 encoded string"
-}
-```
-
-</div>
-
-
-**Example**:
-
-This command gets config file for <span class="notranslate"> user1 </span> ’s application <span class="notranslate"> app1 </span> :
-
-<div class="notranslate">
-
-```
-cloudlinux-selector read-config --json --interpreter nodejs  --user user1 --app-root app_dir/app1 --config-file package.json
-```
-</div>
-Save config file for the user applications
-<div class="notranslate">
-
-```
-cloudlinux-selector save-config [--json] --interpreter nodejs  [(--user <str> | --domain <str>)] --app-root <str> --config-file <path> --content <content of config file as Base64 encoded string>
-```
-</div>
-
-<span class="notranslate"> JSON </span> output (the same as for all <span class="notranslate"> _set_ </span> commands):
-
-<div class="notranslate">
-
-```
-{
-          "result": "success",
-		  "timestamp": 1508666792.863358
-}
-```
-</div>
-
-**Example**:  
-This command saves config file for <span class="notranslate"> user1 </span> ’s application <span class="notranslate"> app1 </span> :
-
-<div class="notranslate">
-
-```
-cloudlinux-selector save-config --json --interpreter nodejs  --user user1 --app-root app_dir/app1 --config-file package.json  --content                                         VGh1ICAyIE5vdiAxMDo0MzoxMiBFRFQgMjAxNwo=
-```
-</div>
-Get a list of applications for the specific user
-<div class="notranslate">
-
-```
-cloudlinux-selector [get] [--json] --interpreter nodejs  [(--user <str> |  --domain <str>)]
-```
-</div>
-
-**Example**:  
-This command gets a list of applications for the <span class="notranslate"> user1 </span> :
-
-<div class="notranslate">
-
-```
-cloudlinux-selector get --json --interpreter nodejs  --user user1
-```
-</div>
-Create user application
-
-<div class="notranslate">
-
-```
-cloudlinux-selector create [--json] --interpreter nodejs [(--user <str> | --domain <str>)] --app-root <str> --app-uri <str> [--version <str>] [--app-mode <str>] [--startup-file <str>] [--env-vars <json string>]
-```
-</div>
-
-**Example**:  
-This command creates <span class="notranslate"> user1 </span> 's application for the domain <span class="notranslate"> xyz.com </span> :
-<div class="notranslate">
-
-```
-cloudlinux-selector create --json --interpreter nodejs --user user1 --app-root my_apps/app1 --app-uri apps/app1
-```
-</div>
-or
-<div class="notranslate">
-
-```
-cloudlinux-selector create --json --interpreter nodejs --app-root my_apps/app1 --domain xyz.com --app-uri apps/app1
-```
-</div>
-Start, restart, stop, and destroy user application
-<div class="notranslate">
-
-```
-cloudlinux-selector (start | restart | stop | destroy) [--json] --interpreter nodejs  [(--user <str> | --domain <str>)] --app-root <str>
-```
-</div>
-
-**Example**:
-This command starts <span class="notranslate"> user1 </span> 's application:
-<div class="notranslate">
-
-```
-cloudlinux-selector start --json --interpreter nodejs --user user1 --app-root my_apps/app1
-```
-</div>
-Change properties for an application
-<div class="notranslate">
-
-```
-cloudlinux-selector set [--json] --interpreter nodejs  [(--user <str> | --domain <str>)] --app-root <str> [--app-mode <str>] [--new-app-root <str>] [--new-domain <str>] [--new-app-uri <str>] [--new-version <str>] [--startup-file <str>] [--env-vars <json string>]
-```
-</div>
-
-**Examples:**
-
-This command sets a custom path for Passenger log files:
-<div class="notranslate">
-    
-```
-cloudlinux-selector --json create --interpreter=nodejs --user=cltest1 --app-root=p_app2 --app-uri=p_app2_uri --passenger-log-file=/home/cltest1/passenger.log
-```
-</div>
-
-This command removes a custom path for Passenger log files:
-<div class="notranslate">
-    
-```
-cloudlinux-selector --json set --interpreter=nodejs --user=cltest1 --app-root=p_app1 --passenger-log-file=""
-```
-</div>
-
-**Example 1**:
-This command sets a production mode, new domain <span class="notranslate"> new.xyz.com </span> , new Node.js version 8, new <span class="notranslate"> URI </span> , new application <span class="notranslate"> root </span> directory and new startup file for <span class="notranslate"> user1 </span> application located on the domain <span class="notranslate"> xyz.com </span> :
-<div class="notranslate">
-
-```
-cloudlinux-selector set --json --interpreter nodejs  --user user1 --app-root my_apps/app1 --mode production  --new-app-root new_apps/new_app1  --new-domain new.xyz.com --new-app-uri new_apps/app1  --new-version 8  --startup-file new_app.js --env-vars '{ "var1" : "value1", "var2" : "value2" }'
-```
-</div>
-
-**Example 2**:
-
-<div class="notranslate">
-
-```
-cloudlinux-selector set --json --interpreter nodejs  --domain xyz.com --app-root my_apps/app1 --mode production  --new-app-root new_apps/new_app1  --new-domain new.xyz.com --new-app-uri new_apps/app1  --new-version 8  --startup-file new_app.js --env-vars '{ "var1" : "value1", "var2" : "value2" }'
-```
-</div>
-
-::: tip Note
-When changing Node.js version all replies from web application to get request will be checked in Node.js Selector (before and after version changing). HTTP response codes and MIME type are comparing. So, make sure application is available via http(s) at least locally.
-:::
-
-Run <span class="notranslate"> _npm install_ </span> command for the user application
-<div class="notranslate">
-
-```
-cloudlinux-selector install-modules [--json] --interpreter nodejs  [(--user <str> |  --domain <str>)] --app-root <str>
-```
-</div>
-
-**Example**:
-This command runs <span class="notranslate">`npm install`</span> for <span class="notranslate"> user1 </span> application:
-
-<div class="notranslate">
-
-```
-cloudlinux-selector install-modules --json --interpreter nodejs --user user1 --app-root my_apps/app
-```
-</div>
-
-::: tip Note
-All replies from web application to get request will be checked in Node.js Selector (before and after modules installation). HTTP response codes and MIME type are comparing. So, make sure application is available via http(s) at least locally.
-:::
-
-Run a script from <span class="notranslate"> package.json </span> file of a user application, arguments <span class="notranslate"> _args_ </span> are passed to the script
-<div class="notranslate">
-
-```
-cloudlinux-selector run-script [--json] --interpreter nodejs  [(--user <str> | --domain <str>)] --app-root <str> --script-name <str> [-- <args>...]
-```
-</div>
-
-**Example**:
-<div class="notranslate">
-
-```
-cloudlinux-selector run-script --json --interpreter nodejs --user user1 --app-root my_apps/app --script-name test_script -- --script_opt1 --script_opt2 script_arg1 script_arg2
-```
-</div>
-
-<span class="notranslate"> JSON </span> output:
-
-<div class="notranslate">
-
-```
-{
-          "result": "success",
-		  "timestamp": 1508666792.863358
-		  "data": "script output as Base64 encoded string"
-}
-```
-</div>
-
-Activate virtual environment of NodeJS:
-<div class="notranslate">
-
-```
-source <home_of_user>/nodevenv/<app_root>/<nodejs_version>/bin/activate
-```
-</div>
-
-This command changes prompt to
-**Example**:  
-<div class="notranslate">
-
-```
-[newusr@192-168-245-108 ~]$ source /home/newusr/nodevenv/newapp4/newapp3/8/bin/activate
-[newapp4/newapp3 (8)] [newusr@192-168-245-108 ~]$
-```
-</div>
-
-After activation user can use <span class="notranslate">`npm`</span> and node from a virtual environment without full paths.
-
-## Apache mod_lsapi PRO
-
-switch_mod_lsapi is the command line tool used to manage mod_lsapi PRO.
-
-It has the following syntax:
-
-`/usr/bin/switch_mod_lsapi [OPTIONS]`
-
-`[OPTIONS]`  can be the main and an additional (for usage together with any other main option).
-
-**Main options**
-
-| | |
-|-|-|
-|**Option** | **Description**|
-|`--setup` | setup _mod_lsapi_ configurations for Apache, including PHP handlers setup; create native lsphp (if it doesn't exist) by doing: `cp /opt/alt/php56/usr/bin/lsphp /usr/local/bin/` <br> _* NOT supported for DirectAdmin_ |
-|`--setup-light` | setup PHP handlers only<br> _* supported for cPanel EasyApache 4 only_|
-|`--uninstall` | uninstall _mod_lsapi_ from Apache<br> _* supported for cPanel (EasyApache 3 and EasyApache 4), Plesk, and servers without control panel_|
-|`--enable-domain` | enable _mod_lsapi_ for individual domain<br> _* supported for cPanel EasyApache 3 only_|
-|`--disable-domain` | disable _mod_lsapi_ for individual domain<br> _* supported for cPanel EasyApache 3 only_|
-|`--enable-global` | sets up _mod_lsapi_ as a default way to serve PHP, making it enabled for all domains. Once that mode is enabled, you cannot disable _mod_lsapi_ for an individual domain.<br> _* supported for cPanel only (EasyApache 3 and EasyApache 4)_|
-|`--disable-global` | disable _mod_lsapi_ as a default way to serve PHP, disabling _mod_lsapi_ for all domains, including those selected earlier using<br> _--enable-domain_ _* supported for cPanel EasyApache 3 only_|
-|`--build-native-lsphp` | build native _lsphp_ for cPanel EasyApache 3<br> _* supported for cPanel EasyApache 3 only_|
-|`--build-native-lsphp-cust` | build native _lsphp_ for cPanel EasyApache 3 (with custom PHP source path)<br> _* supported for cPanel EasyApache 3 only_|
-|`--check-php` | check PHP configuration<br> _* NOT supported for DirectAdmin_|
-|`--stat` | return usage statistics in JSON format; the following statistics metrics are collected:<br> • control panel name;<br> • mod_lsapi version;<br> • liblsapi version;<br> • criu version and status;<br> • whether mod_lsapi is enabled;<br> • lsapi configuration options;<br> • number of domains, that use _mod_lsapi_, per each installed PHP version including those set in PHP Selector _(this metric is supported for cPanel EasyApache 4, Plesk and DirectAdmin)_ .|
-
-**Additional options**
-
-| | |
-|-|-|
-|**Option** | **Description**|
-|`--verbose` | switch verbose level on|
-|`--force` | switch force mode on|
-
-
-The following table presents which `[OPTIONS]` are supported for various panels:
-
-| |  |  |  |  |  |  | |
-|-|--|--|--|--|--|--|-|
-| | No Control Panel | cPanel EA3 | cPanel EA4 | DirectAdmin | Plesk | InterWorx | ISPManager|
-|`setup` | + | + | + | custombuild | + | + | +|
-|`setup-light` | - | - | + | - | - | - | -|
-|`uninstall` | + | + | + | custombuild | + | + | +|
-|`enable-domain` | - | + | - | - | - | - | -|
-|`disable-domain` | - | + | - | - | - | - | -|
-|`enable-global` | - | + | + | custombuild | - | - | -|
-|`disable-global` | - | + | - | custombuild | - | - | -|
-|`build-native-lsphp` | - | + | - | - | - | - | -|
-|`build-native-lsphp-cust` | - | + | - | - | - | - | -|
-|`check-php` | + | + | + | - | + | + | +|
-|`verbose` | + | + | + | - | + | + | +|
-|`force` | + | + | + | - | + | + | +|
-|`stat` | + <br> _*without domain info_ | + <br> _*without domain info_ | + | + | + | + <br> _*without domain info_ | + <br> _*without domain info_|
-
-
-## Website Monitoring tool and Slow Site analyzer
-
-### The cloudlinux-ssa-manager utility
-
-The `cloudlinux-ssa-manager` utility allows to manage Slow Site analyzer via CLI.
-
-**Usage**
-
-```
-# /usr/sbin/cloudlinux-ssa-manager [command] [--optional arguments]
-```
-
-**Optional arguments**:
-
-| | |
-|-|-|
-|`-h`, `--help`|show help message and exit|
-
-**Commands**:
-
-| | |
-|-|-|
-|`set-config`|set the SSA configuration|
-|`get-config`|get the SSA configuration|
-|`get-ssa-status`|get a current status of SSA|
-|`enable-ssa`|enable SSA|
-|`disable-ssa`|disable SSA|
-|`get-report`|get the latest report|
-
-You can use the `-h`, `--help` option with commands to get a full list of available optional arguments for each command.
-
-Example of the `/usr/sbin/cloudlinux-ssa-manager set-config --help` command output:
-
-```
-# /usr/sbin/cloudlinux-ssa-manager set-config --help
-usage: cloudlinux-ssa-manager set-config [-h]
-                                         [--domains-number DOMAINS_NUMBER]
-                                         [--urls-number URLS_NUMBER]
-                                         [--requests-duration REQUESTS_DURATION]
-                                         [--request-number REQUEST_NUMBER]
-                                         [--time TIME]
-                                         [--correlation CORRELATION]
-                                         [--correlation-coefficient CORRELATION_COEFFICIENT]
-                                         [--ignore-list IGNORE_LIST]
-optional arguments:
-  -h, --help            show this help message and exit
-  --domains-number DOMAINS_NUMBER
-                        Size of TOP list for slow domains
-  --urls-number URLS_NUMBER
-                        Size of TOP list for slow urls
-  --requests-duration REQUESTS_DURATION
-                        The threshold value of request duration in seconds
-  --request-number REQUEST_NUMBER
-                        The threshold value of slow requests number in the
-                        period of time to mark URL as a slow one
-  --time TIME           Period of time in hours required to analyze these
-                        requests
-  --correlation CORRELATION
-                        Flag to enable or disable correlation
-  --correlation-coefficient CORRELATION_COEFFICIENT
-                        The threshold value of correlation coefficient
-  --ignore-list IGNORE_LIST
-                        List of URLs or domains that should not be included in
-                        the daily report
-```
-
-### The wmt-api utility
-
-The `wmt-api` utility allows to manage Website Monitoring tool via CLI.
-
-**Usage**
-
-```
-# /usr/share/web-monitoring-tool/wmtbin/wmt-api [command] [--optional arguments]
-```
-
-**Optional arguments**:
-
-| | |
-|-|-|
-|`-h`, `--help`|show help message and exit|
-
-**Commands**:
-
-| | |
-|-|-|
-|`config-change`|set the WMT configuration using the JSON string that follows|
-|`config-get`|get the WMT configuration as JSON|
-|`email-get`|get WMT email from the config file|
-|`report-generate`|Generate a report JSON file|
-|`send-clickhouse`|Send the summary report to ClickHouse|
-|`start`|Start the WMT system|
-|`status`|Check the status of the WMT system|
-|`stop`|Stop the WMT system|
-
-Example of the `/usr/share/web-monitoring-tool/wmtbin/wmt-api` command usage:
-
-```
-# /usr/share/web-monitoring-tool/wmtbin/wmt-api -config-change "{\"ping_connections\":8,\"report_top\":5,\"report_email\":\"user@example.com\"}"
-```
-
-This way you can set all or only certain parameters.
-
-## X-Ray Autotracing
-
-### The cloudlinux-autotracing utility
-
-The `cloudlinux-autotracing` utility allows to manage the X-Ray Autotracing via CLI.
-
-**Usage**
-
-```
-# /usr/sbin/cloudlinux-autotracing [command] [--optional arguments]
-```
-
-**Commands**:
-
-| | |
-|-|-|
-|`enable`|Enable X-Ray Autotracing|
-|`disable`|Disable X-Ray Autotracing|
-|`status`|Get current status of the X-Ray Autotracing|
-
-**Optional arguments**:
-
-| | |
-|-|-|
-|`-h`, `--help`|Show help message and exit|
-|`--all`|Enable or disable for all users|
-|`{username}`|Enable/disable the specified user|
-|`--list-disabled`|Show list of disabled users|
-
-You can use the `-h`, `--help` option with commands to get a full list of available optional arguments for each command.
-
-**Example usage:**
-
-Disable user1:
-	
-```
-# /usr/sbin/cloudlinux-autotracing disable user1
-{"result": "success"}
-```
-
-Show list of disabled users:
-	
-```
-# /usr/sbin/cloudlinux-autotracing status --list-disabled
-{"result": "success", "disabled_users": ["user1"]}
-```
-	
-Enable all:
-
-```
-# /usr/sbin/cloudlinux-autotracing enable --all
-{"result": "success"}
-```
-
-## Other CLI tools
-
-
-* [cldeploy](./#cldeploy)
-* [lvectl](./#lvectl)
-* [lveps](./#lveps)
-* [lvetop](./#lvetop)
-* [cldetect](./#cldetect)
-* [cldiag](./#cldiag)
-* [cloudlinux-config](./#cloudlinux-config)
-* [cl-quota](./#cl-quota)
-* [cloudlinux-limits](./#cloudlinux-limits)
-
-
-### cldeploy
-
-<span class="notranslate">`sh cldeploy --help`</span>
-
-Usage:
-
-| | |
-|--|--|
-|<span class="notranslate">`-h, --help`</span>|Print this message|
-|<span class="notranslate">`-k, --key &lt;key&gt;`</span>|Update your system to CloudLinux OS Shared with activation key|
-|<span class="notranslate">`-i, --byip`</span>|Update your system to CloudLinux OS Shared and register by IP|
-|<span class="notranslate">`-c, --uninstall`</span>|Convert CloudLinux OS Shared back to CentOS|
-|<span class="notranslate">`--serverurl`</span>|Use non-default registration server (default is `https://xmlrpc.cln.cloudlinux.com/XMLRPC`)|
-|<span class="notranslate">`--components-only`</span>|Install control panel components only|
-|<span class="notranslate">`--conversion-only`</span>|Do not install control panel components after converting|
-|<span class="notranslate">`--hostinglimits`</span>|Install mod_hostinglimits rpm|
-|<span class="notranslate">`--skip-kmod-check`</span>|Skip check for unsupported kmods|
-|<span class="notranslate">`--skip-version-check`</span>|Do not check for script updates|
-|<span class="notranslate">`--skip-registration`</span>|Don't register on CLN if already have access to CL repository|
-|<span class="notranslate">`--force-hybridize`</span>|Option allows to convert CloudLinux OS Shared 7 to CloudLinux OS Shared 7 Hybrid which has a newer kernel (from v1.61)|
-|<span class="notranslate">`--no-force-hybridize `</span>|Don't hybridize machine from CloudLinux 7 to CloudLinux 7 Hybrid automatically, even though machine has a new hardware|
-|<span class="notranslate">`--to-solo-edition `</span>|Convert to CloudLinux Solo edition (only allowed with --skip-registration option)|
-|<span class="notranslate">`--to-admin-edition `</span>|Convert to CloudLinux Admin edition (only allowed with --skip-registration option)|
-|<span class="notranslate">`--to-container-environment `</span>|Convert to CloudLinux which supports working inside containers|
-|<span class="notranslate">`--force-packages-installation `</span>|Automatically resolve dependencies and remove conflicting packages|
-|<span class="notranslate">`--allow-lower-version `</span>|Convert to lower minor version (Almalinux x.y to CL x.y-1) if current version (CL x.y) is not available|
-
-The script will perform the following actions:
-
-1. Register server with CLN.
-2. Install CloudLinux OS Shared kernel, lve libraries, lve-utils, lve-stats and pam_lve packages.
-3. Attempt to detect control panel and do the following actions:
-*  _For cPanel_:
-   * install mod_hostinglimits;
-   * install LVE Manager.
-
-*  _For DirectAdmin_:
-   * recompile Apache to install mod_hostinglimits;
-   * install LVE Manager.
-
-* _For Plesk, ISPManager & InterWorx_:
-  * update httpd and install mod_hostinglimits;
-  * install LVE Manager.
-
-* To disable installation of LVE Manager and mod_hostinglimits, please use <span class="notranslate">`--conversion-only`</span> option.
-
-* To disable installation of kernel & CLN registration, please use <span class="notranslate">`--components-only`</span> option.
-
-* To install **mod_hostinglimits** only, use <span class="notranslate">`--hostinglimits`</span> option.
-
-Examples:
-
-<div class="notranslate">
-
-```
-$ cldeploy --key xx-xxxxxx                            # convert RHEL/CentOS to CL by using activation key, install control panel components
-$ cldeploy --key xx-xxxxxx --force-hybridize           # convert RHEL/CentOS 7 to CL7h by using activation key, install control panel components (from v1.61)
-$ cldeploy --byip --conversion-only                   # convert RHEL/CentOS to CL by ip, don't install control panel components
-$ cldeploy --components-only                          # install control panel components on already converted system
-$ cldeploy --hostinglimits                            # update httpd and install mod_hostinglimits 
-```
-</div>
-
-
-### lvectl
-
-`lvectl` is the primary tool for LVE management. To use it, you have to have administrator access. lvectl is a part of lve-utils package.
-
-**lvectl syntax**
-
-**Usage**: <span class="notranslate">`lvectl command [lveid] [options]`</span>
-
-**Commands**
-
-|  |  |
-|--|--|
-| <span class="notranslate"> `apply`   </span> |apply config settings to specified LVE|
-| <span class="notranslate"> `apply all`   </span> |apply config settings to all the LVEs|
-| <span class="notranslate"> `apply-many` </span> |to apply LVE limits to multiple distinct LVEs (uids of users are read from stdin)|
-| <span class="notranslate"> `set`   </span> |set parameters for a LVE and/or create a LVE|
-| <span class="notranslate"> `set-user`   </span> |set parameters for a LVE and/or create a LVE using username instead of ID|
-| <span class="notranslate"> `list` </span> |list loaded LVEs|
-| <span class="notranslate"> `list-user`   </span> |list loaded LVEs, display username instead of user id|
-| <span class="notranslate"> `limits` </span> |show limits for loaded LVEs|
-| <span class="notranslate"> `delete` </span> |delete LVE and set configuration for that LVE to defaults|
-| <span class="notranslate"> `delete-user` </span> |delete LVE and set configuration for that user to defaults|
-| <span class="notranslate"> `destroy` </span> |destroy LVE (configuration file remains unchanged)|
-| <span class="notranslate"> `destroy all` </span> |destroy all LVE (configuration file remains unchanged)|
-| <span class="notranslate"> `destroy-many` </span> |to destroy LVE limits to multiple distinct LVEs (uids of users are read from stdin)|
-| <span class="notranslate"> `package-set` </span> | set LVE parameters for a package|
-| <span class="notranslate"> `package-list` </span> |list LVE parameters for packages|
-| <span class="notranslate"> `package-delete` </span> |delete LVE parameters for a package|
-| <span class="notranslate"> `paneluserslimits` </span> |show current user's limits for control panel|
-| <span class="notranslate"> `limit` </span> |limit PID into specified LVE. Parameters PID LVE_ID|
-| <span class="notranslate"> `release` </span> |release PID from LVE. Parameters PID|
-| <span class="notranslate"> `set-binary` </span> |add binary to be run inside LVE on execution|
-| <span class="notranslate"> `del-binary` </span> |remove binary from being run inside LVE on execution|
-| <span class="notranslate"> `list-binaries` </span> |list all binaries to be run inside LVE on execution|
-| <span class="notranslate"> `load-binaries` </span> |load binaries (used on startup) from config file|
-| <span class="notranslate"> `reload-binaries` </span> |re-load list of binaries from config file|
-| <span class="notranslate"> `help (-h)` </span> |show this message|
-| <span class="notranslate"> `version (-v)` </span> |version number|
-| <span class="notranslate"> `lve-version` </span> |LVE version number|
-| <span class="notranslate"> `set-reseller` </span> |create LVE container and set LVE parameters for a reseller|
-| <span class="notranslate"> `set-reseller-default` </span> |set default limits for resellers users|
-| <span class="notranslate"> `remove-reseller`</span> |delete LVE container and the record in the config, move LVE containers to the host container|
-
-**Options**
-
-|  |  |
-|--|--|
-| <span class="notranslate"> `--enter-count`   </span> |enable limit for enters count (by default disabled), use only with command "limit". Supported in lve-utils-6.1.2-1 or later. |
-| <span class="notranslate"> `--io-and-memory`   </span> |enable limit for IO and memory (by default disabled), use only with command "limit". Supported in lve-utils-6.1.2-1 or later. |
-| <span class="notranslate"> `--cpu=N`   </span> |limit <span class="notranslate">`CPU`</span> usage; (deprecated. Use <span class="notranslate">`--speed`</span>)|
-| <span class="notranslate"> `--speed=N%` </span> |limit <span class="notranslate">`CPU`</span> usage in percentage; 100% is one core|
-| <span class="notranslate"> `--speed=Nmhz\ghz` </span> |limit <span class="notranslate">`CPU`</span> usage in mhz\ghz|
-| <span class="notranslate"> `--ncpu=N` </span> |limit VCPU usage (deprecated)|
-| <span class="notranslate"> `--io=N` </span> |define io limits (KB/s)|
-| <span class="notranslate"> `--nproc=N` </span> |limit number of processes|
-| <span class="notranslate"> `--pmem=N`   </span> |limit physical memory usage for applications inside LVE|
-| <span class="notranslate"> `--iops=N` </span> |limit io per second|
-| <span class="notranslate"> `--mem=N` </span> | mem alias for vmem (deprecated)|
-| <span class="notranslate"> `--vmem=N` </span> |limit virtual memory for applications inside LVE|
-| <span class="notranslate"> `--maxEntryProcs=N` </span> |limit number of entry processes|
-| <span class="notranslate"> `--save` </span> |save configuration settings (use with set) (deprecated)|
-| <span class="notranslate"> `--save-all-parameters` </span> |save all parameters even if they match with defaults settings|
-| <span class="notranslate"> `--json` </span> |returns result of command json formatted|
-| <span class="notranslate"> `--unlimited` </span> |set all limits to unlimited|
-| <span class="notranslate"> `--save-username` </span> |save username in the config file. This parameter is used in conjunction with <span class="notranslate">`set-user`</span>|
-
-**Examples**
-
-* Reset all LVEs settings based on configuration in <span class="notranslate">`/etc/container/ve.cfg`</span>:
-  
-    <div class="notranslate">
-
-    ```
-    $ lvectl apply all
-    ```
-    </div>
-
-* Set new default <span class="notranslate">CPU & Physical memory</span> limit:
-  
-    <div class="notranslate">
-
-    ```
-    $ lvectl set default --speed=100% --pmem=256m
-    ```
-    </div>
-
-* Reset all LVE's killing processes inside them:
-  
-    <div class="notranslate">
-
-    ```
-    $ lvectl destroy all
-    ```
-    </div>
-
-* Show list of LVEs and their limits:
-  
-    <div class="notranslate">
-
-    ```
-    $ lvectl list
-    ```
-    </div>
-
-### lveps
-
-**lveps** tool shows information about running LVEs, processes and threads belonging to them, <span class="notranslate"> CPU/memory/IO </span> usage consumed by LVEs and their individual processes/threads. LVE is only reported if it is considered active (at least one thread belongs to that LVE or was running during measurement in dynamic mode).
-
-**Usage**:
-
-<div class="notranslate"> 
-
-```
-lveps [-p] [-n] [-o <fmt1:width1,...>] [-d] [-c <time>] [-s <style>] [-t] [-h]
-```
-</div>
-
-**Options**:
-
-| | |
-|-|-|
-|`-p`| to print per-process/per-thread statistics|
-|`-n`| to print LVE ID instead of username|
-|`-o`| to use formatted output (fmt=id,ep,pid,tid,cpu,mem,io)|
-|`-d`| to show dynamic cpu usage instead of total cpu usage|
-|`-c`| to calculate average cpu usage for &lt;time&gt; seconds (used with `-d`)|
-|`-r`| to run under realtime priority for more accuracy (needs privileges)|
-|`-s`| to sort LVEs in output (cpu, process, thread, mem, io)|
-|`-t`| to run in the top-mode|
-|`-h`| to print this brief help message|
-
-
-Command like <span class="notranslate">`lveps -p`</span> will display processes running inside 'active' LVEs.
-
-| | |
-|-|-|
-|<span class="notranslate"> CPU </span> | The number of seconds LVE/process/thread has been running (each <span class="notranslate"> CPU </span> /core is counted separately), or the average CPU load (100% is all <span class="notranslate"> CPU </span> resources) if used with <span class="notranslate">`-d`</span>.|
-|<span class="notranslate">MEM</span>| The number of megabytes of resident memory in use by LVE/process/thread (shared memory is not included).|
-|<span class="notranslate">IO</span> | The number of kilobytes read and written in sum by LVE, or kb/sec if used with `-d`.|
-|<span class="notranslate">ID</span> | LVE ID or username.|
-|<span class="notranslate">EP</span> | The number of entry processes inside  LVE.|
-|<span class="notranslate">COM</span> | Command name for this process.|
-|<span class="notranslate">PID</span> | <span class="notranslate">PID</span> of the process.|
-|<span class="notranslate">PNO</span> | The number of processes belonging to the LVE.|
-|<span class="notranslate">TID</span> | <span class="notranslate">TID</span> of the thread.|
-|<span class="notranslate">TNO</span> | The number of threads belonging to the LVE.|
-|<span class="notranslate">DO</span> | The number of disk operations belonging to the LVE from the time it was created.|
-|<span class="notranslate">DT</span> | Total amount of disk transfer in megabytes from LVE creation time.|
-|<span class="notranslate">IOPS</span> | The number of I/O operations per second|
-
-### lvetop
-
-**lvetop** utility allows to monitor LVE usage:
-
-<div class="notranslate">
-
-```
-ID        EP PNO TNO SPEED MEM  IO   IPOS
-testuser1 0  1   1   0%    7    0    0
-testuser2 0  0   0   5%    0    3    0
-testuser3 1  2   2   0%    102  2727 0
-testuser4 0  1   1   0%    12   84   1
-testuser5 0  2   2   1%    52   0    0
-```
-</div>
-
-**lvetop fields**:
-
-| | |
-|--|--|
-|<span class="notranslate"> `ID`</span>|user name if LVE id matches user id in <span class="notranslate">`/etc/passwd`</span>, or LVE id|
-|<span class="notranslate"> `EP`</span>|number of entry processes (concurrent scripts executed)|
-|<span class="notranslate"> `PNO`</span>|number of processes within LVE|
-|<span class="notranslate"> `TNO`</span>|number of threads within LVE|
-|<span class="notranslate"> `CPU`</span>|<span class="notranslate"> CPU</span> usage by LVE, relative to total <span class="notranslate"> CPU </span>  resources of the server|
-|<span class="notranslate"> `MEM`</span>|Memory usage by LVE, in KB|
-|<span class="notranslate"> `I/O`</span>|<span class="notranslate"> I/O </span> usage|
-|<span class="notranslate"> `IOPS`</span>|number of read/write operations per second|
-
-
-### cldetect
-
-* [clsupergid auto-configuration](./#clsupergid-auto-configuration)
-
-:::tip Note
-<span class="notranslate">lve-utils 1.2-10+</span>
-:::
-
-**cldetect** is used to detect installed software, and adjust CloudLinux OS Shared options accordingly.
-
-**Usage**:
-<div class="notranslate">
-
-```
-/usr/bin/cldetect [--options]
-```
-</div>
-
-
-|||
-|----|--|
-|<span class="notranslate">`cldetect -h`/`-h`/`--help`</span>|show this message|
-|<span class="notranslate">`--detect-cp`</span>|prints control panel and its version (<span class="notranslate">CP_NAME,CP_VERSION</span>)|
-|<span class="notranslate">`--detect-cp-full`</span>|prints control panel, version and panel specific data (<span class="notranslate">CP_NAME,CP_VERSION</span>,...). Specific data: for <span class="notranslate">ISP Manager5 - Master/Node</span>|
-|<span class="notranslate">`--detect-cp-nameonly`</span>|prints control panel name (<span class="notranslate">CP_NAME</span>)|
-|<span class="notranslate">`--get-admin-email`</span>|prints control panel admin email (<span class="notranslate">CP_ADMIN_EMAIL</span>)|
-|<span class="notranslate">`--cxs-installed`</span>|check if CXS is installed. Returns 0 if installed, 1 otherwise|
-|<span class="notranslate">`--cpanel-suphp-enabled`</span>|check if suPHP is enabled in cPanel.Returns 0 if enabled, 1 otherwise|
-|<span class="notranslate">`--detect-litespeed`</span>|check if LiteSpeed is installed. Returns 0 if installed, 1 otherwise|
-|<span class="notranslate">`--detect-postgresql`</span>|check if PostGreSQL is installed. Returns 0 if installed, 1 otherwise|
-|<span class="notranslate">`--print-apache-gid`</span>|prints current apache gid|
-|<span class="notranslate">`--print-da-admin`</span>|prints DirectAdmin admin user|
-|<span class="notranslate">`--set-securelinks-gid`</span>|changes `/etc/sysctl.conf` if apache gid != 48 (default)|
-|<span class="notranslate">`--set-nagios`</span>|do some adjustments to make nagios work correctly if it's installed. Called as a part of `--setup-supergids`|
-|<span class="notranslate">`--setup-supergids`</span>|do some adjustments to make special users/software (nagios, cPanel’s mailman) work correctly if it is installed to the system|
-|<span class="notranslate">`--cl-setup`</span>|check if CloudLinux OS Shared is installing. Returns 0 if installing, 1 otherwise|
-|<span class="notranslate">`--update-license`</span>|updates license|
-|<span class="notranslate">`--update-new-key`</span>|updates license with new key|
-|<span class="notranslate">`--check-license`</span>|check license. Returns OK if license is not older than 3 days, error message otherwise|
-|<span class="notranslate">`-q`</span>|check license. Returns 0 if license is not older than 3 days, 1 otherwise|
-|<span class="notranslate">`--no-valid-license-screen`</span>|returns no valid license found screen|
-|<span class="notranslate">`--license-out-of-date-email`</span>|returns License out of Date Email.|
-|<span class="notranslate">`--check-openvz`</span>|returns enviroment id|
-
-
-#### **clsupergid auto-configuration**
-
-Each time <span class="notranslate">`lve-utils`</span> package is installed or upgraded it does some automatic system re-configuration to make some software (like nagios) work correctly, if it’s installed, by calling <span class="notranslate">`cldetect --setup-supergids`</span> command.
-
-Starting from <span class="notranslate">**_lve-utils 3.0-21_**</span> a behaviour of <span class="notranslate">`cldetect --set-nagios`</span> (now, it’s a part of <span class="notranslate">`cldetect --setup-supergids`</span>) command slightly changed.
-
-| |  | |
-|-|--|--|
-| | **Old behavior** | **New behavior**|
-|If <span class="notranslate">**fs.proc_super_gid**</span> is 0 (which means it’s not configured) or it’s set to some GID that doesn’t exist in the system.| Command will set <span class="notranslate">`sysctl fs.proc_super_gid`</span> to point to Nagios GID. | Command will create special <span class="notranslate">`clsupergid`</span> group, setup <span class="notranslate">`sysctl fs.proc_super_gid`</span> to point to it’s GID and add Nagios user to this group. If no such user exists, then no actions with the group will be done.|
-
-If **fs.proc_super_gid** was configured by an admin to some existing group, the command will just add Nagios user to this group.
-
-### cldiag
- 
-`cldiag` utility is included in <span class="notranslate">`lve-utils`</span> package and is intended for:
-
-* server diagnostics performed by a server administrator for detecting the most common errors in the configuration or software operation;
-* the focused check of the servers for typical errors performed by the support engineers before proceeding to the detailed analysis of the customer tickets;
-* servers automatic check by cron with the following generation of the reports and email them to the server administrator.
-    * Set option `ENABLE_CLDIAG` to `false` in config `/etc/sysconfig/cloudlinux` if you want to disable automatic check by cron permanently
-    * Use the cldiag key `--disable-cron-checkers` for disabling separate checkers if you want to disable only some checkers (<span class=“notranslate”>lve-utils >= 4.2.18-1</span>)
-    * A default email is `root@localhost.localdomain`. Note that the settings of the mail server can change the final email.
-
-You can change the email in the following ways:
-
-* In your control panel by changing the mail server settings
-* By changing the `/etc/sysconfig/cloudlinux` config:
-  * Set the desired email instead of the default CP value in the `EMAIL` option
-  * Set the `CP` value in the `EMAIL` option in the `license_check` section. Add an option with the path to the panel script for receiving emails:
-    ```
-    {PANEL_NAME}_getemail_script=/path/to/getemail_script)
-    ```
-  `{PANEL_NAME}` is the name of the panel from the `cldetect --detect-cp-name` command output.
-  * If there is no panel script, the default email (`root@localhost.localdomain`) will be used.
-  * The `/path/to/getemail_script` file should be executable and output to stdout the admin email to which an email with checks results will be sent. Note that the settings of the mail server can change the final email.
-
-In all cases, for the negative checker result, the exit code will be > 0 (at the moment it will be equal to the number of failed checkers).
-
-All the checkers support additional <span class="notranslate">`--json`</span> option with the unified output in an appropriate format.
-
-For example:
- 
-<div class="notranslate"> 
-
-```
-# cldiag --symlinksifowner --json
-
-{"total_errors": 0, "Check fs.enforce_symlinksifowner is correctly enabled in /etc/sysctl.conf": {"res": "OK", "msg": "fs.enforce_symlinksifowner = 1"}}
-```
-</div>
-
-Each checker returns a typical result with the name of the check performed (brief description), one of the possible statuses of its execution, and detailed information on its fail or success.
-
-For example:
-
-<div class="notranslate">
-
-```
-Check fs.enforce_symlinksifowner is correctly enabled in /etc/sysctl.conf:
-
-OK: fs.enforce_symlinksifowner = 1
-
-Check suexec has cagefs jail:
-
-SKIPPED: SuEXEC is not enabled
-```
-</div>
-
-Possible checkers results:
-
-1. <span class="notranslate">`OK`</span> - the check succeeded.
-2. <span class="notranslate">`FAILED`</span> - the check revealed a problem.
-3. <span class="notranslate">`SKIPPED`</span> - the check was skipped as it made no sense in the actual environment (e.g. wrong control panel) or it could not be executed for some reason (e.g. no users with enabled CageFS found). Such result doesn’t mean there is a problem and can be considered as a positive.
-4. <span class="notranslate">`INTERNAL_TEST_ERROR`</span> - the check has failed because of a problem in the checker itself. Please report such problems using [https://cloudlinux.zendesk.com/agent/](https://cloudlinux.zendesk.com/agent/).
-
-The utility includes several built-in checkers, and can also import and run checkers from other utilities.
-
-Currently implemented checkers:
-
-#### diag-cp
-
-Checks control panel and its configuration (for DirectAdmin only).
-
-Checking control panel availability, thereby detecting it with our code. Displaying control panel name and version. Also, for DirectAdmin, checking if CloudLinux OS Shared support is enabled in its config.
-
-Fails if <span class="notranslate">`/usr/local/directadmin/custombuild/options.conf`</span> does not contain <span class="notranslate">`cloudlinux=yes`</span> line (for DirectAdmin control panel).
-
-#### symlinksifowner
-
-Checks fs.enforce_symlinksifowner is correctly enabled in <span class="notranslate">`/etc/sysctl.conf`</span>.
-
-Checking specified kernel setup described in [this docs section](/shared/cloudlinux_os_kernel/#symlink-owner-match-protection) for deprecated value and displaying its current value.
-
-Fails if <span class="notranslate">`/proc/sys/fs/enforce_symlinksifowner`</span> contains value `2` (it is deprecated and can cause issues for the system operation).
- 
-
-#### check-suexec
-
-Checks suexec has <span class="notranslate">cagefs</span> jail.
-
-In case if <span class="notranslate">CageFS</span> is installed and SuEXEC is on, checking if <span class="notranslate">CageFS</span> is enabled for SuEXEC.
- 
-Fails if CageFS is not enabled for suexec binary.
-
-
-#### check-suphp
-
-Checks suphp has <span class="notranslate">cagefs</span> jail.
-
-In case if <span class="notranslate">CageFS</span> is installed and SuPHP is on, checking if <span class="notranslate">CageFS</span> is enabled for SuPHP.
- 
-Fails if CageFS is not enabled for suphp binary.
-
-#### check-usepam
-
-Checks UsePAM in <span class="notranslate">`/etc/ssh/sshd_config`</span>.
-
-Checking if <span class="notranslate">`/etc/ssh/sshd_config`</span> config file contains <span class="notranslate">`UsePAM yes`</span> line, which is required for pam_lve correct work with sshd.
- 
-Fails if <span class="notranslate">`/etc/ssh/sshd_config`</span> contains <span class="notranslate">`UsePAM no`</span> line. 
-
-#### check-symlinkowngid
-
-Checks <span class="notranslate">`fs.symlinkown_gid`</span>.
-
-First checking if user <span class="notranslate">`Apache`</span> is available in the system (on some panels users `httpd` or <span class="notranslate">`nobody`</span> with special GID are present instead of <span class="notranslate">`Apache`</span>, they are detected correctly as well). Then, if such user exists, checking that his GID equals to the one specified in sysctl or that this user belongs to this supplemental group. If these conditions are met, then the protection effect described in [this docs section](/shared/cloudlinux_os_kernel/#symlink-owner-match-protection) is applied to this user, and the appropriate message will be displayed.
- 
-Fails if Apache user is not in the group specified in <span class="notranslate">`/proc/sys/fs/symlinkown_gid`</span>.
-
-#### check-cpanel-packages
-
-Checks existence of all user's packages (cPanel only)
-
-Reading <span class="notranslate">`PLAN=`</span> for all users from <span class="notranslate">`/var/cpanel/users`</span> and checking if all of them are present in <span class="notranslate">`/var/cpanel/packages`</span> and if not, then displaying them in pairs like <span class="notranslate">`user: plan`. `default`</span> and <span class="notranslate">`undefined`</span> packages are excluded from the check.
-
-Fails if users from <span class="notranslate">`/var/cpanel/users/`</span> directory have non-existing packages (packages do not exist in <span class="notranslate">`/var/cpanel/packages/`</span> directory, except for <span class="notranslate">`undefined`</span> and <span class="notranslate">`default`</span>). 
- 
-
-#### check-defaults-cfg
-
-Checks <span class="notranslate">`/etc/cl.selector/default.cfg`</span>.
-
-Checking that if this config exists, the default PHP version is not disabled in it. Also performing minimal syntax checks for PHP modules settings and displaying the incorrect.
- 
-Fails if there are some problems in <span class="notranslate">`/etc/cl.selector/default.cfg`</span> found.
-
-Possible reasons for failure:
-   * Default version is undefined, which means <span class="notranslate">`/etc/cl.selector/default.cfg`</span> file does not contain section [versions] with the defined default version. 
-   * Default PHP version is disabled.
-
-#### check-cagefs
-
-All checks for CageFS are described separately in [this docs section](./#sanity-check) and their start from cagefsctl utility is completely equivalent to the start from cldiag and is designed only for a better experience.
- 
-This checker includes a set of CageFS sub-checkers, failure of one (or more) of them causes general checker failure.
-
-#### check-php-conf
-
-Checks <span class="notranslate">`/etc/cl.selector/php.conf`</span>.
-
-Checking the config syntax for acceptable blocks and directives.
- 
-Fails if <span class="notranslate">`/etc/cl.selector/php.conf`</span> has incorrect format.
-
- * File contains an invalid parameter (valid parameters: <span class="notranslate">`Directive`</span>, <span class="notranslate">`Default`</span>, <span class="notranslate">`Type`</span>, <span class="notranslate">`Comment`</span>, <span class="notranslate">`Range`</span>, <span class="notranslate">`Remark`</span>).
-  
- * File contains an invalid setting for the parameter <span class="notranslate">`Type`</span> (valid settings for the  <span class="notranslate">`Type`</span> parameter: <span class="notranslate">`value`, `list`, `bool`</span>)
-
-#### check-phpselector
-
-Checks compatibility for the <span class="notranslate">PHP Selector</span>
-
-Detecting which PHP handler has been configured on the server and checking its compatibility with the <span class="notranslate">CloudLinux OS Shared PHP Selector</span> according to [this table](/shared/shared/limits/#compatibility-matrix) and displaying the corresponding message with the link to the documentation in case of a problem detected. No checks are performed for EasyApache3.
-
-Failure reasons:
-  * The installed <span class="notranslate">`mod_ruid`</span> package is incompatible with the <span class="notranslate">PHP Selector</span>
-  * <span class="notranslate">`mod_suexec`</span> is not installed
-  * <span class="notranslate">`mod_suphp`</span> is not installed
-  * Absence of the <span class="notranslate">`/usr/local/lsws/conf/httpd_config.xml`</span> file (only for LiteSpeed server)
-
-::: tip Note
-The following checkers are available in <span class="notranslate">**lve-utils >= 3.1.2**</span>
-:::
- 
-
-#### check-lve-limits
-
-Checks the validity of LVE limits on the server.
-
-[See this page for detailed description](/shared/limits/#limits-validation).
-
-#### check-rpmdb
-
-:::warning Warning
-This checker was removed from the cldiag utility as `cldiag --check-rpmdb` can in some cases hang up during `rpmdb` check, which can brake access to the database for `rpm/yum` utilities.
-:::
-
-#### check-hidepid
-
-A new checker `check-hidepid` is available starting from `lve-utils-4.2.18-1` and later. It checks if CageFS is installed and if `/proc` is mounted without the `hidepid=2` parameter.
-
-* If CageFS is not installed, `check-hidepid` skips and outputs the following:
-
-  ```
-    Check mount with hidepid=2 option:
-	    SKIPPED: Cagefs is not installed
-  ```
-
-* If `check-hidepid` triggers and finds an issue, it outputs the following:
-
-  ```
-    Check mount with hidepid=2 option:
-	    FAILED: Details: hidepid protection disabled.
-    Please, mount system with hidepid=2 for better security.
-    Read more about hidepid option here: https://docs.cloudlinux.com/shared/cloudlinux_os_kernel/#remounting-procfs-with-hidepid-option
-  ```
-
-* If `check-hidepid` triggers and it's OK, it outputs the following:
-
-  ```
-    Check mount with hidepid=2 option:
-	    OK: hidepid protection enabled
-  ```
-
-#### check-jwt-token
-
-This new checker is available starting from LVE-Utils 4.2.21-2
-
-Checks the validity and presence of the JWT token which is required for correct work of client part of Centralized Monitoring.
-
-Failure reasons:
-* The JWT token is absent in path `/etc/sysconfig/rhn/jwt.token`
-* The JWT token is malformed
-* The JWT token is expired.
-* The issuer of JWT token is invalid.
-
-In all cases try running <span class="notranslate">`rhn_check`</span> for getting a new token.
-
-#### check-cm-all
-
-This new checker is available starting from LVE-Utils 4.2.21-2
-
-Checks the things on a server of client which are required for correct work of client part of Centralized Monitoring:
-* Checks the validity and presence of JWT token
-* Checks that service <span class="notranslate">`cl_plus_sender`</span> is present, enabled and active
-* Checks that service <span class="notranslate">`node_exporter`</span> is present, enabled and active
-* Checks that service <span class="notranslate">`lvestats`</span> is present, enabled and active
-* Checks that RPM packages <span class="notranslate">`cl-end-server-tools`</span> and <span class="notranslate">`cl-node-exporter`</span> are installed
-
-#### all
-
-Performs diagnostic checks from the list:
-
-* check_cp_diag
-* check_symlinksifowner
-* check_suexec
-* check_suphp
-* check_use_pam
-* check_symlinkowngid
-* check_existence_of_all_users_packages
-* check_phpselector
-* check_defaults_cfg
-* check_php_conf
-* check_lve_limits
-* check_hidepid
-* check_cagefs_partition_disk_quota
-* fake_cagefs_checker
-
-#### generate-email
-
-Performs diagnostic checks (from the list above) and generates HTML report sent to the administrator's email.
-
-#### cron-check
-
-Performs the same diagnostic checks as `generate-email` but with considering the `ENABLE_CLDIAG` option in the `/etc/sysconfig/cloudlinux`.
-
-Performs diagnostic checks from the list:
-
-* check_symlinksifowner
-* check_use_pam
-* check_symlinkowngid
-* check_existence_of_all_users_packages
-* check_lve_limits
-* check_hidepid
-* check_cagefs_partition_disk_quota
-* check_jwt_token
-* check_cl_plus_sender_service
-* check_node_exporter_service
-* check_cmt_packages
-* check_lvestats_service
-
-#### doctor
-
-:::tip Note
-Available starting from lve-utils version 6.3.9-1.
-:::
-
-This option can be used instead of the following command:
-
-```
-wget -qq -O - https://repo.cloudlinux.com/cloudlinux/cldoctor/cldoctor.sh | bash
-```
-
-If this option is provided cldoctor script will be downloaded to a temp directory and executed by cldiag. Also the report will be automatically sent to our support team.  
-
-### cloudlinux-config
-
-**cloudlinux-config** utility shows/sets various parameters related to [LVE Manager](/shared/lve_manager/#lve-manager-options) UI, [MySQL Governor](/shared/cloudlinux_os_components/#configuration-and-operation) and [faults notifications for LVE-Stats 2](/shared/cloudlinux_os_components/#configuration)
-
-**Usage:**
-
-<div class="notranslate">
-
-```
-cloudlinux-config get [--json] [--for-reseller resname ]
-cloudlinux-config set [--json] --data <str> [--for-reseller resname ]
-cloudlinux-config set [--json] --reset-inodes-limit
-```
-</div>
-
-**Commands:**
-
-| | |
-|-|-|
-|<span class="notranslate">`get`</span>| Shows the values of all supported parameters|
-|<span class="notranslate">`set`</span>| Sets values for supported parameters|
-
-**Options**
-
-| | |
-|-|-|
-|<span class="notranslate">`--json`</span>| Sets/returns values in json format|
-|<span class="notranslate">`--data`</span>| Sets values from the data string that follows|
-|<span class="notranslate">`--for-reseller`</span>| Sets/limits the output only to the data related to reseller _resname_ |
-|<span class="notranslate">`--reset-inodes-limit`</span>| Resets inode limits (in case disk quota breaks)|
-
-**JSON data structure**
-
-All options are enclosed inside <span class="notranslate">`options`</span> (Level 0) string. All options are enclosed in `" "`, while values come as is. Here's an example:
-
-<div class="notranslate">
-
-```
-'{"options":{"L1_option1":value1, "L1_option2":value2}}'
-```
-</div>
-
-Each Level1 option can have nested Level2 options specified using the same syntax, the same goes for Level2 and Level3 options respectively.
-
-**LVE-Stats 2 faults notification settings**
-
-| | | | | | |
-|-|-|-|-|-|-|
-| Level1| Level2| Level3| Level4| Possible values| Description|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>| <span class="notranslate">`concurrentConnections`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include concurrent connection value in notification emails|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`cpu`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include CPU consumption value in notification emails|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`io`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include IO value in notification emails|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`iops`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include IOPS value in notification emails|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`mem`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include RAM consumption value in notification emails|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`faultsToInclude`</span>|<span class="notranslate">`nproc`</span>| |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Include number of processes value in notification emails|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`fminimumNumberOfFaultsToNotify`</span>| <span class="notranslate">`admin`</span>| | `N`| The minimum number of faults to notify for admin|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`fminimumNumberOfFaultsToNotify`</span>| <span class="notranslate">`user`</span>| | `N`| The minimum number of faults to notify for users|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`fminimumNumberOfFaultsToNotify`</span>| <span class="notranslate">`reseller`</span><sup> *</sup>| | `N`| The minimum number of faults to notify for reseller|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`fminimumNumberOfFaultsToNotify`</span>| <span class="notranslate">`customer`</span><sup> *</sup>| | `N`| The minimum number of faults to notify for reseller's customers|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`admin`</span>|<span class="notranslate">`period`</span>| `N`| The period of faults notifications for admin|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`admin`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Time units of period of faults notifications for admin|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`user`</span>|<span class="notranslate">`period`</span>| `N`| The period of faults notifications for users|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`user`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Time units of period of faults notifications for users|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`reseller`</span><sup> *</sup>|<span class="notranslate">`period`</span>| `N`| The period of faults notifications for resellers|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`reseller`</span><sup> *</sup>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Time units of period of faults notifications for resellers|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`customer`</span><sup> *</sup>|<span class="notranslate">`period`</span>| `N`| The period of faults notifications for reseller's customers|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notify`</span>|<span class="notranslate">`customer*`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Time units of period of faults notifications for reseller's customers|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyAdmin`</span>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notifications to admin|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyResellerCustomers`</span>| | | <span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notification to reseller users|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyResellerOnCustomers`</span><sup> *</sup>| | | <span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send users' faults notifications to the respective reseller|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyReseller`</span><sup> *</sup>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notification to reseller|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyCustomers`</span>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notifications to users|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`notifyResellers`</span>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Send faults notification to resellers|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`email`</span>|<span class="notranslate">`notifyCharset`**</span>| |<span class="notranslate">`utf-8`/null</span>|Set charset used in email|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`email`</span>|<span class="notranslate">`notifyFromEmail`**</span> | |<span class="notranslate">`admin@email.com`/null</span>|Set email to notify from|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`email`</span>|<span class="notranslate">`notifySubject`**</span> | |<span class="notranslate">`Subject`/null</span>|Set email subject|
-|<span class="notranslate">`faultsNotification`</span>|<span class="notranslate">`email`</span>|<span class="notranslate">`reportAdminEmail`**</span> | |<span class="notranslate">`admin@email.com`/null</span>|Set admin email for notifications|
-
-:::tip Note
-To reset options marked with ** set `null`.
-:::
-
-::: tip Note  
-Options marked with `*` are for reseller use only
-:::
-
-**MySQL Governor settings**
-
-| | | | | | |
-|-|-|-|-|-|-|
-| Level1| Level2| Level3| Level4| Possible values| Description|
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`errorLog`</span>|<span class="notranslate">`level`</span>| | <span class="notranslate">`DEBUG`</span>/<span class="notranslate">`ERROR`</span>| Sets error log level |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`errorLog`</span>|<span class="notranslate">`logPath`</span>| |<span class="notranslate">`/var/log/dbgovernor-error.log`</span>| Sets error log destination file |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`gatherDataForDetailedStats`</span>| | |<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Enables gathering data for detailed statistics |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`logRestrictedUsersQueries`</span>| | | <span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Enables logging of restricted user queries |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`modeOfOperation`</span>| | |<span class="notranslate">`off`</span>/<span class="notranslate">`single`</span>/<span class="notranslate">`abusers`</span>/<span class="notranslate">`all`</span>| Sets the mode of operation |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictLog`</span>|<span class="notranslate">`format`</span>| |<span class="notranslate">`SHORT`</span>/<span class="notranslate">`MEDIUM`</span>/<span class="notranslate">`LONG`</span>/<span class="notranslate">`VERYLONG`</span>| Sets the format for restrict log |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictLog`</span>|<span class="notranslate">`logPath`</span>| |<span class="notranslate">`/var/log/dbgovernor-restrict.log`</span>| Sets the format for restrict log |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictType`</span>|<span class="notranslate">`mode`</span>| |<span class="notranslate">`period`</span>/<span class="notranslate">`limit`</span>| Sets the restriction mode |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictType`</span>|<span class="notranslate">`unlimit`</span>|<span class="notranslate">`period`</span>| `N`| Sets the restriction expiration period |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictType`</span>|<span class="notranslate">`unlimit`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets the restriction expiration period units of time |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level1`</span>|<span class="notranslate">`period`</span>| `N`| Sets L1 restriction time period |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level1`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L1 restriction time period units of time |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level2`</span>|<span class="notranslate">`period`</span>| `N`| Sets L2 restriction time period |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level2`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L2 restriction time period units of time |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level3`</span>|<span class="notranslate">`period`</span>| `N`| Sets L3 restriction time period |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level3`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L3 restriction time period units of time |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level4`</span>|<span class="notranslate">`period`</span>| `N`| Sets L4 restriction time period |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`level4`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L4 restriction time period units of time |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>| <span class="notranslate">`timeout`</span>|<span class="notranslate">`period`</span>| `N`| Sets restriction time period timeout|
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`restrictedTimePeriods`</span>|<span class="notranslate">`timeout`</span>|<span class="notranslate">`unitOfTime`</span>|<span class="notranslate">`seconds`</span>/<span class="notranslate">`minutes`</span>/<span class="notranslate">`hours`</span>/<span class="notranslate">`days`</span>| Sets L1 restriction time period timeout units of time |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`scriptPath`</span>| | | <span class="notranslate">`/path/to/script`</span>| Path to script to be triggered when account is restricted |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`slowQueries`</span>|<span class="notranslate">`kill`</span>| | <span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Enables killing of slow queries |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`slowQueries`</span>|<span class="notranslate">`logPath`</span>| |<span class="notranslate">`/path/to/sqkill.log`</span>| Sets the path to slow query kill log file |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`slowQueries`</span>|<span class="notranslate">`timeout`</span>| | `N`| Time to kill slow SELECT queries for account (seconds) |
-|<span class="notranslate">`mySQLGovSettings`</span>|<span class="notranslate">`userMaxConnections`</span>| | | `N`| Sets the maximum number of user connections to database |
-
-**LVE Manager UI settings**
-
-| | | | |
-|-|-|-|-|
-| Level1| Level2| Possible values| Description|
-|<span class="notranslate">`inodeLimits`</span>|<span class="notranslate">`showUserInodesUsage`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Show end user inode usage|
-|<span class="notranslate">`uiSettings`</span>|<span class="notranslate">`hideLVEUserStat`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Hide LVE end user usage statistic|
-|<span class="notranslate">`uiSettings`</span>|<span class="notranslate">`hidePHPextensions`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Hide PHP extension selection|
-|<span class="notranslate">`uiSettings`</span>|<span class="notranslate">`hidePythonApp`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Hide Python App in web-interface|
-|<span class="notranslate">`uiSettings`</span>|<span class="notranslate">`hideRubyApp`</span>|<span class="notranslate">`true`</span>/<span class="notranslate">`false`</span>| Hide Ruby App in web-interface|
-
-**Examples**
-
-* display Python/Ruby Selector in User UI (cPanel)
-
-<div class="notranslate">
-
-```
-$ cloudlinux-config set --json --data '{"options":{"uiSettings":{"hideRubyApp":false, "hidePythonApp":false}}}'
-```
-</div>
-
-
-### cl-quota
-
-* [General provisions](./#general-provisions)
-* [Setting limits and integration with panel packages](./#setting-limits-and-integration-with-panel-packages)
-* [Limits inheritance](./#limits-inheritance)
-* [Caching and synchronizing the limits](./#caching-and-synchronizing-the-limits)
-* [Quotas DB file](./#quotas-db-file)
-* [CLI options/examples](./#cli-options-examples)
-
-<span class="notranslate">**cl-quota**</span> utility is designed to control <span class="notranslate">disk quotas</span> and provides:
-
-* Setting user and package limits.
-
-* Integration with panel packages.
-
-* Limits synchronization.
-
-* Automatic inheritance of panel limits to all appropriate users.
-
-::: tip Note
-cl-quota works only with inodes soft/hard limits (soft/hard file limits in setquota/repquota utilities terminology). Block limits are not controlled by cl-quota utility in any way, they are not taken into account and do not affect the data that they issue. That is why hereinafter it is the inode limits that are implied by the word “limits”.
-:::
-
-#### General provisions
-
-
-<span class="notranslate"> cl-quota </span> utility never sets/reads limits directly in the system, it uses standard <span class="notranslate"> setquota/repquota </span> utilities included into the <span class="notranslate"> quota </span> package for this purpose.
-
-<span class="notranslate"> cl-quota </span>  **will not work** in the following cases:
-
-* <span class="notranslate"> setquota/repquota </span> are missing or working incorrectly;
-
-* the <span class="notranslate"> quotas </span> are not configured in the system.
-
-<span class="notranslate"> cl-quota </span> only **performs** the minimal diagnostics of <span class="notranslate"> quota </span> related errors:
-
-* verifies the availability of <span class="notranslate"> setquota/repquota </span> utilities on the disk;
-
-* verifies if <span class="notranslate"> quotas </span> are activated for a specified user (with a separate command), see below.
-
-<span class="notranslate"> quota </span> package which contains the required <span class="notranslate"> setquota/repquota </span> utilities, is not included in <span class="notranslate"> lvemanager </span> package dependencies by default, and <span class="notranslate"> quotas </span> activation is a long process which sometimes depends on the panel used, therefore, all the steps on <span class="notranslate"> quotas </span> configuration and activation must be carried out by yourself, <span class="notranslate"> cl-quota </span> does not perform these actions.
-
-Error messages sent back to the console are extremely rare, to receive error messages use the command:
-<div class="notranslate">
-
-```
-# cat /var/log/messages | grep clquota
-```
-</div>
-
-::: tip Note
-You should not set soft limit higher than hard limit. cl-quota does not control it in any way, but in some cases, the system can ban such limits combination and they won’t be set or will be set in some other way.
-:::
-
-#### Setting limits and integration with panel packages
-
-
-<span class="notranslate"> cl-quota </span> utility allows setting <span class="notranslate"> inodes </span> limits for users of the system.
-
-<span class="notranslate"> cl-quota </span> integrates with the panels through a standard mechanism - [Integrating LVE Limits with Packages](/shared/lve_manager/#detecting-and-working-with-cloudlinux).
-
-Panel users are such users whose UIDs are issued by the above panel integration mechanism. The list of panel packages and the information on the user's affiliation to a particular package is obtained from there as well.
-
-When installing/reading the limits, the following peculiarities are applied:
-
-1. When displaying <span class="notranslate"> quotas, cl-quota </span> displays information about the limits of all users - system and panel. No filter applied. The actual limit values are always displayed.
-
-2. Limit value -1 for the packages (see below) is displayed as dash (-).
-
-3. If <span class="notranslate"> cl-quota </span> is running under <span class="notranslate"> root </span>, it will display the limits returned by <span class="notranslate"> repquota </span> utility with no changes. If it is running under some other user, it will return data from a special cache file, see [Quotas cache and synchronization](/shared/lve_manager/#caching-and-synchronizing-the-limits).
-
-4. Limits setting only works for panel users, for all other users limits are not set (the command is ignored). The only exception - <span class="notranslate"> uid=0 </span> . The limits are never set for the <span class="notranslate"> root </span> user <span class="notranslate"> (uid=0) </span> , but they are stored in <span class="notranslate"> DB </span> file and are used by inheritance mechanism. See [Limits Inheritance](./#limits-inheritance).
-
-5. <span class="notranslate"> Hard </span> and <span class="notranslate"> soft </span> limits are completely independent, <span class="notranslate"> сl-quota </span> does not apply any interdependencies to them. Setting only one of them (any) is acceptable, the other one will not change.
-
-<span class="notranslate"> cl-quota </span> utility also supports package limits set/read. When setting package limits, they are set for all users of a particular package except for those whose limits are set individually. See also [Limits Inheritance](./#limits-inheritance).
-
-If package name is <span class="notranslate"> "default" </span> , then setting limits command is ignored. If some limits are set for this package in <span class="notranslate"> DB </span> file, they will be displayed along with all the others, but will not be used. See also [Limits inheritance](./#limits-inheritance).
-
-Any positive numbers are allowed as limit values. <span class="notranslate"> cl-quota </span> neither controls nor changes these values except the following cases:
-
-negative values are taken modulo;
-
-fractional values are converted to integers by discarding the fractional part;
-
-if the transferred value can not be turned into a number (for example, 67wg76), it is completely ignored and the limit is not set at all.
-
-Then these values are transmitted directly to <span class="notranslate"> setquota </span> system utility for the actual setting of the limits.
-
-Thus <span class="notranslate"> cl-quota </span> has two limit values, which are processed in a special way:
-
-* 0: Means inheritance of the limit from the package where the user is located, or from <span class="notranslate"> uid=0 </span> . See also [Limits inheritance](./#limits-inheritance) for more detailed information.
-
-* -1: The real limits are set to 0, which means no limits, literally "unlimited". This is legit both for individual and for package limits. Limit value -1 is stored in the database as well as any other but is never displayed.
-
-You can use the words <span class="notranslate"> “default” </span> and <span class="notranslate"> “unlimited” </span> instead of 0 and -1 respectively, they are fully interchangeable. See also [DB File](/shared/lve_manager/#quotas-db-file) and [CLI Options](/shared/lve_manager/#cli-options-examples).
-
-Individual and package limits are always saved in DB file. Limits from there are used when synchronizing <span class="notranslate"> quotas </span> . Please find more details in [Limits Synchronization](/shared/lve_manager/#caching-and-synchronizing-the-limits).
-
-Also, find detailed information on DB file itself in [Quotas DB File](/shared/lve_manager/#quotas-db-file) section.
-
-Utility options are described in [CLI Options](/shared/lve_manager/#cli-options-examples) section.
-
-#### Limits inheritance
-
-
-When setting package limits to the package users, the inheritance principle is applied. It means that:
-
-* If no individual limit is set to a user, then he inherits the limits of the package he belongs to.
-
-* If no limit is set to a package (=0), then the users inherit uid=0 limits.
-
-Limits of the package named <span class="notranslate"> “default” </span> (if found in the <span class="notranslate"> DB </span> file) will always be ignored and all the users of this package will get <span class="notranslate"> uid=0 </span> limits.
-
-
-#### Caching and synchronizing the limits
-
-
-Any user of the system (including panel users) is always created with limits equal to 0. To assign him the limits of the corresponding package, the synchronization process is used.
-
-During the synchronization, <span class="notranslate"> cl-quota </span> utility reads the database file and sets the limits from it to the users and packages specified therein.
-This mode is designed to set the correct limits for the new users and to restore them for the existing ones. When recovering, the current limits are neither read nor analyzed.
-
-Caching - is writing current limits to <span class="notranslate"> _/etc/container/cl-quotas.cache_ </span> file. If <span class="notranslate"> cl-quota </span> is not started from the <span class="notranslate"> root </span> for reading the current limits, then it returns data from this file.
-
-When installing <span class="notranslate"> LVE Manager </span> package, a special <span class="notranslate"> cron job </span> is installed, which performs synchronization and caching ( <span class="notranslate"> cl-quota -YC </span> ) every 5 minutes. Therefore, the correct limits will be set for the user within 5 minutes from the moment of its creation.
-
-Caching and synchronization can also be performed separately, see ["CLI Options"](/shared/lve_manager/#cli-options-examples) section.
-
-To disable this feature add to the config file _/etc/sysconfig/cloudlinux_.
-
-
-#### Quotas DB file
-
-
-All <span class="notranslate"> cl-quota </span> limits settings are stored in along with the <span class="notranslate"> UID </span> or the name of the package the limit was set for.
-
-When saving the limits to a file, the following rules are applied:
-
-* If a limit value is non-integer or non-numeric, then the rules from <span class="notranslate"> "Setting limits and integrating with panel packages" </span> section are applied. The assigned value is saved to the file.
-
-* Limits are always saved in pairs, no matter if only one limit was set or both. The pair looks as follows: <span class="notranslate"> soft_limit:hard_limit </span> .
-
-* The values 0 and -1, when having a predetermined meaning, are saved as is without any transformations.
-
-* The words <span class="notranslate"> “default” </span> and <span class="notranslate"> “unlimited” </span> are saved as 0 and -1 respectively.
-
-* If both limits for a user/package were set as 0, then such user/package is not saved in the file, and if it was previously there - it will be removed. Therefore, if a user/package is not mentioned in the file, then all its limits are inherited. See [Limits Inheritance](./#limits-inheritance) section.
-
-The lists of panel users, packages, and user-package correspondence are not saved anywhere, this information is always subtracted from the panel.
-
-Example:
-<div class="notranslate">
-
-```
-/etc/container/cl-quotas.dat
-[users]
-0 = 1000:2000
-500 = -1:-1
-958 = 0:20000
-[packages]
-pack1 = 5000:-1
-```
-</div>
-It follows that:
-
-* uid=0 limits are set to 1000:2000 - all users in the default package will obtain these limits.
-
-* Both limits are set as unlimited for a user with uid=500, which means that its real limits will always be 0:0. The package limits do not affect this user.
-
-* <span class="notranslate"> Soft </span> limit of the user with uid=958 is inherited (0 means inheritance), his <span class="notranslate"> hard </span> limit is set to 20000 and it will not depend on the package limits or uid=0 limits.
-
-* Limits 5000:-1 are set for pack1 package, therefore its real limits are: <span class="notranslate"> soft_limit=5000 </span> and <span class="notranslate"> hard_limit=0 </span> (unlimited).
-
-* The users of <span class="notranslate"> pack1 </span> package will get <span class="notranslate"> pack1 </span> limits (5000:-1), the users of all the rest of the packages will get the limits of uid=0 because no limits are set for them. Exceptions: uid=500 and 958. uid=500 has both limits set individually, and uid=958 inherits only <span class="notranslate"> soft </span> limits.
-
-#### CLI options/examples
-
-
-<span class="notranslate"> cl-quotа </span> utility has the following command line options:
-<div class="notranslate">
-
-```
--u | --user                  : specifies the user
--U | --user-id              : specifies the user ID
--S | --soft-limit            : sets the soft limit for a user. Pass 0 or 'default' to set package default limit. Pass -1 or 'unlimited' to cancel limit
--H | --hard-limit            : sets the hard limit for a user. Pass 0 or 'default' to set package default limit. Pass -1 or 'unlimited' to cancel limit
--V | --csv                  : returns data as comma separated values
--p | --package              : specifies a package to set or get limits
--P | --package-limits        : prints package limits
--a | --all-package-limits : prints all package limits (including packages without limits)
--Y | --sync                  : synchronizes packages and users limits with the database
--C | --cache-content        : cache quota data to a file the database
--F | --force                : save user quotas even when they are equal to defaults
-       --check                : check if quotas is enabled/activated/suported; if disabled show diagnostic information; using with --user or --user-id options
-```
-</div>
-
-<span class="notranslate"> **--user** </span> and <span class="notranslate"> **--user-id** </span> options are designed to specify user whose limits are required to be set or displayed. <span class="notranslate"> --user </span> specifies user name, <span class="notranslate"> --user-id - uid </span> . It is acceptable to specify one or another.
-
-<span class="notranslate"> **--package** </span> - specifies package name.
-
-<span class="notranslate"> **--soft-limit** ,  **--hard-limit** </span> - specify <span class="notranslate"> soft </span> and <span class="notranslate"> hard </span> limits values respectively. It is acceptable to use words <span class="notranslate"> “default” </span> or <span class="notranslate"> “unlimited” </span> as limit value.
-
-<span class="notranslate"> **--csv** </span> - displays limits in <span class="notranslate"> csv </span> format (instead of data formatted in the table).
-
-<span class="notranslate"> **--package-limits** </span> - displaying the limits of the packages created by the panel admin.
-
-<span class="notranslate"> **--all-package-limits**   </span> - displaying the limits of all the packages, including the ones created by the resellers and packages with no users.
-
-<span class="notranslate"> **--sync** </span> - synchronizes users <span class="notranslate"> quotas </span> and packages with the database.
-
-<span class="notranslate"> **--cache-contents** </span> - performs <span class="notranslate"> quotas </span> caching.
-
-<span class="notranslate"> **--force** </span> - saving user <span class="notranslate"> quotas </span> even if they are equal to the current.
-
-<span class="notranslate"> **--check**   </span> - performs diagnostics for a specified user. Can be used only when a user is specified (along with <span class="notranslate"> --user / --user-id </span> ).
-
-_Examples:_
-
-1. Reading current user limits:
-
-<div class="notranslate">
-
-```
-# cl-quota
-# cl-quota --csv
-```
-</div>
-
-2. Reading current package limits:
-
-<div class="notranslate">
-
-```
-# cl-quota --package-limits
-# cl-quota --all-package-limits
-# cl-quota --package-limits --csv
-# cl-quota --all-package-limits --csv
-```
-</div>
-
-3. Specifying limits for a user:
-
-<div class="notranslate">
-
-```
-# cl-quota --user-id=500 --soft-limit=0 --hard-limit=0
-# cl-quota --user-id=500 --soft-limit=unlimited
-# cl-quota --user-id=500 --soft-limit=0 --hard-limit=-1
-# cl-quota --user-id=958 --hard-limit=20000 --soft-limit=0 --force
-```
-</div>
-
-4. Specifying limits for a package:
-
-<div class="notranslate">
-
-```
-# cl-quota --package pack1 --hard-limit=-1 --soft-limit=5000
-# cl-quota --package pack1 --hard-limit=10000
-# cl-quota --package pack1 --soft-limit=default
-```
-</div>
-
-5. User diagnostics (with example output):
-
-<div class="notranslate">
-
-```
-# cl-quota --user-id=500 --check
-Quota disabled for user id 500 (home directory /home/cltest1); quotaon: Mountpoint (or device) / not found or has no quota enabled.
-```
-</div>
-
-6. Synchronizing <span class="notranslate"> quotas with caching (executed in cron): </span>
-
-<div class="notranslate">
-
-```
-# cl-quota -YC
-```
-</div>
-
-
-### cloudlinux-limits
-
-* [Usage](./#usage-3)
-* [Commands](./#commands)
-* [Options](./#options)
-* [Examples](./#examples-5)
-
-<span class="notranslate">`cloudlinux-limits`</span> is an alternative to `lvectl` CLI tool for LVE management. <span class="notranslate">`cloudlinux-limits`</span> utility allows you to get/set any CloudLinux OS Shared limits.
-
-#### Usage:
-
-<div class="notranslate">
-
-```
-cloudlinux-limits command [options] [options]
-```
-</div>
-
-#### Commands
-
-| | |
-|-|-|
-|<span class="notranslate">`set`</span>|set parameters for <span class="notranslate">LVE/username/reseller</span>|
-|<span class="notranslate">`get`</span> |get information about <span class="notranslate">LVE/username/reseller</span>|
-
-#### Options
-
-| | |
-|-|-|
-|<span class="notranslate">`--json`</span>|return data in JSON format|
-|<span class="notranslate">`--lve-id <int>`</span>|Display record only for that LVE ID|
-|<span class="notranslate">`--username <str>`</span>|Execute command only for that specific user|
-|<span class="notranslate">`--reseller-name <str>`</span>|Execute command only for that specific reseller|
-|<span class="notranslate">`--reseller-id <int>`</span>|Execute command only for that specific reseller ID|
-|<span class="notranslate">`--all`</span>|Execute command for all resellers|
-|<span class="notranslate">`--for-reseller <str>`</span>|Use a supplied reseller for get/set data|
-|<span class="notranslate">`--domain <str>`</span>|Show data only for that specific domain|
-|<span class="notranslate">`--limits <keys>`</span>|Available keys: <span class="notranslate">`speed`</span>, <span class="notranslate">`nproc`</span>, <span class="notranslate">`pmem`</span>, <span class="notranslate">`vmem`</span>, <span class="notranslate">`maxEntryProcs`</span>, <span class="notranslate">`io`</span>, <span class="notranslate">`iops`</span>, <span class="notranslate">`mysql-gov`</span>, <span class="notranslate">`mysql-cpu`</span>, <span class="notranslate">`mysql-io`</span>, <span class="notranslate">`cagefs`</span>, <span class="notranslate">`inodes`</span>|
-|<span class="notranslate">`--human-readable-numbers`</span>|Return <span class="notranslate">`PMEM`</span> and <span class="notranslate">`VMEM`</span> limits in KBytes, MBytes or GBytes|
-|<span class="notranslate">`--unlimited`</span>|Set all limits to unlimited|
-|<span class="notranslate">`--default [limits]`</span>|Reset limits to the Package defaults. List of comma-separated limits to reset them to default or <span class="notranslate">`all`</span>|
-|<span class="notranslate">`--mysql-gov <ignored\|watched>`</span>|Monitor or ignore by MySQL Governor|
-|<span class="notranslate">`--cagefs <enabled\|disabled>`</span>|Enable or disable CageFS for a user|
-|<span class="notranslate">`--mysql-restrict <[un]restricted>`</span>|Set user restrict status with dbctl (<span class="notranslate">`restricted`</span> or <span class="notranslate">`unrestricted`</span>)|
-|<span class="notranslate">`--mysql-unrestrict-all`</span>|Unrestrict all restricted users with dbctl|
-|<span class="notranslate">`--speed <str>`</span>|Limit CPU usage for LVE | LVP|
-|<span class="notranslate">`--pmem <str>`</span>|Limit physical memory usage for applications inside LVE | LVP|
-|<span class="notranslate">`--vmem <str>`</span>|Limit virtual memory for applications inside LVE|
-|<span class="notranslate">`--nproc <str>`</span>|Limit number of processes for LVE | LVP|
-|<span class="notranslate">`--io <str>`</span>|Define IO limits for LVE | LVP (KB/s)|
-|<span class="notranslate">`--iops <str>`</span>|Limit IO per second for LVE | LVP|
-|<span class="notranslate">`--maxEntryProcs <str>`</span>|Limit number of entry processes for LVE | LVP|
-|<span class="notranslate">`--mysql-cpu <int>`</span>|Set MySQL Governor CPU limit (pct)|
-|<span class="notranslate">`--mysql-io <int>`</span>|Set MySQL Governor IO limit (read + write MB/s)|
-|<span class="notranslate">`--inodes <N,M>`</span>|Set inode limits. `N` - soft, `M` - hard|
-|<span class="notranslate">`--save-all-parameters`</span>|Save all parameters even if they match with default settings|
-|<span class="notranslate">`-h`</span>, <span class="notranslate">`--help`</span>|Show this help message and exit|
-|<span class="notranslate">`disable-reseller-limits`</span> |disable <span class="notranslate">Reseller Limits</span> for a reseller/all resellers|
-|<span class="notranslate">`enable-reseller-limits`</span> |enable <span class="notranslate">Reseller Limits</span> for a reseller/all resellers|
-
-<span class="notranslate">`cloudlinux-limits`</span> allows you to manage limits and states for the next types of users:
-
-* users, created by admin; 
-* users, created by resellers with reseller limits enabled (see [documentation](/shared/cloudlinux_os_components/#reseller-limits))
-* users, created by resellers without reseller limits enabled. 
-
-For resellers' users with reseller limits enabled admin should use the <span class="notranslate">`--for-reseller`</span> option.
-
-#### Examples
-
-1. Get limits
-
-     * Return data in JSON format
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits get --json 
-    ```
-    </div>
-
-    * Get data for the user <span class="notranslate">`user1`</span> in JSON format
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits get --username user1  --json 
-    ```
-    </div>
-
-    * Get data for the reseller <span class="notranslate">`res1`</span> in JSON format
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits get --reseller-name res1 --json
-    ```
-    </div>
-
-    * Get data for the domain <span class="notranslate">`myapp.com`</span> in JSON format
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits get --domain myapp.com --json
-    ```
-    </div>
-
-    * Get data about entry processes and virtual memory for LVE for the user <span class="notranslate">`myapp`</span> in JSON format
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits get --username myapp --limits=maxEntryProcs,vmem  --json
-    ```
-    </div>
-
-2. Change CageFS status
-    :::warning Note
-    * CageFS should be installed and initialized
-    * <span class="notranslate">`--cagefs`</span> option is not compatible with the <span class="notranslate">`--reseller-name`</span>, <span class="notranslate">`--for-reseller`</span> options
-    :::
-
-    * Enable CageFS for the user <span class="notranslate">`user1`</span>.
-    :::tip Note
-    This example is suitable for any type of user.
-    :::
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --username user1 --cagefs enable --json
-    ```
-    </div>
-
-3. Change <span class="notranslate">MySQL Governor</span> status <span class="notranslate">`ignored`|`watched`, `restricted`|`unrestricted`</span>
-    :::warning Note
-    * <span class="notranslate">MySQL Governor</span> should be installed; see [documentation](/shared/cloudlinux_os_components/#installation-and-update-3)
-    * <span class="notranslate">`--mysql-gov`</span> and <span class="notranslate">`--mysql-restrict`</span> options are not compatible with the <span class="notranslate">`--reseller-name`</span>, <span class="notranslate">`--for-reseller`</span> options
-    :::
-
-    :::tip Note
-    These examples are suitable for any type of user.
-    :::
-
-    * Change <span class="notranslate">MySQL Governor</span> status to <span class="notranslate">`ignored`</span> for the user <span class="notranslate">`user1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --username user1 --mysql-gov ignored --json
-    ```
-    </div>
-
-
-    * Change <span class="notranslate">MySQL Governor</span> status to <span class="notranslate">`restricted`</span> for the user <span class="notranslate">`user1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --username user1 --mysql-restrict restricted --json
-    ```
-    </div>
-
-4. Change limits for a user
-    :::warning Note
-    *  <span class="notranslat">MySQL Governor</span> should be [installed](/shared/cloudlinux_os_components/#installation-and-update-3) to change the <span class="notranslate">`mysql-cpu`</span> and <span class="notranslate">`mysql-io`</span> options
-    *  <span class="notranslate">`--inodes`</span>, <span class="notranslate">`--mysql-cpu`</span>, and <span class="notranslate">`--mysql-io`</span> options are not compatible with the <span class="notranslate">`--for-reseller`</span> and <span class="notranslate">`--reseller-name`</span> options
-    *  <span class="notranslate">`--username`</span> option is suitable for any type of user
-    :::
-
-    * Set <span class="notranslate">`speed`</span>, <span class="notranslate">`io`</span>, <span class="notranslate">`nproc`</span>, <span class="notranslate">`pmem`</span>, <span class="notranslate">`vmem`</span>, <span class="notranslate">`iops`</span>, <span class="notranslate">`inodes`</span>, <span class="notranslate">`maxEntryProcs`</span>, <span class="notranslate">`mysql-cpu`</span>, and <span class="notranslate">`mysql-io`</span> limits for the LVE ID 1000
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --lve-id 1000 --speed 78% --io 8090 --nproc 900 --pmem 300 --vmem 800 --iops 900 --inodes 9090,8989 --maxEntryProcs 90 --mysql-cpu 30 --mysql-io 500 --json 
-    ```
-    </div>
-
-    * Set <span class="notranslate">`speed`</span>, <span class="notranslate">`io`</span>, <span class="notranslate">`nproc`</span>, <span class="notranslate">`pmem`</span>, <span class="notranslate">`vmem`</span>, <span class="notranslate">`iops`</span>, and <span class="notranslate">`maxEntryProcs`</span> limits for the reseller <span class="notranslate">`res1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --reseller-name res1 --speed 78% --io 8090 --nproc 900 --pmem 300 --vmem 800 --iops 900 --maxEntryProcs 90 --json
-    ```
-    </div>
-
-5. Set limits for a <span class="notranslate">`DEFAULT`</span> user 
-   :::tip Note
-   A <span class="notranslate">`default`</span> user is used to set some preselected limits for just created user\package.
-   :::
- 
-    * Set limits for the admin's <span class="notranslate">`default`</span> user
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --lve-id DEFAULT --speed 78% --io 8090 --nproc 900 --pmem 300 --vmem 800 --iops 900 --inodes 9090,8989 --maxEntryProcs 90 --mysql-cpu 30 --mysql-io 500 --json
-    ```
-    </div>
-
-
-    * Set limits for the reseller's (with reseller limits enabled) <span class="notranslate">`default`</span> user
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --lve-id DEFAULT --speed 48% --io 8990 --nproc 900 --pmem 300 --vmem 800 --iops 900 --maxEntryProcs 90 --for-reseller res1 --json
-    ```
-    </div>
-
-6. Reset all limits to default values (package limits) for a user
-
-    * Reset all limits to default values for the user <span class="notranslate">`user1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --username user1 --default all --json
-    ```
-    </div>
-
-    * Reset all limits to default values for the reseller's <span class="notranslate">`res1`</span> user <span class="notranslate">`r1user1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --username r1user1 --default all --for-reseller res1 --json
-    ```
-    </div>
-
-7. Reset all limits to unlimited values for a user 
-
-    * Reset all limits to <span class="notranslate">`unlimited`</span> for the user <span class="notranslate">`user1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --username user1 --unlimited --json
-    ```
-    </div>
-
-    * Reset all limits to <span class="notranslate">`unlimited`</span> for the reseller's <span class="notranslate">`res1`</span> user <span class="notranslate">`r1user1`</span> 
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --username r1user1 --unlimited --for-reseller res1 --json
-    ```
-    </div>
-
-8. Enable reseller limits
-
-    * Enable reseller limits for the reseller <span class="notranslate">`res1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits enable-reseller-limits --reseller-name res1 --json
-    ```
-    </div>
-
-
-9. Get info about a reseller
-    
-    * Get info about the reseller <span class="notranslate">`res1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits get --reseller-name res1 --json 
-    ```
-    </div>
-
-
-10. Change reseller limits
-    
-    * Change <span class="notranslate">`speed`</span> limit for the reseller <span class="notranslate">`res1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --reseller-name res1 --speed 78% --json
-    ```
-    </div>
-
-    * Reset all limits to <span class="notranslate">`unlimited`</span> for the reseller <span class="notranslate">`res1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --reseller-name res1 --unlimited --json
-    ```
-    </div>
-
-    * Reset all limits to <span class="notranslate">`default`</span> for the reseller <span class="notranslate">`res1`</span>
-
-    <div class="notranslate">
-
-    ```
-    cloudlinux-limits set --reseller-name res1 --default all --json
-    ```
-    </div>
diff --git a/docs/shared/command-line_tools/images/1111_2.png b/docs/shared/command-line_tools/images/1111_2.png
deleted file mode 100644
index 534dfd34a..000000000
Binary files a/docs/shared/command-line_tools/images/1111_2.png and /dev/null differ
diff --git a/docs/shared/control_panel_integration/.DS_Store b/docs/shared/control_panel_integration/.DS_Store
deleted file mode 100644
index df4074ac3..000000000
Binary files a/docs/shared/control_panel_integration/.DS_Store and /dev/null differ
diff --git a/docs/shared/control_panel_integration/README.md b/docs/shared/control_panel_integration/README.md
deleted file mode 100644
index abb5a1525..000000000
--- a/docs/shared/control_panel_integration/README.md
+++ /dev/null
@@ -1,2226 +0,0 @@
-
-
-# Control Panel Integration
-
-* [Introduction](./#introduction)
-* [New API in a nutshell](./#new-api-in-a-nutshell)
-* [General](./#general)
-* [Control panel API integration](./#control-panel-api-integration)
-* [Control panel hooks integration](./#control-panel-hooks-integration)
-* [Web UI integration](./#web-ui-integration)
-* [PHP-based integration of WEB UI with the control panel](./#php-based-integration-of-web-ui-with-the-control-panel)
-* [How to integrate CageFS with a control panel](./#how-to-integrate-cagefs-with-a-control-panel)
-* [Integrating CloudLinux OS Shared and Admin PHP Selector](./#integrating-cloudlinux-os-shared-php-selector)
-* [Integration of Apache modules in control panels](./#integration-of-apache-modules-in-control-panels)
-* [MySQL Governor](./#mysql-governor)
-* [CloudLinux OS Shared and Admin LVE and CageFS patches](./#cloudlinux-os-shared-lve-and-cagefs-patches)
-* [Hardened PHP](./#hardened-php)
-* [CloudLinux OS kernel set-up](./#cloudlinux-os-shared-kernel-set-up)
-* [How to integrate X-Ray with a conrol panel](./#how-to-integrate-x-ray-with-a-control-panel)
-
-:::tip Note
-We encourage you to create a pull request with your feedback at the bottom of the page.
-:::
-
-### Introduction
-
-There are several possible ways of integration with CloudLinux OS OS:
-
-* **Complete integration using new API** - exactly what is described in this document. This way a panel vendor will get all CloudLinux OS features (current and future) and maximum support. It’s recommended.
-* **Manually Ad-hoc** - using low-level CLI utils. It is not recommended. It’s kind of “do it yourself way” - a control panel might use low-level utils like `lvectl` to set limits directly to a raw LVE by ID and control everything (including edge-cases) in its own code. There are many downsides of such approach e.g. only a small number of features can be implemented this way and any new changes in CloudLinux OS will require more and more updates to the control panel code, and can possibly even introduce bugs, etc. And although this way looks easier at first, it will become more and more difficult to maintain it over time.
-* **Old API for CloudLinux OS limits** - described [here](/shared/deprecated/#package-integration). It’s deprecated. It still works but will not get any updates.
-
-### New API in a nutshell
-
-The goal of the new API is to shift all complexity for controlling CloudLinux OS components from a control panel to the CloudLinux OS web UI and utils.
-Most of the integration is done within a few steps:
-1. A control panel vendor implements 7 simple scripts (any language) and specifies them in a special config file. All Cloudlinux OS components will look up and call them with some arguments to get all needed information from the control panel (e.g. users list, their hosting plans, domains, etc.)
-2. Control panel should call hooks described below in a response to Admin/Users actions (e.g. changing end-user’s domain, creating new end-user, etc.). CloudLinux OS utils will do their stuff to reconfigure itself according to these events. There is no need to worry about what exactly they do because it will be related only to CloudLinux OS components and control panel will not be affected.
-3. Configure the control panel and CageFS to work together by changing some configs.
-4. Optionally embed CloudLinux OS web UI into the control panel. It is highly recommended because it does all you may need. You can use PHP scripts to embed SPA application to the specially prepared pages (with your menus) for LVE Manager and Selectors.
-
-
-## General
-
-* [Example of the integration config](./#example-of-the-integration-config)
-
-To integrate CloudLinux OS into a control panel, you should implement the following interfaces required by the CloudLinux OS utilities:
-* [CPAPI](./#control-panel-api-integration) — a small scripts/files-type interface to get the required information from the control panel
-* [CP Hooks Integration](./#control-panel-hooks-integration) — a set of the CloudLinux OS scripts/commands. Control panel calls this set in response to its internal events
-* [Web UI Integration(optional)](./#web-ui-integration) — various configuration parameters and scripts to embed interface SPA application into the control panel native interface. Optional, if CLI is enough
-* [CageFS Integration](./#how-to-integrate-cagefs-with-a-control-panel) — some changes may be required in the config files to work and integrate with CageFS as well as additional support from a control panel
-* [CloudLinux OS kernel set-up](./#cloudlinux-os-shared-kernel-set-up)
-
-Files related to integration (integration config file, CPAPI integration scripts and all their dependencies) as well as parent directories to place them (e.g. <span class="notranslate">`/opt/cpvendor/etc/`</span>) should be delivered/managed by the control panel vendor. They don't exist by default and should be created to activate integration mechanism. Most likely, they should be bundled with the control panel or installed with some CloudLinux OS support module (if CloudLinux OS Shared support is not built-in).
-
-Configuration related to integration should be placed in a valid INI file (further “integration config file”):
-
-<div class="notranslate">
-
-```
--rw-r--r-- root root /opt/cpvendor/etc/integration.ini
-```
-</div>
-
-All users (and in CageFS too) should have read access to this file because some CPAPI methods have to work from end-user too. CloudLinux OS components only read this file and never write/create it.
-
-The control panel vendor decides where to put CPAPI scripts (CloudLinux OS utils will read path to scripts from the integration file) but we recommend to put them into <span class="notranslate">`/opt/cpvendor/bin/`</span> (should be created by the vendor first) because <span class="notranslate">`/opt/*`</span> is mounted to CageFS by default and the standard location will save some time during possible support incidents.
-
-We recommend to deliver a set of scripts for CPAPI and integration file as a separate RPM package. This can greatly simplify support for vendors as they will be able to release any updates and compatibility fixes separately from the panel updates and use dependencies/conflicts management provided by a package manager.
-
-Assumed that this package contains a list of paths to the integration scripts (or to the one script if it deals with all `cpapi` commands). You can specify default script arguments in the <span class="notranslate">`integration_scripts`</span> section, additional arguments like <span class="notranslate">`filter`</span> and <span class="notranslate">`--name`</span> will be automatically added after the defined ones.
-
-### Versioning
-We provide information about the current version of the API in the form of rpm package capability (`Provides public_cp_vendors_api = VERSION`) added to our packages. While improving integration API, we may add new features and scripts and change `VERSION`.
-
-That means that you can add `Conficts: public_cp_vendors_api < VERSION` to the spec of rpm package with your integration scripts and that will force yum to search and update our packages in order to support `public_cp_vendors_api` that your scripts require. It also means that you can protect your Control Panel from situations when your scripts and our API version are incompatible.
-
-### Changelog
-::: tip Changelog
-
-Version 1.2
-
-Summary: ability to integrate X-Ray added.
-1. `Provides public_cp_vendors_api = 1.2` added to rpm spec of alt-python27-cllib package (see [versioning](./#versioning)).
-2. [`domains` integration script](./#domains) updated: new optional flag `--with-php` added. This option is required for X-Ray integration only.
-4. New X-Ray feature added to `supported_cl_features` of [`panel_info` script](./#panel-info). Now the X-Ray UI tab is hidden by default until the panel makes the support clear by setting the `xray` feature to `true`.
-
-Version 1.1
-1. Added `Provides public_cp_vendors_api = 1.1` to rpm spec of alt-python27-cllib package (see [versioning](./#versioning)).
-2. New `supported_cl_features` key added to [`panel_info` script](./#panel-info). You can specify CloudLinux OS features that you want to show in LVE Manager, Wizard, Dashboard and other UI and hide others.
-:::
-
-
-#### Example of the integration config
-
-<div class="notranslate">
-
-```
-[integration_scripts]
-
-panel_info = /opt/cpvendor/bin/panel_info
-db_info = /opt/cpvendor/bin/db_info
-packages = /opt/cpvendor/bin/packages
-users = /opt/cpvendor/bin/users
-domains = /opt/cpvendor/bin/vendor_integration_script domains
-resellers = /opt/cpvendor/bin/vendor_integration_script resellers
-admins = /opt/cpvendor/bin/vendor_integration_script admins
-
-
-
-[lvemanager_config]
-ui_user_info = /panel/path/ui_user_info.sh
-base_path = /panel/path/lvemanager
-
-run_service = 1
-service_port = 9000
-use_ssl = 1
-ssl_cert = /path/to/domain_srv.crt
-ssl_key = /path/to/domain_srv.key
-```
-</div>
-
-## Control panel API integration
-
-To integrate CPAPI, set the paths to the scripts in the integration file in the <span class="notranslate">`integration_scripts`</span> section (see example above).
-
-You can use different scripts for different CPAPI methods or only one script and call it with different arguments. The script is any executable file written in any programming language, that returns a valid JSON file of the specified format in response to arguments it is expected to be called.
-
-### Integration scripts requirements
-
-* [Legend](./#legend)
-
-* By default, integration scripts should run only from UNIX user with the same credentials as LVE Manager is run, unless otherwise stated in the script description.
-* Some scripts are run from both root and end-user. If the script is run from end-user it should return information related to this user only, filtering the irrelevant data for security/isolation purposes or return <span class="notranslate">`PermissionDenied`</span> if script is not intended to be run as this user at all.
-* Scripts run from the end-user should also work from inside CageFS. You can find details on how to implement this [here](./#working-with-cpapi-cagefs)
-
-:::warning IMPORTANT
-When a user employs CloudLinux utilities through a user interface, it is important to take note that integration scripts may be executed prior to entering CageFS. Certain interpreters, such as Python, have the [capability](https://docs.python.org/3/library/site.html#site.USER_SITE) to execute arbitrary code during interpreter startup before the main code is executed. This presents a potential security risk for servers that utilize Python as an interpreter for executing integration scripts, as users may gain an ability to run their code outside of CageFS. This could lead to unauthorized access and exposure of sensitive system files.
-To prevent such incidents, it is crucial to ensure that your integration scripts do not possess similar capabilities or to take necessary measures to eliminate such risks prior to utilization.
-In case of any uncertainty, it is recommended to seek assistance from CloudLinux support.
-:::
-
-#### Legend
-* Necessity <span class="notranslate">`always`</span> means it’s required nearly by all CloudLinux OS code and should be implemented no matter what features you are interested in. Other methods might not be implemented and this will affect only some CloudLinux OS Shared features leaving others to work fine.
-* <span class="notranslate">`All UNIX users`</span> means any Linux system account (from <span class="notranslate">`/etc/passwd`</span>) that is able to execute CloudLinux OS utilities directly or indirectly.
-
-
-| | | | |
-|-|-|-|-|
-|Script name|Necessity|Accessed by|Must work inside CageFS also|
-|<span class="notranslate">[panel_info](./#panel-info)</span>|Always|All UNIX users|+|
-|<span class="notranslate">[db_info](./#db-info)</span>|Only for LVE-Stats, otherwise optional|admins (UNIX users)|-|
-|<span class="notranslate">[packages](./#packages)</span>|For limits functionality|admins (UNIX users)|-|
-|<span class="notranslate">[users](./#users)</span>|Always|admins (UNIX users)|-|
-|<span class="notranslate">[domains](./#domains)</span>|Selectors, some UI features/X-Ray|All UNIX users/administrators (UNIX users)|+/-|
-|<span class="notranslate">[resellers](./#resellers)</span>|Always|admins (UNIX users)|-|
-|<span class="notranslate">[admins](./#admins)</span>|Always|admins (UNIX users)|-|
-
-### Working with CPAPI & CageFS
-
-Some integration scripts required to be called not only from root but from end-user. Developing such scripts, you should keep in mind that CageFS is an optional component, so anything that works in CageFS must also work even if CageFS is disabled for a particular user or not installed at all.
-
-This means that you should do one of the following:
-* all required information (code, all its dependencies, all called binaries, all configs/files/caches it reads) should be available for a user (even in CageFS)
-* you should use CageFS's [proxyexec](/shared/cloudlinux_os_components/#executing-by-proxy) mechanism to make your script run itself in a real system but with user privileges
-* use both configured sudo and proxyexec if your script needs privilege escalation (e.g. to read some credentials or other files that shouldn't be disclosed to end-user). SUDO mechanism is needed for cases when CageFS is not installed or disabled for a user and proxyexec is needed when a user executes script in CageFS
-
-When using SUDO you should create the wrapper that will call your script using SUDO command, like this:
-
-<div class="notranslate">
-
-```
-[root]# cat /opt/cpvendor/bin/domains
-#!/usr/bin/env bash
-sudo opt/cpvendor/bin/domains_real
-```
-</div>
-
-Of course, you must configure <span class="notranslate">`/etc/sudoers`</span> to make it work without a password prompt and with enough security.
-
-:::tip Note
-Your script will run with <span class="notranslate">`root`</span> permissions, but limited with user's LVE. 
-You may see the following warning:
-```
-***************************************************************************
-*                                                                         *
-*             !!!!  WARNING: YOU ARE INSIDE LVE !!!!                      *
-*IF YOU RESTART ANY SERVICES STABILITY OF YOUR SYSTEM WILL BE COMPROMIZED *
-*        CHANGE YOUR USER'S GROUP TO wheel to safely use SU/SUDO          *
-*                             MORE INFO:                                  *
-*      https://docs.cloudlinux.com/index.html?lve_pam_module.html          *
-*                                                                         *
-***************************************************************************
-```
-This is the default behavior so users cannot overload a server with a lot of API requests.
-:::
-
-:::warning Warning
-When using sudo, you must configure sudo with <span class="notranslate">NOSETENV</span> tag in order to forbid the user to override <span class="notranslate">`SUDO_USER`</span> environment or use other secure methods (e.g. <span class="notranslate">`logname`</span>) to get the user who ran the command through sudo.
-:::
-
-As an alternative for sudo you can use regular SUID scripts, but we strongly recommend using SUDO because of builtin logging of permissions escalation.
-
-You can find more details on how to configure your scripts in CageFS properly here:
-
-* [Configuration. General information](/shared/cloudlinux_os_components/#configuration-2)
-* [How to integrate CageFS with any control panel](./#how-to-integrate-cagefs-with-a-control-panel)
-
-### Expected scripts responses
-
-* [Internal errors](./#internal-errors)
-* [Restricted access](./#restricted-access)
-* [Error in arguments](./#error-in-arguments)
-* [Nonexistent entities](./#nonexistent-entities)
-
-Any integration script should return a valid UTF-8 encoded JSON.
-
-There are two expected formats of integration script responses. In case of success, the <span class="notranslate">`metadata.result`</span> field is <span class="notranslate">`ok`</span> and the data field contains data according to the specification of the specific integration script. Return code is `0`.
-
-<div class="notranslate">
-
-```
-{
-  "data": object or array,
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-In case of error, the output should be one of the following: Internal errors, Restricted access, Error in arguments,  Nonexistent entities. 
-
-#### Internal errors
-
-When data is temporarily unavailable due to internal errors in the integration script (database unavailable, file access problems, etc), the output is as follows:
-
-<div class="notranslate">
-
-```
-{
-  "data": null,
-  "metadata": {
-    "result": "InternalAPIError",
-    "message": "API is restarting, try again later"
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|message|False|Error message for an administrator printed by CloudLinux OS utility|
-
-#### Restricted access
-
-When data is unavailable due to restricted access of a user that called the script, the output is as follows: 
-
-<div class="notranslate">
-
-```
-{
-  "data": null,
-  "metadata": {
-    "result": "PermissionDenied",
-    "message": "Only sudoers can view this section."
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|message|False|Error message for an administrator printed by CloudLinux OS utility|
-
-
-:::tip Info
-This kind of error should be used in the case when a user is requesting data that he does not have access to.
-E.g., when a user named <span class="notranslate">`user1`</span> is running <span class="notranslate">`domains`</span> script with the argument <span class="notranslate">`--owner=user2`</span>, you must return this error.
-:::
-
-#### Error in arguments
-
-When wrong arguments are passed to the utility, for example:
-* unknown argument
-* unknown fields in `--fields`
-
-The output is as follows:
-
-<div class="notranslate">
-
-```
-{
-  "data": null,
-  "metadata": {
-    "result": "BadRequest",
-    "message": "Unknown field ‘nosuchfield’"
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|message|False|Error message for an administrator printed by CloudLinux OS utility|
-
-
-#### Nonexistent entities
-
-When during data filtering the target entity doesn't exist in the control panel, the output is as follows:
-
-<div class="notranslate">
-
-```
-{
-  "data": null,
-  "metadata": {
-    "result": "NotFound",
-    "message": "No such user `unix_user_name`"
-  }
-}
-```
-</div>
-
-:::tip Info
-This kind of error should be used only in the filtering case. In case when some script is called without filtering arguments and the control panel has no entities to return (e.g. domains) you should return an empty list/object.
-:::
-
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|message|False|Error message for an administrator printed by CloudLinux OS utility|
-
-### The list of the integration scripts
-
-* [panel_info](./#panel-info)
-* [db_info](./#db-info)
-* [packages](./#packages)
-* [users](./#users)
-* [domains](./#domains)
-* [resellers](./#resellers)
-* [admins](./#admins)
-
-#### <span class="notranslate">panel_info</span>
-
-Returns the information about the control panel in the specified format.
-
-**Usage example**
-
-<div class="notranslate">
-
-```
-/scripts/panel_info
-```
-</div>
-
-**Output example**
-
-<div class="notranslate">
-
-```
-{
-	"data": {
-		"name": "SomeCoolWebPanel",
-		"version": "1.0.1",
-		"user_login_url": "https://{domain}:1111/",
-		"supported_cl_features": {
-			"php_selector": true,
-			"ruby_selector": true,
-			"python_selector": true,
-			"nodejs_selector": false,
-			"mod_lsapi": true,
-			"mysql_governor": true,
-			"cagefs": true,
-			"reseller_limits": true,
-			"xray": false
-		}
-	},
-	"metadata": {
-		"result": "ok"
-	}
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|name|False|Control panel name|
-|<span class="notranslate">version</span>|False|Control panel version|
-|<span class="notranslate">user_login_url_template</span>|False|URL template for a user entering to control panel. Used in the lve-stats default templates reporting that user is exceeding server load. You can use the following placeholders in the template: <span class="notranslate">`{domain}`</span>. CloudLinux OS utility automatically replaces  placeholders to the real values. **Example**:<span class="notranslate">`“user_login_url_template”: “https://{domain}:2087/login”`</span> CloudLinux OS Shared utility automatically replaces <span class="notranslate">`{domain}`</span>, and the link will look like <span class="notranslate">`https://domain.zone:2087/login`</span>|
-|<span class="notranslate">supported_cl_features</span>|False|Available since API v1.1 (see [versioning](./#versioning)) <br> Object that describes which CloudLinux OS features are supported by your control panel and which must be hidden in web interface.<br>When `supported_cl_features` is omitted, we assume that all modules are supported. When `supported_cl_features` is empty object, all modules will be hidden. All features that are not listed in `supported_cl_features` are considered to be disabled. <br>We recommend you to always return object as we can add more features in the future and you will be able to test them and make them visible after checking and tuning.<br><br>Features that you currently can disable:<ul><li><a href="/shared/cloudlinux_os_components/#php-selector">php_selector</a></li>    <li><a href="/shared/cloudlinux_os_components/#ruby-selector">ruby_selector</a></li>    <li><a href="/shared/cloudlinux_os_components/#python-selector">python_selector</a></li>    <li><a href="/shared/cloudlinux_os_components/#node-js-selector">nodejs_selector</a></li>    <li><a href="/shared/cloudlinux_os_components/#apache-mod-lsapi-pro">mod_lsapi</a></li>    <li><a href="/shared/cloudlinux_os_components/#mysql-governor">mysql_governor</a></li>    <li><a href="/shared/cloudlinux_os_components/#cagefs">cagefs</a></li>    <li><a href="/shared/cloudlinux_os_components/#reseller-limits">reseller_limits</a></li></ul> Available since API v1.2 (see [versioning](./#versioning))  <ul><li><a href="/cloudlinux-os-plus/#x-ray">xray</a> (CloudLinuxOS+ license only)</li></ul>|
-
-
-
-#### <span class="notranslate">db_info</span>
-
-Returns the information about databases that are available to the control panel users and are managed by the control panel.
-
-:::warning WARNING!
-For now, CloudLinux OS supports control panels only with MySQL databases.
-:::
-
-Integration script is optional, when there is no script, [lve-stats won’t collect SQL snapshots](cloudlinux_os_components/#plugins).
-
-**Usage example**
-
-<div class="notranslate">
-
-```
-/scripts/db_info
-```
-</div>
-
-**Output**
-
-<div class="notranslate">
-
-```
-{
-  "data": {
-    "mysql": {
-      "access": {
-        "login": "root",
-        "password": "Cphxo6z",
-        "host": "localhost",
-        "port": 3306
-      },
-      "mapping": {
-        "unix_user_name": [
-          "db_user_name1",
-          "db_user_name2"
-        ],
-        "unix_user_name2": [
-          "db_user_name3",
-          "db_user_name4"
-        ]
-      }
-    }
-  },
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|<span class="notranslate">mysql</span>|True|Data section for the MySQL database. Used in lve-stats; if there is no data, snapshots of  SQL queries won’t be collected.|
-|<span class="notranslate">mysql.access.login</span>|False|User name to enter to the database to view a list of SQL queries that are executing at the moment.|
-|<span class="notranslate">mysql.access.password</span>|False|Open password.|
-|<span class="notranslate">mysql.access.host</span>|False|Host to access the database.|
-|<span class="notranslate">mysql.access.port</span>|False|Port to access the database.|
-|<span class="notranslate">mysql.mapping</span>|False|A mapping file where the key is the name of a UNIX user managed by the control panel and the value is a list of the corresponding database users.|
-
-
-#### <span class="notranslate">packages</span>
-
-The package is an abstraction that represents a group of users that have the same default limits. 
-
-**Usage example**
-
-<div class="notranslate">
-
-```
-/scripts/packages [--owner=<owner>]
-```
-</div>
-
-**Arguments**
-
-| | | |
-|-|-|-|
-|Key|Required|Description|
-|<span class="notranslate">--owner, -o</span>|False|Set the name of the packages' owner to output.|
-
-**Output example**
-
-<div class="notranslate">
-
-```
-{
-  "data": [
-    {
-      "name": "package",
-      "owner": "root"
-    },
-    {
-      "name": "package",
-      "owner": "admin"
-    },
-    {
-      "name": "package",
-      "owner": "reseller"
-    }  
-  ],
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Data description**
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|<span class="notranslate">name</span>|False|Package name|
-|<span class="notranslate">owner</span>|False|Package’s owner name. The owner can be the administrator or reseller.|
-
-#### <span class="notranslate">users</span>
-
-Returns information about UNIX users, created and managed by the control panel. You will be able to manage the limits of these users via LVE Manager.
-
-If a reseller user or administrator user has a corresponding UNIX-user in the system, this user should be included into this list.
-
-**Usage example**
-
-<div class="notranslate">
-
-```
-/scripts/users [--owner=<string> | (--package-name=<string> & --package-owner=<string>) | --username=<string> | --unix-id=<int>] [--fields=id,username,package,...]
-```
-</div>
-
-**Arguments**
-
-| | | |
-|-|-|-|
-|Key|Required|Description|
-|<span class="notranslate">--owner, -o</span>|False|Used for filtering. When the argument is set, output only this owner users.|
-|<span class="notranslate">--package-name</span>|False|Used for filtering. Set the name of the package which users to output. Used ONLY in pair with <span class="notranslate">`--package-owner`</span>.|
-|<span class="notranslate">--package-owner</span>|False|Used in pair with package.name. Set the owner of the specified package.|
-|<span class="notranslate">--username</span>|False|Used for filtering. When the parameter is set, output the information about this UNIX user only.|
-|<span class="notranslate">--unix-id</span>|False|Used for filtering. When the parameter is set, output the information about this UNIX user only.|
-|<span class="notranslate">--fields</span>|False|List fields to output. Fields are divided with a comma; when there is no key, output all available fields.<br><br>The key is used to reduce the data size for the large systems. You can ignore the key and always output the full set of data. Note that in this case, CloudLinux OS will work more slowly.|
-
-**Output example**
-
-<div class="notranslate">
-
-```
-{
-  "data": [
-    {
-      "id": 1000,
-      "username": "ins5yo3",
-      "owner": "root",
-      "domain": "ins5yo3.com",
-      "package": {
-        "name": "package", 
-        "owner": "root"
-      },
-      "email": "ins5yo3@ins5yo3.com",
-      "locale_code": "EN_us"
-    },
-    {
-      "id": 1001,
-      "username": "ins5yo4",
-      "owner": "root",
-      "domain": "ins5yo4.com",
-      "package": {
-        "name": "package", 
-        "owner": "root"
-      },
-      "email": "ins5yo4@ins5yo4.com",
-      "locale_code": "EN_us"
-    }  
-  ],
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Example to output specific data fields**
-
-<div class="notranslate">
-
-```
-/scripts/users --fields=id,email
-```
-</div>
-
-**Output**
-
-<div class="notranslate">
-
-```
-{
-  "data": [
-    {
-      "id": 1000,
-      "email": "ins5yo3@ins5yo3.com"
-    },
-    {
-      "id": 1001,
-      "email": "ins5yo3@ins5yo3.com"
-    }  
-  ],
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|<span class="notranslate">id</span>|False|ID of the UNIX account in the system.|
-|<span class="notranslate">username</span>|False|The name of the UNIX account in the system.|
-|<span class="notranslate">owner</span>|False|The name of the account owner in the control panel. The owner can be an administrator (in this case he should be included in the <span class="notranslate">`admins()`</span> output) or a reseller (in this case he should be included in the <span class="notranslate">`resellers()`</span> output).|
-|<span class="notranslate">locale_code</span>|True|The control panel locale selected by a user (the values are according to ISO 639-1). Used when sending lve-stats emails. If not selected, EN_us used.|
-|<span class="notranslate">email</span>|True|Email to send lve-stats notifications about hitting limits. If there is no email, should return null.|
-|<span class="notranslate">domain</span>|False|Main domain of user (used to display in LVE Manager UI and create applications in Selectors)|
-|<span class="notranslate">package</span>|True|Information about the package to which a user belongs to. If the user doesn’t belong to any package, should return null.|
-|<span class="notranslate">package.name</span>|False|The name of the package to which a user belongs to.|
-|<span class="notranslate">package.owner</span>|False|The owner of the package to which a user belongs to (reseller or administrator).|
-
-
-#### <span class="notranslate">domains</span>
-
-Returns key-value object, where a key is a domain (or subdomain) and a value is a key-value object contains the owner name (UNIX users), the path to the site root specified in the HTTP server config, and the domain status (main or alternative).
-
-X-Ray support is available since API v1.2 (see [versioning](./#versioning)). In order to enable X-Ray support, the value for each domain should include php configuration. Full X-Ray integration documentation can be found [here](./#how-to-integrate-x-ray-with-a-control-panel)
-
-::: warning WARNING
-To make Python/Node.js/Ruby/PHP Selector workable, this script should be executed with user access and inside CageFS. When running this script as the user, you must limit answer scope to values, allowed for the user to view.
-E.g. if the control panel has two domains: <span class="notranslate">`user1.com`</span> and <span class="notranslate">`user2.com`</span>, and <span class="notranslate">`user1`</span> Unix user owns only one of them, you should not return second one even if <span class="notranslate">`--name`</span> argument is not set explicitly.
-:::
-
-**Usage example**
-
-<div class="notranslate">
-
-```
-/scripts/domains ([--owner=<unix_user>] | [--name=<name>] | [--with-php])
-```
-</div>
-
-**Arguments**
-
-| | | |
-|-|-|-|
-|Key|Required|Description|
-|<span class="notranslate">--owner, -o</span>|False|Used for filtering output; set a name of the owner whose domains to print|
-|<span class="notranslate">--name, -n</span>|False|Used for filtering output; set a name of the domain, to display information about it|
-|<span class="notranslate">--with-php</span>|False (X-Ray support only)|Used for extending output with PHP configuration, required by X-Ray (available since API v1.2, see [versioning](./#versioning))|
-
-**Output example**
-
-<div class="notranslate">
-
-```
-{
-  "data": {
-    "domain.com": {
-      "owner": "username",
-      "document_root": "/home/username/public_html/",
-      "is_main": true
-    },
-    "subdomain.domain.com": {
-      "owner": "username",
-      "document_root": "/home/username/public_html/subdomain/",
-      "is_main": false  
-    }
-  },
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Output example with optional flag --with-php (X-Ray support only)**
-
-<div class="notranslate">
-
-```
-{
-  "data": {
-    "domain.com": {
-      "owner": "username",
-      "document_root": "/home/username/public_html/",
-      "is_main": true,
-      "php": {
-        "version": "56",
-        "ini_path": "/opt/alt/php56/link/conf",
-        "is_native": true
-       }
-    },
-    "subdomain.domain.com": {
-      "owner": "username",
-      "document_root": "/home/username/public_html/subdomain/",
-      "is_main": false,
-      "php": {
-        "version": "72",
-        "ini_path": "/opt/alt/php72/link/conf",
-        "fpm": "alt-php72-fpm"
-      }
-    }
-  },
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|Dictionary (named array) key|False|Domain name (subdomains are acceptable)|
-|<span class="notranslate">owner</span>|False|UNIX user who is a domain owner|
-|<span class="notranslate">document_root</span>|False|Absolute path to the site root directory|
-|<span class="notranslate">is_main</span>|False|Is the domain the main domain for a user|
-|<span class="notranslate">Nested dictionary (named array) php</span>|True (False if X-Ray support is enabled)|PHP configuration for a domain, required by X-Ray, see details [here](./#how-to-integrate-x-ray-with-a-control-panel) (available since API v1.2, see [versioning](./#versioning))|
-
-#### <span class="notranslate">resellers</span>
-
-This script returns the information about resellers. A reseller is an entity that can own users in the control panel. Resellers do not obligatory have UNIX account with the same name. It can exist only as an account in the control panel.
-
-**Usage example**
-
-<div class="notranslate">
-
-```
-/scripts/resellers ([--id=<id>] | [--name=<name>])
-```
-</div>
-
-**Arguments**
-
-| | | |
-|-|-|-|
-|Key|Required|Description|
-|<span class="notranslate">--id</span>|False|Used for filtering output; set a reseller ID to output information about it|
-|<span class="notranslate">--name, -n</span>|False|Used for filtering output; set a reseller name to output information about it|
-
-**Output example**
-
-<div class="notranslate">
-
-```
-{
-  "data": [
-    {
-      "name": "reseller",
-      "locale_code": "EN_us",
-      "email": "reseller@domain.zone",
-      "id": 10001   
-    }
-  ],
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|<span class="notranslate">name</span>|False|Reseller name in the control panel; unique on the server, should not be the same as administrators names|
-|<span class="notranslate">locale_code</span>|True|Control panel locale selected by a reseller (according to ISO 639-1). Default is EN_us.|
-|<span class="notranslate">id</span>|True|Unique reseller ID in the system. From <span class="notranslate">`MAX_UID`</span> to <span class="notranslate">`0xFFFFFFFF`</span>, where <span class="notranslate">`MAX_UID`</span> is a value from <span class="notranslate">`/etc/login.defs`</span>. Required for the second level reseller limits. Set null if not needed.|
-|<span class="notranslate">email</span>|True|Reseller email to send notifications from lve-stats about reseller’s users limits hitting. If no email, output null.|
-
-
-#### <span class="notranslate">admins</span>
-
-Gives information about panel’s administrators, output information about all panel’s administrators who:
-* could be (or actually are) the owners of the users, listed in users() 
-* could be (or actually are) the owners of the packages, listed in packages()
-* has UNIX users with the rights to run LVE Manager UI
-
-**Usage example**
-
-<div class="notranslate">
-
-```
-/scripts/admins ([--name=<string>] | [--is-main=<true|false>])
-```
-</div>
-
-**Arguments**
-
-| | | |
-|-|-|-|
-|Key|Required|Description|
-|<span class="notranslate">--name, -n</span>|False|Used for filtering; set the administrator name to output information about it|
-|<span class="notranslate">--is-main, -m</span>|False|Used for filtering output to get the main and the alternative administrators of the control panel|
-
-**Output example**
-
-<div class="notranslate">
-
-```
-{
-  "data": [
-    {
-      "name": "admin1",
-      "unix_user": "admin",
-      "locale_code": "EN_us",
-      "email": "admin1@domain.zone",
-      "is_main": true
-    },
-	{
-      "name": "admin2",
-      "unix_user": "admin",
-      "locale_code": "Ru_ru",
-      "email": "admin2@domain.zone",
-      "is_main": false
-    },
-  ],
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Nullable|Description|
-|<span class="notranslate">name</span>|False|The name of the administrator in the control panel; unique, should not be the same as resellers’ names|
-|<span class="notranslate">unix_user</span>|True|The name of the UNIX account in the system; it corresponds to the administrator account in the control panel. If an administrator already has UNIX account, it is automatically added to the special group on the server using hook, so this administrator can enter to the LVE Manager and manage users limits. If an administrator doesn't have UNIX account and he can only own users, output null.|
-|<span class="notranslate">locale_code</span>|True|Control panel locale selected by the administrator (values are according to  ISO 639-1). Default is EN_us.|
-|<span class="notranslate">email</span>|True|Email to send notifications from lve-stats. If email is not set in the control panel, output null.|
-|<span class="notranslate">is_main</span>|False|Assumed that one of the control panel’s administrators is the main administrator. That particular administrator will receive server status notifications from lve-stats to his email.|
-
-
-## Control panel hooks integration
-
-For proper CloudLinux OS operation, you should implement a hooks mechanism. Hooks are scripts that control panel invokes with the exact arguments at a specific time. The control panel is responsible for executing these scripts as a system root user.
-
-### Managing administrators
-
-::: tip Note
-Some control panels allow to create several administrator accounts, each of which has a system user who is used to work with the LVE Manager plugin. In this case, all administrator accounts should be added to the sudoers and clsupergid. To do so, you can use our user-friendly interface.
-:::
-
-::: tip Note
-If you don’t have several administrator accounts (or LVE Manager plugin always runs from the root) you don’t need to implement these hooks.
-:::
-
-After creating a new administrator, the control panel should call the following command:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/post_modify_admin.py create --username admin
-```
-</div>
-
-| | | |
-|-|-|-|
-|Argument |Default |Description |
-|<span class="notranslate">--name, -n</span>| - |The name of the newly created administrator account |
-
-After removing the administrator, the following command should be called by the control panel:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/post_modify_admin.py delete --name admin
-```
-</div>
-
-| | | |
-|-|-|-|
-|Argument |Default |Description |
-|<span class="notranslate">--name, -n</span>| - |The name of removed UNIX user of administrator |
-
-### Managing users
-
-To manage user limits properly, CloudLinux OS utilities need information about the following control panel events.
-
-After creating a new user, the following script should be called:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/post_modify_user.py create --username user --owner owner
-```
-</div>
-
-| | | | |
-|-|-|-|-|
-|Argument |Mandatory |Default |Description |
-|<span class="notranslate">--username, -u</span>|Yes | - |The name of administrator account to be removed |
-|<span class="notranslate">--owner, -o</span>|Yes | - |A name of the account owner. The owner can be an administrator or a reseller |
-
-After renaming a user (when a user name or a home directory was changed), the following script should be called:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/post_modify_user.py modify -u user --new-username newuser
-```
-</div>
-
-| | | | |
-|-|-|-|-|
-|Argument |Mandatory |Default |Description |
-|<span class="notranslate">-u ,--username</span>|Yes | - |The user name to be changed |
-|<span class="notranslate">--new-username</span>|Yes | - |A new user name |
-
-After moving the user to the new owner, the following command should be run:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/post_modify_user.py modify -u user --new-owner new_owner
-```
-</div>
-
-| | | |
-|-|-|-|
-|Argument |Default |Description |
-|<span class="notranslate">--new-owner</span>| - |The name of the new account owner. The owner can be an administrator or a reseller. |
-|<span class="notranslate">--username, -u</span>| - |The account name (should be the same as the name in /etc/passwd). |
-
-Before removing a user, the following command should be run:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/pre_modify_user.py delete --username user
-```
-</div>
-
-| | | |
-|-|-|-|
-|Argument |Default |Description |
-|<span class="notranslate">--username, -u</span>| - |The name of the account to be removed (should be the same as the name in /etc/passwd). |
-
-After removing the user, you should call the following command:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/post_modify_user.py delete --username user
-```
-</div>
-
-| | | |
-|-|-|-|
-|Argument |Default |Description |
-|<span class="notranslate">--username, -u</span>| - |The name of the removed account |
-
-### Managing domains
-
-We expect that all domain-related data is stored inside the user's home directory. If your control panel stores domain-related data outside the user's home directory and that data can potentially change, please contact us so we can add support for this to our integration mechanism.
-
-After renaming a domain (or any equivalent domain removal operation with transfer of all data to another domain), the following command should be run:
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/post_modify_domain.py modify -u user --domain old_domain --new-domain new_domain [--include-subdomains]
-```
-</div>
-
-| | | | |
-|-|-|-|-|
-|Argument |Mandatory |Default |Description |
-|<span class="notranslate">--username, -u</span>|Yes | - |The name of the new domain owner (should be the same as the name in /etc/passwd). |
-|<span class="notranslate">--domain</span>|Yes | - |The domain name to be changed |
-|<span class="notranslate">--new-domain</span>|Yes | - |A new domain name |
-|<span class="notranslate">--include-subdomains</span>|No |False |If set, all subdomains are renamed as well, i.e. when renaming domain.com → domain.eu the corresponding subdomain will be renamed as well test.domain.com → test.domain.eu.|
-
-## Web UI integration
-
-### ui-user-info script
-
-* [Known issues for GUI unification](./#known-issues-for-gui-unification)
-
-This script should return information about the current user opening Web UI. It is only used in UI part of the LVE Manager and utilities.
-
-* Input value (first positional argument) — the current authentication token, passed on plugin open (for example, <span class="notranslate">`open.php?token=hash`</span>)
-* Expected data format
-
-<div class="notranslate">
-
-```
-{
-    "userName": "user1",
-    "userId": 1000,
-    "userType": "user",
-    "baseUri": "/user2/lvemanager/",
-    "assetsUri": "/userdata/assets/lvemanager",
-    "lang": "en",
-    "userDomain": "current-user-domain.com"
-}
-```
-</div>
-
-* **<span class="notranslate">userName</span>** is used in queries to Selectors.
-* **<span class="notranslate">userId</span>** - system user ID if exist.
-* **<span class="notranslate">userType</span>** - can have the following values: “user”, “reseller”, “admin”
-* **<span class="notranslate">lang</span>** - used to identify a current locale in the user interface (‘en’, ‘ru’ - two-character language code)
-* **<span class="notranslate">userDomain</span>** - a current user domain. It can be the default domain or any selected user domain. Used to display in Selector. For example, in DirectAdmin the control panel opens only if a domain is selected — the selected domain is set. In cPanel, a domain is not selected — the default domain is set. If a domain is absent —  leave empty.
-* **<span class="notranslate">baseUri</span>** - URI where LVE Manager files are available on the webserver
-* **<span class="notranslate">assetsUri</span>** - URI where assets files for LVE Manager are available on the webserver
-
-The following configuration file parameters are used to determine the location of the plugin UI part.
-
-* **<span class="notranslate">base_path</span>** - the path to copy file assets to make them available from the control panel. Optional if <span class="notranslate">`/usr/share/l.v.e-manager/commons`</span> and <span class="notranslate">`/usr/share/l.v.e-manager/panelless-version/lvemanager`</span> are available from the control panel and the paths to this directory in web server are set.
-Files are copied or replaced by <span class="notranslate">`yum update lvemanager`</span> command.
-* **<span class="notranslate">run_service</span>** - enable LVE Manager web server. If it is set to 1 when installing or updating LVE Manager, we enable and run the web server with LVE Manager
-* **<span class="notranslate">service_port</span>** - a port used for running a web server for access LVE Manager without the control panel
-* **<span class="notranslate">use_ssl</span>** - use HTTPS for LVE Manager web server.
-* **<span class="notranslate">ssl_cert</span>** - path to domain ssl cert file
-* **<span class="notranslate">ssl_key</span>** - path to domain ssl cert key file
-#### Known issues for GUI unification
-
-:::warning Known issues for GUI unification
-
-A user can run standalone services to provide access to LVE Manager without UI integration. These services use system authentication for users and the integration script <span class="notranslate">`ui-user-info script`</span> to get information about the current user.
-
-These services have some issues:
-
-* The ability to download log files from <span class="notranslate">CloudLinux OS Wizard</span> is missed
-* Incorrect layout for some UI forms (Node.js Selector/Python Selector)
-* Some errors are not displayed
-
-These issues will be fixed in the near future.
-:::
-
-## PHP-based integration of WEB UI with the control panel
-
-The first use case:
-
-<div class="notranslate">
-
-```
-require_once('lvemanager/widget.php');
-```
-</div>
-
-This script defines the type of user and displays icons to open plugins included in LVE Manager.
-You can customize your styles by copying the file content and setting your control panel styles.
-In this case, all LVE Manager plugins will be opened in a new window.
-
-The second use case:
-
-Embedding the specific plugin into the control panel page.
-
-<div class="notranslate">
-
-```
-<?php
-require_once('lvemanager/LveManager.php');
-$manager = new LveManager(‘<pluginName>’);
-$manager->setCSRFToken();
-?>
-<html><body>
-<?php
-echo $manager->insertPanel();
-?>
-</body></html>
-```
-</div>
-
-Pass the plugin name to the class constructor to initialize the plugin (user name will be defined).
-At the time of the insertPanel method invocation, the SPA application with the specified Selector will be embedded.
-	
-`vendor_php` (optional for PHP integration only) - a full path to the `vendor.php` file. This option allows the vendor to implement specific logic before initializing the plugin (for example drop permission).
-	
-Example:
-	
-```
-vendor_php = /opt/cpvendor/etc/vendor.php
-```
-
-Queries to the backend are created separately in the points (PHP files) which are located in the LVE Manager catalog.
-
-### UI with CageFS enabled
-
-LVE Manager scripts run outside of CageFS (on production systems). When calling API, LVE Manager scripts enter CageFS if needed (Node.js Selector, Python Selector). PHP Selector API does not work if the script is started inside CageFS and returns an error.
-
-As for Node.js Selector and Python Selector, they are supposed to be contained inside CageFS because end-users can start scripts from UI (npm run, pip install). That is the reason why they should run inside LVE.
-
-PHP Selector run outside of CageFS. When PHP Selector is called, it is not limited by LVE which allows an end-user whose web site is reaching its limits to use PHP Selector UI without problems.
-
-## How to integrate CageFS with a control panel
-
-CageFS documentation can be found here: [CageFS](/shared/cloudlinux_os_components/#cagefs)
-
-### CageFS MIN_UID  
-
-CageFS has MIN_UID setting. Users with UIDs < MIN_UID will not be limited by CageFS. This setting is configured based on UID_MIN setting from <span class="notranslate">`/etc/login.defs`</span> file by default. So, typically MIN_UID is 500 on CloudLinux OS 6 and 1000 on CloudLinux OS Shared 7.
-
-You can obtain current MIN_UID value by executing the following command:
-
-<div class="notranslate">
-
-```
-cagefsctl --get-min-uid
-```
-</div>
-
-You can set MIN_UID by executing the following command:
-
-<div class="notranslate">
-
-```
-cagefsctl --set-min-uid <value>
-```
-</div>
-
-For example, to set MIN_UID to 10000, you should execute the following command:
-
-<div class="notranslate">
-
-```
-cagefsctl --set-min-uid 10000
-```
-</div>
-
-### PAM configuration for CageFS
-
-CageFS is enabled for su, ssh and cron services by default.
-[PAM Configuration](/shared/cloudlinux_os_components/#pam-configuration)
-
-Also you can enable CageFS for any service that uses PAM.
-[LVE PAM Module](/shared/cloudlinux_os_components/#lve-pam-module)
-
-:::tip
-It is safe to enable an interactive shell (e.g. /bin/bash) for users when CageFS is enabled.
-:::
-
-### Integrating CageFS with Apache
-
-You should apply CloudLinux OS Shared patches to integrate CageFS with Apache. Details can be found here:
-[Integration of Apache modules in Control Panels](./#integration-of-apache-modules-in-control-panels)
-
-Note that it may be required to execute <span class="notranslate">`cagefsctl --force-update`</span> after Apache rebuild in order to update CageFS.
-
-### Running commands inside CageFS
-
-You may want to execute commands inside CageFS for security reasons. To do so, you can execute a command inside CageFS in the following way:
-
-<div class="notranslate">
-
-```
-/bin/su -s /bin/bash -c “$COMMAND” - $USER
-/sbin/cagefs_enter_user $USER "$COMMAND"
-```
-</div>
-
-The commands above require root privileges. You can use the following command when running as a user:
-
-<div class="notranslate">
-
-```
-/bin/cagefs_enter "$COMMAND"
-```
-</div>
-
-### CageFS - temporary LVEs with lvectl options
-
-Starting from lve-wrappers 0.7.5-1, `cagefs_enter_user` accepts a subset of `lvectl` limit parameters as input. Using any of them will result in a creation of a temporary LVE with a unique ID. That LVE will have the provided limits set and will be destroyed after the given command is run.
-
-The following parameters are accepted: `--speed`, `--pmem`, `--vmem`, `--io`, `--iops`, `--nproc`, `--maxEntryProcs`.
-	
-<div class="notranslate">
-
-```
-cagefs_enter_user --pmem=512M --speed=70% <user> <command>
-```
-</div>
-
-Refer to [documentation on limits](/shared/limits/#understanding-limits) for more details on the provided parameters.
-
-:::tip Note
-Temporary LVE is destroyed after the process terminates unless the option `--no-fork` passed.
-:::
-
-### Updating CageFS skeleton
-
-Updating CageFS skeleton is required after update of the system RPM packages. It may be also required after update of hosting control panel itself.
-
-To update CageFS skeleton, execute the following command:
-
-<div class="notranslate">
-
-```
-cagefsctl --force-update
-```
-</div>
-
-CageFS RPM package installs a daily cron job that updates CageFS skeleton
-
-<div class="notranslate">
-
-```
-/etc/cron.d/cp-cagefs-cron
-```
-</div>
-
-You can set update period for CageFS skeleton in days using
-
-<div class="notranslate">
-
-```
-cagefsctl --set-update-period <days>
-```
-</div>
-
-### Setting up directories for PHP sessions
-
-Each user in CageFS has its own <span class="notranslate">`/tmp`</span> directory that is not visible for other users. PHP scripts save sessions in <span class="notranslate">`/tmp`</span> directory by default (when <span class="notranslate">`session.save_path`</span> directive is empty). However, you can set up a different location for PHP sessions specific to each PHP versions using CageFS per-user [mounts](/shared/cloudlinux_os_components/#mount-points) like it is done for alt-php. Simply add a line like below to <span class="notranslate">`/etc/cagefs/cagefs.mp`</span>
-
-<div class="notranslate">
-
-```
-@/opt/alt/php54/var/lib/php/session,700
-```
-</div>
-
-and then execute
-
-<div class="notranslate">
-
-```
-cagefsctl --remount-all
-```
-</div>
-
-to apply changes. After that, session files will be stored in <span class="notranslate">`/opt/alt/php54/var/lib/php/session`</span> inside user’s CageFS. In real file systems these files can be found inside `.cagefs` directory in user’s home directory. For above example, given that user’s home directory is <span class="notranslate">`/home/user`</span>, the files will reside in <span class="notranslate">`/home/user/.cagefs/opt/alt/php54/var/lib/php/session`</span> directory. TMP directory for the user will be located in <span class="notranslate">`/home/user/.cagefs/tmp`</span>. 
-Temporary files including php sessions in `/tmp` directories in CageFS are cleaned using `tmpwatch`. You can change the period of removing old temporary files or set up additional directories for cleaning according to the documentation: 
-[TMP directories](/shared/cloudlinux_os_components/#tmp-directories).
-
-Knowing the location where PHP sessions are stored (described above), you can also implement any custom script for cleaning PHP sessions. Remember to drop permissions (switch to the appropriate user) when removing the files (for example using sudo).
-
-### Creating new user account
-
-When user or admin account has been created, you should execute an appropriate hook script.
-More about CloudLinux OS Shared hooks subsystem: [Control Panel Hooks Integration](./#control-panel-hooks-integration)
-
-:::tip Note
-It is safe to enable an interactive shell (/bin/bash) for users when CageFS is enabled.
-:::
-
-:::warning IMPORTANT
-Execute the post hook described in the link above after the account has been created completely. When the account is being transferred to another server or restored from backup, all files in user’s home directory should be written/restored completely BEFORE executing the post hooks, including files in <span class="notranslate">`~/.cl.selector`</span> directory. This is required to setup/restore PHP Selector settings for the user correctly. If PHP Selector settings were not restored correctly, you can recreate them by executing
-
-<div class="notranslate">
-
-```
-rm -rf /var/cagefs/`/usr/sbin/cagefsctl --getprefix $username`/$username/etc/cl.selector
-rm -rf /var/cagefs/`/usr/sbin/cagefsctl --getprefix $username`/$username/etc/cl.php.d
-/usr/sbin/cagefsctl --force-update-etc "$username"
-```
-</div>
-:::
-
-:::warning IMPORTANT
-You should create <span class="notranslate">`/etc/cagefs/enable.duplicate.uids`</span> empty file when your control panel creates users with duplicate UIDs. It is required for CageFS to operate properly.
-:::
-
-### Modifying user accounts
-
-You should execute appropriate hook script when an account has been modified: [Control Panel Hooks Integration](./#control-panel-hooks-integration)
-
-### Removing user accounts
-
-CageFS has <span class="notranslate">`userdel`</span> hook script <span class="notranslate">`/usr/bin/userdel.cagefs`</span>, that is configured in <span class="notranslate">`/etc/login.defs`</span> file:
-
-<div class="notranslate">
-
-```
-USERDEL_CMD /usr/bin/userdel.cagefs
-```
-</div>
-
-This script performs all necessary actions when a user is being removed.
-Anyway, you should execute appropriate hook script when removing an account:
-[Control Panel Hooks Integration](./#control-panel-hooks-integration)
-
-### Excluding users from CageFS
-
-If you need to exclude some system users from CageFS that are specific to your control panel, you can do this by creating a file (any name would work) inside <span class="notranslate">`/etc/cagefs/exclude`</span> folder, and list users that you would like to exclude from CageFS in that file (each user in separate line). Then execute
-
-<div class="notranslate">
-
-```
-cagefsctl --user-status USER
-```
-</div>
-
-to apply changes and check that the command shows <span class="notranslate">_Disabled_</span>:
-[Excluding users](/shared/cloudlinux_os_components/#excluding-users)
-
-### How to add a file or a directory to CageFS
-
-* [Copy files and directories to CageFS](./#copy-files-and-directories-to-cagefs)
-* [Mount an entire directory with needed files to CageFS](./#mount-an-entire-directory-with-needed-files-to-cagefs)
-
-There are two major ways to add files and directories to CageFS:
-
-1. copy files and directories to CageFS
-2. mount an entire directory with needed files to CageFS
-
-
-#### Copy files and directories to CageFS
-
-:::warning Note
-Please do not modify any existing files in the <span class="notranslate">`/etc/cagefs/conf.d`</span> directory because they may be overwritten while updating CageFS package. You should create a new file with a unique name instead.
-:::
-
-In order to copy files and directories to CageFS, you can manually create a custom config file with *.cfg extension in <span class="notranslate">`/etc/cagefs/conf.d`</span> directory.
-
-Also, you can add files and directories that belong to `rpm` package to CageFS as follows:
-
-* execute <span class="notranslate">`cagefsctl --addrpm PACKAGE`</span> command
-* execute <span class="notranslate">`cagefsctl --force-update`</span> command to apply changes, i.e. to copy files and directories to the <span class="notranslate">`/usr/share/cagefs-skeleton`</span> directory.
-
-There is a daily cron job that copies new and removes unneeded files and directories, i.e. updates cagefs-skeleton.
-
-You should execute <span class="notranslate">`cagefsctl --force-update`</span> after each change of system configuration or after installing new software. Otherwise, CageFS will only be updated every 24 hours by a daily cron job.
-
-The benefits of this approach:
-* users in CageFS cannot modify files in the real file system (for example, in case of wrong permissions), because files in cagefs-skeleton are the copies of files from the real file system (and not mounted to CageFS)
-* you can copy specific _safe_ files from some directory from the real file system to CageFS, and not copy all files and not mount the entire directory.
-
-You can find more info [here](/shared/cloudlinux_os_components/#file-system-templates).
-
-#### Mount an entire directory with needed files to CageFS
-
-The second way to add files and directories to CageFS is to mount the entire directory containing the files to CageFS.
-
-This approach should be used for frequently updated files (like UNIX sockets) or for directories with a large number of files or with files that occupy much disk space.
-
-The benefits of this approach:
-* no delay between update of the file in the real file system and update of the file in CageFS; when file or directory is changed in the real file system they will be changed in CageFS immediately
-* data is mounted but not copied to CageFS, so this minimizes IO load while updating cagefs-skeleton
-
-Please make sure that the mounted directory does not contain sensitive data.
-
-You can mount a directory from the real system to CageFS via <span class="notranslate">`/etc/cagefs/cagefs.mp`</span> config file.
-
-To apply changes of mount points in <span class="notranslate">`/etc/cagefs/cagefs.mp`</span> file you should execute the following command:
-
-<div class="notranslate">
-
-```
-cagefsctl --remount-all
-```
-</div>
-
-You can find more info [here](/shared/cloudlinux_os_components/#mount-points).
-
-### Users' home directory
-
-CageFS mounts users' home directories to CageFS automatically. Usually, there is no need to configure anything. However, if your control panel uses a custom path to users' home directories (for example <span class="notranslate">`/home/$USER/data`</span> instead of <span class="notranslate">`/home/$USER`</span>), then it may be necessary to configure Base Home Directory setting:
-[Base Home Directory](/shared/cloudlinux_os_components/#base-home-directory)
-
-The modes of mounting users' home directories into CageFS are described here: 
-[Mounting user’s home directory inside CageFS](/shared/cloudlinux_os_components/#mounting-users-home-directory-inside-cagefs)
-
-### Excluding files from CageFS
-
-CageFS has a default set of files and directories that are visible to users inside CageFS. If you wish to exclude some of these files or directories from CageFS, you can do this as described below:
-[Excluding files](/shared/cloudlinux_os_components/#excluding-files) 
-
-### Executing commands outside CageFS via proxyexec
-
-SUID programs cannot run inside CageFS due to “nosuid” mounts. But you can give users in CageFS the ability to execute some specific commands outside CageFS via `proxyexec`.
-
-Typically, these commands are suid programs or other programs that cannot run inside CageFS (due to complex dependencies, for example). Examples of such programs are <span class="notranslate">`passwd`</span>, <span class="notranslate">`exim`</span> or <span class="notranslate">`sendmail`</span> commands.
-
-* Regular (not suid) commands will be executed as user inside the user’s LVE, but outside of CageFS.
-* SUID commands will be executed in the user’s LVE outside of CageFS with the effective UID set to the owner of the file being executed.
-
-You can find more details [here](/shared/cloudlinux_os_components/#executing-by-proxy).
-
-:::tip Note
-You should use this feature with caution because it gives users the ability to execute specified commands outside of CageFS. SUID commands are extremely dangerous because they are executed not as a user, but as an owner of the file (typically root). You should give users the ability to execute safe commands only. These commands should not have known vulnerabilities.
-You should check that users cannot use these commands to get sensitive information on a server. You can disable specific _dangerous_ options of programs executed via proxyexec (see below).
-:::
-
-
-### Filtering options for commands executed by proxyexec
-
-It is possible to disable specific *dangerous* options of programs executed via `proxyexec`. More details:
-[Filtering options for commands executed by proxyexec](/shared/cloudlinux_os_components/#filtering-options-for-commands-executed-by-proxyexec).
-
-## Integrating CloudLinux OS Shared PHP Selector
-
-Complete documentation for CloudLinux OS Shared PHP Selector can be found here:
-[PHP Selector](/shared/cloudlinux_os_components/#php-selector)
-
-:::tip Note
-CloudLinux OS Shared PHP Selector requires CageFS, so integration of CageFS must be completed before starting PHP Selector integration.
-:::
-
-If your control panel has some PHP version selector installed already, we suggest you not to enable CloudLinux OS Shared PHP Selector for your users, so they will not be confused by two multiple PHP Selectors. However, if you want to use CloudLinux OS Shared PHP Selector anyway, you can refer to the following article to configure loading of extensions for alt-php: [PHP extensions](/shared/cloudlinux_os_components/#php-extensions)
-
-For proper operation of CloudLinux OS Shared PHP Selector, you should specify location of native PHP binaries of your control panel in <span class="notranslate">`/etc/cl.selector/native.conf`</span>. Then execute
-
-<div class="notranslate">
-
-```
-cagefsctl --setup-cl-selector
-```
-</div>
-
-to apply changes.
-More details: [Native PHP Configuration](/shared/cloudlinux_os_components/#native-php-configuration)
-
-You can configure CloudLinux OS Shared PHP Selector to allow your customers to select any custom PHP version specific to your control panel. Here's how to do this:
-[Roll your own PHP](/shared/cloudlinux_os_components/#roll-your-own-php)
-
-Also, you can compile and add your own PHP extensions to CloudLinux OS Shared PHP Selector:
-[Compiling your own extensions](/shared/cloudlinux_os_components/#compiling-your-own-extensions) 
-
-## Integration of Apache modules in control panels
-
-We provide control panels with the ability to build their own Apache packages with modules such as alt-mod-passenger, mod_lsapi, mod_hostinglimits. This is due to the fact that control panels often have their own customly-built Apache. At the same time, the modules must be compiled with the version of Apache and APR libraries that control panels use. Therefore, if your control panel uses Apache that is provided by CloudLinux OS Shared, you can use native packages with modules. The following table represents the RPM package compatibility.
-
-
-RPMs of Apache provided by CloudLinux OS Shared, if you are using:
-
-| | |
-|-|-|
-|httpd |httpd24-httpd |
-|then install:<br>`mod_lsapi`<br>`mod_hostinglimits`<br>`alt-mod-passenger` |then install:<br>`httpd24-mod_lsapi`<br>`httpd24-mod_hostinglimits`<br>`httpd24-alt-mod-passenger`|
-
-
-If you use custom Apache, follow this documentation on how to build a package for your Apache.
-	
-:::tip Note
-The supported Apache versions are 2.2 and 2.4.
-:::
-
-### alt-mod-passenger
-
-
-1. Download alt-mod-passenger sources
-
-<div class="notranslate">
-
-```
-yumdownloader --source alt-mod-passenger --enablerepo=*source
-```
-</div>
-
-2. Rebuild the package with your Apache using rpmbuild
-
-<div class="notranslate">
-
-```
-rpmbuild --rebuild alt-mod-passenger-ver.cloudlinux.src.rpm
-```
-</div>
-
-3. Remove dependencies from `httpd`, `apr`, `apr-util` packages (`-devel` packages as well) and set your Apache packages instead, in the alt-mod-passenger spec file. Also, set the path for the directory where your Apache configs are located with <span class="notranslate">`__apache_conf_dir`</span> in the spec file.
-
-4. Rebuild the package again, this time you should get to the compilation stage. During compilation, you may encounter such errors:
-
-<div class="notranslate">
-
-```
-* Checking for Apache 2 development headers...
-     Found: no
-* Checking for Apache Portable Runtime (APR) development headers...
-     Found: no
-* Checking for Apache Portable Runtime Utility (APU) development headers...
-     Found: no
-```
-</div>
-
-In this case, you should specify the paths of your custom Apache in <span class="notranslate">`alt-mod-passenger-5.3.7/utils/passenger`</span> file. You need to add paths to binaries such as `httpd`, `apu-1-config`, and `apxs`. For example the following lines should be added before the <span class="notranslate">`passenger-install-apache2-module`</span> call:
-
-<div class="notranslate">
-
-```
-export APU_CONFIG="${PATH_IN_YOUR_SYSTEM}/bin/apu-1-config"
-export HTTPD="${PATH_IN_YOUR_SYSTEM}/sbin/httpd"
-export APXS2="${PATH_IN_YOUR_SYSTEM}/bin/apxs"
-```
-</div>
-
-5. Rebuild the package again, if everything is set correctly, there shouldn't be any problems.
-
-6. Install the module, check that it is successfully loaded into Apache.
-
-### mod_hostinglimits
-
-1. Download mod_hostinglimits sources
-
-<div class="notranslate">
-
-```
-yumdownloader --source mod_hostinglimits --enablerepo=*source
-```
-</div>
-
-2. Rebuild the package with your Apache using rpmbuild
-
-<div class="notranslate">
-
-```
-rpmbuild --rebuild mod_hostinglimits-ver.el7.cloudlinux.1.src.rpm
-```
-</div>
-
-3. Remove dependencies such as `httpd`, (`-devel` packages as well) and set your Apache packages instead, in the mod_hostinglimits spec file. Also, check the paths that lead to the <span class="notranslate">`modules`</span> or <span class="notranslate">`conf.d`</span> directories and change them if they are different on your system.
-
-4. Rebuild the package again, this time you should get to the compilation stage. During compilation, you may encounter the following errors:
-
-<div class="notranslate">
-
-```
--- Not Found Apache Bin Directory: APACHE2_2_HTTPD_BIN-NOTFOUND, APACHE2_2_HTTPD_MODULES-NOTFOUND
--- Can't find Apache2.2: APACHE2_2_HTTPD_INCLUDE_DIR-NOTFOUND
-```
-</div>
-
-In this case, you should specify the paths of your custom Apache in <span class="notranslate">`mod_hostinglimits-1.0/cmake/FindApacheForBuild.cmake`</span> file. According to macros above, add the paths to the directory where httpd bin is located, to the dir where apache modules are located and to the dir where include files are located. It may look the following way:
-
-<div class="notranslate">
-
-```
-FIND_PATH (APACHE2_2_HTTPD_INCLUDE_DIR 
-   NAMES 
-      httpd.h
-   PATHS
-      ${APACHE2_2_INCLUDES_DIR}
-      /usr/local/include/httpd
-      /usr/include/httpd
-      /usr/include/apache
-      /usr/local/apache/include/       # added line
-)
-```
-</div>
-	
-5. Rebuild the package again, if you set everything correctly, there shouldn't be any problems.
-
-6. Install the module, check that it is successfully loaded into Apache.
-
-### mod_lsapi
-
-1. Install the packages needed to build mod_lsapi from the source. Some packages may be missing on some platforms, this is not critical
-
-<div class="notranslate">
-
-```
-yum install -y rpm-build
-yum install -y liblsapi liblsapi-devel
-yum install -y autoconf cmake apr-devel apr-util-devel
-yum install -y python-lxml pytest python-mock
-```
-</div>
-
-On CloudLinux OS Shared 7 and above you also should install criu related packages
-
-<div class="notranslate">
-
-```
-yum install -y criu-lve python-criu-lve criu-lve-devel crit-lve
-```
-</div>
-
-On CloudLinux OS Shared 8 and above you also should install next packages
-
-<div class="notranslate">
-
-```
-yum install -y alt-python37-mock alt-python37-pytest httpd-devel
-```
-</div>
-
-2. Download mod_lsapi sources
-
-<div class="notranslate">
-
-```
-yumdownloader --source mod_lsapi --enablerepo=*source
-```
-</div>
-
-3. Rebuild the package with your Apache using rpmbuild
-
-<div class="notranslate">
-
-```
-rpmbuild --rebuild mod_lsapi-ver.el7.cloudlinux.src.rpm
-```
-</div>
-
-:::tip Note
-This command will fail, but it will create a ~/rpmbuild/SPECS/mod_lsapi.spec file.
-This ~/rpmbuild/SPECS/mod_lsapi.spec file will need to be modified.
-:::
-
-4. Remove building dependency from `httpd-devel` in the <span class="notranslate">`mod_lsapi.spec`</span> spec file located in the <span class="notranslate">`~/rpmbuild/SPECS/`</span> directory.
-
-5. Change the paths to copy `mod_lsapi.so` and `mod_lsapi.conf` in the %install section of the `mod_lsapi.spec` file. For example, if Apache root is `/usr/local/apache`, then modules directory and config files directory will be <span class="notranslate">`/usr/local/apache/modules`</span> and <span class="notranslate">`/usr/local/apache/conf.d`</span> respectively. So for the config file you should substitute the following line in the <span class="notranslate">`%install`</span> section:
-
-<div class="notranslate">
-
-```
-install -D -m 644 conf/mod_lsapi.conf $RPM_BUILD_ROOT%{g_path}/confs/lsapi.conf
-```
-</div>
-
-with the following line:
-
-<div class="notranslate">
-
-```
-install -D -m 644 conf/mod_lsapi.conf $RPM_BUILD_ROOT/usr/local/apache/conf/lsapi.conf
-```
-</div>
-
-And, also, for the module you should substitute the following line in the <span class="notranslate">`%install`</span> section:
-
-<div class="notranslate">
-
-```
-install -D -m 755 build/lib/mod_lsapi.so $RPM_BUILD_ROOT%{g_path}standard/mod_lsapi.so 
-```
-</div>
-
-with the following line:
-
-<div class="notranslate">
-
-```
-install -D -m 755 build/lib/mod_lsapi.so $RPM_BUILD_ROOT/usr/local/apache/modules/mod_lsapi.so
-```
-</div>
-
-Also you should add mentions of both module and config files in the <span class="notranslate">`%files`</span> section of <span class="notranslate">`mod_lsapi.spec`</span>. For example, for <span class="notranslate">`/usr/local/apache`</span> Apache root the following two lines should be added:
-
-<div class="notranslate">
-
-```
-%config /usr/local/apache/conf.d/lsapi.conf
-/usr/local/apache/modules/mod_lsapi.conf
-```
-</div>
-
-6. Rebuild the package again, this time you should get to the compilation stage.
-
-Use this command to rebuild a package
-<div class="notranslate">
-```
-rpmbuild -bb ~/rpmbuild/SPECS/mod_lsapi.spec
-```
-</div>
-
-During compilation, you may encounter some errors:
-<div class="notranslate">
-
-```
--- Not Found Apache Bin Directory: APACHE2_2_HTTPD_BIN-NOTFOUND, APACHE2_2_HTTPD_MODULES-NOTFOUND
--- Can't find Apache2.2: APACHE2_2_HTTPD_INCLUDE_DIR-NOTFOUND
-```
-</div>
-
-In this case, you should specify the paths of your custom Apache in the <span class="notranslate">`mod_lsapi-1.1/cmake/FindApacheForBuild.cmake`</span> file. According to macros above, add the paths to the directory where httpd binary is located, to the dir where apache modules are located and to the dir where include files are located. It may look a such way:
-
-<div class="notranslate">
-
-```
-FIND_PATH (APACHE2_2_HTTPD_INCLUDE_DIR 
-   NAMES 
-      httpd.h
-   PATHS
-      ${APACHE2_2_INCLUDES_DIR}
-      /usr/local/include/httpd
-      /usr/include/httpd
-      /usr/include/apache
-      /usr/local/apache/include/       # added line
-)
-```
-</div>
-
-Starting from mod_lsapi-1.1-57, you can use macros for custom paths to the Apache/APR includes/binaries.
-
-A custom Apache location can be defined via the `CUSTOM_APACHE_ROOT` variable. This implies the following structure under the `${CUSTOM_APACHE_ROOT}`:	
-	
-|     |     |
-| :---|:----|
-|`${CUSTOM_APACHE_ROOT}/bin`| Apache binary directory, apachectl location|
-|`${CUSTOM_APACHE_ROOT}/include`|Apache include directory, httpd.h location|
-|`${CUSTOM_APACHE_ROOT}/include`| apr include directory, apr.h location|
-|`${CUSTOM_APACHE_ROOT}/include`|apr-util include directory, apu.h location|
-|`${CUSTOM_APACHE_ROOT}/lib`|apr lib directory, libapr.so location|
-|`${CUSTOM_APACHE_ROOT}/lib`|apr-util lib directory, libaprutil.so location|
-|`${CUSTOM_APACHE_ROOT}/modules`|Apache modules directory, mod_alias.so location|
-	
-If the real structure of Apache root differs from the implied one, it's possible to define a custom location for every single component.
-	
-|     |     |
-| :---|:----|	
-|`CUSTOM_APACHE_BIN`|Apache binary directory, apachectl location|
-|`CUSTOM_APACHE_INC_HTTPD`|Apache include directory, httpd.h location|
-|`CUSTOM_APACHE_INC_APR`|apr include directory, apr.h location|
-|`CUSTOM_APACHE_INC_APU`|apr-util include directory, apu.h location|
-|`CUSTOM_APACHE_LIB_APR`|apr lib directory, libapr.so location|
-|`CUSTOM_APACHE_LIB_APU`|apr-util lib directory, libaprutil.so location|
-|`CUSTOM_APACHE_MODULES`|Apache modules directory, mod_alias.so location|       
-
-7. To customize the switch_mod_lsapi script add into `mod_lsapi.spec` custom script and its configuration file. Configuration file name should be `config.ini` file. Script file name can be arbitrary, because its name should be mentioned in `config.ini` file. Both of them should be copied into */usr/share/lve/modlscapi/custom* in the *%install* section of the `mod_lsapi.spec` file. For example, if script file name is `custom.sh`, you should add the following lines into *%install* section of `mod_lsapi.spec` file:
-
-```
-install -D -m 644 config.ini $RPM_BUILD_ROOT%{g_path}/custom/config.ini
-install -D -m 755 custom.sh $RPM_BUILD_ROOT%{g_path}/custom/custom.sh
-```
-
-Also you should add mentions of both files in the *%files* section of `mod_lsapi.spec`:
-
-```
-/usr/share/lve/modlscapi/custom/config.ini 
-/usr/share/lve/modlscapi/custom/custom.sh
-```
-
-The requirements to the `config.ini` file and script file are described in the following [section](#how-to-integrate-switch_mod_lsapi-script-with-custom-panels)
-
-8. Rebuild the package again, if you set everything correctly, there shouldn't be any problems. 
-
-Use this command to rebuild a package
-<div class="notranslate">
-```
-rpmbuild -bb ~/rpmbuild/SPECS/mod_lsapi.spec
-```
-</div>
-
-9. Install the module, check that it is successfully loaded into Apache.
-
-#### How to integrate switch_mod_lsapi script with custom panels
-
-To be able to use switch_mod_lsapi you have to do the steps mentioned below. We assume that if the /usr/share/lve/modlscapi/custom/config.ini file exists, then it is a Custom Panel.
-
-1. Create config.ini file /usr/share/lve/mod_lsapi/custom/ directory. As an example we have created a config.ini.example file. **All directives that are shown in example file needed in GLOBAL section:**
-
-```
-[GLOBAL]
-VERSION = 1.0.0
-APACHECTL_BIN_LOCATION = /usr/sbin/apachectl
-DOC_URL = http://docs.cloudlinux.com/index.html?apache_mod_lsapi.html
-EXECUTABLE_BIN = custom.sh
-PANEL_NAME=CustomPanel
-```
-
-2. Create executable script in */usr/share/lve/mod_lsapi/custom/executable.sh*. Name it as you want and specify in the config.ini file. Set EXECUTABLE_BIN=executable.sh in the GLOBAL section of the ini file. **Script must be located in the /usr/share/lve/mod_lsapi/custom/ directory.**
-
-3. Custom script options correspond to the options of the switch_mod_lsapi. For more information use the [this document](/shared/command-line_tools/#apache-mod-lsapi-pro).
-
-#### What you need to write in your custom executable.sh file.
-
-You have to implement options in your script. Switch_mod_lsapi will call executable with corresponding arguments. Script must return exit code 0 as success or some integer in case of fail.
-
-**Supported options are:**
-
-```
-switch_mod_lsapi --setup
-/usr/share/lve/modlscapi/custom/executable.sh --setup
-
-switch_mod_lsapi --uninstall
-/usr/share/lve/modlscapi/custom/executable.sh --uninstall
-
-switch_mod_lsapi --enable-domain test.com
-/usr/share/lve/modlscapi/custom/executable.sh --enable-domain test.com
-```
-
-Script executable.sh executed with two arguments --disable-domain and domain name:
-
-```
-switch_mod_lsapi --disable-domain test.com
-/usr/share/lve/modlscapi/custom/executable.sh --disable-domain test.com
-```
-
-Script executable.sh executed with --enable-global argument:
-
-```
-switch_mod_lsapi --enable-global
-/usr/share/lve/modlscapi/custom/executable.sh --enable-global
-```
-
-Script executable.sh executed with --disable-global argument:
-
-```
-switch_mod_lsapi --disable-global
-/usr/share/lve/modlscapi/custom/executable.sh --disable-global
-```
-
-Сustom script executed with --verbose and --force arguments if switch_mod_lsapi are called with.
-
-**Not supported options are:**
-
-```
---setup-light
---build-native-lsphp
---build-native-lsphp-cust
---check-php
---stat
-```
-
-**An example of executable.sh script:**
-
-```
-#!/bin/bash
- 
-CMD=$1
- 
-if [ "$CMD" == "--setup" ]; then
-    echo "application/x-httpd-php-lsphp /usr/local/bin/lsphp"     >>/opt/ExamplePanel/etc/php.handlers
-fi 
- 
-if [ "$CMD" == "--uninstall" ]; then
-    sed -i "#application/x-httpd-php-lsphp#d" /opt/ExamplePanel/etc/php.handlers
-fi
- 
-if [ "$CMD" == "--enable-domain" ]; then
-    http_root=`/opt/ExamplePanel/domain2root $2`
-    if [ -e $http_root/.htaccess ]; then
-        sed -i '/lsphp/d' $http_root/.htaccess
-    fi
-fi 
- 
-if [ "$CMD" == "--disable-domain" ]; then
-    http_root=`/opt/ExamplePanel/domain2root $2`
-    if [ -e $http_root/.htaccess ]; then
-        sed -i '/lsphp/d' $http_root/.htaccess
-    fi
-fi 
- 
-# if command not supported
-if [ "$CMD" == "--enable-global" ]; then
-    echo "LSAPI enable global command is not supported by ExamplePanel"; exit 1
-fi 
-```
-
-## MySQL Governor
-
-:::Warning
-MySQL Governor is not available in CloudLinux OS Admin edition.
-:::
-
-1. Install MySQL Governor
-
-<div class="notranslate">
-
-```
-yum install governor-mysql
-```
-</div>
-
-2. MySQL Governor supports only `cl-MariaDB**` or `cl-MySQL**` packages. Follow the [documentation](/shared/cloudlinux_os_components/#mysql-governor) to figure out all supported versions.
-
-<div class="notranslate">
-
-```
-/usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mysqlXX
-```
-</div>
-
-3. Backup your databases.
-
-4. Run the cl-MySQL/cl-MariaDB installation.
-
-<div class="notranslate">
-
-```
-/usr/share/lve/dbgovernor/mysqlgovernor.py --install
-```
-</div>
-
-5. After installation, check that the database server is working properly. If you have any problems, contact [support](https://helpdesk.cloudlinux.com/)
-
-6. Configure user mapping to the database. The mapping format is described in the following [section](/shared/cloudlinux_os_components/#mapping-a-user-to-a-database). The control panel should automatically generate such mapping and write it to <span class="notranslate">`/etc/container/dbuser-map`</span>. Usually, it is enough to write a hook when adding, deleting or renaming a database for a user. The control panel should implement such a mechanism for MySQL Governor to operate properly. MySQL Governor automatically applies changes from the dbuser-map file every five minutes.
-
-7. MySQL Governor configuration can be found in the following [section](/shared/cloudlinux_os_components/#configuration-3).
-
-8. MySQL Governor CLI tools description can be found in the following [section](/shared/command-line_tools/#mysql-governor)
-
-9. Having configured the mapping use `dbtop` to see the current user load on the database (you'd need to make some database queries).
-
-<div class="notranslate">
-
-```
-dbtop
-```
-</div>
-
-10. If the load appears in the dbtop output, then you have successfully configured MySQL Governor.
-
-## CloudLinux OS Shared LVE and CageFS patches
-
-:::tip Note
-If you are using Apache from the CloudLinux OS Shared repository (such as httpd or httpd24-httpd), skip this section.
-:::
-
-If you use custom Apache, you need to apply patches so that the processes launched by the Apache are working with LVE and CageFS properly. 
-Cloudlinux OS Shared provides patches for the following packages: 
-
-* `suphp`
-* `suexec`
-* `php-fpm`
-* `apr` library
-* `Apache mpm itk`
-
-First of all, download patches using the following link [https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
-
-To apply the patch, follow these steps.
-
-1. Untar archive which you were going to patch and go to the created directory with sources.
-
-2. Transfer the patch to the directory with sources.
-
-3. Use the patch utility inside the directory with sources
-
-4. Recompile your project.
-
-Here's an example with `apr` library:
-
-<div class="notranslate">
-
-```
-# ls 
-apr-1.4.8.tar.bz2  apr-2.4-httpd.2.patch
-# tar xvjf apr-1.4.8.tar.bz2
-# cp apr-2.4-httpd.2.patch ./apr-1.4.8
-# cd ./apr-1.4.8
-# patch -p3 < apr-2.4-httpd.2.patch 
-patching file include/apr_thread_proc.h
-Hunk #1 succeeded at 204 (offset -2 lines).
-patching file threadproc/unix/proc.c
-
-Patch applied Successfully, recompile apr. 
-```
-
-</div>
-
-If you build custom RPM packages, it might make sense to apply patches using spec file.
-
-In this case, add to the Source section (example for `apr`):
-
-<div class="notranslate">
-
-```
-Source0: apr-1.4.8.tar.bz2
-Patch100: apr-2.4-httpd.2.patch
-```
-
-</div>
-
-Then  apply this patch in the <span class="notranslate">`%setup`</span> section:
-
-<div class="notranslate">
-
-```
-%prep
-%setup -q
-%patch100 -p3 -b .lve
-```
-</div>
-
-If no errors appear during the build, the patch has been successfully applied.
-
-## Hardened PHP
-
-All versions of alt-php should work properly in any control panel.
-
-To install all PHP versions, run:
-
-<div class="notranslate">
-
-```
-yum groupinstall alt-php
-```
-</div>
-
-To install a particular version of PHP, run:
-
-<div class="notranslate">
-
-```
-yum groupinstall alt-php{some_version}
-```
-</div>
-
-For details, see [PHP Selector Installation and Update](/shared/cloudlinux_os_components/#installation-and-update-4)
-
-## CloudLinux OS Shared kernel set-up
-
-### /proc filesystem access control
-
-* [Integrating control panel with CloudLinux OS Shared](./#integrating-control-panel-with-cloudlinux-os-shared)
-
-CloudLinux OS Shared kernel allows the server administrator to control the user access to the `/proc` filesystem with the special parameters.
-Unprivileged system users will not be able to see the processes of other system users, they can only see their processes. See details [here](/shared/cloudlinux_os_kernel/#virtualized-proc-filesystem).
-
-If the <span class="notranslate">`fs.proc_can_see_other_uid`</span> parameter is not defined in `sysctl` config during the CageFS package installation, it is set to `0`: <span class="notranslate">`fs.proc_can_see_other_uid=0`</span>.
-
-You can also set this parameter in the <span class="notranslate">`/etc/sysctl.conf`</span> file and then run the <span class="notranslate">`sysctl -p`</span> command.
-
-<span class="notranslate">[`hidepid`](/shared/cloudlinux_os_kernel/#remounting-procfs-with-hidepid-option)</span> parameter is set based on the <span class="notranslate">`fs.proc_can_see_other_uid`</span> parameter value automatically during the <span class="notranslate">`lve_namespaces`</span> service starting (i.e. during <span class="notranslate">`lve-utils`</span> package installation and server booting).
-
-#### Integrating control panel with CloudLinux OS Shared
-
-Run the following command to add administrators into <span class="notranslate">`proc_super_gid`</span> group (if the panel administrator is not a root user or there are several administrators):
-
-<div class="notranslate">
-
-```
-/usr/share/cloudlinux/hooks/post_modify_admin.py create --username <admin_name>
-```
-</div>
-
-:::tip Note 
-This administrator should exist as a system user.
-:::
-
-This command also adds a specified administrator to the <span class="notranslate">`clsudoers`</span> group, so the LVE Manager admin's plugin works properly.
-
-This command is a hook that the control panel should call after adding the admin user to the system.
-
-If the [admins](./#admins) list script exists when installing <span class="notranslate">`lve-utils`</span> package then the existing administrators will be processed automatically. It the script does not exist, you should run the above mentioned command for each administrator.
-
-### Symlink protection
-
-* [How to enable symlink protection](./#how-to-enable-symlink-protection)
-
-CloudLinux OS Shared kernels have symlink attacks protection. When this protection is enabled, the system does not allow users to create symlinks (and hard links) to non-existent/not their own files.
-
-[Here](/shared/cloudlinux_os_kernel/#link-traversal-protection) you can find all protection mechanism parameters.
-
-See also: [the special module to protect web-server](/shared/cloudlinux_os_kernel/#symlink-owner-match-protection).
-
-You can run <span class="notranslate">`cldiag`</span> utility with the <span class="notranslate">`--check-symlinkowngid`</span> parameter to check whether your web-server protection mechanisms are correctly set-up.
-
-<div class="notranslate">
-
-```
-# cldiag --symlinksifowner
-Check fs.enforce_symlinksifowner is correctly enabled in sysctl conf:
-	OK: fs.enforce_symlinksifowner = 1
-
-There are 0 errors found.
-# cldiag --check-symlinkowngid
-Check fs.symlinkown_gid:
-	OK: Web-server user is protected by Symlink Owner Match Protection
-
-There are 0 errors found.
-```
-</div>
-
-* Symlink traversal protection is disabled by default.
-* Symlink owner match protection is enabled by default.
-
-#### How to enable symlink protection
-
-Set the <span class="notranslate">`symlinkown_gid`</span> parameter to the value of the GID group of the web-server process.
-
-Before enabling symlink protection, ensure it does not break the control panel functionality.
-
-For example, if an unprivileged user is allowed to create symlinks or hard links to files or directories he doesn’t own then when enabling symlink traversal protection he will not be able to do so.
-
-To allow an unprivileged user to create such symlink or hard link, a file/directory which symlink is referred to should have <span class="notranslate">`linksafe`</span> group.
-
-### File system quotas
-
-Some of CloudLinux OS Shared utilities (`cagefsctl`, `selectorctl`, `cloudlinux-selector`, etc) writes files to the user’s home directory on behalf of this user.
-
-So they are subject to the disk quotas if any are set for the user. The utilities can override these quotas to avoid failures.
-See [File system quotas](/shared/cloudlinux_os_kernel/#file-system-quotas) for kernel parameters controlling these permissions. This parameter is used only for XFS file system.
-
-## How to integrate X-Ray with a control panel
-
-:::warning WARNING!
-Please note that cPanel, Plesk and DirectAdmin are already supported by X-Ray and do not require any integration effort.
-:::
-
-:::tip Note
-X-Ray support is available since API v1.2 (see [versioning](./#versioning))
-:::
-
-In order to integrate X-Ray into your panel, you should follow two simple steps.
-
-1. Extend the output of your existing [domains integration script](./#domains) as follows:
-
-1.1. Implement an optional flag <span class="notranslate">`--with-php`</span>, upon which all domains with their PHP configuration will be returned.
-Thus, if your [integration config file](./#example-of-the-integration-config) <span class="notranslate">`/opt/cpvendor/etc/integration.ini`</span> has
-
-<div class="notranslate">
-
-```
-domains = /opt/cpvendor/bin/vendor_integration_script domains
-```
-</div>
-
-in <span class="notranslate">`[integration_scripts]`</span> section, X-Ray would call this script as
-<div class="notranslate">
-
-```
-/opt/cpvendor/bin/vendor_integration_script domains --with-php
-```
-</div>
-
-1.2. In order to enable X-Ray support, the script output should return a representation of all domains on the server: a key-value object, where a key is a domain (or subdomain) and a value is a key-value object contains the owner name (UNIX users) and PHP interpreter configuration. **If you are extending the existing domains integration script, you just include the PHP configuration.**
-
-PHP interpreter configuration for each domain is to be placed in the nested key-value object of the following format:
-
-<div class="notranslate">
-
-```
-“php”: {
-   “version”: str
-   “ini_path”: str
-   “is_native”: bool
-   “fpm”: str
-}
-```
-</div>
-
-**Output example**
-
-<div class="notranslate">
-
-```
-{
-  "data": {
-    "domain.com": {
-      "owner": "username",
-      "document_root": "/home/username/public_html/",
-      "is_main": true,
-      "php": {
-        "version": "56",
-        "ini_path": "/opt/alt/php56/link/conf",
-        "is_native": true
-       }
-    },
-    "subdomain.domain.com": {
-      "owner": "username",
-      "document_root": "/home/username/public_html/subdomain/",
-      "is_main": false,
-      "php": {
-        "version": "72",
-        "ini_path": "/opt/alt/php72/link/conf",
-        "fpm": "alt-php72-fpm"
-      }
-    }
-  },
-  "metadata": {
-    "result": "ok"
-  }
-}
-```
-</div>
-
-**Data description**
-
-| | | |
-|-|-|-|
-|Key|Required|Description|
-|<span class="notranslate">version</span>|True|The version of php that is selected by the end user or administrator in the panel for this domain. Should be presented in the format XY where XY is the exact version of PHP. List of supported versions is presented below.|
-|<span class="notranslate">ini_path</span>|True|Path where PHP expects additional .ini files to scan, usually compiled path into binary PHP.Example where to get this value: ![](./images/IniPath.png)|
-|<span class="notranslate">is_native</span>|False|If your panel [has integrated CloudLinux OS Shared PHP Selector](./#integrating-cloudlinux-os-shared-php-selector), then there is the list of native PHP binaries in the <span class="notranslate">`native.conf`</span> (see details [here](/shared/cloudlinux_os_components/#native-php-configuration)). The <span class="notranslate">`is_native`</span> value must be set to true if the binary of the above version of PHP is specified in the <span class="notranslate">`native.conf`</span>, false or omitted otherwise. This way the X-Ray will determine if CloudLinux OS Shared PHP Selector is enabled for a given domain|
-|<span class="notranslate">fpm</span>|False|The name of the FPM service that uses specified domain, optional value. To make the X-Ray work on domains using FPM, you need to restart FPM service. In X-Ray added automatic restart of the FPM service if the tracing task is created for the domain that uses the FPM therefore we need this field, otherwise it can be omitted|
-
-2. After finishing the X-Ray integration script, enable X-Ray support through [panel_info integration script](./#panel-info): add xray component into <span class="notranslate">`supported_cl_features`</span> object.
-
-**Output example**
-
-<div class="notranslate">
-
-```
-{
-	"data": {
-		"name": "SomeCoolWebPanel",
-		"version": "1.0.1",
-		"user_login_url": "https://{domain}:1111/",
-		"supported_cl_features": {
-			"php_selector": true,
-			"ruby_selector": true,
-			"python_selector": true,
-			"nodejs_selector": false,
-			"mod_lsapi": true,
-			"mysql_governor": true,
-			"cagefs": true,
-			"reseller_limits": true,
-			"xray": true
-		}
-	},
-	"metadata": {
-		"result": "ok"
-	}
-}
-```
-</div>
diff --git a/docs/shared/control_panel_integration/images/IniPath.png b/docs/shared/control_panel_integration/images/IniPath.png
deleted file mode 100644
index fcde46374..000000000
Binary files a/docs/shared/control_panel_integration/images/IniPath.png and /dev/null differ
diff --git a/docs/shared/deprecated/.DS_Store b/docs/shared/deprecated/.DS_Store
deleted file mode 100644
index 9c5ff1a00..000000000
Binary files a/docs/shared/deprecated/.DS_Store and /dev/null differ
diff --git a/docs/shared/deprecated/README.md b/docs/shared/deprecated/README.md
deleted file mode 100644
index e7925d068..000000000
--- a/docs/shared/deprecated/README.md
+++ /dev/null
@@ -1,2169 +0,0 @@
-# Deprecated
-
-* [Python Selector (Old)](./#python-selector-old)
-* [Git for cPanel](./#git-for-cpanel)
-* [LVE-Stats 0.x](./#lve-stats-0-x)
-* [OptimumCache](./#optimumcache)
-* [TPE extension](./#tpe-extension)
-* [CPU limits](./#cpu-limits)
-* [Package integration](./#package-integration). You can use [Control panel integration guide](/shared/control_panel_integration/) instead.
-* [Redis support for HostingLimits]()
-* [Migration to EA4](./#migration-to-easyapache-4)
-
-## Python Selector (Old)
-
-:::tip Note
-This documentation is for the old version of Python Selector. You can find documentation for the new Python Selector [here](/shared/cloudlinux_os_components/#python-selector)
-:::
-
-We have the ability to deploy <span class="notranslate"> Python </span> applications via application server. <span class="notranslate"> Python Selector </span> uses <span class="notranslate"> mod_passenger </span> to host <span class="notranslate">Python</span>.
-
-This feature is available for CloudLinux OS Shared 6 or later. It supports only cPanel servers.
-
-You can find a list of supported <span class="notranslate"> alt-python</span> versions using the following command.
-
-<div class="notranslate">
-
-```
-yum grouplist | grep alt-python
-```
-</div>
-
-
-### Installation
-
-::: tip Note
-The instructions below are suitable only for EasyApache 3 and EasyApache 4. You should follow [this instruction](https://www.litespeedtech.com/support/wiki/doku.php/litespeed_wiki:cloudlinux:enable_ruby_python_selector) if you use LiteSpeed.
-:::
-Install tools to create isolated <span class="notranslate"> Python </span> environments and <span class="notranslate"> Passenger Apache </span> module. For servers with EasyApache3:
-
-<div class="notranslate">
-
-```
-yum install lvemanager alt-python-virtualenv alt-mod-passenger
-```
-</div>
-
-for EasyApache4:
-
-<div class="notranslate">
-
-```
-yum install lvemanager alt-python-virtualenv ea-apache24-mod-alt-passenger
-```
-</div>
-
-To use <span class="notranslate"> Python Selector </span> you should install alternative <span class="notranslate"> Python </span> packages:
-
-<div class="notranslate">
-
-```
-yum groupinstall alt-python
-```
-</div>
-
-To use MySQL database you should install <span class="notranslate"> alt-python27-devel </span> package:
-
-<div class="notranslate">
-
-```
-yum install alt-python27-devel
-```
-</div>
-
-::: tip Note
-After installation, please make sure that you have unmarked appropriate checkboxes in <span class="notranslate"> LVE Manager Options </span> tab to show <span class="notranslate">Python App</span> in web-interface.
-:::
-
-::: tip Note
-Adding <span class="notranslate"> Python</span> modules requires executing permissions to gcc/make binaries. Please enable compilers in Compiler Access section of WHM, then run: `cagefsctl --force-update` 
-:::
-
-### End user access
-
-1. In <span class="notranslate">_Software/Services_</span> area choose <span class="notranslate">_Select Python Environment_</span>.
-
-![](./images/clip000133.jpg)
-
-2. Create project form will appear. Choose interpreter version for your application, application folder name (project path) and <span class="notranslate"> URI </span> for accessing your application. Click <span class="notranslate"> “Create project” </span> to create an application.
-
-![](./images/clip000233.jpg)
-
-After a little while a new application entry will be appended to the web-page.
-
-![](./images/clip000255.jpg)
-
-3. You can edit path (folder name of the project in the home directory, for example, <span class="notranslate"> _/home/clman1/project_name_ </span> ), <span class="notranslate"> uri </span> for application, <span class="notranslate"> wsgi </span> handler. If you click <span class="notranslate"> Edit </span> - the value is converted to input field and thus becomes editable. When editing is complete, click <span class="notranslate"> Save </span>.
-
-![](./images/clip000256.jpg)
-
-4. <span class="notranslate"> Wsgi </span> entry is to specify <span class="notranslate"> python wsgi </span> application entry point. It must be specified as filename, must be callable and separated by colon. If your app is running from file <span class="notranslate"> flask/run.py </span> by calling callable app, set <span class="notranslate"> flask/run.py:app </span>.
-
-![](./images/clip000257.jpg)
-
-5. When <span class="notranslate"> Show </span> control is clicked, <span class="notranslate"> python </span> extensions section will be expanded. It gives the ability to add or remove <span class="notranslate"> python </span> modules. When start typing in input field, appropriate hints are shown in drop-down list. Choose the entry you want from drop-down and click <span class="notranslate"> Add </span>.
-
-![](./images/clip000261.jpg)
-
-If you click <span class="notranslate"> Delete </span>, the corresponding module entry will disappear.
-In addition to setting <span class="notranslate"> path, uri </span> and <span class="notranslate"> wsgi </span> , the interpreter version can be changed as well by changing the value in select drop-down.
-
-6. No changes are applied to application environment until <span class="notranslate"> Update </span> button is clicked. Before the <span class="notranslate"> Update </span> button is clicked, all changes can be reverted with <span class="notranslate"> Reset </span> button.
-
-The newly created application will be supplied with <span class="notranslate"> stub </span> only. A real application ought to be put into application folder. After application is placed into application folder, the <span class="notranslate"> wsgi </span> parameter can be set.
-
-Click <span class="notranslate"> Remove </span> to delete the application - the application folder itself will remain unmoved.
-
-_Note. For <span class="notranslate"> LVE Manager </span> version 0.9-10 and higher:_
-
-When creating an application you can use the key <span class="notranslate"> --domain </span> , which attaches application to domain. If <span class="notranslate"> --domain </span> key is not specified, then the main users domain will be used by default.
-To create application run:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python --version=VERSION[--user=USER] [--domain=DOMAIN] [--print-summary] [--json]–-create-webapp <FOLDER_NAME> <URI>
-```
-</div>
-
-When changing application <span class="notranslate"> URI, --domain </span> key can be used simultaneously, in this case not only <span class="notranslate"> URI </span> will be changed, but also the application domain.
-
-To change application <span class="notranslate"> URI </span> run:
-
-<div class="notranslate">
-
-```
-/usr/bin/selectorctl --interpreter=python [--user=USER][--domain=NEW_DOMAIN] [--print-summary] [--json] --transit-webapp<FOLDER_NAME> <NEW_URI> 
-```
-</div>
-
-The possibility to choose domain when creating an application was added to web interface as well.
-
-![](./images/webapp001_zoom94.png)
-
-Also, you can run simple commands from web interface (e.g. you can install packages from specific repositories or control web applications by means of <span class="notranslate"> django -admin</span>).
-
-![](./images/webapp002_zoom93.png)
-
-
-### Hide Python Selector icon
-
-It is possible to hide or show <span class="notranslate">Python Selector</span> icons by marking or unmarking proper checkbox in <span class="notranslate"> LVE Manager _Options_</span> tab.
-
-![](./images/CL-hide-python-ruby.png)
-
-The same result can be accomplished in CLI by running:
-
-<div class="notranslate">
-
-```
-cloudlinux-config set --json --data '{"options":{"uiSettings":{"hideRubyApp":false, "hidePythonApp":false}}}'
-```
-</div>
- 
-:::tip Note
-If you are using cPanel/WHM, you can also configure hide/show <span class="notranslate">CloudLinux OS Shared Python Selectors</span> in <span class="notranslate">WHM | Feature Manager</span>.
-For that, you’d need to first uncheck <span class="notranslate">`Hide Python App in web-interface`</span> in the <span class="notranslate">LVE Manager</span>. This will make the menu appear for all accounts. After that, you are free to disable this app in <span class="notranslate">WHM | Feature Manager</span> for the required feature lists. 
-:::
-
-
-## Git for cPanel
-
-:::tip Note
-This package is no longer supported as it may cause dependency issues
-:::
-
-
-Please note that this package is no longer needed, as since cPanel 11.38, you can install git without any issues on cPanel by running:
-
-<div class="notranslate">
-
-```
-$ yum install git
-```
-</div>
-
-
-To install [git](https://git-scm.com/) on cPanel servers:
-
-<div class="notranslate">
-
-```
-$ yum install git-cpanel
-```
-</div>
-
-
-## LVE-Stats 0.x
-
-:::tip Note
-LVE-STATS-0.X IS NO LONGER SUPPORTED, PLEASE USE [LVE-STATS 2](/shared/cloudlinux_os_components/#lve-stats-2)
-:::
-
-
- lve-stats package collects LVE usage statistics and allows to query the data.
-
-To install, run:
-
-<div class="notranslate">
-
-```
-$ yum install lve-stats
-```
-</div>
-
-
-If you are already running lve-stats (in case you are running cPanel LVE plugin), run:
-
-<div class="notranslate">
-
-```
-$ yum update lve-stats
-```
-</div>
-
-
-This should also be updated automatically next time your system runs system wide update.
-
-The package installs lvestats-server. You can re-start the server by running:
-
-<div class="notranslate">
-
-```
-$ service lvestats restart
-```
-</div>
-
-The package creates sqlite database <span class="notranslate">`/var/lve/lveinfo.db`</span> that stores history information about LVE usage. Up to two months of hourly info is stored for each client. The data for the last hour is stored with 5 minutes interval, and the data for the past 10 minutes is stored with 1 minute interval.
-
-LVE Stats updates <span class="notranslate">`/var/lve/info`</span> every few seconds. That info is used by <span class="notranslate">LVE Manager</span> plugin.
-
-Package consists of lveinfo utility to query LVE usage, and lvechart that allows you to chart usage for individual LVE.
-
-To query historical LVE info, lveinfo command provided. It is located at <span class="notranslate">`/usr/sbin/lveinfo`</span>: 
- 
-<div class="notranslate">
-
-```
-# /usr/sbin/lveinfo [OPTIONS]
--h --help              : this help screen
--v, --version          : version number
--d, --display-username : try to convert LVE id into username when possible
--f, --from=            : run report from date and time in YYYY-MM-DD HH:MM format
-      if not present last 10 minutes are assumed
--t, --to=              : run report up to date and time in YYYY-MM-DD HH:MM format
-      if not present, reports results up to now
--o, --order-by=        : orders results by one of the following:
-      cpu_avg          : average CPU usage
-      cpu_max          : max CPU usage
-      mep_avg          : average number of entry processes (concurrent connections)
-      mep_max          : max number of entry processes (concurrent connections)
-      vmem_avg         : average virtual memory usage
-      vmem_max         : max virtual memory usage
-      pmem_avg         : average physical memory usage
-      pmem_max         : max physical memory usage
-      nproc_avg        : average number of processes usage
-      nproc_max        : max number of processes usage
-      io_avg           : average IO usage
-      io_max           : max IO usage
-      total_mem_faults : total number of out of virtual memory faults (deprecated since 0.8-6)
-      total_vmem_faults: total number of out of virtual memory faults (since 0.8-6)
-      total_pmem_faults: total number of out of physical memory faults (since 0.8-6)
-      total_mep_faults : total number of entry processes faults (deprecated since 0.8-6)
-      total_ep_faults  : total number of entry processes faults (since 0.8-6)
-      total_nproc_faults: total number of number of processes faults (since 0.8-6)
-      any_faults       : total number of any types of faults (since 0.8-6)
-    --id=              : LVE id -- will display record only for that LVE id
--u, --user=            : Use username instead of LVE id, and show only record for that user
--l, --limit=           : max number of results to display, 10 by default
--c, --csv              : display output in CSV format
--b, --by-usage         : show LVEs with usage (averaged or max) within 90% percent of the limit
-      available values:
-      cpu_avg          : average CPU usage
-      cpu_max          : max CPU usage
-      mep_avg          : average number of entry processes (concurrent connections)
-      ep_avg           : average number of entry processes (since 0.8-6)
-      mep_max          : max number of entry processes (concurrent connections)
-      ep_max           : max number of entry processes (since 0.8-6)
-      mem_avg          : average virtual memory usage
-      mem_max          : max virtual memory usage
-      vmem_avg         : average virtual memory usage
-      vmem_max         : max virtual memory usage
-      pmem_avg         : average physical memory usage
-      pmem_max         : max physical memory usage
-      nproc_avg        : average number of processes
-      nproc_max        : max number of processes
-      io_avg           : average IO usage
-      io_max           : max IO usage
--p, --percentage       : defines percentage for --by-usage option
--f, --by-fault         : show LVEs which failed on max entry processes limit or memory limit
-      available values: mem, mep.
-      since 0.8-6      : vmem, pmem, ep, nproc
-    --show-all         : since 0.8-6 only columns for enabled limits will show up. 
--r, --threshold        : in combination with --by-fault, shows only LVEs with number of faults above threshold specified
-    --server_id        : used in combination with centralized storage, to access info from any server
-    --show-all         : full output (show all limits); brief output by default
-```
-</div>
-
-**Output**
-
-| | |
-|-|-|
-|ID |LVE Id or username |
-|aCPU |Average CPU usage |
-|mCPU |Max CPU usage |
-|lCPU |CPU Limit |
-|aEP |CPU Limit |
-|mEP |Max Entry Processes |
-|lEP |Entry Proc limit |
-|aNPROC |Average Number of Processes |
-|mNPROC |Max Number of Processes |
-|lNPROC |Number of Processes limit |
-|aVMEM |Average virtual Memory Usage |
-|mVMEM |Max virtual Memory Usage |
-|lVMEM |Virtual Memory Limit |
-|aPMEM |Average physical Memory Usage |
-|mPMEM |Max physical Memory Usage |
-|lPMEM |Physical Memory Limit |
-|aIO |Average IO usage |
-|mIO |Max IO usage |
-|lIO |IO Limit |
-|fVMEM |Out Of Virtual Memory Faults |
-|fPMEM |Out Of Physical Memory Faults |
-|fEP |Entry processes faults |
-|fNPROC |Number of processes faults |
-
-* only enabled limits will show up
-
-**Examples**
-
-Display top 10 users, by max <span class="notranslate"> CPU </span> usage, from Oct 10, 2010 to Oct 15, 2010. Display username if possible:
-
-
-<div class="notranslate">
-
-```
-$ lveinfo --from='2010-10-10' --to='2010-10-15' -o cpu_max --display-username 
-ID        aCPU       mCPU     lCPU      aEP      mEP      lEP       aMem       mMem      lMem      MemF     MepF 
-777         7        9        10        0        0        25        10M        15M       1G        0        0 
-300         2        8        10        0        1        25        1M         3M        1G        0        0 
-web2        1        6        10        0        0        25        17K        18M       1G        0        0 
-web1        0        0        10        0        0        25        204K       1M        1G        0        0 
-```
-</div>
-Display LVE info about user <span class="notranslate"> web2 </span> , from Oct 10, 2010 to Oct 15, 2010:
-
-
-<div class="notranslate">
-
-```
-$ lveinfo --from='2010-10-10' --to='2010-10-15' --user=web2 --display-username
-ID        aCPU       mCPU     lCPU      aEP      mEP      lEP       aMem       mMem       lMem      MemF     MepF 
-web2        1        6        10        0        0        25        10M        15M        1G        0        0
-```
-</div>
-
-### Storing statistics in MySQL
-
-:::tip Note
-LVE-STATS-0.X IS NO LONGER SUPPORTED, PLEASE USE [LVE-STATS 2](/shared/cloudlinux_os_components/#lve-stats-2)
-:::
-
- You have to install MySQL-python rpm to store lve-stats on centralized server. Run:
-
-<div class="notranslate">
-
-```
-$ yum install MySQL-python
-```
-</div>
-
-
-If you have MySQL 5.3+ installed on CloudLinux OS Shared 5 server, and there is no libmysqlclient_r.so.15 on the server, run:
-
-<div class="notranslate">
-
-```
-$ yum --enablerepo=cloudlinux-updates-testing install mysqlclient15
-```
-</div>
-
-
-A typical procedure to configure the MySQL database for storing information about multiple servers for lve-stats services looks as follows:
-
-Create database and user. You can do it by executing the following commands:
-
-<div class="notranslate">
-
-```
-create database <database>;
-grant all on <database>.* to <user> identified by 'password';
-flush privileges;
-```
-</div>
-
-Create database schema:
-
-<div class="notranslate">
-
-```
-CREATE TABLE history (id INTEGER,
-        cpu INTEGER, cpu_limit INTEGER,
-        cpu_max INTEGER,
-        ncpu INTEGER,
-        mep INTEGER, mep_limit INTEGER,
-        mep_max INTEGER,
-        io INTEGER, io_limit INTEGER,
-        mem INTEGER, mem_limit INTEGER,
-        mem_max INTEGER,
-        mem_fault INTEGER, mep_fault INTEGER,
-        created TIMESTAMP, weight INTEGER, server_id CHAR(10),
-        lmemphy INTEGER, memphy INTEGER, memphy_max INTEGER, memphy_fault INTEGER,
-        lnproc INTEGER, nproc INTEGER, nproc_max INTEGER, nproc_fault INTEGER,
-        lcpuw INTEGER, io_max INTEGER,
-        iops INTEGER, liops INTEGER, iops_max INTEGER );
-CREATE INDEX idx_history_id ON history(id);
-CREATE INDEX idx_history_created ON history(created);
-CREATE INDEX idx_history_weight ON history(weight);
-CREATE INDEX idx_history_server_id ON history(server_id);
-CREATE TABLE last_run (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
-CREATE TABLE users (server_id CHAR(10), id INTEGER, username CHAR(20));
-CREATE INDEX idx_users_server_id ON users(server_id);
-CREATE INDEX idx_users_id ON users(id); 
-
-CREATE TABLE history_gov ( ts INTEGER,
-                           username CHAR(64),
-                           max_simultaneous_requests INTEGER,
-                           sum_cpu FLOAT,
-                           sum_write FLOAT,
-                           sum_read FLOAT,
-                           number_of_iterations INTEGER,
-                           max_cpu FLOAT,
-                           max_write FLOAT,
-                           max_read FLOAT,
-                           number_of_restricts INTEGER,
-                           limit_cpu_on_period_end INTEGER,
-                           limit_read_on_period_end INTEGER,
-                           limit_write_on_period_end INTEGER,
-                           cause_of_restrict INTEGER,
-                           weight INTEGER,
-                           server_id char(10)); 
-
-CREATE INDEX idx_history_gov_ts ON history_gov(ts);
-CREATE INDEX idx_history_gov_cause_of_restrict ON history_gov(cause_of_restrict);
-CREATE INDEX idx_history_gov_number_of_restricts ON history_gov(number_of_restricts); 
-CREATE INDEX idx_history_gov_max_simultaneous_requests ON history_gov(max_simultaneous_requests);
-CREATE INDEX idx_history_gov_server_id ON history_gov(server_id);
-CREATE INDEX idx_history_gov_weight ON history_gov(weight);
-
-CREATE TABLE last_run_gov (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
-
-
-* Execute following SQL command for each remote server for which you want to store
-statistics in this database (make sure you substitute _SERVER_NAME_ with the same
-servername as used in lvestats config file on remote server: 
-
-INSERT INTO last_run(hourly, daily, server_id, lve_version) VALUES (UTC_TIMESTAMP(), UTC_TIMESTAMP(), '_SERVER_NAME_', 4);
-```
-</div>
-
-On each server edit file <span class="notranslate">`/etc/sysconfig/lvestats`</span> & <span class="notranslate">`/etc/sysconfig/lvestats.readonly`</span> as follows:
-
-<div class="notranslate">
-
-```
-db_type = mysql
-connect_string = host:database:user:password
-server_id = _SERVER_NAME_
-db_port = _port_
-```
-</div> 
-
-:::tip Note
-lvestats.readonly should have a user that has read only access to all tables from lvestats database.
-:::
-
-:::tip Note
-_SERVER_NAME_ should be at most 10 characters
-:::
-
-:::tip Note
-db_port is an optional parameter. Default port would be used.
-:::
-
-Select server responsible for compacting database on regular bases by setting <span class="notranslate">`COMPACT=master`</span> in <span class="notranslate">`/etc/sysconfig/lvestats`</span> for that server. Set <span class="notranslate"> COMPACT=slave </span> on all other servers.
-
-Make sure that <span class="notranslate">`/etc/sysconfig/lvestats`</span> is readable only by <span class="notranslate">`root (chmod 600 /etc/sysconfig/lvestats), lvestats.readonly`</span> should be readable by anyone
-
-Restart service:
-
-<div class="notranslate">
-
-```
-service lvestats restart
-```
-</div>
-
-If you use central database to store lvestats data, on each server, execute:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve-stats/save_users_to_database.py 
-```
-</div>
-
-You just need to execute it once, as it will be later executed via <span class="notranslate"> cron job </span> . That script will store usernames from each server, so that lve-stats would later be able to correctly identify each user.
-
-**Updating MySQL & PostgreSQL schema for lve-stats 0.8+**
-
-If you are using MySQL or PostgreSQL server for lve-stats older then 0.8, make sure to do the following steps to upgrade to latest version:
-
-Stop lvestats service on all your servers.
-
-Connect to your database server, and execute following commands:
-
-<div class="notranslate">
-
-```
-ALTER TABLE history ADD lmemphy INTEGER;
-ALTER TABLE history ADD memphy INTEGER;
-ALTER TABLE history ADD memphy_max INTEGER;
-ALTER TABLE history ADD memphy_fault INTEGER;
-ALTER TABLE history ADD lnproc INTEGER;
-ALTER TABLE history ADD nproc INTEGER;
-ALTER TABLE history ADD nproc_max INTEGER;
-ALTER TABLE history ADD nproc_fault INTEGER;
-ALTER TABLE history ADD lcpuw INTEGER;
-ALTER TABLE history ADD io_max INTEGER;
-UPDATE history SET lmemphy = 0, memphy = 0, memphy_max = 0, memphy_fault = 0,
-       lnproc = 0, nproc = 0, nproc_max = 0, nproc_fault = 0,
-       lcpuw = 0, io_max = 0;
-
-ALTER TABLE last_run ADD lve_version INTEGER;
-UPDATE last_run SET lve_version = 4;
-CREATE TABLE last_run_gov (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
-```
-</div>
-To upgrade scheme to support <span class="notranslate"> MySQL Governor: </span>
-
-<div class="notranslate">
-
-```
-CREATE TABLE history_gov ( ts INTEGER,
-    username char(64),
-    max_simultaneous_requests INTEGER,
-    sum_cpu float,
-    sum_write float,
-    sum_read float,
-    number_of_iterations INTEGER,
-    max_cpu float,
-    max_write float,
-    max_read float,
-    number_of_restricts INTEGER,
-    limit_cpu_on_period_end INTEGER,
-    limit_read_on_period_end INTEGER,
-    limit_write_on_period_end INTEGER,
-    cause_of_restrict INTEGER,
-    server_id char(10));
-
-CREATE INDEX idx_history_gov_ts ON history_gov(ts);
-CREATE INDEX idx_history_gov_cause_of_restrict ON history_gov(cause_of_restrict);
-CREATE INDEX idx_history_gov_number_of_restricts ON history_gov(number_of_restricts);
-CREATE INDEX idx_history_gov_max_simultaneous_requests ON history_gov(max_simultaneous_requests);
-CREATE INDEX idx_history_gov_server_id ON history_gov(server_id);
-```
-</div>
-Upgrading from lve-stats &lt; 0.9-20:
-
-<div class="notranslate">
-
-```
-ALTER TABLE history_gov ADD weight INTEGER;
-CREATE INDEX idx_history_gov_weight ON history_gov(weight);
-CREATE TABLE last_run_gov (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
-```
-</div>
-Update lve-stats RPM on all your servers.
-
-If you use central database to store lvestats data, execute the following commands:
-
-<div class="notranslate">
-
-```
-CREATE TABLE users (server_id CHAR(10), id INTEGER, username CHAR(20));CREATE INDEX idx_users_server_id ON users(server_id);CREATE INDEX idx_users_id ON users(id);
-```
-</div>
-On each server execute:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve-stats/save_users_to_database.py 
-```
-</div>
-
-You just need to execute it once, as it will be later executed via cron job. That script will store usernames from each server, so that lve-stats would later be able to correctly identify each user.
-
-### Storing statistics in PostgreSQL
-
-:::tip Note
-LVE-STATS-0.X IS NO LONGER SUPPORTED, PLEASE USE [LVE-STATS 2](/shared/cloudlinux_os_components/#lve-stats-2)
-:::
-
-You have to install <span class="notranslate">`postgresql-python rpm`</span> to store lve-stats on centralized server.
-
-Run:
-
-<div class="notranslate">
-
-```
-$ yum install postgresql-python
-```
-</div>
-
-A typical procedure to configure the PostgreSQL database for storing information about multiple servers for lve-stats services looks as follows:
-
-Create a database and a user. You can do it by executing the following commands:
-
-<div class="notranslate">
-
-```
-createdb <database>createuser <user>
-```
-</div>
-Create database schema:
-
-<div class="notranslate">
-
-```
-CREATE TABLE history (id INTEGER,
-        cpu INTEGER, cpu_limit INTEGER,
-        cpu_max INTEGER,
-        ncpu INTEGER,
-        mep INTEGER, mep_limit INTEGER,
-        mep_max INTEGER,
-        io INTEGER, io_limit INTEGER,
-        mem INTEGER, mem_limit INTEGER,
-        mem_max INTEGER,
-        mem_fault INTEGER, mep_fault INTEGER,
-        created TIMESTAMP, weight INTEGER, server_id CHAR(10),
-        lmemphy INTEGER, memphy INTEGER, memphy_max INTEGER, memphy_fault INTEGER,
-        lnproc INTEGER, nproc INTEGER, nproc_max INTEGER, nproc_fault INTEGER,
-        lcpuw INTEGER, io_max INTEGER,
-
-
-
-        iops_max: INTEGER, liops: INTEGER, iops: INTEGER);
-
-CREATE INDEX idx_history_id ON history(id);
-CREATE INDEX idx_history_created ON history(created);
-CREATE INDEX idx_history_weight ON history(weight);
-CREATE INDEX idx_history_server_id ON history(server_id);
-CREATE TABLE last_run (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
-CREATE TABLE users (server_id CHAR(10), id INTEGER, username CHAR(20));CREATE INDEX idx_users_server_id ON users(server_id);
-CREATE INDEX idx_users_id ON users(id);
-
-CREATE TABLE history_gov ( ts INTEGER,
-    username char(64),
-    max_simultaneous_requests INTEGER,
-    sum_cpu float,
-    sum_write float,
-    sum_read float,
-    number_of_iterations INTEGER,
-    max_cpu float,
-    max_write float,
-    max_read float,
-    number_of_restricts INTEGER,
-    limit_cpu_on_period_end INTEGER,
-    limit_read_on_period_end INTEGER,
-    limit_write_on_period_end INTEGER,
-    cause_of_restrict INTEGER,
-    weight INTEGER,
-    server_id char(10));
-
-CREATE INDEX idx_history_gov_ts ON history_gov(ts);
-CREATE INDEX idx_history_gov_cause_of_restrict ON history_gov(cause_of_restrict);
-CREATE INDEX idx_history_gov_number_of_restricts ON history_gov(number_of_restricts);
-CREATE INDEX idx_history_gov_max_simultaneous_requests ON history_gov(max_simultaneous_requests);
-CREATE INDEX idx_history_gov_server_id ON history_gov(server_id);
-CREATE INDEX idx_history_gov_weight ON history_gov(weight);
-
-CREATE TABLE last_run_gov (hourly TIMESTAMP, daily TIMESTAMP, server_id CHAR(10), lve_version INTEGER);
-
-     * Execute following SQL command for each remote server for which you want to store
-      statistics in this database (make sure you substitute _SERVER_NAME_ with the same
-      servername as used in lvestats config file on remote server:
-
-INSERT INTO last_run(hourly, daily, server_id, lve_version) VALUES (now() AT TIME ZONE 'UTC', now() AT TIME ZONE 'UTC', '_SERVER_NAME_', 4);
-```
-</div>
-On each server edit file <span class="notranslate">`/etc/sysconfig/lvestats`</span> and <span class="notranslate">`/etc/sysconfig/lvestats`</span> as follows:
-
-<div class="notranslate">
-
-```
-db_type = postgresql
-connect_string = host:database:user:password
-server_id = _SERVER_NAME_db_port = _port_
-```
-</div>   
-
-:::tip Note
-lvestats.readonly should have a user that has read only access to history table.
-:::
-
-:::tip Note
-_SERVER_NAME_ should be at most 10 characters
-:::
-
-:::tip Note
-db_port is optional, default PostgreSQL port will be used
-:::
-
-Select server responsible for compacting database on regular bases by setting <span class="notranslate"> COMPACT=master </span> in <span class="notranslate"> /etc/sysconfig/lvestats </span> for that server. Set <span class="notranslate"> COMPACT=slave </span> on all other servers.
-
-Make sure that <span class="notranslate"> /etc/sysconfig/lvestats </span> is readable only by <span class="notranslate"> root (chmod 600 /etc/sysconfig/lvestats), lvestats.readonly </span> should be readable by anyone.
-
-Restart service:
-
-<div class="notranslate">
-
-```
-service lvestats restart
-```
-</div>
-If you use central database to store lvestats data, on each server, execute:
-
-<div class="notranslate">
-
-```
-$ /usr/share/lve-stats/save_users_to_database.py 
-```
-</div>
-You just need to execute it once, as it will be later executed via <span class="notranslate"> cron job </span> . That script will store usernames from each server, so that lve-stats would later be able to correctly identify each user.
-
-You are done!
-
-
-### Compacting in multi-server settings
-
-:::tip Note
-LVE-STATS-0.X IS NO LONGER SUPPORTED, PLEASE USE [LVE-STATS 2](/shared/cloudlinux_os_components/#lve-stats-2)
-:::
-
-[lve-stats 0.10+]
-
-When you have multiple servers storing LVE statistics to a central database, then you will need to pick one server responsible for compacting data.
-
-On that server, edit file: <span class="notranslate">`/etc/sysconfig/lvestats`</span> and change the option <span class="notranslate">`COMPACT`</span> to <span class="notranslate">`master`</span>.
-
-On all other servers, change that option to <span class="notranslate">`slave`</span>.
-
-Default: <span class="notranslate">`single`</span> – should be used when lve-stats stores data to a single database.
-
-## OptimumCache
-
-:::tip Note
-OPTIMUMCACHE IS NO LONGER SUPPORTED.
-:::
-
-**OptimumCache 0.2+**
-
-OptimumCache is a de-duplicating file cache optimized specifically for shared hosting. Typical shared hosting server runs a number of sites with WordPress and Joomla as well as other popular software. This usually means that there are hundreds of duplicate files that are constantly being read into file cache - both wasting precious disk <span class="notranslate"> IO </span> operations as well as memory. OptimumCache creates a cache of such duplicated files and de-duplicates file cache.
-![](./images/embim1.png)
-
-With OptimumCache, if a duplicate of an already loaded file is requested, the file gets loaded from filesystem cache. By doing that, system bypasses disk IO, significantly improving the speed of reading that file, while lowering load on the hard disk. As the file had been read from disk just once, it is cached by filesystem cache just once, minimizing amount of duplicates in file system cache and improving overall cache efficiency. This in turn reduces memory usage, decreases the number of disk operations - all while improving the websites response time.
-
-
-### Installation
-
-* [Requirements](./#requirements)
-* [Installation](./#installation-2)
-
-:::tip NOTE
-OPTIMUMCACHE IS NO LONGER SUPPORTED
-:::
-
-#### Requirements
-
-* 64bit CloudLinux OS Shared 6.x or higher
-* ext4 filesystem
-* kernel lve1.2.55 or later.
-
-#### Installation
-
-<div class="notranslate">
-
-```
-# yum install optimumcache
-```
-</div>
-
-OptimumCache must be provided with list of directories to expect duplicate files be in:
-
-* <span class="notranslate">`# occtl --recursive --mark-dir /home`</span>
-* <span class="notranslate">`# occtl --recursive --mark-dir /home2`</span> (for cPanel)
-* <span class="notranslate">`# occtl --recursive --mark-dir /var/www`</span> (for Plesk)
-
-OptimumCache is going to index these directories. Thus system load during this period (from hours to days) might be as twice as high. See [Marking directories](./#marking-directories).
-
-**Allocating Disk Space for OptimumCache:**
-
-By default OptimumCache will attempt to setup 5GB ploop (high efficiency loopback disk) to be used for the cache in <span class="notranslate">`/var/share/optimumcache/optimumcache.image`</span>
-
-That ploop will be mounted to: <span class="notranslate">`/var/cache/optimumcache`</span>
-
-The ploop image will be located at <span class="notranslate">`/var/share/optimumcache/optimumcache.image`</span>
-
-Allocating OptimumCache disk space for ploop on a fast drives (like SSD) will provide additional performance improvement as more duplicated files would be loaded from fast disks into memory.
-
-**Moving ploop image to another location:**
-
-<div class="notranslate">
-
-```
-# occtl --move-ploop /path/to/new/image/file [new size[KMGT]]
-```
-</div>
-
-`/path/to/new/image/file` must be file path + file name, not a directory name.
-
-Example:
-
-<div class="notranslate">
-
-```
-# occtl --move-ploop /var/ssh/optimumcache.image
-```
-</div>
-
-If <span class="notranslate">`new size`</span> is not mentioned, then value from <span class="notranslate">`/etc/sysconfig/optimumcache`</span> is used. If <span class="notranslate">`/etc/sysconfig/optimumcache`</span> does not mention anything regarding ploop image size, then default 5GB is used.
-
-**Enabling and disabling ploop:**
-
-To turn on ploop:
-
-<div class="notranslate">
-
-```
-# occtl --init-ploop
-```
-</div>
-
-To disable ploop:
-
-<div class="notranslate">
-
-```
-# occtl --disable-ploop
-```
-</div>
-
-If ploop image has been mounted in <span class="notranslate">`/etc/fstab`</span> for OpimumCache-0.1-21 and earlier, you may consider removing this fstab entry in OpimumCache 0.2+. That is because since 0.2+ ploop is mounted automatically at service start.
-
-If you prefer leave that fstab mount point as is, you may see some warnings when you decide to move ploop later via <span class="notranslate">`occtl --move-ploop`</span>.
-
-**Resizing ploop:**
-
-To resize ploop:
-
-<div class="notranslate">
-
-```
-# occtl --resize-ploop [new size[KMGT]]
-```
-</div>
-
-A common reason for resizing ploop is reacting to OptimumCache syslog message like <span class="notranslate">“OptimumCache recommends cache storage size to be at least … GB”</span>.
-
-**Deleting ploop:**
-
-<div class="notranslate">
-
-```
-# occtl --delete-ploop
-```
-</div>
-
-For the case when this action cannot be completed due to <span class="notranslate">“Unable unmount ploop”</span> issue, there is a workaround in “Troubleshooting” section.
-
-Q. I created/resized/moved/deleted ploop. Do I need to rerun the initial mark process?
-
-А. Not needed.
-
-### Using without ploop
-
-:::tip Note
-OPTIMUMCACHE IS NO LONGER SUPPORTED
-:::
-
-On servers with kernel prior to lve1.2.55 ploop will not be used (due to ploop related issues in the kernel). Instead cached files will be stored in <span class="notranslate">`/var/cache/optimumcache`</span>.
-
-The cache will be cleaned (shrunk) by 20% once partition on which <span class="notranslate">`OPTIMUMCACHE_MNT`</span> resides has only 10% of free space. You can change that by changing <span class="notranslate">`PURGEAHEAD`</span> param in <span class="notranslate">`/etc/sysconfig/optimumcache`</span>, and restarting optimumcache service.
-
-The cache is cleaned <span class="notranslate">`/etc/cron.d/optimumcache_cron`</span> script optimumcache_purge, which runs every minute:
-
-<div class="notranslate">
-
-```
-0-59 * * * * root /usr/share/optimumcache/optimumcache_purge
-```
-</div>
-
-### Marking directories
-
-:::tip Note
-OPTIMUMCACHE IS NO LONGER SUPPORTED
-:::
-
-**Marking directories to be cached:**
-
-<div class="notranslate">
-
-```
-# occtl --mark-dir /path/to/site/on/filesystem --recursive
-```
-</div>
-
-In common scenario admin marks for caching user directories:
-
-<div class="notranslate">
-
-```
-# occtl --mark-dir /home /home2 /home3 --recursive
-```
-</div>
-
-OptimumCache is going to index these directories. Thus system load during this period (from hours to days) might be as twice as high. You can check indexing job status with <span class="notranslate">`at -l`</span> at any time.
-
-**Ignoring particular files & directories:**
-
-OptimumCache tracks files & directories that need to be cached. Once file is modified, it will no longer be tracked by OptimumCache (as there is very little chance that it will have a duplicate). Yet, all new files created in tracked directories are checked for duplicates.
-
-Sometimes you might want to ignore such checks for directories where large number of temporary or new files are created, that will not have duplicates - as such checks are expensive. Directories like mail queue, and tmp directories should be ignored.
-
-You can set a regexp mask for directories that you would like to ignore using:
-
-<div class="notranslate">
-
-```
-$ occtl --add-skip-mask REGEX
-```
-</div>
-
-To list skip masks:
-
-<div class="notranslate">
-
-```
-$ occtl --list-skip-mask
-```
-</div>
-
-To remove skip mask:
-
-<div class="notranslate">
-
-```
-$ occtl --remove-skip-mask ID\|Tag
-```
-</div>
-
-At the very end, for those changes to take effect:
-
-<div class="notranslate">
-
-```
-$ occtl --check
-```
-</div>
-
-<span class="notranslate">`occtl --check`</span> is the same lengthy operation as <span class="notranslate">`marking`</span> is. Thus, it’s usage has to be sane, especially for big <span class="notranslate">`home`</span> (>500G).
-
-By default, OptimumCache sets up following skip masks:
-
-| |  | |
-|-|--|-|
-|id | tag | regex|
-|1 | <span class="notranslate">`all_dot_files`</span> | <span class="notranslate">`/\...*`</span>|
-|2 | <span class="notranslate">`cagefs`</span> | <span class="notranslate">`^/home/cagefs-skeleton$`</span>|
-|3 | <span class="notranslate">`cagefs`</span> | <span class="notranslate">`^/home/cagefs-skeleton/`</span>|
-|4 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/cPanelInstall`</span>|
-|5 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/cpeasyapache`</span>|
-|6 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/aquota`</span>|
-|7 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/jailshell`</span>|
-|8 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/mail$`</span>|
-|9 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/mail/.*`</span>|
-|10 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/logs$`</span>|
-|11 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/logs/.*`</span>|
-|12 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/\.cpanel$`</span>|
-|13 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/\.cpanel/.*`</span>|
-|14 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/\.cagefs`</span>|
-|15 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/[^/]+/\.cagefs/.*`</span>|
-|16 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/virtfs`</span>|
-|17 | <span class="notranslate">`cpanel`</span> | <span class="notranslate">`^/home[^/]*/virtfs/.*`</span>|
-|18 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/tmp/`</span>|
-|19 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/tmp$`</span>|
-|20 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/ftp/`</span>|
-|21 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/ftp$`</span>|
-|22 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/admin/`</span>|
-|23 | <span class="notranslate">`not_a_userdir`</span> | <span class="notranslate">`^/home/admin$`</span>|
-|24 | <span class="notranslate">`quota`</span> | <span class="notranslate">`^/home[^/]*/quota.user$`</span>|
-|25 | <span class="notranslate">`usermisc`</span> | <span class="notranslate">`/quota.user$`</span>|
-|26 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/backups$`</span>|
-|27 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/backups/`</span>|
-|28 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/imap$`</span>|
-|29 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/imap/`</span>|
-|30 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/Maildir$`</span>|
-|31 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/Maildir/`</span>|
-|32 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/logs$`</span>|
-|33 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/logs/`</span>|
-|34 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/public_ftp$`</span>|
-|35 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/public_ftp/`</span>|
-|36 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/stats$`</span>|
-|37 | <span class="notranslate">`users_home`</span> | <span class="notranslate">`^/home/[^/]+/domains/[^/]+/stats/`</span>|
-
-This information is stored in <span class="notranslate">`/etc/container/optimumcache/ignore.d/`</span>.
-
-**Skip mask syntax**
-
-Skip masks use following regexp syntax: [http://www.greenend.org.uk/rjk/tech/regexp.html](http://www.greenend.org.uk/rjk/tech/regexp.html)
-
-For example, to disable caching all directories that contain <span class="notranslate">`*/cache/*`</span>, you should use skip masks like:
-
-<div class="notranslate">
-
-```
-/cache/
-/cache$
-```
-</div>
-
-This information is stored in <span class="notranslate">`/etc/container/optimumcache/ignore.d/`</span>
-
-
-### OptimumCache configuration file
-
-:::tip Note
-OPTIMUMCACHE IS NO LONGER SUPPORTED
-:::
-
-<span class="notranslate">`/etc/sysconfig/optimumcache`</span>
-
-<div class="notranslate">
-
-```
-OPTIMUMCACHE_MNT=/var/cache/optimumcache
-
- 
-# Valency to cache
-
-COUNT=0
-
- 
-# Minimal file size to cache, default - cache all files
-
-# MINSIZE=0
-
- 
-# Minimal page number in file to start caching, default - 1
-
-PAGEMIN=0
-
- 
-# Maximum file size to cache, 10485760 (10MB) by default
-
-# MAXSIZE
-
- 
-# Interval between caching attempts, default - 5 seconds
-
-# TIMEOUT=7
-
- 
-# Adaptive timeout upper limit (seconds)
-
-# MAXTIMEOUT=160
-
- 
-# Adaptive timeout multiplicator and divisor
-
-# TIMEOUT_INCR_MUL=2
-
-# TIMEOUT_DECR_DIV=4
-
- 
-# Buffer size in KB for 'optimumcache dump', default is 32MB
-
-# DUMP_BUFFER_SIZE=32000
-
- 
-# Extra space in %% of requested to purge, default 20%
-
-# PURGEAHEAD=20
-
- 
-# Experimental: Eliminate frequent sync to address IO performance
-
-NOIMMSYNC=1
-
- 
-# Logging verbosity, default - 1, verbose
-
-# LOGLEVEL=1
-
- 
-# occtl --mark-dir or --check operations IO limit, MB/s, default is 5 MB/s
-
-# OCCTL_LVE_IO_LIMIT=5
-
- 
-# occtl --mark-dir or --check operations %cpu limit, default is 50% of one CPU core
-
-# OCCTL_LVE_SPEED_LIMIT=50
-
- 
-# Lve ID to associate limits with
-
-# LVEID=5
-
- 
-# Collect perf statistics in /var/log/optimumcache_perf. Default is enabled.
-
-# PERF_LOG_ENABLED=1
-```
-</div>
-
-### Command-line interface
-
-:::tip Note
-OPTIMUMCACHE IS NO LONGER SUPPORTED
-:::
-
-OptimumCache is controlled using <span class="notranslate">`occtl`</span> command line utility.
-
-**Usage:**
-
-<div class="notranslate">
-
-```
-occtl.py    [-h] [--move-ploop param [param ...]] [--check] [--verbose]
-
-            [--init-ploop [param [param ...]]] [--resize-ploop New Size]
-
-            [--disable-ploop] [--enable-ploop] [--mount-ploop]
-
-            [--unmount-ploop] [--delete-ploop] [--unmark-all]
-
-            [--mark-dir Path [Path ...]] [--unmark-dir Path [Path ...]]
-
-            [--recursive]  [--add-skip-mask Regex]
-
-            [--remove-skip-mask Id|Tag] [--list-skip-mask] [--silent]
-
-            [--ignore-unmount-failure] [--no-lve-limits] [--foreground]
-
-            [--ploop-status] [--remount-cached-points] [--purge]
-
-            [--cancel-pending-jobs] [--report [Period]]
-
-            [--recommend-minmax-size]
-```
-</div>
-
-Display numbers/percents of cached files:
-
-<div class="notranslate">
-
-```
-optimumcache stat
-```
-</div>
-
-or
-
-<div class="notranslate">
-
-```
-optimumcache stat /home
-```
-</div>
-
-To display statistic for specific mount. In depth display what is being held in cache:
-
-<div class="notranslate">
-
-```
-optimumcache dump [--resolve-filenames] [mount]
-```
-</div>
-
-The option <span class="notranslate">`--resolve-filenames`</span> is experimental and may not apply to all output cached entries.
-
-Optional Arguments:
-
-| | |
-|-|-|
-|<span class="notranslate">`-h`</span>, <span class="notranslate">`--help`</span>|Show this help message and exit.|
-|<span class="notranslate">`--move-ploop param [param ...]`</span>|Move cache from one ploop image to <span class="notranslate">`/path/to/new/image/location [New Size[KMGT]]`</span>.
-|<span class="notranslate">`--check`</span>|Check marked files for errors. This task is scheduled as background job, unless <span class="notranslate">`--foreground`</span> is specified.|
-|<span class="notranslate">`--verbose`</span>|List what is being checked.|
-|<span class="notranslate">`--init-ploop [param [param ...]]`</span>|Create ploop image for the cache <span class="notranslate">`[/path/to/ploop/image [ploop_size] \| ploop_size]`</span> - if only one parameter is given, it is considered to be ploop size. Size should be a <span class="notranslate">`NUMBER[KMGT]`</span>.|
-|<span class="notranslate">`--resize-ploop New Size`</span>|New Size NUMBER[KMGT].|
-|<span class="notranslate">`--disable-ploop`</span>|Disable ploop.|
-|<span class="notranslate">`--enable-ploop`</span>|Enable ploop.|
-|<span class="notranslate">`--mount-ploop`</span>|Mount ploop image.|
-|<span class="notranslate">`--unmount-ploop`</span>|Unmount ploop image.|
-|<span class="notranslate">`--delete-ploop`</span>|Delete ploop image. Implies disable ploop, if was enabled.|
-|<span class="notranslate">`--unmark-all`</span>|Unmark all marked directories.|
-|<span class="notranslate">`--mark-dir Path [Path ...]`</span>|Mark directory for caching.This task is scheduled as background job, unless <span class="notranslate">`--foreground`</span> is specified.|
-|<span class="notranslate">`--unmark-dir Path [Path ...]`</span>|Unmark directory for caching.|
-|<span class="notranslate">`--recursive`</span>|Is used with mark/unmark dir.|
-|<span class="notranslate">`--add-skip-mask Regex`</span>|Regexp to skip files/directories for caching.|
-|<span class="notranslate">`--remove-skip-mask Id\|Tag`</span>|Remove regexp to skip files/directories by id or tag.|
-|<span class="notranslate">`--list-skip-mask`</span>|List regexp to skip files/directories.|
-|<span class="notranslate">`--silent`</span>|Do not echo status to stdout/syslog.|
-|<span class="notranslate">`--ignore-unmount-failure`</span>|Ignore cannot unmount ploop problem.|
-|<span class="notranslate">`--no-lve-limits`</span>|Ignore default LVE limits for <span class="notranslate">`--mark-dir`</span> and <span class="notranslate">`--check`</span> commands. Also implies --foreground.|
-|<span class="notranslate">`--foreground`</span>|Don't spawn <span class="notranslate">`--mark-dir`</span> and <span class="notranslate">`--check`</span> commands in background.|
-|<span class="notranslate">`--ploop-status`</span>|Check if ploop is mounted.|
-|<span class="notranslate">`--purge`</span>|Purge cache storage (takes some time).|
-|<span class="notranslate">`--cancel-pending-jobs`</span>|Cancel <span class="notranslate">`--mark-dir`</span> and <span class="notranslate">`--check`</span> commands if were queued or are being run in background.|
-|<span class="notranslate">`--report [Period]`</span>|Report statistics for Period (hourly|daily|weekly|monthly).|
-
-
-### cloudlinux-collect: collect system load statistics
-
-* [cloudlinux-collectl: quick start](./#cloudlinux-collectl-quick-start)
-* [Install](./#install)
-* [Measure web site response time](./#measure-web-site-response-time)
-* [To watch what is being collected](./#to-watch-what-is-being-collected)
-* [Statistics being collected in details](./#statistics-being-collected-in-details)
-* [Statistics manual configuration](./#statistics-manual-configuration)
-* [Running statistics daemon: collectl-cloudlinux](./#running-statistics-daemon-collectl-cloudlinux)
-* [Analyzing the results](./#analyzing-the-results)
-
-:::tip Note
-OPTIMUMCACHE IS NO LONGER SUPPORTED
-:::
-
-#### cloudlinux-collectl: quick start
-
-Installing this package automatically starts system load statistics collection in background. cloudlinux-collectl package has no strict dependency on OptimumCache, thus the statistics is collected regardless of whether OptimumCache is installed or not. The aim of having this package pre-installed is to compare system performance before and after installing OptimumCache, thus to measure OptimumCache effectiveness.
-
-#### Install
-
-<div class="notranslate">
-
-```
-# yum install cloudlinux-collect --enablerepo=cloudlinux-updates-testing
-```
-</div>
-
-:::tip Note
-cloudlinux-collectl will be installed automatically on optimumcache upgrade to 0.2-23
-:::
-
-#### Measure web site response time
-
-cloudlinux-collectl can monitor response time for a configurable set of URLs.
-
-Start monitoring new URL:
-
-<div class="notranslate">
-
-```
-# cloudlinux-collect --addurl <alias> <http://url
-```
-</div>
-
-Example:
-
-<div class="notranslate">
-
-```
-# cloudlinux-collect --addurl localhost http://127.0.0.1/index.php
-```
-</div>
-
-Try <span class="notranslate">`cloudlinux-collectl --help`</span> for more options.
-
-#### To watch what is being collected
-
-
-<div class="notranslate">
-
-```
-# cloudlinux-collect --test
-```
-</div>
-
-Actual logs are compressed with gzip and kept in <span class="notranslate">`/var/log/optimumcache/collectl`</span> directory.
-
-#### Statistics being collected in details
-
-To monitor what statistics are being collected, try command:
-
-<div class="notranslate">
-
-```
-# cloudlinux-collect --test
-```
-</div>
-
-![](./images/optimumcachecollect_zoom93.png)
-
-Along with common statistics blocks as <span class="notranslate">CPU</span> , disk usage, <span class="notranslate">inodes</span> cached, there are two blocks of data to watch how effectively OptimumCache is functioning.
-
-<span class="notranslate">`OPTIMUMCACHE DETAIL`</span> refers to data, which is similar to output of command
-
-<div class="notranslate">
-
-```
-# optimumcache stat
-```
-</div>
-
-<div class="notranslate">
-
-```
-csums:          4964 (99.9%)
-
-             fetched        uncached            cached
-
-inodes:          4967            31               4936    (99.4%)
-
-size:          204177          131072           73104     (35.8%)
-
-RAM:                8              4                4     (50.0%)
-```
-</div>
-
-Particularly, the last column percent numbers shall match.
-
-The next goes <span class="notranslate">`URLSTATTRACKER DETAIL`</span> block with url response time in milliseconds. Negative values here may pop up unexpectedly. Negative numbers are not milliseconds, but signal about http error response code for that specific url. For instance, -403 will signal for <span class="notranslate">`Forbidden`</span> http error. As for -500 value, it signals not only for <span class="notranslate">`Internal Server Error`</span>, but can be displayed, when there is connection problem with the server, which is specified by the url.
-
-#### Statistics manual configuration
-
-<span class="notranslate">`URLSTATTRACKER DETAIL`</span> is the only statistics, which requires manual configuration. Upon clean installation, it has only <span class="notranslate">`url_localhost`</span> preconfigured:
-
-<div class="notranslate">
-
-```
-# cloudlinux-collect --info
-```
-</div>
-
-<div class="notranslate">
-
-```
-url shortname            url
-
---------------------         ---
-
-localhost                 http://localhost/
-```
-</div>
-
-
-To add another URL for monitoring:
-
-<div class="notranslate">
-
-```
-## cloudlinux-collect --addurl alt http://192.168.0.102/
-```
-</div>
-
-To display URLs being monitored list:
-
-<div class="notranslate">
-
-```
-# cloudlinux-collect --info
-```
-</div>
-
-<div class="notranslate">
-
-```
-url shortname          url
-
---------------------          ---
-
-alt                        http://192.168.0.102/
-
-localhost                  http://localhost/
-```
-</div>
-
-
-
-To skip URL from being tracked run command:
-
-<div class="notranslate">
-
-```
-# cloudlinux-collect --skip <url short name>
-```
-</div>
-
-#### Running statistics daemon: collectl-cloudlinux
-
-cloudlinux-collectl has got collectl package as a dependency. Initd script <span class="notranslate">`/etc/init.d/cloudlinux-collectl`</span> will automatically bring up another instance of collectl named <span class="notranslate">`collectl-optimumcache`</span> . collectl-optimumcache daemon instance has a separate config and does not interfere with other running pre-configure collectl daemon (if any).
-
-As it was mentioned, collectl-optimumcache daemon starts automatically on package install, then on server restart events, kicked by regular Initd script <span class="notranslate">`/etc/init.d/cloudlinux-collectl`</span>. Thus, checking the daemon status, stop, restart is trivial:
-
-<div class="notranslate">
-
-```
-# service cloudlinux-collect status
-collectl-optimumcache (pid  1745) is running…
-```
-</div>
-
-To start /stop:
-
-<div class="notranslate">
-
-```
-# service cloudlinux-collect < start | stop >
-```
-</div>
-
-#### Analyzing the results
-
-The statistics is being collected into files named <span class="notranslate">`%hostname%-%datetime%.raw.gz`</span> under directory <span class="notranslate">`/var/log/cloudlinux-collect`</span>.
-
-To convert those info format suitable for loading into Excel, LibreOffice Calc, another data mining tool, run the command:
-
-<div class="notranslate">
-
-```
-# cloudlinux-collect --genplotfiles
-```
-</div>
-
-<div class="notranslate">
-
-```
-Generate fresh plot files in
-
-         /var/log/cloudlinux-collect/plotfiles
-
- ```
- </div>
-
-
-### Uninstall OptimumCache
-
-:::tip Note
-OPTIMUMCACHE IS NO LONGER SUPPORTED
-:::
-
-To uninstall OptimumCache, run:
-
-<div class="notranslate">
-
-```
-service optimumcache stop
-occtl --delete-ploop
-:>/var/share/optimumcache_store
-yum remove optimumcache
-```
-</div>
-
-If available, reboot server
-
-After the reboot <span class="notranslate">`pfcache= mount`</span> options will disappear by themselves.
-
-For OptimumCache version prior 0.2-11, uninstalling via rpm package manager does not automatically removes away ploop image. That is because not always possible to unmount it properly due to kernel dependency. If there is no luck with unmounting ploop, then the server will have to be rebooted and will need to remove ploop files manually:
-
-<div class="notranslate">
-
-```
-# rm /var/share/optimumcache/optimumcache.image
-# rm /var/share/optimumcache/DiskDescriptor.xml
-# rm /var/share/optimumcache/DiskDescriptor.xml.lck
-```
-</div>
- or
-
-<div class="notranslate">
-
-```
-# rm /path/to/ploop/image/file
-# rm /path/to/ploop/image/DiskDescriptor.xml
-# rm /path/to/ploop/image/DiskDescriptor.xml.lck
-```
-</div>
-
-For OptimumCache version 0.2-11 and later, ploop image will be removed automatically during uninstall. If ploop unmount issue prevents doing that, ploop image clean up will be scheduled after next server reboot.
-
-If uninstall OptimumCache process lasts for too long, please find the solution in Troubleshooting section of this document.
-
-
-### Troubleshooting
-
-* [Installing for FS is different from Ext4](./#installing-for-fs-is-different-from-ext4)
-* [Yum fails to install Perl rpms coming with OptimumCache](./#yum-fails-to-install-perl-rpms-coming-with-optimumcache)
-* [OptimumCache prior 0.2-23: Cannot unmount old ploop image](./#optimumcache-prior-0-2-23-cannot-unmount-old-ploop-image)
-* [High IO rate](./#high-io-rate)
-* [High CPU utilization](./#high-cpu-utilization)
-* [Uninstalling OptimumCache lasts for too long](./#uninstalling-optimumcache-lasts-for-too-long)
-* [‘Failed to attach peer: Invalid argument’ appears in syslog](./#‘failed-to-attach-peer-invalid-argument’-appears-in-syslog)
-
-:::tip Note
-OPTIMUMCACHE IS NO LONGER SUPPORTED
-:::
-
-#### Installing for FS is different from Ext4
-
-For now Ext4 is the only supported file system type. If a host has no Ext4 filesystem mounted, OptimumCache package installation will be abandoned:
-
-<div class="notranslate">
-
-```
-Preparing packages for installation...
-
-Cannot continue: Ext4 partition is the only supported by OptimiumCache, there is no one in fstab
-
-error: %pre(optimumcache-0.1-22.el6.cloudlinux.x86_64) scriptlet failed, exit status 1
-
-error:   install: %pre scriptlet failed (2), skipping
-```
-</div>
-
-Also, an attempt to add for caching directory, which does not reside on Ext4, will fail:
-
-<div class="notranslate">
-
-```
-# occtl --mark-dir /home --recursive
-
-mount: / not mounted already, or bad option
-
-optimumcache: Can not mount device. rc[8192]
-
-Error: mark[1]: /usr/bin/optimumcache mark --recursive /home
-```
-</div>
-
-#### Yum fails to install Perl rpms coming with OptimumCache
-
-If got this error with <span class="notranslate">`yum install optimumcache`</span>
-
-<div class="notranslate">
-
-```
-Error: Package: cloudlinux-collect-0.1-6.el6.noarch (cloudlinux-x86_64-server-6)
-
-Requires: perl(Config::Tiny)
-
-Error: Package: cloudlinux-collect-0.1-6.el6.noarch (cloudlinux-x86_64-server-6)
-
-Requires: perl(IO::Socket::SSL)
-
-Error: Package: cloudlinux-collect-0.1-6.el6.noarch (cloudlinux-x86_64-server-6)
-
-Requires: perl(YAML::Tiny)
-
-Error: Package: cloudlinux-collect-0.1-6.el6.noarch (cloudlinux-x86_64-server-6)
-
-Requires: perl(IPC::Run)
-
-You could try using --skip-broken to work around the problem
-
-You could try running: rpm -Va --nofiles --nodigest
-```
-</div>
-
-Most probably you have excluded <span class="notranslate">`perl*`</span> packages in <span class="notranslate">`/etc/yum.conf`</span> file, in this case to install OptimumCache run:
-
-<div class="notranslate">
-
-```
-# yum install optimumcache --disableexcludes=all
-```
-</div>
-
-#### OptimumCache prior 0.2-23: Cannot unmount old ploop image
-
-This is well-known ploop problem, which may result in failing such actions as resizing or moving ploop in OptimumCache. To workaround this problem use <span class="notranslate">`--ignore-unmount-failure`</span> with <span class="notranslate">`--move-ploop`</span>
-
-<div class="notranslate">
-
-```
-# occtl --move-ploop --ignore-unmount-failure
-```
-</div>
-
-As for resizing ploop, use flavor of <span class="notranslate">`--move-ploop`</span> command instead:
-
-<div class="notranslate">
-
-```
-# occtl --move-ploop /path/to/new/image/file [size GB] --ignore-unmount-failure
-```
-</div>
-
-For your changes to take effect, the server has to be rebooted. Upon reboot, you may clean up manually old ploop image file and <span class="notranslate">`DiskDescriptor.xml`</span> file, which resides in the same directory along with old image.
-
-#### High IO rate
-
-High <span class="notranslate">IO</span> problem was fixed in latest version of OptimumCache (version 0.2-6). The fix is to eliminate <span class="notranslate">`superflows fsync()`</span> calls in OptimumCache operations. To activate this fix in existing installation, flag <span class="notranslate">`NOIMMSYNC=1`</span> has to be manually set in <span class="notranslate">`/etc/syscoconfig/optimumcache`</span>.
-
-To ensure that this parameter is set <span class="notranslate">`ON`</span> in the config, set <span class="notranslate">`LOGLEVEL=2`</span> and execute <span class="notranslate">`service optimumcache restart`</span>. You will see something like this:
-
-<div class="notranslate">
-
-```
-optimumcache[1770]: Hash-size: 100000000 min-size: 0 max-size: 18446744071562067968
-optimumcache[1770]: Count: 0 Timeout: 5
-optimumcache[1770]: Max Timeout: 160 Adaptive Timeout Mul/Div: 2/4
-optimumcache[1770]: Iolimit: 0 iopslimit: 0
-optimumcache[1770]: No immediate fsync: Yes
-optimumcache[1771]: Starting OptimumCache monitor
-```
-</div>
-
-To update to version 0.2-6, run:
-
-<div class="notranslate">
-
-```
-# yum update optimumcache --enablerepo=cloudlinux-updates-testing
-```
-</div>
-
-#### High CPU utilization
-
-Once it is detected that OptimumCache overuses <span class="notranslate">CPU</span>, it is useful to check, whether checksums reindexing process is running. When reindexing is running, high <span class="notranslate">CPU</span> usage is ok, as far it will certainly drop down after reindexing finished.
-
-Can be checked in <span class="notranslate">`/var/log/messages`</span>
-
-<div class="notranslate">
-
-```
-# grep Reindexing /var/log/messages
-
-Feb  4 17:00:55 CL-default-2 occtl[2654]: Reindexing started
-```
-</div>
-
-If the last line from the output is not <span class="notranslate">`Reindexing finished…`</span>, than indexing is in progress.
-
-Also, can be checked via command <span class="notranslate">`occtl --report`</span>, watch if <span class="notranslate">`PFL_REINDEX_NUM_FILES`</span> and <span class="notranslate">`PFL_REINDEX_THOUGHPUT_KB`</span> identifiers are present in the last series of data:
-
-<div class="notranslate">
-
-```
-# occtl --report
-- Period starts at: 2015-02-04 17:00
-Period Stat:
-
-PFL_ATTACHED:                    170318
-PFL_CREATED:                     161583
-PFL_ERR_BAD_CSUM:                176
-PFL_ERR_INODES:                  879
-PFL_FAILED_TO_ATTACH_PEER:       791
-PFL_FAILED_TO_ATTACH_PEER_EBUSY: 791
-
-PFL_INODE_IN:                    406167
-PFL_PAGEMIN_FILTERED_OUT:        233418
-PFL_PAGEMIN_USED:                136082
-PFL_REINDEX_NUM_FILES:           192810
-PFL_REINDEX_THOUGHPUT_KB:        2904007
-PFL_RESTART:                     1
-```
-</div>
-
-#### Uninstalling OptimumCache lasts for too long
-
-Uninstalling OptimumCache takes time because of files unmark process, which lasts proportionally to number of files, previously marked for caching with <span class="notranslate">`occtl --mark-dir...`</span>. If you see, that <span class="notranslate">`yum remove optimumcache`</span> command is stuck and you have no time to wait for it to finish, or <span class="notranslate">IO</span> load, caused by unmarking files, is undesirable for you, open another console terminal and invoke:
-
-<div class="notranslate">
-
-```
-# occtl --cancel-pending-jobs
-```
-</div>
-
-This command will cancel unmark operation, being run by yum under the hood. So that yum uninstall package transaction will complete very soon.
-
-#### ‘Failed to attach peer: Invalid argument’ appears in syslog
-
-Rather rare problem, try to forcibly update `optimumcache_s` with ploop status.
-
-<div class="notranslate">
-
-```
-# occtl --remount-cached-points
-```
-</div>
-
-## TPE extension
-
-**TPE (Trusted Path Execution)**
-
-The kernel supports <span class="notranslate"> TPE </span> feature out of the box. You can configure it using following files:
-<div class="notranslate">
-
-```
-·        /proc/sys/kernel/grsecurity/grsec_lock
-·        /proc/sys/kernel/grsecurity/tpe
-·        /proc/sys/kernel/grsecurity/tpe_gid
-·        /proc/sys/kernel/grsecurity/tpe_restrict_all
-```
-</div>
-
-To enable <span class="notranslate"> TPE </span> feature in a standard way just add following to the end of your <span class="notranslate"> /etc/sysctl.conf </span>
-<div class="notranslate">
-
-```
-#GRsecurity 
-kernel.grsecurity.tpe = 1 
-kernel.grsecurity.tpe_restrict_all = 1 
-kernel.grsecurity.grsec_lock = 1  
-```
-</div>
-
-And do:
-<div class="notranslate">
-
-```
-# sysctl -p
-```
-</div>  
-
-::: tip Note
-Once you set grsec_lock to 1, you will not be able to change TPE options without reboot.
-:::
-
- This <span class="notranslate">Trusted Path Execution</span> feature was adopted from <span class="notranslate">grsecurity</span>.
-
-## CPU limits
-
-:::tip Note
-Deprecated
-
-This limit is no longer used, and <span class="notranslate"> [SPEED](/shared/limits/#speed-limits) </span> is used instead
-:::
-
-### CPU limits before lve-utils 1.4
-
-<span class="notranslate"> CPU </span> Limits are set by <span class="notranslate"> CPU </span> and <span class="notranslate"> NCPU </span> parameters. <span class="notranslate"> CPU </span> specifies the % of total <span class="notranslate"> CPU </span> of the server available to LVE. <span class="notranslate"> NCPU </span> specifies the number of cores available to LVE. The smallest of the two is used to define how much <span class="notranslate"> CPU </span> power will be accessible to the customer.
-
-| |  |  | |
-|-|--|--|-|
-|Cores Per Server | <span class="notranslate"> CPU </span> Limit | <span class="notranslate"> NCPU </span> Limit | Real limit|
-|1 | 25% | 1 | 25% of 1 core|
-|2 | 25% | 1 | 50% of 1 core|
-|2 | 25% | 2 | 50% of 1 core|
-|4 | 25% | 1 | 100% of 1 core (full core)|
-|4 | 25% | 2 | 1 core|
-|4 | 50% | 1 | 1 core|
-|4 | 50% | 2 | 2 cores|
-|8 | 25% | 1 | 1 core|
-|8 | 25% | 2 | 2 cores|
-|8 | 50% | 2 | 2 cores|
-|8 | 50% | 3 | 3 cores|
-
-When user hits <span class="notranslate"> CPU </span> limit, processes within that limit are slowed down. For example, if you set your <span class="notranslate"> CPU </span> limit to 10%, and processes inside LVE want to use more then 10% they will be throttled (put to sleep) to make sure they don't use more then 10%. In reality, processes don't get <span class="notranslate"> CPU </span> time above the limit, and it happens much more often then 1 second interval, but the end result is that processes are slowed down so that their usage is never above the <span class="notranslate"> CPU </span> limit set.
-
-## Package integration
-
-:::tip Note
-Deprecated.
-:::
-
-:::warning Note
-You can use [Control panel integration guide](/shared/control_panel_integration/) instead.
-:::
-
-**[lve-utils 1.4+]**
-
-CloudLinux OS Shared can automatically detect the most popular control panels, like cPanel - and allows to set different limits for users in different packages. It simplifies management as you don't have to choose between one limit that fits all your customers on the server, or individual limits for the customers.
-
-If you have a custom made control panel, with your own 'package' implementation, you can still use CloudLinux OS Shared framework to manage limits for your packages.
-
-To do that, you would need:
-
-Implement script that would map users to packages.
-
-Configure lvectl to use your script.
-
-**Implementing script**
-
-A script can be written in any language, and it has to be executable.
-
-It should accept the following arguments:
-
---list-all                        prints [userid package] pairs
-
-Output should look like a list of space separate pairs of user Linux IDs and package names.
-
-<div class="notranslate">
-
-```
-100 package1
-101 package1
-102 package2
-103 package3
-```
-</div>
-
-<span class="notranslate">--userid=id prints package for a user specified </span>
-
-Output should contain package name, like:
-
-<div class="notranslate">
-
-```
-package1
-```
-</div>
-
-<span class="notranslate">--package="package"    prints users for a package specified. </span>
-
-Output should look like a list of user Linux IDs.
-
-<div class="notranslate">
-
-```
-100
-101
-```
-</div>
-
-<span class="notranslate">--list-packages prints the list of packages </span>
-
-Output contains a list of names of packages, like:
-
-<div class="notranslate">
-
-```
-package1
-package2
-package3
-```
-</div>
-
-**Configuring lvectl to use your custom script**
-
-Edit <span class="notranslate">/etc/sysconfig/cloudlinux </span> file.
-
-Edit or modify parameter <span class="notranslate">`CUSTOM_GETPACKAGE_SCRIPT`</span>, and set it to point to your script, like: <span class="notranslate">`CUSTOM_GETPACKAGE_SCRIPT=/absolute/path/to/your/script`</span>
-
-
-For the script example please check the following article: [https://cloudlinux.zendesk.com/hc/en-us/articles/115004529105-Integrating-LVE-limits-with-packages-for-unsupported-control-panels](https://cloudlinux.zendesk.com/hc/en-us/articles/115004529105-Integrating-LVE-limits-with-packages-for-unsupported-control-panels).
-
-
-### Detecting and working with CloudLinux OS Shared
-
-
-Detecting if system is running CloudLinux OS Shared/CloudLinux kernel:
-
-
-<div class="notranslate">
-
-```
-$ uname -r|grep lve 
-```
-</div>
-
-If you get an output, it means the system is running CloudLinux kernel. CloudLinux kernels have lve in its name, like: <span class="notranslate"> 2.6.32-458.18.1.lve1.2.44.el6.x86_64 </span>
-
-Alternatively you can check for the presence of <span class="notranslate">`/proc/lve/list`</span> file.
-
-Check if CageFS is enabled (as <span class="notranslate"> root </span> ):
-
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --cagefs-status
-```
-</div>
-
-Check if CageFS is enabled for a particular user (as <span class="notranslate">`root`</span> ):
-
-<div class="notranslate">
-
-```
-$ /usr/sbin/cagefsctl --user-status _USER_NAME_
-```
-</div>
-
-Check if you are inside CageFS:
-
-Check for the presence of <span class="notranslate">`/var/.cagefs/.cagefs.token`</span> file - if present, it means that you are inside CageFS.
-
-### Displaying CPU, memory & IO limits
-
-
-Most control panels choose to display CloudLinux OS Shared usage & limits to end customers. To simplify that, we lve-stats exports a file that can be easily read and processed by a control panel to display the necessary information.
-
-The information is located in the <span class="notranslate">/var/lve/info </span> file. This information is updated every 5 minutes, and contains default limits (first line), as well as usage and limits for all customers. If a customer is not present in the file, it means that customer is not active (no scripts were executed recently for the customer), and a customer has default limits (so you can display no usage, and default limits in the control panel for that customer.
-
-The data is stored in a form of one line per customer, with coma separated values.
-
-| | |
-|-|-|
-|0 | user id|
-|1 | <span class="notranslate"> entry processes </span>|
-|2 | <span class="notranslate"> entry processes </span> limit|
-|3 | <span class="notranslate"> CPU </span>|
-|4 | <span class="notranslate"> CPU </span> limit|
-|5 | <span class="notranslate"> Virtual Memory </span>|
-|6 | <span class="notranslate"> Virtual Memory </span> Limit|
-|7 | Number of <span class="notranslate">  virtual memory </span> faults|
-|8 | Number of <span class="notranslate"> entry processes </span> faults|
-|9 | <span class="notranslate"> Physical Memory </span> Limit|
-|10 | <span class="notranslate"> Physical Memory </span>|
-|11 | Number of <span class="notranslate"> Physical memory </span> faults|
-|12 | <span class="notranslate"> Number of processes </span> limit|
-|13 | <span class="notranslate"> Number of processes </span>|
-|14 | <span class="notranslate"> Number of processes </span> fault|
-|15 | Reserved|
-|16 | <span class="notranslate"> IO </span> Usage|
-|17 | <span class="notranslate"> IO </span> Limit|
-
-With LVE version 4 (CloudLinux OS Shared lve0.x) only the first 9 parameters are available. You can check the the version by reading the first byte of <span class="notranslate">/proc/lve/list. </span>
-
-In the version 6 all 15 parameters should be available.
-
-There are only 2 LVE versions currently used in production. Future versions might add more fields, but will not alter order of existing fields.
-
-Memory is defined in 4KB pages (so, 1024 would mean 1024 4KB pages, or 4MB).
-
-<span class="notranslate"> IO </span> is defined as KB/s.
-
-<span class="notranslate"> CPU </span> is defined as % of total number of cores on a server.
-
-
-## Redis support for HostingLimits
-
-:::warning Warning!
-Starting from **mod_hostinglimits version 1.0-30** Redis is not supported.
-:::
-
-Redis support provides a way to query Redis database for LVE id, based on domain in the HTTP request. Given a database like:
-
-<div class="notranslate">
-
-```
-xyz.com 10001
-bla.com  10002
-....
-```
-</div>
-
-The module will retrieve corresponding LVE id from the database.
-
-To enable Redis support, compile from source: [https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/mod_hostinglimits.tar.gz)
-
-The compilation requires hiredis library.
-
-<div class="notranslate">
-
-```
-$ wget https://repo.cloudlinux.com/cloudlinux/sources/da/mod_hostinglimits.tar.gz
-$ yum install cmake
-$ tar -zxvf mod_hostinglimits*.tar.gz
-$ cd mod_hostinglimits*
-$ cmake -DREDIS:BOOL=TRUE .
-$ make
-$ make install
-```
-</div>
-
-To enable Redis mode, specify:
-
-<div class="notranslate">
-
-```
-LVEParseMode REDIS
-```
-</div>
-
-### **LVERedisSocket**
-
-| | |
-|-|-|
-|**Description**| Socket to use to connect to Redis database.|
-|**Syntax**|<span class="notranslate">`LVERedisSocket path`</span>|
-|**Default**|<span class="notranslate">`/tmp/redis.sock`</span>|
-|**Context**| server config|
-
-Used to specify location of Redis socket.
-
-**Example**:
-
-<div class="notranslate">
-
-```
-LVERedisSocket /var/run/redis.sock
-```
-</div>
-
-### **LVERedisAddr**
-
-| | |
-|-|-|
-|**Description**| IP/port used to connect to Redis database instead of socket.|
-|**Syntax**|<span class="notranslate">`LVERedisAddr IP PORT`</span>|
-|**Default**| <span class="notranslate">`none`</span>|
-|**Context**|<span class="notranslate">server config</span>|
-
-Used to specify IP and port to connect to Redis instead of using Socket
-
-**Example**:
-
-```
-LVERedisAddr 127.0.0.1 6993
-```
-
-### **LVERedisTimeout**
-
-| | |
-|-|-|
-|**Descriptin**| Number of seconds to wait before attempting to re-connect to Redis.|
-|**Syntax**|<span class="notranslate">`LERetryAfter SECONDS`</span>|
-|**Default**| 60 seconds|
-|**Context**|<span class="notranslate">server config</span>|
-
-Number of seconds to wait before attempting to reconnect to Redis after the last unsuccessful attempt to connect.
-
-**Example**:
-
-<div class="notranslate">
-
-```
-LVERedisTimeout 120
-```
-</div>
-
-## Migration to EA4
-
-* [Advices and limitations](/shared/cloudlinux_installation/#advices-and-limitations)
-* [CentOS with EasyApache 4](/shared/cloudlinux_installation/#centos-with-easyapache-4)
-* [CentOS without EasyApache 4](/shared/cloudlinux_installation/#centos-without-easyapache-4)
-* [CloudLinux OS Shared without EasyApache 4](/shared/cloudlinux_installation/#cloudlinux-os-shared-without-easyapache-4)
-* [More about cloudlinux_ea3_to_ea4 script](/shared/cloudlinux_installation/#more-about-cloudlinux-ea3-to-ea4-script)
-
-### Advices and limitations
-
-* Use cPanel 11.55.999.66(55.999.66) or higher version.
-* <span class="notranslate">Hardened EA4</span> limitations:
-  * **ea-php51** and **ea-php52** have no PHP-FPM support. Please use **mod_lsapi** instead.
-
-Follow the instructions [here](/shared/cloudlinux_os_components/#installation-3) to install and configure mod_lsapi.
-
-### CentOS with EasyApache 4
-
-If EasyApache 4 was installed earlier on your CentOS server and you would like to migrate to CloudLinux OS Shared:
-
-1. Convert server from CentOS  to CloudLinux (see [these instructions](/shared/cloudlinux_installation/#converting-existing-servers)).
-
-2. Restart Apache service.
-
-### CentOS without EasyApache 4
-
-If EasyApache 4 was not installed earlier on your CentOS server and you would like to migrate to CloudLinux OS Shared:
-
-1. Convert server from CentOS to CloudLinux OS Shared (see [these instructions](/shared/cloudlinux_installation/#converting-existing-servers)).
-
-2. Run:
-   
-<div class="notranslate">
-
-```
-cd ~; wget https://repo.cloudlinux.com/cloudlinux/sources/cloudlinux_ea3_to_ea4; sh cloudlinux_ea3_to_ea4 --convert
-```
-</div>
-
-(Find examples of <span class="notranslate">`cloudlinux_ea3_to_ea4`</span> script usage below).
-
-### CloudLinux OS Shared without EasyApache 4
-
-Install EasyApache4 on clean CloudLinux OS Shared from ISO image or migrate to EasyApache4 on existings CloudLinux OS Shared servers:
-
-1. Install cPanel.
-2. Run:
-
-<div class="notranslate">
-
-```
-cd ~; wget https://repo.cloudlinux.com/cloudlinux/sources/cloudlinux_ea3_to_ea4; sh cloudlinux_ea3_to_ea4 --convert
-```
-</div>
-
-(Find examples of `cloudlinux_ea3_to_ea4` script usage below).
-
-
-### More about cloudlinux_ea3_to_ea4 script
-
-About `cloudlinux_ea3_to_ea4` migration script parameters:
-
-<div class="notranslate">
-
-```
-cloudlinux_ea3_to_ea4 [ADDITIONS] ACTIONS
-```
-</div>
-
-
-Usage:
-
-| | |
-|-|-|
-|<span class="notranslate">-h, --help</span>  | Print this message|
-
-`Actions` (required parameter, shows what should script do):
-
-| | |
-|-|-|
-|<span class="notranslate"> -c, --convert </span>  | Convert EA3 to EA4|
-|<span class="notranslate"> -r, --revert </span> | Revert to EA3|
-
-`Additions` (optional parameter, adds to action installation of extra components):
-
-| | |
-|-|-|
-|<span class="notranslate"> -m, --mod_lsapi </span> | Install mod_lsapi|
-|<span class="notranslate"> -p, --mod_passenger </span> | Install alt-mod-passenger|
-|<span class="notranslate"> -a, --altphp </span> | Install/Update alt-php|
-
-
-**Examples:**
-
-* If you want to install EA4 with mod_lsapi and update/install alt-php:
-  
-<div class="notranslate">
-
-```
-sh cloudlinux_ea3_to_ea4 --convert --mod_lsapi --altphp 
-```
-</div>
-
-* If you want to install EA4 with mod_lsapi, alt_mod_passenger and update/install alt-php:
-  
-<div class="notranslate">
-
-```
-sh cloudlinux_ea3_to_ea4 --convert --mod_lsapi --altphp --mod_passenger
-```
-</div>
-
-* To restore EA3 with mod_lsapi:
-
-<div class="notranslate">
-
-```
-sh cloudlinux_ea3_to_ea4 --revert --mod_lsapi
-```
-</div>
-
-See also: [FAQ](https://cloudlinux.zendesk.com/hc/articles/360025827914-CloudLinux-OS-Installation-FAQ)
diff --git a/docs/shared/deprecated/images/CL-hide-python-ruby.png b/docs/shared/deprecated/images/CL-hide-python-ruby.png
deleted file mode 100644
index c21da9d5c..000000000
Binary files a/docs/shared/deprecated/images/CL-hide-python-ruby.png and /dev/null differ
diff --git a/docs/shared/deprecated/images/clip000133.jpg b/docs/shared/deprecated/images/clip000133.jpg
deleted file mode 100644
index 71647ead4..000000000
Binary files a/docs/shared/deprecated/images/clip000133.jpg and /dev/null differ
diff --git a/docs/shared/deprecated/images/clip000233.jpg b/docs/shared/deprecated/images/clip000233.jpg
deleted file mode 100644
index 51c875cb3..000000000
Binary files a/docs/shared/deprecated/images/clip000233.jpg and /dev/null differ
diff --git a/docs/shared/deprecated/images/clip000255.jpg b/docs/shared/deprecated/images/clip000255.jpg
deleted file mode 100644
index 01f934036..000000000
Binary files a/docs/shared/deprecated/images/clip000255.jpg and /dev/null differ
diff --git a/docs/shared/deprecated/images/clip000256.jpg b/docs/shared/deprecated/images/clip000256.jpg
deleted file mode 100644
index cd95ed3d3..000000000
Binary files a/docs/shared/deprecated/images/clip000256.jpg and /dev/null differ
diff --git a/docs/shared/deprecated/images/clip000257.jpg b/docs/shared/deprecated/images/clip000257.jpg
deleted file mode 100644
index 762a16008..000000000
Binary files a/docs/shared/deprecated/images/clip000257.jpg and /dev/null differ
diff --git a/docs/shared/deprecated/images/clip000261.jpg b/docs/shared/deprecated/images/clip000261.jpg
deleted file mode 100644
index 626a9d4a3..000000000
Binary files a/docs/shared/deprecated/images/clip000261.jpg and /dev/null differ
diff --git a/docs/shared/deprecated/images/embim1.png b/docs/shared/deprecated/images/embim1.png
deleted file mode 100644
index b7ed8c154..000000000
Binary files a/docs/shared/deprecated/images/embim1.png and /dev/null differ
diff --git a/docs/shared/deprecated/images/optimumcachecollect_zoom93.png b/docs/shared/deprecated/images/optimumcachecollect_zoom93.png
deleted file mode 100644
index 31336a4a5..000000000
Binary files a/docs/shared/deprecated/images/optimumcachecollect_zoom93.png and /dev/null differ
diff --git a/docs/shared/deprecated/images/webapp001_zoom94.png b/docs/shared/deprecated/images/webapp001_zoom94.png
deleted file mode 100644
index fa6dcf007..000000000
Binary files a/docs/shared/deprecated/images/webapp001_zoom94.png and /dev/null differ
diff --git a/docs/shared/deprecated/images/webapp002_zoom93.png b/docs/shared/deprecated/images/webapp002_zoom93.png
deleted file mode 100644
index b7cd0e537..000000000
Binary files a/docs/shared/deprecated/images/webapp002_zoom93.png and /dev/null differ
diff --git a/docs/shared/elevate/.DS_Store b/docs/shared/elevate/.DS_Store
deleted file mode 100644
index e04ec8588..000000000
Binary files a/docs/shared/elevate/.DS_Store and /dev/null differ
diff --git a/docs/shared/elevate/README.md b/docs/shared/elevate/README.md
deleted file mode 100644
index 689a23574..000000000
--- a/docs/shared/elevate/README.md
+++ /dev/null
@@ -1,644 +0,0 @@
-# ELevate
-
-[[toc]]
-
-:::warning Beta
-CloudLinux ELevate project is currently in beta. Expect potenital issues, in particular with third-party packages and/or repositories.
-We don't recommend to use or test this tool on your production servers unless you're completely sure about what you're doing.
-:::
-
-:::warning
-We disclaim responsibility for incorrect or improper use of the tool. The support team will not be able to help you if you have not followed all the steps described in the documentation or converted a server with a non-cPanel control panel present.
-
-In addition, support will not be provided if you have any third-party utilities that do not function after the upgrade, according to [Support policy](https://www.cloudlinux.com/CloudLinux-and-Imunify-support-policy.pdf). Examples: webservers, DNS servers, mail servers, database servers and other utilities that do not belong to our product line.
-:::
-
-## FAQ
-
-### What is ELevate?
-The ELevate project is an initiative to support migrations between major version of RHEL-derivatives.
-
-The CloudLinux ELevate variant, built on top of the [AlmaLinux ELevate project](https://wiki.almalinux.org/elevate/), aims to provide a streamlined method of upgrading CloudLinux 7 systems to CloudLinux 8 in-place.
-
-The [Leapp utility](https://leapp.readthedocs.io/) is the main tool used to perform the upgrade.
-
-The [CloudLinux 7 with cPanel ELevate Scenario](#elevate-scenario-cloudlinux-7-with-cpanel) uses a modified version of the [cPanel ELevate](https://github.com/cpanel/elevate) project as an additional layer of the upgrade process.
-
-ELevate is a project aimed to provide the ability to migrate between major versions of RHEL-based distributions from 7.x to 8.x. It combines Red Hat's Leapp framework with a community created library and service for the migration metadata set required for it.
-
-
-### Is it ready for production use?
-
-While the ELevate project and its surrounding ecosystem is mature, support for CloudLinux has been introduced quite recently.
-
-We guarantee functionality of CloudLinux products and services on the post-upgrade system. You are welcome to contact CloudLinux Support with any issues that occur with said products.
-
-However, we cannot guarantee that the third-party software and RPM packages will be updated correctly on all system configurations. [See below](#will-it-upgrade-everything-i-have-on-my-system).
-
-Systems with configurations and packages that substantially differ from a typical CloudLinux 7 installation could encounter issues previously not seen before.
-
-
-### Can it break something on my system?
-
-It can.
-
-A full system upgrade is an inherently invasive procedure. In some cases, due to different system configurations, package errors or even power failures, you may encounter issues during the upgrade process that can't be automatically recovered from.
-
-Said issues may be severe, **<font color="Red">up to and including rendering the system completely inaccessible.</font>**
-
-To that end, we **highly recommend never running ELevate on a system without a backup ready**.
-
-Ideally, perform a trial run in a disposable environment, like a VM or a sandbox, to verify that migration functions as expected before you attempt to migrate a system.
-
-
-### Will it upgrade everything I have on my system?
-
-It depends. ELevate will not upgrade arbitrary software, especially one that isn't related to CloudLinux or a supported panel.
-
-The ELevate project only supports a subset of package repositories it's aware of - that is, package repositories that are included in its configuration files.
-
-Packages from repositories Leapp is unaware of **will not be upgraded**.
-
-It's possible to add missing repositories and packages to ELevate yourself, if you're so inclined. Please check the [Contribution](/elevate/#contribution) section for more information on how to do so.
-
-
-### Will it interrupt my server's functionality?
-
-Yes.
-
-One of the major steps of the upgrade process involves rebooting into a special `initramfs` environment, from which the system's software is upgraded. During that period of time, the system will be mostly non-functional and inaccessible.
-
-This stage may take **up to an hour**, so schedule the upgrade accordingly.
-
-During the preparation stages - that is, when the upgrade process is first *initiated* and before the system is rebooted - the system's services will function normally.
-
-Note that CloudLinux 7 no panel/custom panel and cPanel upgrade scenarios behave somewhat differently during the preparation stage. The cPanel scenario will disable the site functionality from this stage up until completion, while the no-panel/custom panel scenario will not.
-
-
-### How long does it take?
-
-Depending on the amount and size of the packages that need to be updated, the upgrade process may take a long time, up to several hours. This time also varies with the machine's resources and the speed of internet connection.
-
-If the machine remains unresponsive for more than 2 hours after rebooting, assume the upgrade process failed during the post-reboot phase, and the machine cannot return to normal functionality automatically.
-
-
-### How do I use it?
-
-Depending on the web panel you have installed on your system, the upgrade process will require different steps.
-
-At the moment, ELevate migration from CloudLinux 7 to CloudLinux 8 is supported on:
-
-* *no panel/custom panel* systems;
-* *cPanel* systems.
-
-
-#### I have a CL7 system with no webpanel/a custom webpanel installed, how do I upgrade to CL8?
-
-In such case, you can upgrade through the Leapp tool directly.
-
-Please refer to the [CloudLinux 7 with no panel/custom panel ELevate Scenario](#elevate-scenario-cloudlinux-7-with-no-panel-or-a-custom-panel) for step-by-step instructions.
-
-#### I have a CL7 system with cPanel installed, how do I upgrade to CL8?
-
-With cPanel present on the machine, you need to run the upgrade process through the `elevate-cpanel` tool.
-
-Please refer to the [CloudLinux 7 with cPanel ELevate Scenario](#elevate-scenario-cloudlinux-7-with-cpanel) for step-by-step instructions.
-
-#### I have a CL7 system with DirectAdmin/Plesk/another panel installed, how do I upgrade to CL8?
-
-Unfortunately, CloudLinux ELevate doesn't support these system configurations yet.
-
-Instead, you can create a new machine with CloudLinux 8 and migrate your system's license and configuration to it.
-
-Please refer to the following documentation links for instructions on how to do so:
-
-* [How to Backup & Migrate All CloudLinux Settings to Another Server](https://cloudlinux.zendesk.com/hc/en-us/articles/115004277894-How-to-Backup-Migrate-All-CloudLinux-Settings-to-Another-Server)
-* [How to Restore PHP Selector Options](https://cloudlinux.zendesk.com/hc/en-us/articles/115004517465)
-* [How to obtain activation keys, register and migrate servers ](https://cloudlinux.zendesk.com/hc/en-us/articles/115003888573-How-to-obtain-activation-keys-register-and-migrate-servers)
-
-
-### I ran into a problem during the upgrade process, what do I do?
-
-Please check the Troubleshooting section directly below.
-
-### The Troubleshooting section doesn't have an issue that I'm having. What now?
-
-First, try to narrow down the most probable source of the issue you've encountered, if possible.
-
-For cPanel-specific issues, [cPanel ELevate issue tracker](https://github.com/cpanel/elevate/issues) is the most appropriate place to report them.
-
-For CloudLinux-specific issues, report them in the [CloudLinux ELevate issue tracker](https://github.com/cloudlinux/elevate/issues) or contact CloudLinux Support with a description of the encountered problem.
-
-For issues with the underlying Leapp framework, report them in the [AlmaLinux Leapp repository issue tracker](https://github.com/AlmaLinux/leapp-repository/issues).
-
-When filing an issue, include:
-- Steps to reproduce the issue
-- All files in `/var/log/leapp`
-- `/var/lib/leapp/leapp.db`
-- journalctl
-- If using the CloudLinux 7 with cPanel scenario, `/var/log/elevate-cpanel.log`
-- If you want, you can also send anything else would you like to provide (e.g. storage info)
-
-**For your convenience you can pack all logs with this command:**
-
-`# tar -czf leapp-logs.tgz /var/log/leapp /var/lib/leapp/leapp.db`
-
-Then you may attach only the `leapp-logs.tgz` file.
-
-For the no-panel scenario: before gathering data, if possible, re-run the *leapp* command that encountered an issue with the `--debug` flag, e.g.: `leapp upgrade --debug`.
-
-
-## Troubleshooting
-
-Here is a list of problems you may encounter during the upgrade attempt.
-
-### Common issues
-
-These issues may be encountered during any ELevate Scenario.
-
-#### Newest kernel
-
-The preupgrade/upgrade process may halt with the following message:
-> Inhibitor: Newest installed kernel not in use
-
-Make sure your system is running the latest kernel before proceeding with the upgrade. If you updated the system recently, a reboot may be sufficient to do so. Otherwise, edit your Grub configuration accordingly.
-
-
-#### Kernel modules deprecated
-
-Some kernel modules are deprecated in the CloudLinux 8 major versions. To proceed with the upgade, unload them.
-Leapp will advise on the list of modules to be removed.
-
-```
-rmmod floppy pata_acpi btrfs
-```
-
-
-#### Package repository defined multiple times
-
-You may encounter the following error message when attempting to upgrade:
-
-```
-Inhibitor: A YUM/DNF repository defined multiple times
-```
-
-Refer to the `/var/log/leapp/leapp-report.txt` for the details on the repository in question.
-
-To correct the issue, examine your yum reposiory configuration and clear out any dupicate entries before restarting the upgrade process.
-
-
-#### SSHD config default mismatch
-
-If your OpenSSH configuration file does not explicitly state the option PermitRootLogin in sshd_config file, this upgrade inhibitor will apperar.
-
-The option's default is "yes" in RHEL7, but will change in RHEL8 to "prohibit-password", which may affect your ability to log onto this machine after the upgrade.
-
-To prevent this from occuring, set the PermitRootLogin option explicity to preserve the default behaivour after migration:
-
-```
-echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config
-```
-
-Alternatively, configure the SSHD so that the option is present explicitly, without leaving it to the default behaviour.
-
-
-#### Disabling PAM modules
-
-PAM module pam_pkcs11 is no longer available in RHEL-8 since it was replaced by SSSD.
-Leaving this module in PAM configuration may lock out the system.
-
-Allow Leapp to disable the pam_pkcs11 module in PAM configuration by adding an entry to the Leapp answerfile:
-
-```
-sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
-```
-
-#### CLN registration
-
-Should you encounter an issue with the `switch_cln_channel` actor, make sure that your system is registered with the CLN network.
-
-`rhn_check; echo $?`
-
-If it is not, you may want to force a [re-registration.](/shared/cloudlinux_installation/#license-activation)
-
-
-#### DNF plugin installation
-
-You may encounter issues with Leapp DNF actors failing with the following message:
-`Cannot obtain data about the DNF configuration.`
-
-To resolve this problem, ensure that the **dnf config-manager plugin** is installed and is functioning properly.
-
-If not, enable the corresponding package repository (e.g. `centos-extras`) and install it.
-
-`dnf install 'dnf-command(config-manager)'`
-
-
-#### DNF transaction failure
-
-The main upgrade transaction is performed while the system is booted into a custom InitRamFS. From there, all the package operations prepared during the previous steps are performed.
-
-While in this state, the system is inaccessble remotely via SSH. However, it can still be accessed through tools such as VNC.
-
-In some cases, the upgrade may encounter an unrecoverable error while running the transaction, which can result in the system remaining in a halfway-upgraded, unusable and partially inaccessible state.
-
-For example, if a package encounters a fatal error inside its `%preun` or `%prein` scriptlets during the upgrade, the transaction and the upgrade process may halt, leaving the system in an unusable state.
-
-It is recommended to remove such packages prior to the upgrade, or, alternatively, add them to the `to_keep` list (see *Transaction Configuration Files* section) to prevent Leapp from attempting to upgrade them.
-
-
-### ELevate cPanel Scenario issues
-
-These issues can occur during the upgrade on CloudLinux 7 + cPanel systems.
-
-#### Post-reboot dnf upgrade error
-
-In some system configurations, you may encounter an issue with the [stage 4](#stage-4) of the upgrade halting with a message similar to the following:
-
-```
-[INFO] Running: /usr/bin/dnf -y --allowerasing update
-[INFO] Error: Failed to download metadata for repo 'cloudlinux-base': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
-[INFO] Sending notification: Fail to update to CloudLinux 8
-[ERROR] The elevation process failed during stage 4.
-[ERROR]
-[ERROR] You can continue the process after fixing the errors by running:
-[ERROR]
-[ERROR]     /usr/local/cpanel/scripts/elevate-cpanel --continue
-```
-
-This most commonly occurs in two cases:
-* When a package repository configuration file not associated with any RPM packages can no longer be accessed on the post-upgrade system due to the changes in Yum variables;
-* When a package repository configuration file associated with a RPM package was modified manually, and thus, not upgraded automatically during the process.
-
-Check the URL/mirrorlist of the mentioned Yum repository. Make sure it's accessible from the machine.
-If there's a related `.rpmnew` file present, consider replacing the repository config file with it.
-
-#### Missing EA packages after the upgrade
-
-You may discover that some, or all EasyApache packages (with the `ea-*` naming scheme) on your post-upgrade system are missing.
-
-This outcome will be accompanied by an error message in the upgrade log (/var/log/elevate-cpanel.log) akin to the following:
-
-```
-* 2023-03-20 15:10:03 (4265) INFO Running: /usr/local/bin/ea_install_profile --install /etc/cpanel/ea4/profiles/custom/current_state_at_2023-03-20_12:22:49.json
-* 2023-03-20 15:10:03 (4266) INFO
-* 2023-03-20 15:10:17 (4280) INFO  Problem: package ea-apache24-mod_lsapi-1:1.1-64.el8.cloudlinux.x86_64 requires liblsapi < 1:1.1-65, but none of the providers can be installed
-* 2023-03-20 15:10:17 (4280) INFO   - cannot install both liblsapi-1:1.1-64.el8.cloudlinux.x86_64 and liblsapi-1:1.1-65.el8.cloudlinux.x86_64
-* 2023-03-20 15:10:17 (4280) INFO   - cannot install the best candidate for the job
-* 2023-03-20 15:10:17 (4280) INFO The entire output was logged to: /usr/local/cpanel/logs/packman/errors/2023-03-20_15:10:17-1
-```
-
-This happens most frequently when one or more testing repositories were enabled on the pre-upgrade system.
-
-The Leapp framework attempts to upgrade all packages to their latest available versions - which includes versions available from testing repositories.
-
-EasyApache packages are not included in Leapp upgrade procedures - they're removed from the system during the initial upgrade stage and are installed again after Leapp completes the main upgrade transaction. EasyApache packages have strict dependency version requirements, which means that if the installed dependency's version is too recent, it'll need to be downgraded.
-
-However, the tool used to restore the EA packages, `ea_install_profile`, does not perform downgrades automatically and will instead interrupt the restoration process.
-
-To resolve the issue:
-* First, install the packages listed in the log as problematic manually while downgrading their dependencies as needed.
-* Then, run the `ea_install_profile` command with the exact same arguments as shown in the log.
-
-In the above example, you'd need to run:
-```
-dnf -y install ea-apache24-mod_lsapi
-/usr/local/bin/ea_install_profile --install /etc/cpanel/ea4/profiles/custom/current_state_at_2023-03-20_12:22:49.json
-```
-
-#### Outdated cPanel version
-
-You may encounter the following error message when attempting to upgrade:
-
-```
-This installation of cPanel *YOUR_CPANEL_VERSION* does not appear to be up to date. Please upgrade cPanel to a most recent version.
-```
-
-You need to have an updated cPanel installation to proceed with the upgrade.
-Please refer to the [Latest cPanel & WHM Builds (All Architectures)](http://httpupdate.cpanel.net/) and ensure you have a cPanel updated to a version from one of the following tiers: STABLE, RELEASE, CURRENT or EDGE.
-
-LTS versions are not supported.
-
-
-#### EasyApache 4 packages
-
-You may encounter the following error message when attempting to upgrade:
-
-```
-[WARN] *** Elevation Blocker detected: ***
-  One or more EasyApache 4 package(s) are not compatible with CloudLinux 8.
-  Please remove these packages before continuing the update.
-  - ea-apache24-mod-unsupported-package
-	- ...
-```
-
-Review and remove the listed EasyApache packages, then restart the process.
-
-
-#### Unsupported third-party components
-
-You may encounter the following error message when attempting to upgrade:
-
-```
-One or more enabled YUM repo are currently unsupported.
-You should disable these repositories and remove packages installed from them
-before continuing the update.
-
-Consider reporting this limitation to https://github.com/cpanel/elevate/issues
-```
-
-`elevate-cpanel` checks for presence of unknown enabled repositories and blocks the migration process if one is found.
-
-The packages from the listed repositories **won't be properly upgraded** if Leapp doesn't contain their data in its configuration files.
-
-It's recommended to follow the provided suggestion and remove the repositories and packages before running the upgrade.
-
-If you'd like to add the configuration data for new repositories and packages to Leapp, please refer to the **Contribution** section of the manual for information on the proper procedure for doing so.
-
-
-## Known issues
-
-### Web servers
-The Litespeed web server installation scheme is currently incompatible with ELevate.
-
-It can be updated *after* the upgrade is complete, but won't be automatically upgraded with the rest of the system during the ELevate process.
-
-The same limitation applies to NGINX installations not provided through cPanel or CloudLinux mechanisms.
-
-## Contribution
-
-ELevate is developed and built as a tool for RHEL-based distributives, not just CloudLinux specifically.
-
-ELevate supports migrating to/from other distributions and is open for all to contribute to and enhance.
-
-You can find more information and FAQ about the AlmaLinux ELevate this project is built upon at [almalinux.org/elevate](https://almalinux.org/elevate) and [Migration SIG](https://wiki.almalinux.org/sigs/Migration), as well as contribute using the ELevate Contribution Guide.
-
-CloudLinux does not provide support related to integrating third-party repositories or packages into the upgrade process. However, you can add the aforementioned components to the Leapp database yourself.
-
-Please check the [Third-party integration](https://github.com/AlmaLinux/leapp-repository/tree/almalinux#third-party-integration) section in the linked README for instructions on integrating external repositories and packages.
-
-
-## ELevate Scenario - CloudLinux 7 with no panel or a custom panel
-
-This scenario contains steps on how to upgrade CloudLinux 7 to CloudLinux 8 on no-panel/custom panel systems.
-
-1. First of all, make sure that your CloudLinux 7 is fully upgraded and on the latest kernel version.
-
-2. After that, download the elevate-testing.repo file with the project testing repo:
-
-```
-sudo curl https://repo.almalinux.org/elevate/testing/elevate-testing.repo -o /etc/yum.repos.d/elevate-testing.repo
-```
-
-3. Import the ELevate GPG key:
-
-```
-sudo rpm --import https://repo.almalinux.org/elevate/RPM-GPG-KEY-ELevate
-```
-
-4. Install leapp packages and migration data for the CloudLinux OS.
-
-```
-sudo yum install -y leapp-upgrade leapp-data-cloudlinux
-```
-
-### Pre-upgrade
-
-Start a preupgrade check. In the meanwhile, the Leapp utility creates a special `/var/log/leapp/leapp-report.txt` file that contains possible problems and recommended solutions. No rpm packages will be installed during this phase.
-
-:::danger WARNING
-The preupgrade check will likely fail as the default CloudLinux 7 doesn't meet all requirements for migration. That is expected.
-:::
-
-```
-sudo leapp preupgrade
-```
-
-
-This summary report will help you get a picture of whether it is possible to continue the upgrade.
-
-The preupgrade process may stall with the following message:
-
-```
-Inhibitor: Newest installed kernel not in use
-```
-
-Make sure your system is running the latest kernel before proceeding with the upgrade. If you updated the system recently, a reboot may be sufficient to do so. Otherwise, edit your Grub configuration accordingly.
-
-:::tip Note
-In certain configurations, Leapp generates `/var/log/leapp/answerfile` with true/false questions. Leapp utility requires answers to all these questions in order to proceed with the upgrade.
-:::
-
-Once the preupgrade process completes, the results will be contained in the file `/var/log/leapp/leapp-report.txt`.
-
-It's advised to review the report and consider how the changes will affect your system.
-
-:::danger WARNING
-In particular, pay attention to the packages that will not be upgraded during the transaction.
-
-Should any packages or package repositories that are unknown to Leapp be detected, they will be listed in the report. Consider how leaving the listed items unupgraded will affect the stability of your system.
-
-If the packages listed as unknown in the report are critical for your system, proceeding with the upgrade is **extremely likely** to damage its functionality, up to making the machine unaccessible.
-:::
-
-If you'd like to perform an upgrade on a system with unknown packages/repositories reported, and you're confident about all the potential risks, consider first adding the unknown repositories to Leapp's database, as described [here](https://github.com/AlmaLinux/leapp-repository/tree/almalinux#third-party-integration).
-
-
-### Transaction Configuration Files
-
-If you want to manually override the framework's upgrade actions for specific packages, you may do so by editing the files contained in `/etc/leapp/transaction/`.
-
-These configuration files have priority over automatic package upgrade resolutions and Package Elevation Service data.
-
-The configuration files are as follows:
-* to_install
-  * Install these packages. Don't remove them or preserve them as-is.
-* to_remove
-  * Remove these packages. Do not attempt to keep them or upgrade them.
-* to_keep
-  * Do not upgrade these packages. Keep them as they are on the system.
-* to_reinstall
-  * Remove these packages during the update, then reinstall them. Mostly useful for packages that have the same version string between major versions, and thus won't be upgraded automatically.
-
-
-### Upgrade
-
-Start an upgrade. You’ll be offered to reboot the system after this process is completed.
-
-
-```bash
-sudo leapp upgrade
-sudo reboot
-```
-
-
-:::tip Note
-The upgrade process after the reboot may take a long time, up to 40-50 minutes, depending on the machine resources. If the machine remains unresponsive for more than 2 hours, assume that the upgrade process has failed during the post-reboot phase.
-If it's still possible to access the machine in some way, for example, through remote VNC access, the logs containing the information on what went wrong are located in this folder: `/var/log/leapp`.
-:::
-
-A new entry in GRUB called ELevate-Upgrade-Initramfs will appear. The system will be automatically booted into it. Observe the update process in the console.
-
-After the reboot, login into the system and check the migration report. Verify that the current OS is the one you need.
-
-
-```bash
-cat /etc/redhat-release
-cat /etc/os-release
-rpm -qa | grep el7 # check if there are unupgraded packages present
-cat /var/log/leapp/leapp-report.txt
-cat /var/log/leapp/leapp-upgrade.log
-```
-
-In addition, check the leapp logs for .rpmnew configuration files that may have been created during the upgrade process. In some cases os-release or yum package files may not be replaced automatically, requiring the user to rename the .rpmnew files manually.
-
-
-## ELevate Scenario - CloudLinux 7 with cPanel
-
-This scenario contains steps on how to upgrade CloudLinux 7 to CloudLinux 8 on systems with cPanel present.
-
-It uses an additional tool to assist with migration of cPanel-related features - a modified version of [elevate-cpanel](https://github.com/cpanel/elevate).
-
-### Upgrade process overview
-
-The cPanel upgrade process is divided into multiple `stages`.
-Each `stage` is responsible for one part of the upgrade.
-Between stages, a `reboot` is performed, with one last reboot at the end of the final stage.
-
-#### Stage 1
-
-The elevation process is initiated by installing the `elevate-cpanel` service responsible for controlling the upgrade process between multiple reboots.
-
-#### Stage 2
-
-The current distro packages are updated.
-cPanel services are disabled and the custom upgrade MOTD is set up.
-
-#### Stage 3
-
-The Leapp ELevate package repository is set up and Leapp packages are installed.
-The cPanel packages are prepared for the update.
-
-Some known conflicting packages are removed and some existing configurations are backed up. These packages will be reinstalled later.
-
-The main `leapp upgrade` process is executed.
-
-#### Stage 4
-
-At this stage the machine should be running CloudLinux 8.
-
-cPanel products for the new distro are updated.
-
-The packages that were removed during the previous stage are restored.
-
-#### Stage 5
-
-This is the final stage of the upgrade process.
-Some sanity checks and cleanup tasks are performed.
-
-The `elevate-cpanel` service used during the upgrade process is removed.
-
-A final reboot is performed at the end of this stage.
-
-### Preparing
-
-Make sure your system is fully updated before starting the upgrade process.
-
-```bash
-sudo yum -y update
-```
-
-In addition, make sure your system is running the latest available version of cPanel.
-
-Ensure that you have the package `ea-cpanel-tools >= 1.0-67.el7.cloudlinux` installed. You may need to activate the `cloudlinux-ea4-testing` package repository for that version to become accessible. By default, it is located at `/etc/yum.repos.d/cloudlinux-ea4-testing.repo`.
-
-Download the cPanel ELevate script.
-
-`wget -O /scripts/elevate-cpanel https://raw.githubusercontent.com/cloudlinux/elevate/cloudlinux-release/elevate-cpanel`
-`chmod 700 /scripts/elevate-cpanel`
-
-Run a preupgrade check. No rpm packages will be installed during this phase.
-
-`/scripts/elevate-cpanel --check --upgrade-to=cloudlinux`
-
-
-:::tip Note
-In addition to Leapp-created log files and reports, contained in `/var/log/leapp`, cPanel ELevate also creates an additional log file: `/var/log/elevate-cpanel.log`
-
-It's advised to check the aforementioned files for possible problems and recommended solutions.
-:::
-
-Once the preupgrade process completes, the results will be contained in `/var/log/leapp/leapp-report.txt` file.
-
-It's advised to review the report and consider how the changes will affect your system.
-
-:::danger WARNING
-In particular, pay attention to the packages that will not be upgraded during the transaction.
-
-Should any packages or package repositories that are unknown to Leapp be detected, they will be listed in the report. Consider how leaving the listed items unupgraded will affect the stability of your system.
-
-If the packages listed as unknown in the report are critical for your system, proceeding with the upgrade is **extremely likely** to damage its functionality, up to making the machine unaccessible.
-:::
-
-### Running
-
-:::warning
-The upgrade process requires a certain amount of system resources to complete.
-
-Machines with RAM lower than 4 Gb can potentially face out-of-memory problems during the update.
-If such a problem occurs during the *initramfs stage* of the process, the machine can end up in an **inaccessible state**.
-
-Please make sure you have enough resources to perform the upgrade safely, and make sure to have a backup of the system prepared before doing so.
-:::
-
-
-Start the upgrade by running the following command:
-
-`/scripts/elevate-cpanel --start --upgrade-to=cloudlinux`
-
-:::tip Note
-By default, the system will be automatically restarted during the upgrade process when nessesary. You can make the process require manual reboots by adding the switch `--manual-reboots`.
-
-`/scripts/elevate-cpanel --start --manual-reboots --upgrade-to=cloudlinux`
-:::
-
-The system will reboot several times during the process. While the upgrade is in progress, the system's MOTD will change.
-
-Check the current status of the upgrade process with:
-`/scripts/elevate-cpanel --status`
-
-Monitor the elevation log for issues:
-`/scripts/elevate-cpanel --log`
-
-In case of errors, once resolved, you can continue the migration process:
-`/scripts/elevate-cpanel --continue`
-
-
-:::tip Note
-During one of the later upgrade phases, the system will reboot into a custom initramfs, in which the main package upgrade transaction will take place.
-During this time, the system will be inaccessible through SSH.
-
-
-The upgrade process after the reboot may take a long time, up to 40-50 minutes, depending on the machine resources. If the machine remains unresponsive for more than 2 hours, assume the upgrade process failed during the post-reboot phase.
-If it's still possible to access the machine in some way, for example, through remote VNC access, the logs containing the information on what went wrong are located in this folder: `/var/log/leapp`, as well as here: `/var/log/elevate-cpanel.log`
-:::
-
-
-### Post-upgrade
-
-After the reboot, login into the system and check:
-
-* the status: `/scripts/elevate-cpanel --status`
-* the log: `/var/log/elevate-cpanel.log`
-* the Leapp report: `/var/log/leapp/leapp-report.txt`
-
-
-Verify that the current OS is the one you were upgrading to.
-
-```bash
-cat /etc/redhat-release
-cat /etc/os-release
-```
-
-Check the leapp logs for `.rpmnew` configuration files that may have been created during the upgrade process. In some cases files like `/etc/os-release` or yum package files may not be replaced automatically - in particular, when said files were modified - requiring the user to rename the `.rpmnew` files manually.
-
diff --git a/docs/shared/faq/README.md b/docs/shared/faq/README.md
deleted file mode 100644
index c93d689dc..000000000
--- a/docs/shared/faq/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# FAQ
-
-### What is the CloudLinux subsystem on Ubuntu?
-
-CloudLinux subsystem on Ubuntu is a scope of deb-packages which allows using CloudLinux features on Ubuntu OS.
-The main goal of this subsystem is to allow operating the already existed CloudLinux functionality on another OS.
-
-### How to install the CloudLinux subsystem on Ubuntu?
-
-See [Installation](/installation/).
-
-### Is the CloudLinux subsystem on Ubuntu paid/unpaid?
-
-During the beta period it is free.
-
-### Can I get the ISO for the CloudLinux subsystem on Ubuntu?
-
-As of now, only installation via `ubuntu2cloudlinux.py` is available.
-
-### What control panel can be used with the CloudLinux subsystem on Ubuntu?
-
-As of now, only cPanel is supported. Plesk and DirectAdmin are not supported.
-
-### How can I get support for my CloudLinux subsystem on Ubuntu servers?
-
-Feel free to contact Support via [Support Portal](https://www.cloudlinux.com/support-portal/).
-
-### Can I use other CloudLinux products (Imunify360, KernelCare) with the CloudLinux subsystem on Ubuntu?
-
-During the first beta release you cannot use other CloudLinux products (Imunify360, KernelCare) with the CloudLinux
-subsystem on Ubuntu We're planning to add them in the upcoming releases.
-
-### Can I use Docker with the CloudLinux subsystem on Ubuntu?
-
-You cannot use Docker with the CloudLinux subsystem on Ubuntu in the current version.
-
-### Is control panel integration functionality available in the current release?
-
-Yes, it is available.
-
-### How to set up a PHP-fpm handler for the domain?
-
-Since the PHP-fpm handler is required to use WP Optimization Suite, you may need to configure it manually.
-
-These are configuration steps:
-
-1. Ensure the PHP-fpm package for the current PHP version is installed or install it.
-
-    * Via MultiPHP Manager
-
-
-2. Enable PHP-fpm handler for domain via MultiPHP Manager
-
diff --git a/docs/shared/features/README.md b/docs/shared/features/README.md
deleted file mode 100644
index 6af98adf2..000000000
--- a/docs/shared/features/README.md
+++ /dev/null
@@ -1,395 +0,0 @@
-# Features
-
-Below, you can find the list of supported features with the links to the documentation available.
-
-## LVE limits
-
-* [Understanding limits](https://docs.cloudlinux.com/limits/#understanding-limits)
-* [SPEED limit](https://docs.cloudlinux.com/limits/#speed-limit)
-* [Memory limit](https://docs.cloudlinux.com/limits/#memory-limit)
-* [IO](https://docs.cloudlinux.com/limits/#io)
-* [IOPS](https://docs.cloudlinux.com/limits/#iops)
-* [Entry processes](https://docs.cloudlinux.com/limits/#entry-processes)
-* [Number of processes](https://docs.cloudlinux.com/limits/#number-of-processes)
-* [Inodes](https://docs.cloudlinux.com/limits/#inodes)
-* [Network traffic bandwidth control and accounting system](https://docs.cloudlinux.com/limits/#network-traffic-bandwidth-control-and-accounting-system)
-* [Limits validation](https://docs.cloudlinux.com/limits/#limits-validation)
-* [Compatibility matrix](https://docs.cloudlinux.com/limits/#compatibility-matrix)
-* [Reseller limits](https://docs.cloudlinux.com/limits/#reseller-limits)
-
-## Inode limits
-
-The documentation is available [here](https://docs.cloudlinux.com/limits/#inodes).
-
-## Reseller limits
-
-The documentation is available [here](https://docs.cloudlinux.com/limits/#reseller-limits).
-
-## MySQL Governor
-
-MySQL Governor is software to monitor and restrict MySQL usage in a shared hosting environment. The monitoring is done
-via resource usage statistics per each MySQL thread.
-
-MySQL Governor can also kill off slow SELECT queries.
-
-MySQL Governor has multiple modes of operations, depending on the configuration. It can work in monitor-only mode, or it
-can use different throttling scenarios.
-
-MySQL Governor allows restricting customers who use too many resources. It supports following limits:
-
-|       |       |                                                                                                        |
-|-------|-------|--------------------------------------------------------------------------------------------------------|
-| CPU   | %     | CPU speed relative to one core. 150% would mean one and a half cores                                   |
-| READ  | bytes | bytes read. Cached reads are not counted, only those that were actually read from disk will be counted |
-| WRITE | bytes | bytes written. Cached writes are not counted, only once data is written to disk, it is counted         |
-
-You can set different limits for different periods: current, short, med, long. By default those periods are defined as 1
-second, 5 seconds, 1 minute and 5 minutes. They can be re-defined using
-the [configuration file](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-and-operation). The idea is
-to use larger acceptable values for shorter periods. Like you could allow a customer to use two cores (200%) for one
-second, but only 1 core (on average) for 1 minute, and only 70% within 5 minutes. That would make sure that customer can
-burst for short periods of time.
-
-When a customer is restricted, the customer will be placed into special LVE with ID 3. All restricted customers will be
-placed into that LVE, and you can control the amount of resources available to restricted customers. Restricted
-customers will also be limited to only 30 concurrent connections. This is done so they wouldn't use up all the MySQL
-connections to the server.
-
-### Installation
-
-:::warning Attention!
-MySQL Governor on Ubuntu supports the following only:
-
-* cl-MySQL80 on non-panel system
-* cl-MySQL80 on cPanel
-* cl-MariaDB103 on non-panel system
-  :::
-
-1. Install MySQL Governor
-
-```
-apt  install governor-mysql
-```
-
-2. To use MySQL Governor with
-
-    * cl-MariaDB103
-    ```
-    /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mariadb103
-    ```
-    * cl-MySQL80
-    ```
-    /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mysql80
-    ```
-3. Backup your databases.
-4. Run the cl-MySQL/cl-MariaDB installation.
-
-```
-/usr/share/lve/dbgovernor/mysqlgovernor.py --install --yes
-```
-
-In case of installing on cPanel + Ubuntu server, set the following parameter:
-
-
-5. After installation, check that the database server is working properly. If you have any problems,
-   use [Support Portal]().
-6. Configure user mapping to the database. The mapping format is described in
-   the [following section](https://docs.cloudlinux.com/cloudlinux_os_components/#mapping-a-user-to-a-database).
-
-In case a non-panel system the `/etc/container/dbuser-map` should be created and updated with new users by admin.
-
-The format is as follows:
-
-```
-[dbuser_name1] [account_name1] [UID1]
-...
-[dbuser_nameN] [account_nameN] [UIDN]
-```
-
-The control panel should automatically generate such mapping and write it to the `/etc/container/dbuser-map`. Usually,
-it is enough to write a hook when adding, deleting or renaming a database for a user. The control panel should implement
-such a mechanism for MySQL Governor to operate properly. MySQL Governor automatically applies changes from the
-dbuser-map file every five minutes.
-
-7. MySQL Governor configuration can be found in the
-   following [section](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-3).
-8. MySQL Governor CLI tools description can be found in the
-   following [section](https://docs.cloudlinux.com/command-line_tools/#mysql-governor).
-9. Having configured the mapping use `dbtop` to see the current user load on the database (you'd need to make some
-   database queries).
-
-```
-dbtop
-```
-
-10. If the load appears in the dbtop output, then you have successfully configured MySQL Governor.
-
-### How To upgrade database server
-
-You can find the instructions
-in [this documentation](https://docs.cloudlinux.com/cloudlinux_os_components/#upgrading-database-server).
-
-### Uninstalling
-
-To remove MySQL Governor, run the following command:
-
-```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --delete
-```
-
-The script will install the original MySQL server, and remove MySQL Governor.
-
-### Configuration and operation
-
-You can find the instructions
-in [this documentation](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-and-operation).
-
-## Administrator WEB interface (CloudLinux Manager)
-
-The documentation is available [here](https://docs.cloudlinux.com/lve_manager/#cloudlinux-manager).
-
-* [Dashboard](/features/#dashboard)
-* [Current Usage](https://docs.cloudlinux.com/lve_manager/#current-usage)
-* [Users](https://docs.cloudlinux.com/lve_manager/#users)
-* [Statistics](https://docs.cloudlinux.com/lve_manager/#statistics)
-* [Packages](https://docs.cloudlinux.com/lve_manager/#packages)
-* [Options](https://docs.cloudlinux.com/lve_manager/#options)
-* [PHP Selector](https://docs.cloudlinux.com/cloudlinux_os_components/#php-selector)
-    * [Installation instructions](/features/#php-selector-installation-instructions)
-    * [Selector tab](https://docs.cloudlinux.com/lve_manager/#selector-tab)
-    * [Selector tab additional features (cPanel)](https://docs.cloudlinux.com/lve_manager/#selector-tab-additional-features)
-      CloudLinux Manager 6.0.1-2
-    * [PHP Selector troubleshooting (cPanel)](https://docs.cloudlinux.com/lve_manager/#php-selector-troubleshooting)
-      CloudLinux Manager 6.0.1-2
-    * [PHP Selector diagnostic tool and notifications](https://docs.cloudlinux.com/lve_manager/#php-selector-diagnostic-tool-and-notifications)
-      CloudLinux Manager 6.0.1-2
-
-### Dashboard
-
-:::warning Attention!
-MySQL Governor is not available in the current version. We're planning to add it in the upcoming releases.
-:::
-
-Dashboard provides a quick overview of statistics and all administrative information for server administrators.
-
-Go to _CloudLinux Manager_ | _Dashboard_.
-
-
-* End Users hitting limits — number of users reaching their limit in any kind of resource. Data is within the last 24
-  hours.
-* Resellers hitting limits — number of enrolled Resellers that are reaching their limit in any kind of resource. Data is
-  within the last 24 hours.
-* [PHP Selector](https://docs.cloudlinux.com/lve_manager/#php-selector-2) block displays the following information:
-    * Default version — the default version of PHP binaries. Click _Manage_ to change the default version, enable or
-      disable PHP Selector, change the list of supported versions, and choose default modules. You will be redirected to
-      CloudLinux Manager | PHP Selector. PHP Selector (cPanel) has malfunctions warnings
-      about [the most common issues](https://docs.cloudlinux.com/lve_manager/#errors).
-* [CageFS](https://docs.cloudlinux.com/cloudlinux_os_components/#cagefs) block displays the following information:
-    * CageFS status (Enabled/Disabled/Not installed). To manage CageFS, click _Manage_. You will be redirected to
-      CloudLinux Manager | Options | CageFS. Click _Install_ to install CageFS.
-    * Mode displays the current CageFS mode of operation.
-    * End users — displays the number of users with CageFS enabled/all.
-
-## Reseller WEB interface (CloudLinux Manager)
-
-* [Current Usage](https://docs.cloudlinux.com/lve_manager/#current-usage-tab)
-* [Historical Usage](https://docs.cloudlinux.com/lve_manager/#historical-usage-tab)
-* [Users](https://docs.cloudlinux.com/lve_manager/#users-tab)
-* [Statistics](https://docs.cloudlinux.com/lve_manager/#statistics-tab)
-* [Packages](https://docs.cloudlinux.com/lve_manager/#packages-tab)
-
-## User WEB interface
-
-* [Resource Usage](https://docs.cloudlinux.com/lve_manager/#resource-usage-client-plugin)
-* [PHP Selector](https://docs.cloudlinux.com/lve_manager/#php-selector-client-plugin)
-
-## LVE Wrappers
-
-The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#lve-wrappers).
-
-* lve_wrapper
-* lve_suwrapper
-
-## CageFS and running commands inside
-
-The documentation is
-available [here](https://docs.cloudlinux.com/control_panel_integration/#running-commands-inside-cagefs).
-
-* cagefs_enter
-* cagefs_enter_user
-
-## Hardened PHP
-
-* alt-php versions 5.6 - 8.0
-
-## Mod_hostinglimits
-
-LVE is a kernel level technology developed by the CloudLinux team. The technology has common roots with container based
-virtualization and uses cgroups in its latest incarnation. It is lightweight and transparent. The goal of LVE is to make
-sure that no single web site can bring down your web server.
-
-Today, a single site can consume all CPU, IO, Memory resources or Apache processes - and bring the server to a halt. LVE
-prevents that. It is done via collaboration of Apache module, PAM module and kernel.
-
-[mod_hostinglimits](https://docs.cloudlinux.com/cloudlinux_os_components/#hostinglimits-module-for-apache) is an Apache
-module that:
-
-* detects VirtualHost from which the request came;
-* detects if it was meant for CGI or PHP script;
-* puts Apache process used to serve that request into LVE for the user determined via SuexecUserGroup directive for that
-  virtual host;
-* lets Apache to serve the request;
-* removes Apache process from user's LVE.
-
-The kernel makes sure that all LVEs get fair share of the server's resources, and that no customer can use more then the
-limits set for that customer. Today we can limit CPU , Memory (virtual and physical), IO, number of processes as well as
-the number of entry processes (concurrent connections to apache).
-
-Each LVE limits amount of entry processes (Apache processes entering into LVE) to prevent single site exhausting all
-Apache processes. If the limit is reached, then mod_hostinglimits will not be able to place Apache process into LVE, and
-will return error code 508. This way very heavy site would slow down and start returning 508 errors, without affecting
-other users.
-
-* If the site is limited by CPU or IO, then the site will start responding slower.
-* If the site is limited by memory or number of processes limits, then the user will receive 500 or 503 errors that
-  server cannot execute the script.
-
-:::warning Attention!
-In the current version ONLY the following combinations are available: **ea-php81 with php-fpm** and **alt-php with
-suphp, cgi**
-:::
-
-#### ea-php81 with php-fpm
-
-To install, run the following command:
-
-```
-# apt install ea-php81*
-```
-
-#### alt-php with suphp, cgi
-
-To install, follow these steps:
-
-1. Remove `mod-ruid2`:
-
-
-2. Install packages (with `alt-php74` as an example):
-
-   ```
-   # apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
-   # apt install alt-php74
-   ```
-
-#### PHP Selector installation instructions
-
-The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#php-selector).
-
-:::warning Attention!
-Only the following handlers can be used:
-
-* suphp
-* cgi
-  :::
-
-To install, run the following commands:
-
-```
-# apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
-# apt install cagefs
-# cagefsctl –-init
-```
-
-## Symlink owner match protection
-
-The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-enforce-symlinksifowner).
-
-* [fs.enforce_symlinksifowner](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-enforce-symlinksifowner)
-* [fs.symlinkown_gid](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-symlinkown-gid)
-* [fs.process_symlinks_by_task](https://docs.cloudlinux.com/cloudlinux_os_kernel/#fs-process-symlinks-by-task)
-
-## Link traversal protection
-
-* [fs.protected_symlinks_create](https://docs.cloudlinux.com/cloudlinux_os_kernel/#link-traversal-protection)
-* [fs.protected_hardlinks_create](https://docs.cloudlinux.com/cloudlinux_os_kernel/#link-traversal-protection)
-
-## Tuned profiles
-
-The documentation is available [here](https://docs.cloudlinux.com/cloudlinux_os_kernel/#tuned-profiles-cloudlinux).
-
-## Apache mod_lsapi
-
-### General requirements
-
-General requirements are
-available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#general-information-and-requirements-9).
-
-### Installation
-
-Installation on cPanel servers with EasyApache 4:
-
-```
-$ apt install liblsapi liblsapi-dev 
-$ apt install ea-apache24-mod-lsapi
-$ /usr/bin/switch_mod_lsapi --setup
-$ service httpd restart
-```
-
-Installation on servers with no panel:
-
-```
-$ apt install liblsapi liblsapi-dev 
-$ apt install mod-lsapi
-$ /usr/bin/switch_mod_lsapi --setup
-$ service apache2 restart
-```
-
-### Configuration
-
-Configuration instructions are available [here](https://docs.cloudlinux.com/cloudlinux_os_components/#configuration-4).
-
-### Troubleshooting
-
-In case the site responds with the error: 503 Service unavailable.
-
-1. Be sure that /opt has drwxr-xr-x permissions. It can be fixed with the following command:
-
-```
-$ chmod 755 /opt 
-```
-
-2. Change the default folder for mod_lsapi socket:
-
-```
-$ mkdir /var/mod_lsapi
-$ chown nobody.nobody /var/mod_lsapi
-$ chmod 755 /var/mod_lsapi
-```
-
-Add to /etc/apache2/conf.d/lsapi.conf new path:
-
-```
-lsapi_socket_path /var/mod_lsapi
-```
-
-And restart service:
-
-```
-$ service httpd restart
-```
-
-### Uninstall
-
-Uninstall procedure for cPanel servers with EasyApache 4:
-
-```
-$ /usr/bin/switch_mod_lsapi --uninstall
-$ apt remove liblsapi liblsapi-dev ea-apache24-mod-lsapi
-```
-
-Uninstall procedure for servers with no panel:
-
-```
-$ /usr/bin/switch_mod_lsapi --uninstall
-$ apt remove liblsapi liblsapi-dev mod-lsapi
-```
diff --git a/docs/shared/limits/.DS_Store b/docs/shared/limits/.DS_Store
deleted file mode 100644
index 0fb21cceb..000000000
Binary files a/docs/shared/limits/.DS_Store and /dev/null differ
diff --git a/docs/shared/limits/README.md b/docs/shared/limits/README.md
deleted file mode 100644
index c0e0a53e4..000000000
--- a/docs/shared/limits/README.md
+++ /dev/null
@@ -1,688 +0,0 @@
-# Limits
-
-* [Understanding limits](/limits/#understanding-limits)
-* [SPEED limit](/limits/#speed-limit)
-* [Memory limit](/limits/#memory-limit)
-* [IO](/limits/#io)
-* [IOPS](/limits/#iops)
-* [Entry processes](/limits/#entry-processes)
-* [Number of processes](/limits/#number-of-processes)
-* [Inodes](/limits/#inodes)
-* [Network traffic bandwidth control and accounting system](/limits/#network-traffic-bandwidth-control-and-accounting-system)
-* [Limits validation](/limits/#limits-validation)
-* [Compatibility matrix](/limits/#compatibility-matrix)
-* [Reseller Limits](/limits/#reseller-limits)
-* [WEB interface resource limiting modes](/limits/#web-interface-resource-limiting-modes)
-
-CloudLinux OS Shared has support for the following limits:
-
-| |  |  |  | |
-|--|---|--|--|--|
-|Limits | Units | Default Value | Description | Supported Kernels / OS|
-|<span class="notranslate"> [SPEED](/limits/#speed-limit) </span> | % of a core, or HZ | 100% | <span class="notranslate"> CPU </span> speed limit, relative to a single core, or specified in HZ (portable across <span class="notranslate"> CPU </span> s) | all|
-|<span class="notranslate">[CPU](/deprecated/#cpu-limits)</span> [deprecated] | % of <span class="notranslate"> CPU </span> | 25% | <span class="notranslate"> CPU </span> Limit (smallest of <span class="notranslate"> CPU </span> & NCPU is used) | all|
-|[NCPU](/deprecated/#cpu-limits) [deprecated] | number of cores | 1 CORE | Max number of cores (smallest of <span class="notranslate"> CPU </span> & NCPU used) | all|
-|[PMEM](/limits/#physical-memory-limit) | KB | 1024MB | Physical memory limit (RSS field in ps/RES in top). Also includes shared memory and disk cache | all|
-|[VMEM](/limits/#virtual-memory-limit) | KB | 0 | Virtual memory limit (VSZ field in ps/VIRT in top) | all|
-|[IO](/limits/#io) | KB/sec | 1024KB/sec | IO throughput - combines both read & write operations | CL8, CL7, CL6 lve1.1.9+ kernel|
-|[IOPS](/limits/#iops) [lve1.3+] | Operations per second | 1024 | Restricts total number of read/write operations per second. | all|
-|[NPROC](/limits/#number-of-processes) | number | 100 | Max number of processes within LVE | all|
-|[EP](/limits/#entry-processes) | number | 20 | Limit on entry processes. Usually represents max number of concurrent connections to apache dynamic scripts as well as SSH and cron jobs running simultaneously. | all|
-
-
-
-::: warning Note
-It is always better to disable VMEM limits (set them to 0) in your system at all because they are deprecated and are causing unexpected issues.
-:::
-
-Bellow you can find recommendations for your typical shared hosting setup. The recommendations don't depend on the power of your server. They only depend on how "fast" you want your hosting accounts to be.
-
-**Typical Hosting Account**
-
-* <span class="notranslate">SPEED=100%</span>
-* <span class="notranslate">PMEM=512MB</span>
-* <span class="notranslate">VMEM=0</span>
-* <span class="notranslate">IO=1024KB/s</span>
-* <span class="notranslate">IOPS=1024</span>
-* <span class="notranslate">NPROC=100</span>
-* <span class="notranslate">EP=20</span>
-
-**High End Hosting Account**
-
-* <span class="notranslate">SPEED=200%</span>
-* <span class="notranslate">PMEM=1GB</span>
-* <span class="notranslate">VMEM=0</span>
-* <span class="notranslate">IO=4096KB/s</span>
-* <span class="notranslate">IOPS=1024</span>
-* <span class="notranslate">NPROC=100</span>
-* <span class="notranslate">EP=40</span>
-
-## Understanding limits
-
-* [Checking if LVE is installed](/limits/#checking-if-lve-is-installed)
-* [Controlling LVE limits](/limits/#controlling-lve-limits)
-* [Checking LVE usage](/limits/#checking-lve-usage)
-
-LVE is a kernel level technology developed by the CloudLinux team. The technology has common roots with container based virtualization and uses cgroups in its latest incarnation. It is lightweight and transparent. The goal of LVE is to make sure that no single web site can bring down your web server.
-
-Today, a single site can consume all <span class="notranslate"> CPU, IO, Memory</span> resources or Apache processes - and bring the server to a halt. LVE prevents that. It is done via collaboration of Apache module, PAM module and kernel.
-
-[mod_hostinglimits](/shared/cloudlinux_os_components/#hostinglimits-module-for-apache) is Apache module that:
-
-* detects VirtualHost from which the request came;
-* detects if it was meant for CGI or PHP script;
-* puts Apache process used to serve that request into LVE for the user determined via SuexecUserGroup directive for that virtual host;
-* lets Apache to serve the request;
-* removes Apache process from user's LVE.
-
-The kernel makes sure that all LVEs get fair share of the server's resources, and that no customer can use more then the limits set for that customer.
-Today we can limit <span class="notranslate">CPU </span>, <span class="notranslate"> Memory </span> (virtual and physical), IO, number of processes as well as the number of entry processes (concurrent connections to apache).
-
-Each LVE limits amount of entry processes (Apache processes entering into LVE) to prevent single site exhausting all Apache processes. If the limit is reached, then <span class="notranslate">mod_hostinglimits</span> will not be able to place Apache process into LVE, and will return error code 508. This way very heavy site would slow down and start returning 508 errors, without affecting other users.
-
-* If the site is limited by <span class="notranslate"> CPU </span> or <span class="notranslate">IO</span>, then the site will start responding slower.
-* If the site is limited by memory or number of processes limits, then the user will receive 500 or 503 errors that server cannot execute the script.
-
-#### Checking if LVE is installed
-
-To use LVE you should have CloudLinux OS Shared kernel installed, and LVE module loaded. You can check the kernel by running the following command:
-
-<div class="notranslate">
-
-```
-$ uname -r
-```
-</div>
-
-You should see something like 2.6.32-896.16.1.lve1.4.53.el6.x86_64. The kernel should have lve in its name. To see if lve kernel module is loaded run:
-
-<div class="notranslate">
-
-```
-$ lsmod|grep lve
-lve                    46496  0
-```
-</div>
-
-Starting from kernels lve1.4.x iolimits module is a part of kmod-lve and could not be used separately.
-
-* You can toggle LVE on/off by editing <span class="notranslate">`/etc/sysconfig/lve`</span> and setting <span class="notranslate">`LVE_ENABLE`</span> variable to <span class="notranslate">`yes`</span> or <span class="notranslate">`no`</span>.
-
-    Setting it to <span class="notranslate">`yes`</span> will enable LVE, setting it to <span class="notranslate">`no`</span> will disable LVE.
-
-* You can toggle IO limits by editing <span class="notranslate">`/etc/sysconfig/iolimits`</span> and setting <span class="notranslate">`IO_LIMITS_ENABLED`</span> variable to <span class="notranslate">`yes`</span> or <span class="notranslate">`no`</span>.
-
-You need to reboot the server, after you set this option to make the changes live.
-
-#### Controlling LVE limits
-
-The best way to control LVE limits is using <span class="notranslate">LVE Manager</span> in your favorite control panel. Alternatively, you can use command line tool `lvectl` to control limits.
-The limits are saved in <span class="notranslate">`/etc/container/ve.cfg`</span> 
-
-Example:
-
-<div class="notranslate">
-
-```
-<?xml version="1.0" ?>
-<lveconfig>
- <defaults>
-         <cpu limit="25"/>
-         <ncpu limit="1"/>
-         <io limit="1024"/>
-         <mem limit="262144"/>
-         <other maxentryprocs="200"/>
-         <pmem limit="262144"/>
-         <nproc limit="0"/>
- </defaults>
- <lve id="532">
-         <cpu limit="30"/>
-         <ncpu limit="5"/>
- </lve>
-</lveconfig>
-```
-</div>
-
-Sets <span class="notranslate">CPU</span> limit to 25%, <span class="notranslate">IO</span> limit to 1024KB/s, <span class="notranslate">virtual memory</span> limit to 1GB (memory limit is set as a number of 4096 bytes pages), <span class="notranslate">physical memory</span> limit to 1GB, <span class="notranslate"> CPU</span> cores per LVE to 1, maximum entry processes to 200 and no limit for number of processes for all LVEs. It also sets the limit of 30% and number of processes limit to 5 for LVE with ID 532.
-
-#### Checking LVE usage
-
-
-One of the best way to monitor current usage is [lvetop](/shared/command-line_tools/#lvetop):
-
-<div class="notranslate">
-
-```
-$ lvetop
-         ID     EP    PNO    TNO    CPU    MEM    I/O
-         test    1     2            2     2%    728     0   
-```
-</div>
-
-You can also check the content of <span class="notranslate">`/proc/lve/list`</span> file that has all the data about LVE usage for all LVEs:
-
-<div class="notranslate">
-
-```
-[root@localhost tests]$ cat /proc/lve/list 
-4:LVE        EP        lCPU        lIO        CPU        MEM        IO        lMEM        lEP        nCPU        fMEM        fEP
-0        0        75        25        0        0        0        262144        20        2        0        0
-500        0        75        25        0        0        0        4294967 20        3        2        1        
-700        1        75        25        1403247        202        0        262144        20        2        0        0
-```
-</div>
-
-Additionally, you can use tool [lveps](/shared/command-line_tools/#lveps) to see <span class="notranslate">CPU</span> usage, and processes within LVE.
-
-## SPEED limit
-
-:::tip Note
-<span class="notranslate">lve-utils 1.4+</span>
-:::
-
-<span class="notranslate">CPU SPEED</span> limit allows to set <span class="notranslate">CPU</span> limit in terms of % of a single core, or as a fixed number of Hz.
-
-<span class="notranslate">`--speed=XX%`</span> would set performance relative to one core.
-
-For example:
-
-* <span class="notranslate"> `--speed=50%` </span> would mean 1/2 core.
-* <span class="notranslate"> `--speed=100%` </span> would mean 1 core,
-* <span class="notranslate"> `--speed=150%` </span> would mean 1.5 cores
-
-<span class="notranslate"> `--speed=XXmhz` </span> would automatically detect <span class="notranslate"> CPU </span> speed of each core, and adjust the <span class="notranslate"> CPU </span> scheduler to make sure user cannot go over that limit.
-
-For example, on 1ghz <span class="notranslate"> CPU </span> , setting of <span class="notranslate"> `--speed=2ghz` </span> would mean 2 cores, while on 4ghz <span class="notranslate"> CPU </span> same setting would mean 1/2 of a core.
-
-This should allow hosting companies to set same approximate performance level limits across different hardware using single setting.
-
-:::tip Note
-Note. We strongly recommend setting <span class="notranslate">CPU</span> speed limits not less than 100%. As such limits cause <span class="notranslate">CPU</span> context switching which leads to increased `%sys`.
-:::
-
-## Memory limit
-
-Memory is controlled using virtual (VMEM) and physical (PMEM) memory limits.
-
-### Virtual memory limit
-
-Virtual memory limit corresponds to the amount of memory processes can allocate within LVE. You can see individual process virtual memory usage by monitoring <span class="notranslate">VIRT</span> column in <span class="notranslate"> top </span> output for the process.
-
-When process tries to allocate more memory, CloudLinux OS Shared checks if the new total virtual memory used by all processes within LVE is more then a limit set. In such case CloudLinux OS Shared will prevent memory from being allocated and increments fVMEM counter. In most cases, but not all of them - this causes process to fail. For CGI/PHP scripts it will usually cause 500 and 503 error.
-
-:::tip Note
-It is recommended to disable VMEM limits (set them to 0) in your system at all because they are deprecated in CloudLinux OS Shared 6 and 7 system and can cause unexpected issues.
-:::
-
-### Physical memory limit
-
-Physical memory limit corresponds to the amount of memory actually used by end customer's processes. You can see individual process physical memory usage by monitoring RES column in top output for the process. Because similar processes (like PHP) share a lot of their memory, physical memory usage is often much lower then virtual memory usage.
-
-Additionally physical memory includes shared memory used by the customer, as well as disk cache.
-In case of disk cache – if a user is starting to lack physical memory, the memory used for disk cache will be freed up, without causing any memory faults.
-
-When LVE goes over physical memory limit, CloudLinux OS Shared will first free up memory used for disk cache, and if that is not enough, it will kill some of the processes within that LVE, and increment fPMEM counter. This will usually cause web server to serve 500 and 503 errors. Physical memory limit is a much better way to limit memory for shared hosting.
-
-### Troubleshooting
-
-* [Checking personal users disk cache (If lveinfo shows memory usage but there are no processes there)](/shared/limits/#checking-personal-users-disk-cache-if-lveinfo-shows-memory-usage-but-there-are-no-processes-there)
-
-#### Checking personal users disk cache (If lveinfo shows memory usage but there are no processes there)
-
-If you see no processes under some user, but lve manager keeps telling it is using some memory, then most probably memory is taken by users disk cache. To check personal users disk cache (if lveinfo shows memory usage but not processes there) for CloudLinux OS Shared 6:
-
-<div class="notranslate">
-
-```
-cat /proc/bc/XXX/meminfo
-```
-</div>
-
-On **CloudLinux OS Shared 7 and CloudLinux OS Shared 6 Hybrid** systems, the file is different:
-
-<div class="notranslate">
-
-```
-cat /proc/bc/lveXXX/meminfo
-```
-</div>
-
-Look for this line: <span class="notranslate"> `Cached: 67300 kB` </span>
-
-On **CloudLinux OS Shared 8 and CloudLinux OS Shared 7 Hybrid** systems:
-
-<div class="notranslate">
-
-```
-cat /sys/fs/cgroup/memory/lveXXX/memory.stat
-```
-</div>
-
-Look for this line: <span class="notranslate"> `cache 1662976` </span>
-
-where XXX is a user id, could be found out by:
-
-<div class="notranslate">
-
-```
-id username
-```
-</div>
-
-## IO
-
-IO limits restrict the data throughput for the customer. They are in KB/s. When limit is reached, the processes are throttled (put to sleep). This makes sure that processes within LVE cannot go over the limit,. Yet don't stop working, nor getting killed – they just work slower when the limit is reached.
-
-IO limits are available with kernels **el6.lve1.x** and higher.
-
-The IO limits will only affect <span class="notranslate"> DISK IO</span>, and will have no effect on network. It also doesn't take into consideration any disk cache accesses. So, even if file is loaded from disk cache 1000 times – it will not be counted towards <span class="notranslate">IO</span> limits.
-
-## IOPS
-
-<span class="notranslate">IOPS</span> limits restrict the total number of read/write operations per second. When the limit is reached the read/write operations stop until current second expires.
-
-## Entry processes
-
-<span class="notranslate"> Entry processes </span> limit controls the number of entries into LVE. Each time a process 'enters' into LVE, we increment the counter. Each time process exits LVE, we decrement the counter. We don't count processes that are created inside LVE itself. It is also know as <span class="notranslate"> 'Apache concurrent connections' </span> limit.
-
-The process enter's into LVE when there is a new HTTP request for CGI/PHP.
-
-This limit was created to prevent DoS attacks against web server. One of the fairly popular attacks is to tie up all the Apache connections by hitting some slow page on a server. Once all Apache slots are used up, no one else will be able to connect to the web server, causing it to appear to be down. The issue is worsened by <span class="notranslate"> CPU </span> limits, as once site starts to get slow due to <span class="notranslate"> CPU </span> limit – it will respond to requests slower and slower, causing more and more connections to be tied up.
-
-To solve that, we have created entry processes (often called concurrent connections) limit. It will limit the number of concurrent connections to Apache, causing web server to serve error 508 page (<span class="notranslate"> Resource Limit Reached</span>), once there number of concurrent requests for the site goes above the limit.
-
-**In the case of working with the LiteSpeed web server**, the _Entry processes_ limit implementation differs from the one implemented in Apache.
-
-Therefore, when there is the same load with concurrent requests to Apache and LiteSpeed, the _Entry processes_ limit may differ depending on the web server.
-
-In the case of LiteSpeed the _Entry processes_ limit increases with the number of lsphp master processes, for example in workgroup mode, the web server only starts one lsphp master process, then this process will fork children processes to process requests without increasing the _Entry processes_ limit.
-
-If you'd like to set the concurrent connection limit with LiteSpeed, you can use the standard web server tools like [https://docs.litespeedtech.com/cp/cpanel/antiddos/#connection-throttling](https://docs.litespeedtech.com/cp/cpanel/antiddos/#connection-throttling).
-
-
-## Number of processes
-
-<span class="notranslate"> NPROC </span> controls the total number of processes and threads within LVE. Once the limit is reached, no new process can be created (until another one dies). When that happens <span class="notranslate"> NPROC </span> counter is incremented. Apache might return 500 or 503 errors in such case.
-
-## Inodes
-
-:::tip Note
-Supported on cPanel, Plesk, and DirectAdmin control panels
-:::
-
-<span class="notranslate"> LVE Manager inodes </span> limits extension allows setting <span class="notranslate"> inode </span> limits for the customers. An <span class="notranslate"> inode </span> is a data structure on a file system used to keep information about a file or a folder. The number of <span class="notranslate"> inodes </span> indicates the number of files and folders an account has. <span class="notranslate"> inodes </span> limits work on the level of <span class="notranslate"> disk quota </span> , and will be enabled on <span class="notranslate"> /home </span> partition only.
-
-<span class="notranslate"> LVE Manager </span> allows to set <span class="notranslate"> soft </span> and <span class="notranslate"> hard IO </span> limit.
-
-* <span class="notranslate"> Hard </span> limit prevents a user from writing data to disk.
-
-* <span class="notranslate"> Soft </span> limit can be exceeded for a period of time. The grace period can be set using: <span class="notranslate"> edquota -t </span> .
-
-* You can set <span class="notranslate"> inodes </span> limits using <span class="notranslate"> LVE Manager </span> , the same way you would set any other LVE Limits:
-
-::: tip Note
-We do not collect statistical information on the inodes like we do for other LVE limits.
-:::
-
-The limits can be set on the level of individual [account](/shared/lve_manager/#actions) or [package](/shared/lve_manager/#packages).
-
-Sometimes <span class="notranslate">disk quota</span> breaks, so do <span class="notranslate"> inodes </span> limits. You can reset them through the <span class="notranslate">_Options_</span> tab of <span class="notranslate">LVE Manager</span>:
-
-![](./images/inodelimitsoptions_zoom70.png)
-
-The same can be achieved using [cloudlinux-config](/shared/command-line_tools/#cloudlinux-config) CLI utility
-
-End users can monitor their inodes usage through cPanel only (not available on Plesk and DirectAdmin):
-
-![](./images/inodescpanel.png)
-
-End user can also see the usage inside resource usage menu.
-
-## Network traffic bandwidth control and accounting system
-
-:::tip Note
-Requires kernel lve1.4.4.el6 or higher, or lve1.4.56.el7 or higher
-:::
-
-Network traffic bandwidth control and accounting systems in CloudLinux OS Shared 6 allows for each LVE container:
-
-* Limiting outgoing network traffic bandwidth
-* Accounting incoming and outgoing network traffic
-
-:::tip Note
-The system supports IPv4 only protocol.
-:::
-
-### How to limit outgoing network traffic
-
-All outgoing IP packets generated inside LVE container are marked with LVE identifier. Traffic control utility tc from iproute2 package uses this marker to set required bandwidth.
-
-:::tip Note
-CloudLinux OS Shared doesn’t limit the network traffic itself, it only marks IP packets with specific LVE id.
-:::
-
-**Example 1:**
-
-1. We create class with <span class="notranslate"> HTB qdiscs </span> and rate <span class="notranslate"> 10kbit </span>:
-
-<div class="notranslate">
-
-```
-tc qdisc add dev eth1 root handle 1: htb
-
-tc class add dev eth1 parent 1: classid 1:1 htb rate 10kbit
-```
-</div>
-
-2. All packets marked with LVE id will be processed by class 1:1 (rate <span class="notranslate"> 10kbit </span>).
-
-<div class="notranslate">
-
-```
-tc filter add dev eth1 parent 1: handle 2121 fw flowid 1:1
-```
-</div>
-
-**Example 2:**
-
-1. As an example we create class with <span class="notranslate"> HTB qdiscs </span> and rate <span class="notranslate">100mbit</span> and class 1:10 will be used by default:
-
-<div class="notranslate">
-
-```
-tc qdisc add dev eth3 root handle 1: htb default 10
-
-tc class add dev eth3 parent 1: classid 1:1 htb rate 100mbit
-```
-</div>
-
-2. For class 1:1 we create two branches with rate 5 <span class="notranslate"> mbit </span> and 10 <span class="notranslate"> kbit </span> accordingly, with classid 1:10 and 1:20.
-
-<div class="notranslate">
-
-```
-tc class add dev eth3 parent 1:1 classid 1:10 htb rate 5mbit
-
-tc class add dev eth3 parent 1:1 classid 1:20 htb rate 10kbit
-```
-</div>
-
-3. All packets marked with LVE id=2121 are processed by 10 kbit class.
-
-<div class="notranslate">
-
-```
-tc filter add dev eth3 protocol ip parent 1: prio 1 handle 2121 fw flowid 1:20
-
-```
-</div>
-
-More info about `tc` and its syntax can be found on the link [http://tldp.org/HOWTO/Traffic-Control-HOWTO/index.html](http://tldp.org/HOWTO/Traffic-Control-HOWTO/index.html)
-
-#### CloudLinux OS 8 specific setup
-
-In order to apply 256 kbit/s limit to LVE 123 (0x7b) through enp0s3, one needs to run the following commands:
-
-```
-tc qdisc add dev enp0s3 root handle 1: htb
-tc class add dev enp0s3 parent 1: classid 1:7b htb rate 256kbit
-tc filter add dev enp0s3 parent 1: handle 1: cgroup
-```
-
-### Traffic accounting
-
-Traffic accounting is performed for each LVE container. Network statistics is collected at <span class="notranslate">`/proc/lve/list`</span> file. Network-related data found at fields:
-
-* <span class="notranslate">`lNETO`</span> - output traffic limit by volume, equals 0*
-* <span class="notranslate">`lNETI`</span> - input traffic limit by volume, equals 0*
-* <span class="notranslate">`NETO`</span> - current outgoing traffic value
-* <span class="notranslate">`NETI`</span> - current incoming traffic value
-
-The data is also collected at <span class="notranslate">`/proc/lve/per-lve/<id>/net_stat`</span>, where `id` is an LVE container identifier.
-
-<span class="notranslate">`net_stat`</span> file contains 4 values in one row:
-
-* Outgoing traffic limit by volume, equals 0*
-* Incoming traffic limit by volume, equals 0*
-* Current outgoing traffic value
-* Current incoming traffic value
-
-:::tip Note
-The current version of CloudLinux OS Shared network control system doesn’t limit network traffic volume for a specific period of time (for example 3GB per day), it limits only network bandwidth.
-
-Network limits are supported only for processes inside LVE. By default it does not limit static content, but only PHP/cgi scripts processed by Apache and processes launched over ssh etc.
-:::
-
-
-## Limits validation
-
-* [Exceptions list (validation is not supported)](./#exceptions-list-validation-is-not-supported)
-* [Existing limits validation](./#existing-limits-validation)
-* [Best practice](./#best-practice)
-
-Starting from <span class="notranslate">**lve-utils**</span> **version 3.1-1**, the validation of EP and NPROC limits is supported. If an administrator sets the NPROC limit less than (EP + 15), the following warning is shown:
-
-<div class="notranslate">
-
-```
-error: You're trying to set invalid LVE limits.
-NPROC limit must be greater than EP + 15 limit, because number of processes and threads within LVE includes
-also Apache processes/threads, SSH sessions and etc, which enter into LVE.
-```
- </div>
-
-PMEM LVE limit should not be lower than 512 MB.
-    
-Validation does not affect limits operation in any way. Even if invalid limits have been set, they will be applied for users/resellers.
-
-Commands that support validation:
-
-1. <span class="notranslate">`lvectl set`</span>
-
-This command allows validation of an LVE ID which does not have a corresponding UID in the system. I.e., you can set limits for any LVE ID and they can be validated.
-
-
-2. <span class="notranslate">`lvectl set-user`</span>
-
-This command allows validation when setting limits using a user name instead of LVE ID.
-
-
-3. <span class="notranslate">`lvectl set-reseller`</span>
-
-This command supports limits validation both for inactive reseller and active one.
-
-4. <span class="notranslate">`lvectl set-reseller-default`</span>
-
-This command supports validation when setting default limits for a reseller.
-
-
-5. <span class="notranslate">`lvectl package-set`</span>
-
-This command supports limits validation both for packages existing in the system and nonexisting ones.
-
-
-6. The <span class="notranslate">`cloudlinux-package`</span> and <span class="notranslate">`cloudlinux-limits`</span> commands support all validation types described above, and support limits validation and exceptions lists as described below.
-
-#### Exceptions list (validation is not supported)
-
-
-1.    a) When EP limit for a package is greater than a custom NPROC limit for a user included in this package.
-
- **OR**
- 
- b) when NPROC limit for a package is less than a custom EP limit for a user included in this package.
- 
-
-2.    a) When default EP limit for a hoster is greater than a custom NPROC limit for a user/package which inherits the default limit.
-
- **OR**
- 
- b) When default NPROC limit for a hoster is less than a custom EP limit for a user/package which inherits the default limit.
- 
-
-3. When using the following commands:
-
- a) <span class="notranslate">`lvectl set-reseller --all`</span>
-
- b) <span class="notranslate">`cloudlinux-limits --json enable-reseller-limits --all`</span>
-
-
-#### Existing limits validation
-
- 
-The automatic validation using <span class="notranslate">`cldiag`</span> utility by cron job is enabled on a server by default. You can disable it in the <span class="notranslate">`/etc/sysconfig/cloudlinux`</span> config file using <span class="notranslate">`ENABLE_CLDIAG`</span> option (**Warning!** This option disables all automatic checks using cldiag!) When calling this utility automatically by cron, it checks all limits existing on the server and send an administrator a report with limits check results. You can use the following command to validate existing limits: <span class="notranslate">`cldiag --check-lve-limits`</span>.
-
-
-The important difference between checking existing and setting limits is that even if validation fails when setting limits (see exceptions list above), checking existing limits will catch invalid limits in any case. I.e. even if a server administrator set invalid limits, validation of existing limits will catch invalid limit in any case.
-
-#### Best practice
-
-Set NPROC limit greater than (EP + 15).
-
-
-
-## Compatibility matrix
-
-
-| |  |  |  |  |  |  | |
-|-|--|--|--|--|--|--|-|
-|<span class="notranslate"> Web Server / PHP </span> | <span class="notranslate"> CPU </span> | <span class="notranslate"> Virtual & Physical Memory </span> | <span class="notranslate"> EP </span> | NPROC | <span class="notranslate"> IO </span> | CageFS | <span class="notranslate"> PHP Selector </span>|
-|Apache / suPHP | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
-|Apache / FCGID | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
-|Apache / CGI | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
-|Apache / PHP-FPM | Yes<sup> 2</sup> | Yes | Yes | Yes | Yes | Yes<sup> 2</sup> | No|
-|Apache / mod_php (DSO) | Yes | No | Yes | Yes | Yes | No | No|
-|Apache / mod_ruid2 | Yes | No | Yes | Yes | Yes | No | No|
-|Apache / MPM ITK | Yes | No | Yes | Yes | Yes | Yes<sup> 1</sup> | No|
-|LiteSpeed | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
-|NGINX / PHP-FPM | Yes<sup> 2</sup> | Yes | No | Yes | Yes | Yes | No|
-|SSH | Yes | Yes | Yes | Yes | Yes | Yes<sup> 2</sup> | Yes|
-|<span class="notranslate">Cron Jobs</span> | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
-|<span class="notranslate">Apache / mod_lsapi</span> | Yes | Yes | Yes | Yes | Yes | Yes | Yes|
-
-1. Requires patched version of MPM-ITK. CL httpd RPM has ITK worker with the patch. Patch is also available at: [https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
-2. PHP binaries from sources other than DirectAdmin/CloudLinux OS require recompile with patches available at: [https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz](https://repo.cloudlinux.com/cloudlinux/sources/da/cl-apache-patches.tar.gz)
-
-
-:::tip Note
-Please note that mod_lsapi does not work when php-fpm is enabled because php-fpm is also a PHP Handler just as mod_lsapi.
-:::
-
-:::tip Note
-<span class="notranslate">`mod_lsapi`</span> is an Apache module whilst LiteSpeed is a standalone solution and does not use any of Apache modules (since it provides its own implementation of these modules). Moreover, it is advised to leave your Apache configuration as is just in case you decide to switch back from LiteSpeed.
-:::
-
-
-## Reseller limits
-
-**Reseller limits** is a feature that allows hosters to limit the resources each reseller can operate. Reseller limits put a restriction on the cumulative resources this reseller and his end-users can use at any given moment in time.  
-
-Reseller limits feature also enables hosters to give their resellers controls over the end-user’s resources. Resellers can assign limits to their end-users as they want, even if they are higher than the limits assigned to the reseller. The reseller’s end-users will not be limited by the reseller limits unless their **cumulative usage** goes above the limits the hoster assigned to their reseller.
-
-:::warning
-Reseller cannot manage INODE or MYSQL limits. Neither his own, nor for his users.
-:::
-
-- [Design](./#design)
-- [Requirements](./#requirements)
-- [Configuration](./#configuration)
-    - [Enabling Reseller limits](./#enabling-reseller-limits)
-    - [How to disable Reseller limits](./#how-to-disable-reseller-limits)
-    - [More resources](./#more-resources)
-
-### Design
-
-To understand the qwirks of how Reseller Limits operate, we need to look more closely into the four types of users that a typical shared hosting server has:
-
-![](./images/ResellerLimits-diagram.png)
-
-Reseller himself (green box on the scheme) is a virtual entity. When a hoster enables reseller limits, the entity itself cannot hit the limits. There is usually an end-user with the same username as the reseller that acts as a regular reseller’s end-user. When the hoster sets Reseller limits, he limits the group of end-users he owns, including the reseller's end-user with the same username.  
-
-Resellers can configure their end-users limits differently. There are several scenarios when Reseller limits will get activated:  
-
-- A reseller can assign limits to their end-users that are higher than the limits hoster assigned to this reseller. In this case, the end-user will be limited by reseller limit when he reaches it. 
-- A reseller can assign limits to their end-users that are lower than the limits hoster assigned to this reseller. In this case, the end-user will be limited by his limit and not by the reseller limits when he reaches it.
-- Reseller limits will get activated when all reseller’s resources are consumed by his users at any given moment.
-
-As you probably have already understood, the reseller will technically be able to assign his/her end-users limits higher than his Reseller limits. However, it won’t be possible for the end-users to go over the reseller limits no matter what his individual limit is.
-
-### Requirements
-
-1. CloudLinux OS Shared should be [installed](/shared/cloudlinux_installation/) on the server.
-2. You also need to check that your kernel supports Reseller limits feature
-    * CloudLinux OS Shared 6 and kernels **2.16+**: not supported, you need to [migrate to Hybrid](/shared/cloudlinux_os_kernel/#how-to-migrate-from-the-normal-to-hybrid-channel-cl6h).
-    * CloudLinux OS Shared 6 Hybrid: supported starting from **3.10.0-714.10.2.lve1.5.3.el6h** kernel.
-    * CloudLinux OS Shared 7: supported starting from **3.10.0-714.10.2.lve1.5.3.el7** kernel.
-    * CloudLinux OS Shared 7 Hybrid: supported
-    * CloudLinux OS Shared 8: supported 
-3. lvemanager package version **3.0-18+** and later installed. If you don’t have it, update your system
-
-### Configuration
-
-#### Enabling Reseller limits 
-
-If you have decided to jump on board and enable Reseller limits for your resellers you should do the following:
-
-1. Make sure that you run CloudLinux OS Shared with the kernel and lvemanager that meets the [necessary requirements](./#requirements). 
-2. Log in with a hoster access.
-3. You can create a new reseller account or configure an existing reseller account to have Reseller limits enabled. Consult your control panel documentation on how to do that.
-4. For cPanel servers when creating an account, make sure to tick two checkboxes **Make this account a reseller** and **Make the account own itself** in the _Reseller Settings_ box.
-
-![](./images/ResellerLimits-cPanel.png)
-
-Selecting **Make the account own itself** makes the reseller full owner of all his accounts, including the end-user account with the same username. This option is integral to making reseller limits work for the reseller account. If you don’t select it, Reseller limits will not be applied. If the reseller account you want to limit with Reseller limits has already existed, you need to make sure it is properly owned. Go to _WHM_ -> _Modify account_ -> find the account with the same username as your reseller -> change the owner to the username of your reseller.
-
-5. Now that preparations are done, go to _CloudLinux OS Shared LVE Manager_ -> _Users_ tab, choose a reseller and click on the pencil icon.
-6. When the pop-up opens, move the slider _Manage Limits_ -> Click _AGREE_  when asked _Are you sure you want to enable limits_ -> assign the limits to that reseller. Finally, click _Save_.
-
-![](./images/ResellerLimits-enabling.png)
-
-:::tip 
-When you move a user from one reseller to another on DirectAdmin you need to manually change its package because the packages aren’t moved together with users. If you don’t reassign the package, the limits for the user you have moved will be reset to default. 
-:::
-
-:::tip Note
-DirectAdmin only: when Reseller limits are enabled, reseller's enduser's package is replaced with a `DEFAULT` virtual package that inherits the `default` user's limits (lve and quotas) . \
-lve-utils > 6.3.7 provides a new configuration option - `cl_quota_inodes_inheritance`, which allows to keep the same quotas limits in this case. Add the `cl_quota_inodes_inheritance=1` flag to the `/etc/sysconfig/cloudlinux` configuration file to preserve reseller's enduser's inodes limits when Reseller limits are enabled.
-:::
-
-#### How to disable Reseller limits
-
-1. Go to the _Users_ tab, choose a particular reseller and click on the pencil icon.
-2. In the pop-up move the slider _Manage Limits_. Click _AGREE_ for the question _Are you sure you want to disable limits_. Then click _Save_.
-
-If you disable Reseller limits everything will work the same as before. All the end user limits set by the reseller will be saved. But all custom default reseller limits will be disabled.
-
-
-#### More resources
-
-It is possible that you still have some questions left unanswered about Reseller limits. That’s why we have more knowledge sources that you can check out:
-
-- [FAQ section in our support knowledgebase](https://cloudlinux.zendesk.com/hc/en-us/articles/115005515269-CloudLinux-Reseller-Limits-FAQ)
-- [Reseller limits UI explained](/shared/lve_manager/#reseller-interface)
-
-
-## WEB interface resource limiting modes
-
-Ability to manage the limiting modes of user processes started from web interface (e.g. Node.JS, Ruby and Python Selectors). The configuration allows to disable LVE limiting for some commands or don't limit web commands at all.
-    
-Also, there is a short list of processes, that runs without CageFS in every modes. They are not affecting security, but we are working on removing them from excludes.
-
-To use it, add the `web_resource_limit_mode` parameter to the `/etc/sysconfig/cloudlinux` file.
-    
-Possible parameter values:
-
-* `all`: the default option. All processes will run inside CageFS and with LVE limits being applied.
-* `heavy`: there is a list of processes that are considered lightweight. In this mode, they will be executed inside CageFS, but no resource limits: CPU, IO, memory, and NUMPROC. List of ligthweight processes is defined by CloudLinux and it's guarantied that user can't bypass LVE limits for a long-term.
-    For example, this mode allows a user to execute the `cloudlinux-selector stop` process, even if the user hits the NUMPROC limit.
-* `unlimited`: all processes will run inside CageFS, but ignore CPU, IO, memory, and NUMPROC limits. Not recommended for production usage.
-
-### Requirements:
-
-1. CloudLinux OS Shared should be installed on the server
-2. Packages:
-    * cagefs package installed
-    * lve-wrappers >= 0.7.2
-    * lvemanager >= 7.5.9
-    * kmod-lve >= 2.0.36
-    * lve >= 2.1.2
diff --git a/docs/shared/limits/images/ResellerLimits-cPanel.png b/docs/shared/limits/images/ResellerLimits-cPanel.png
deleted file mode 100644
index 2aa793b86..000000000
Binary files a/docs/shared/limits/images/ResellerLimits-cPanel.png and /dev/null differ
diff --git a/docs/shared/limits/images/ResellerLimits-diagram.png b/docs/shared/limits/images/ResellerLimits-diagram.png
deleted file mode 100644
index 87165b69c..000000000
Binary files a/docs/shared/limits/images/ResellerLimits-diagram.png and /dev/null differ
diff --git a/docs/shared/limits/images/ResellerLimits-enabling.png b/docs/shared/limits/images/ResellerLimits-enabling.png
deleted file mode 100644
index ea06958e0..000000000
Binary files a/docs/shared/limits/images/ResellerLimits-enabling.png and /dev/null differ
diff --git a/docs/shared/limits/images/inodelimitsoptions_zoom70.png b/docs/shared/limits/images/inodelimitsoptions_zoom70.png
deleted file mode 100644
index 141d0eba7..000000000
Binary files a/docs/shared/limits/images/inodelimitsoptions_zoom70.png and /dev/null differ
diff --git a/docs/shared/limits/images/inodescpanel (1).png b/docs/shared/limits/images/inodescpanel (1).png
deleted file mode 100644
index 5561fada9..000000000
Binary files a/docs/shared/limits/images/inodescpanel (1).png and /dev/null differ
diff --git a/docs/shared/limits/images/inodescpanel.png b/docs/shared/limits/images/inodescpanel.png
deleted file mode 100644
index 5561fada9..000000000
Binary files a/docs/shared/limits/images/inodescpanel.png and /dev/null differ
diff --git a/docs/shared/lve_manager/.DS_Store b/docs/shared/lve_manager/.DS_Store
deleted file mode 100644
index 75deaf4f1..000000000
Binary files a/docs/shared/lve_manager/.DS_Store and /dev/null differ
diff --git a/docs/shared/lve_manager/README.md b/docs/shared/lve_manager/README.md
deleted file mode 100644
index a0d60faa6..000000000
--- a/docs/shared/lve_manager/README.md
+++ /dev/null
@@ -1,2092 +0,0 @@
-# CloudLinux Manager UI
-
-* [Installation wizard](./#installation-wizard)
-* [CloudLinux Manager](./#cloudlinux-manager)
-* [Inodes limits](/shared/limits/#inodes)
-* [Control panel integration guide](./#control-panel-integration-guide)
-
-<span class="notranslate">CloudLinux Manager</span> is a plugin for most popular control panels including cPanel, Plesk, DirectAdmin and ISPmanager (InterWorx coming soon). It allows you to control and monitor limits, and set limits on per package bases.
-
-<span class="notranslate">CloudLinux Manager</span> is installed by default on most servers. If it is missing you can always install it by running:
-
-<div class="notranslate">
-
-```
-$ yum install lvemanager
-```
-</div>
-
-## Installation wizard
-
-<div class="notranslate">
-
-* [Overview](./#overview)
-* [Set up](./#set-up)
-* [CloudLinux OS components](./#cloudlinux-os-components)
-  * [CageFS](./#cagefs)
-  * [LSAPI](./#lsapi)
-  * [MySQL Governor](./#mysql-governor)
-  * [Node.js Selector](./#node-js-selector)
-  * [Ruby Selector](./#ruby-selector)
-  * [Python Selector](./#python-selector)
-  * [PHP Selector](./#php-selector)
-* [Installation process and possible errors](./#installation-process-and-possible-errors)
-  * [Wizard fatal error](./#wizard-fatal-error)
-
-#### Overview
-
-<span class="notranslate">CloudLinux OS Shared Installation Wizard </span> allows you to easily install and set up CloudLinux OS components on your server with cPanel, Plesk or DirectAdmin.
-
-#### Set up
-
-As you have CloudLinux OS Shared installed, navigate to <span class="notranslate"> CloudLinux OS Shared CloudLinux Manager </span> in your control panel. CloudLinux OS Shared Installation Wizard starts automatically if `lvemanager` package is installed for the first time (not updated).
-
-![](./images/installationwizardmain_zoom70.png)
-
-To start setting up your CloudLinux OS Shared, click <span class="notranslate">_Start Wizard_</span>, otherwise click <span class="notranslate">_Skip Wizard_</span>, and you will be redirected to the <span class="notranslate"> CloudLinux Manager Dashboard</span>.
-
-:::tip Note
-Installation statuses of all components are duplicated inside their corresponding boxes on the <span class="notranslate">Dashboard</span>. All <span class="notranslate">Wizard</span> actions are available there as well. <span class="notranslate">Dashboard</span> will be automatically updated as soon as the installation process finishes.
-:::
-
-![](./images/wizard-dashboard_zoom60.png)
-
-The next step is selecting required components to be installed.
-![](./images/installationwizardstep1_zoom70.png)
-
-Click <span class="notranslate">_Finish and Install_</span> to complete installation or click <span class="notranslate">_Skip Wizard_</span> to go back to the <span class="notranslate"> Dashboard</span>.
-
-You can find a complete description of the CloudLinux OS components below.
-
-#### CloudLinux OS components
-</div>
-<div class="notranslate">
-
-#### **CageFS**
-
-</div>
-
-A virtualized per-user file system encapsulates each customer into a ‘cage’ preventing them from seeing each other files and viewing sensitive information (e.g., system files)
-
-![](./images/wizardcagefs_zoom90.png)
-
-Toggle the sliders to enable CageFS by default for new and/or existing users. 
-
-:::tip Note
-CageFS is a requirement for PHP Selector operation.
-:::
-
-<div class="notranslate">
-
-#### **LSAPI**
-
-</div>
-
-It is the fastest and most reliable way to serve PHP pages for Apache web-servers, a drop-in replacement for SuPHP, FCGID, RUID2, and ITK.
-
-![](./images/wizard_lsapi_zoom90.png)
-
-LSAPI requires CRIU to operate and we also recommend you to use mod_suexec. You can find details in our [documentation](/shared/cloudlinux_os_components/#apache-mod-lsapi-pro).
-
-<div class="notranslate">
-
-#### **MySQL Governor**
-
-</div>
-
-Monitors MySQL usage to throttle abusers, preventing server overload and improving overall performance.
-
-![](./images/wizard_mysqlgovernor_zoom90.png)
-
-:::tip Note
-<span class="notranslate">MySQL Governor</span> can be automatically installed only with cPanel/WHM and DirectAdmin - use CLI instructions available [here](/shared/command-line_tools/#mysql-governor) in all other cases.
-:::
-
-We recommend you to create a full database backup before the <span class="notranslate"> MySQL Governor </span> installation.
-
-<div class="notranslate">
-
-#### **Node.js Selector**
-
-</div>
-
-Allows end users to create Node.js applications and select the specific version of Node.js and other parameters.
-
-![](./images/wizard_node.jsselector_zoom90.png)
-
-Here you can choose versions to be installed and the version to be used as default.
-
-<div class="notranslate">
-
-#### **Ruby Selector**
-
-</div>
-
-Allows end users to select the specific version of <span class="notranslate"> Ruby</span> they need. 
-![](./images/wizard_ruby_selector_zoom90.png)
-
-Here you can choose <span class="notranslate">Ruby</span> versions to be installed.
-
-<div class="notranslate">
-
-#### **Python Selector**
-
-</div>
-
-Allows end users to select the default version of <span class="notranslate">Python</span> and set the required versions for installation.
-
-![](./images/wizard_python_selector_zoom90.png) 
-
-
-Here you can choose <span class="notranslate">Python</span> versions to be installed.
-
-#### **PHP Selector**
-
-Allows end users to select the specific version of PHP they need, with over 120 PHP extensions to choose from.
-
-![](./images/wizard_php_selector_zoom90.png)
-
-Go to <span class="notranslate">CloudLinux Manager</span> settings to set up <span class="notranslate"> PHP Selector</span> options and parameters. Read more in the [PHP Selector documentation](/shared/cloudlinux_os_components/#installation-and-update-4). 
-
-:::tip Note
-CageFS should be enabled for PHP Selector to operate.
-:::
-
-When the components to be installed are selected and configured, and installation is started, you will be redirected to the <span class="notranslate">CloudLinux Manager | Dashboard</span>.
-
-#### Installation process and possible errors
-
-Installation status is displayed throughout the process in the <span class="notranslate">Dashboard</span>. Click <span class="notranslate">_Installing_</span> to show modules installation state.
-
-![](./images/wizard_installation_status_zoom70.png)
-
-All installed modules are displayed on the <span class="notranslate"> Dashboard</span>.
-When installation is completed successfully, you will see the following status.
-
-![](./images/wizardsuccess_zoom90.png)
-
-If you decide to remove failed module or a module to be installed by clicking the (X) button, a confirmation dialog will appear.
-
-After confirming the action, the module will disappear from the list.
-
-![](./images/wizardinstallremove_zoom90.png)
-
-If module installation fails, the Installing button changes to <span class="notranslate">_Warning_</span> and the module indicator will turn red.
-
-![](./images/wizard_warning_zoom70.png)
-
-
-* Click ![](./images/wizard_download_btn.png) to download the error log.
-* Click ![](./images/wizard_try_again_btn.png) to try to install a module again.
-* Click ![](./images/wizard_close_btn.png) to remove a specific module from the installation queue. The module will be displayed on the <span class="notranslate">Dashboard</span> but will not be installed.
-
-If module auto-installation fails, you will see that the module indicator turns yellow.
-
-![](./images/wizardautoinstallationfails_zoom80.png)
-
-In this case, you can download a log for details and try to install the module again.
-
-#### **Wizard fatal error**
-
-In case of a fatal error, you will see the following warning.
-
-![](./images/wizardbroken_zoom70.png)
-
-
-* Click ![](./images/wizard_download_btn.png) to download the error log.
-* Click ![](./images/wizard_try_again_btn.png) to try to install module(s) again.
-* Click ![](./images/wizard_close_btn.png) to cancel installation. The canceled modules will be removed from the installation process.
-
-You can contact our support team for further assistance anytime by [submitting a ticket in our helpdesk system](https://cloudlinux.zendesk.com/hc/requests/new).
-
-
-## CloudLinux Manager
-
-* [Notifications color codes](./#notifications-color-codes)
-
-<span class="notranslate">cPanel CloudLinux Manager</span> administrator interface allows monitoring and managing limits for hosts end users, managing packages and monitoring statistics.
-
-Administrator credentials allow controlling limits for host users.
-
-![](./images/lvemanagermainmenu_zoom80.png)
-
-Log in as administrator to get access to the following functionality:
-
-* <span class="notranslate">Dashboard</span> provides a quick overview of statistics and all administrative information for server administrators.
-* <span class="notranslate">Current usage</span> tab - allows monitoring users resource usage at the moment;
-* <span class="notranslate">Users</span> tab with the list of all users allows viewing and managing all the users limits;
-* <span class="notranslate">Statistics</span> tab displays the statistics of resource usage for proper timeframe or proper users;
-* <span class="notranslate">Options</span> tab - allows setting LVE Faults email notifications for users;
-* <span class="notranslate">Packages</span> allows managing packages limits;
-* <span class="notranslate">PHP Selector</span> tab.
-
-For more details, please go to the [ImunifyAV documentation](https://docs.imunifyav.com/).
-
-<div class="notranslate">
-
-#### Notifications color codes <sup><Badge text="CloudLinux Manager 5.3.7-1+"/></sup>
-
-In the CloudLinux Manager UI we use the following color codes for notifications:
-
-* ![](./images/pic_warning.png) warning
-* ![](./images/pic_error.png) error
-* ![](./images/pic_info.png) information
-* ![](./images/pic_success.png) success
-
-The following actions are available in the action notifications (error, success)
- * follow a link
- * copy a command
- * copy a whole traceback
-
-The following actions are available in the system notifications (information, warning):
-* follow a link
-* copy a command
-* copy a whole message
-* mark a notification as “Read”
-* snooze a notification
-
-
-</div>
-
-### Dashboard
-
-:::tip Note
-Available starting from CloudLinux Manager 4.0-26.8
-:::
-
-CloudLinux OS Shared dashboard provides a quick overview of statistics and all administrative information for server administrators.
-
-Go to <span class="notranslate">CloudLinux Manager | Dashboard</span>.
-
-![](./images/dashboard_zoom70.png)
-
-The <span class="notranslate">CloudLinux OS Shared Dashboard</span> provides the following information:
-
-* <span class="notranslate">End Users hitting limits</span> — number of users reaching their limit in any kind of resource. Data is within the last 24 hours.
-* <span class="notranslate">Resellers hitting limits</span> —  number of enrolled Resellers that are reaching their limit in any kind of resource. Data is within the last 24 hours.
-* <span class="notranslate">[Node.js Selector](./#node-js-selector-2)</span> block displays the following data:
-  * <span class="notranslate">Node.js Selector</span> status (<span class="notranslate">Enabled/Disabled/Not installed</span>) —  displays a current status of the <span class="notranslate">Node.js Selector</span>.
-  
-    * To manage <span class="notranslate">Node.js Selector</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">LVE Manager | Options | Node.js Selector</span>.
-
-    * Click _Install_ to install <span class="notranslate">Node.js Selector</span>, you will be redirected to <span class="notranslate">CloudLinux Manager | Options | Node.js.Selector</span>.
-  * Default version — the current default version of Node.js set in your system. Click <span class="notranslate">_Manage_</span> to change the default version account wide.
-  * <span class="notranslate">Applications</span> —  number of installed/all applications for the account.
-* <span class="notranslate">Ruby Selector</span> block displays the following data:
-  * <span class="notranslate">Ruby Selector</span> status (<span class="notranslate">Enabled/Disabled/Not installed</span>) — displays a current status of the Ruby Selector.
-
-    * To manage <span class="notranslate">Ruby Selector</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Options | Ruby Selector</span>.
-
-    * Click <span class="notranslate">_Install_</span> to install <span class="notranslate">Ruby Selector</span>, you will be redirected to <span class="notranslate">CloudLinux Manager | Options | Ruby Selector</span>.
-
-  * <span class="notranslate">Applications</span> — number of installed/all applications for the account.
-* <span class="notranslate">[PHP Selector](./#php-selector-1)</span> block displays the following data:
-  * <span class="notranslate">Default version</span> — the default version of PHP binaries.
-  Click <span class="notranslate">_Manage_</span> to change the default version, enable or disable <span class="notranslate">PHP Selector</span>, change the list of supported versions, and choose default modules. You will be redirected to <span class="notranslate">CloudLinux Manager | PHP Selector</span>.<br>
-  PHP Selector (cPanel) has malfunctions warnings about [the most common issues](./#errors).
-  ![](./images/PHPSelectorDashboardMalfunction.png)
-* <span class="notranslate">[Python Selector](./#python-selector-1)</span> block displays the following data:
-  * <span class="notranslate">Python Selector</span> status (<span class="notranslate">Enabled/Disabled/Not installed</span> — displays a current status of the Python Selector.
-  
-    * To manage <span class="notranslate">Python Selector</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Options | Python Selector</span>.
-
-    * Click <span class="notranslate">_Install_</span> to install <span class="notranslate">Python Selector</span>, you will be redirected to <span class="notranslate">CloudLinux Manager | Options | Python Selector</span>.
-  * <span class="notranslate">Applications</span> —  number of installed/all applications for the account.
-* [Reseller Limits](./#reseller-interface) block displays the following data:
-  * <span class="notranslate">Reseller Limits</span> status (<span class="notranslate">Enabled/Disabled</span>). To manage <span class="notranslate">Reseller Limits</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Users</span> tab.
-  * Reseller’s accounts with Reseller Limits/all —  the number of Reseller accounts with Reseller Limits enabled versus the total number of Reseller accounts.
-  * Reseller’s End Users with enabled Reseller Limits/all — the number of end users with Reseller Limits enabled versus all End Users that belong to all resellers.
-* <span class="notranslate">[MySQL Governor](/shared/cloudlinux_os_components/#mysql-governor)</span> block displays the following data:
-  * <span class="notranslate">MySQL Governor</span> status (<span class="notranslate">Enabled/Disabled/Not installed/Skipped</span>). To manage <span class="notranslate">MySQL Governor</span>, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Options | MySQL Governor Mode of Operation</span>. Click <span class="notranslate">_Install_</span> to install <span class="notranslate">MySQL Governor</span>.
-  * <span class="notranslate">[Mode](/shared/cloudlinux_os_components/#modes-of-operation)</span> — displays the <span class="notranslate">MySQL Governor</span> mode of operation. Click <span class="notranslate">_Manage_</span> to change the mode.
-    * <span class="notranslate">Single</span> — single LVE is used for all customers that go over their DB limits (deprecated).
-    * <span class="notranslate">Off</span> — monitor Only, no DB query limits are applied.
-    * <span class="notranslate">All</span> — all queries are run inside user's LVE.
-    * <span class="notranslate">Abusers</span> — only queries that go over DB limits are executed inside that user's LVE (this is the default mode).
-  * <span class="notranslate">Database version</span> —  displays a current version of <span class="notranslate">MySQL/MariaDB/Percona</span> server installed in the system.
-* [CageFS](/shared/cloudlinux_os_components/#cagefs) block displays the following data:
-  * <span class="notranslate">CageFS</span> status (<span class="notranslate">Enabled/Disabled/Not installed</span>). To manage CageFS, click <span class="notranslate">_Manage_</span>. You will be redirected to <span class="notranslate">CloudLinux Manager | Options | CageFS</span>. Click <span class="notranslate">_Install_</span> to install CageFS.
-  * <span class="notranslate">Mode</span> displays the current CageFS mode of operation.
-  * <span class="notranslate">End users</span> — displays the number of users with CageFS enabled/all.
-* [ModLSAPI](/shared/cloudlinux_os_components/#apache-mod-lsapi-pro) block displays the following data:
-  * Mod_lsapi status (<span class="notranslate">Enabled/Disabled/Not installed</span>). Click <span class="notranslate">_Install_</span> to install Mod_lsapi.
-  * Module version displays the running version of Mod_lsapi.
-  * [Criu_status](/shared/cloudlinux_os_components/#criu-support) displays the status of lsapi_criu:
-    * <span class="notranslate">Running</span> —  means that lsapi_criu is working.
-    * <span class="notranslate">Stopped</span> —  means that lsapi_criu is not working.
-  * <span class="notranslate">Total Domains</span> displays the total number of domains with Mod_lsapi configured as PHP handler.
-  * <span class="notranslate">Criu_version</span> displays the running version of lsapi_criu.
-  * LSAPI with connection pool.
-
-:::tip Note
-* If statistics for server is absent for any reasons, you can update it by pressing the <span class="notranslate">_Refresh_</span> button. This process can last from 10 seconds to one hour depending on your server's performance, number of users and applications.
-* If statistics collection is turned off it is not displayed. If you wish to get daily statistics for your server, please turn it on by adding <span class="notranslate">`cl_statistics_enabled=1`</span> parameter to the <span class="notranslate">`/etc/sysconfig/cloudlinux`</span> file.
-* Data for the Dashboard is collected once per day. If you want to update data manually, press <span class="notranslate">_Refresh_</span>. This process can last from 10 seconds to one hour depending on your server's performance, number of users and applications.
-:::
-
-
-### Current usage
-
-Choose <span class="notranslate">_Current usage_</span> tab to monitor users resource usage at the moment displayed in the table.
-
-<span class="notranslate">Current usage</span> table provides the information on the usage of <span class="notranslate"> Speed, memory, IO, IOPS, Number of Processes</span>, and <span class="notranslate"> Entry Processes</span>.
-
-<span class="notranslate"> Resource usage </span> values are being refreshed every 10 seconds which is set in <span class="notranslate">_Auto-refresh_</span> field. You can refresh the table manually by clicking <span class="notranslate">_Refresh now_</span> or you can freeze the values by clicking pause button. Usage values will not change until the next manual refresh.
-
-Tick <span class="notranslate">_Hide MySQL usage_</span> checkbox to hide the information on MySQL usage.
-
-To expand the list of users click on the number above and in the dropdown choose the number of user to be displayed on the page.
-
-![](./images/man_01_zoom73.png)
-
-The list of users can be filtered by <span class="notranslate">_Username_</span> and <span class="notranslate">_Domain_</span>.
-
-Hoster can **view** all types of users:
-* <span class="notranslate">End users</span>
-* <span class="notranslate">Resellers</span>
-* <span class="notranslate">Reseller’s end users</span>
-* <span class="notranslate">Reseller’s end users (no Reseller limit)</span>.
-
-But hoster can only **manage**:
-* <span class="notranslate">End users</span>
-* <span class="notranslate">Resellers</span>
-* <span class="notranslate">Reseller’s end users (no Reseller limit)</span>
-
-To manage Reseller’s end users hoster should login as a reseller.
-
-### Users
-
-* [Actions](./#actions)
-* [Group actions for users with enabled CageFS](./#group-actions-for-users-with-enabled-cagefs)
-
-Choose <span class="notranslate">_Users_</span> tab to view the list of all users in the system and manage their limits.
-
-![](./images/userstabhoster_zoom70.png)
-
-:::tip Note
-A hoster can view the list of resellers’ end users and their limits, but can not manage resellers’ end users limits (if those are set by reseller).
-:::
-
-* Tick <span class="notranslate">_Show users with CageFS enabled_</span> to show users with CageFS file system enabled.
-* Tick <span class="notranslate">_Show only ignored users_</span> to show users with ignored <span class="notranslate">MySQL Governor</span>.
-
-The following filters are available:
-* <span class="notranslate">Manage by</span>
-  * <span class="notranslate">End users</span>
-  * <span class="notranslate">Resellers</span>
-  * <span class="notranslate">Reseller's end users</span>
-  * <span class="notranslate">Reseller's end users (no Reseller limit)</span>
-* <span class="notranslate">Show only</span>
-  * <span class="notranslate">Ignored users</span> - show users with ignored MySQL Governor.
-  * <span class="notranslate">Users with CageFS enabled</span>
-
-Also, you can search user by his <span class="notranslate">Username</span>, <span class="notranslate">domain</span> or <span class="notranslate">LVE ID</span> in the <span class="notranslate">_Search_</span> field.
-
-#### Actions
-
-Click pencil icon in <span class="notranslate">_Actions_</span> column to edit limits for a particular user. The following actions are available:
-
-* Enable/disable <span class="notranslate">CageFS</span>
-* <span class="notranslate">**Reset**</span> - to reset limits to default values
-* Apply <span class="notranslate">**Do not limit**</span> to set the limits to unlimited;
-* Setting the limits values:
-  * <span class="notranslate"> SPEED </span>
-  * <span class="notranslate"> SPEED MYSQL </span>
-  * <span class="notranslate"> VMEM </span>
-  * <span class="notranslate"> PMEM </span> 
-  * <span class="notranslate"> IO </span>
-  * <span class="notranslate"> MySQL IO </span>
-  * <span class="notranslate"> IOPS </span>
-  * <span class="notranslate"> EP </span>
-  * <span class="notranslate"> NPROC </span>
-  * <span class="notranslate"> INODES </span> (hard and soft) (for <span class="notranslate">end users</span> and <span class="notranslate">resellers’ end users (with no Reseller Limits)</span>, if a hoster has enabled <span class="notranslate">_Initial quotas_</span> in cPanel settings).
-
-Click <span class="notranslate">_Save_</span> to save changes or <span class="notranslate">_Cancel_</span> to close the pop-up.
-
-![](./images/actionshoster.png)
-
-Click on <span class="notranslate">_History_</span> symbol to view the history of a particular user resource usage. Choose time frame to view the history for a particular time period.
-
-![](./images/historyhoster.jpg)
-
-#### Group actions for users with enabled CageFS
-
-:::warning Note
-If CageFS is disabled, group actions are not available. See how you can enable CageFS:
-* [Managing users](/shared/cloudlinux_os_components/#managing-users)
-* [CageFS CLI](/shared/command-line_tools/#cagefs)
-* via cPanel CageFS User Manager plugin.
-:::
-
-* **View users with enabled CageFS**
-  
-  To view users with enabled CageFS, click <span class="notranslate">_Show only >> Users with CageFS enabled_</span>
-  ![](./images/CageFSEnabledUsers.png)
-
-* **Disable CageFS for several users**
-
-  To disable CageFS for several users, do the following.
-
-  * Select a particular user or select all users
-  * Click <span class="notranslate">_CageFS_ >> _Disable_</span>.
-
-  ![](./images/GroupDisableCageFS.png)
-
-### Statistics
-
-Choose <span class="notranslate">_Statistics_</span> tab to view end users, resellers and resellers’ end users limits usage statistics.
-
-The following parameters can be displayed in the statistics table:
-
-* <span class="notranslate"> SPEED </span> usage per user;
-* <span class="notranslate"> IO </span> usage per user;
-* <span class="notranslate"> EP </span> usage per user;
-* <span class="notranslate"> VMEM </span> usage per user;
-* <span class="notranslate"> PMEM </span> usage per user;
-* <span class="notranslate"> NPROC </span> usage per user;
-* <span class="notranslate"> IOPS </span> usage per user;
-* <span class="notranslate"> MySQL </span> usage per user.
-
-Click <span class="notranslate">_Show_</span> and select columns from the drop-down to set which parameters should be displayed in the table.
-
-Statistics table can be filtered by:
-
-* <span class="notranslate"> Timeframe </span> - to view the statistics for a particular period;
-* <span class="notranslate"> Limit </span> - to view a particular limit type usage only;
-* <span class="notranslate"> Top LVEs </span> - to view top used limits only;
-* <span class="notranslate"> LVE approaching limit </span> - to view the limits that are approaching maximum provided value;
-* <span class="notranslate"> Fault LVE </span> - the limits that have reached the maximum value.
-
-Click <span class="notranslate">_Manage_</span> to choose type of users to be displayed - <span class="notranslate">End users, Resellers, Resellers’ end users</span> or <span class="notranslate">Resellers’ end users (no Reseller limit)</span> by ticking checkbox in the drop-down.
-
-![](./images/statisticstabhoster_zoom70.png)
-
-Click chart symbol in the <span class="notranslate">_View_</span> column to view the detailed resource usage history for a particular account. Use timeframe drop-down to view the history for a particular period of time.
-
-![](./images/history_charts_zoom70.png)
-
-### Options
-
-The following sections are available to set the required options:
-
-* <span class="notranslate">[LVE Faults Email Notifications](./#lve-faults-email-notifications)</span> - allows to set the required type of notification
-* <span class="notranslate">[Faults to include](./#faults-to-include)</span> - allows to include required limits to the notifications
-* <span class="notranslate">[Minimum number of Faults to notify](./#minimum-number-of-faults-to-notify)</span> - allows to set a number of faults required for the notification to be sent for hoster, reseller, and user
-* <span class="notranslate">[Inode limits](./#inode-limits)</span> - allows to manage inode limits
-* <span class="notranslate">[User interface settings](./#user-interface-settings)</span> - allows to manage user interface settings
-* <span class="notranslate">[MySQL Governor settings](./#mysql-governor-settings)</span> - allows to manage MySQL Governor settings (if MySQL Governor is installed)
-* <span class="notranslate">[CageFS](./#cagefs-2)</span> - allows to manage CageFS settings
-* <span class="notranslate">[Node.js](./#node-js)</span> - allows to enable/disable and manage Node.js Selector
-* <span class="notranslate">[Python Selector](./#python-selector-section)</span> - allows to enable/disable and manage Python Selector
-
-![](./images/options-general.png)
-
-#### LVE Faults Email Notifications
-
-Starting from CloudLinux Manager v.7.3.0-1 and LVE-Stats v.4.1.4-1 users can disable in their Resource Usage plugin email notifications about hitting LVE limits by themselves.
-
-To allow users to do so, the administrator should enable the _Notify Customers_ and _Notify Reseller’s Customers_ options.
-
-Unfortunately, it is not possible to disable LVE Faults Email Notifications for all users by default so that users can enable the feature themselves in their interface.
-
-But it is possible to enable LVE Faults Email Notifications for all users by default, so that users can disable the feature themselves in their interface.
-
-A hoster can set email notifications for panel administrator, reseller customer, and resellers’ customers in cases of limits faults. Choose <span class="notranslate">_Options_</span> tab to manage LVE Faults email notifications.
-
-![](./images/lve-faults-email-notifications.png)
-
-The following types of notification are available:
-
-* **<span class="notranslate">Notify Hoster</span>** - receive notifications on users and its own LVE faults
-* **<span class="notranslate">Notify Reseller</span>** - allows reseller receiving notifications on their user's LVE faults
-* **<span class="notranslate">Notify Customers</span>** - allow host's users receiving notifications on their LVE faults
-* **<span class="notranslate">Notify Reseller's customers</span>** - allows resller's users receiving notifications on their LVE faults
-
-
-#### Faults to include
-
-![](./images/faults-to-include.png)
-
-Tick checkboxes to include required limits to the notifications:
-
-* **<span class="notranslate">SPEED</span>** - include <span class="notranslate">_SPEED_</span> limit fault to the notification
-* **<span class="notranslate">IO</span>** - include <span class="notranslate">_I/O_</span> limit fault info to the notification
-* **<span class="notranslate">IOPS</span>** - include <span class="notranslate">_IOPS_</span> limit fault info to the notification
-* **<span class="notranslate">Memory</span>** - include <span class="notranslate">_Memory_</span> limit fault info to the notification
-* **<span class="notranslate">Concurrent connections</span>** - include <span class="notranslate">_concurrent connections_</span> limit fault info to the notification
-* **<span class="notranslate">NPROC</span>** - include <span class="notranslate">_NPROC_</span> limit fault info to the notification.
-
-#### Minimum number of Faults to notify
-
-![](./images/minimum-number-of-faults-to-notify.png)
-
-Set a number of faults required for the notification to be sent for:
-
-* <span class="notranslate">Hoster and Reseller</span>
-* <span class="notranslate">User</span>
-
-Set the frequency of email notifications sending to: 
-
-* <span class="notranslate">Hoster and Reseller</span>
-* <span class="notranslate">User</span>
-
-#### Inode limits
-
-![](./images/inode-limits.png)
-
-Allows to reset inode limits and show/hide end-user inode usage.
-
-#### User interface settings
-
-![](./images/user-interface-settings.png)
-
-Allows to manage user interface settings:
-
-* **<span class="notranslate">Hide LVE end user usage statistic</span>** - a user will not be able to see his usage statistic in his web interface
-* **<span class="notranslate">Hide Ruby App in web-interface</span>** - a user will not be able to see Ruby Selector in his web interface
-
-#### MySQL Governor settings
-
-![](./images/mysql-governor-settings.png)
-
-Allows to manage MySQL Governor settings.
-
-<span class="notranslate">**MySQL Governor Mode of operation**</span>
-
-* <span class="notranslate">**Off**</span> - monitor Only – not throttle customer's queries, only monitor MySQL usage.
-* <span class="notranslate">**Single**</span> - single restricted LVE for all restricted customers – all queries for all restricted customers  well be sharing the same LVE.
-* <span class="notranslate">**Abusers**</span> - use LVE for a user to restrict queries (default mode) –  if a user goes over the limits, all his queries will execute inside his LVE.
-* <span class="notranslate">**All**</span> - always run queries inside user's LVE – limits are applied to both PHP & MySQL queries at the same time.
-
-<span class="notranslate">**MySQL Governor restrict type mode**</span>
-
-* <span class="notranslate">Period</span> – allows to restrict users for a specified time period
-* <span class="notranslate">Limit</span> (default mode) – allows to restrict/automatically unrestrict users that hit limits/don't hit limits during 'unlimit=time'
-
-<span class="notranslate">**Unlimit users automatically in**</span>
-
-Allows to unlimit users automatically if they don't hit the limits during the specified number of seconds/minutes/hours/days.
-
-<span class="notranslate">**Restricted time periods**</span>
-
-User restriction time period for different levels of restriction and the timeout to apply a higher restriction level.
-
-* <span class="notranslate">Level1</span>
-* <span class="notranslate">Level2</span>
-* <span class="notranslate">Level3</span>
-* <span class="notranslate">Level4</span>
-* <span class="notranslate">Timeout</span>
-
-<span class="notranslate">**User maximum connections**</span>
-
-The number of simultaneous connections of a restricted user (in the LVE mode).
-
-<span class="notranslate">**Path to script**</span>
-
-To be triggered when account is restricted.
-
-<span class="notranslate">**MySQL Governor restrict-log file URL and format**</span>
-
-* <span class="notranslate">URL</span> – where the log file is placed in the file system
-* <span class="notranslate">Format</span> – log file format: <span class="notranslate">short</span>, <span class="notranslate">medium</span>, <span class="notranslate">long</span>, <span class="notranslate">very long</span>
-
-<span class="notranslate">**MySQL Governor error-log file URL and logging level**</span>
-
-* <span class="notranslate">URL</span> – where the log file is placed in the file system
-* <span class="notranslate">Level</span> – logging level: error, debug
-
-<span class="notranslate">**Kill slow SELECT queries**</span>
-
-* <span class="notranslate">Kill slow queries</span> – stop running slow select queries
-* <span class="notranslate">URL</span> – log file URL, where killed queries will be saved 
-* <span class="notranslate">Timeout</span> – number of seconds while slow request can be finished, otherwise, it will be canceled
-
-<span class="notranslate">**Gather data for detailed statistics**</span>
-
-Tick if yes.
-
-<span class="notranslate">**Log restricted user's queries**</span>
-
-Tick if yes.
-
-
-#### CageFS
-
-![](./images/options-cagefs.png)
-
-Allows to manage CageFS settings:
-
-* **CageFS** - enable/disable CageFS
-* **<span class="notranslate">CageFS Skeleton</span>** - click to update CageFS skeleton. See: [Updating CageFS skeleton](/shared/control_panel_integration/#updating-cagefs-skeleton)
-* **<span class="notranslate">New users will be disabled by default in CageFS</span>** - toggle to enable/disable new users in CageFS by default.
-
-#### Node.js
-
-![](./images/options-nodejs.png)
-
-Allows to enable/disable and manage Node.js Selector.
-
-See more:
-
-* [Node.js Selector UI](./#node-js-selector-2)
-* [Node.js Selector](/shared/cloudlinux_os_components/#node-js-selector)
-
-#### Python Selector section
-
-![](./images/options-python-selector.png)
-
-Allows to enable/disable and manage Python Selector.
-
-See more:
-
-* [Python Selector UI](./#python-selector-2)
-* [Python Selector](/shared/cloudlinux_os_components/#python-selector)
-
-When you've done with settings, click <span class="notranslate">**Save Changes**</span> to apply changes.
-
-### Packages
-
-<span class="notranslate"> Packages</span> tab allows setting the limits for as many users as you need by editing packages of proper limits. Each account belonging to a proper package adheres to those limits.
-
-:::tip Note
-Limits from the package will not be applied if the package’s owner differs from the owner of the account you’re trying to apply limits to. Default limits will be applied instead.
-:::
-
-Choose <span class="notranslate">_Packages_</span> tab to view and modify:
-
-* limits for user packages (created by hoster);
-* limits for reseller packages (created by hoster);
-* limits for resellers’ end users packages if reseller limits are not set for that reseller (hoster access allows identifying a particular reseller’s end user belonging to a particular reseller (created by reseller)).
-  
-![](./images/packageshostertab_zoom70.png)
-
-To modify package limits click on a pencil symbol in <span class="notranslate">_Actions_</span> column in a particular package row. The following limits for this package are available for setting:
-
-* <span class="notranslate"> SPEED</span> in percent (%);
-* <span class="notranslate"> Virtual memory (VMEM)</span> (can be set as unlimited by setting 0);
-* <span class="notranslate"> Physical memory (PMEM)</span> (can be set as unlimited by setting 0);
-* <span class="notranslate"> I/O limits (IO)</span> (can be set as unlimited by setting 0);
-* <span class="notranslate"> IOPS</span> limits;
-* <span class="notranslate"> Concurrent connections (EP)</span>;
-* <span class="notranslate"> Number of processes (NPROC)</span> (can be set as unlimited by setting 0);
-* <span class="notranslate"> INODES (hard and soft)</span> (for end users and resellers’ end users (with no Reseller Limits), if a hoster has enabled <span class="notranslate">_Initial quotas_</span> in cPanel settings.)
-
-When limits are set click <span class="notranslate">_Save_</span> to apply changes or <span class="notranslate">_Cancel_</span> to close the window.
-
-#### MySQL Governor package limits
-
-Starting from the:
-```
-governor-mysql - 1.2-80
-lvemanager - 7.8.3-1
-lve-utils - 6.4.6-1
-alt-python27-cllib - 3.2.40-1
-```
-The possibility to manage Mysql Governor package limits was added. This can be done via CloudLinux Manager or via command line.
-
-#### How to install
-```
-yum update governor-mysql lvemanager lve-utils alt-python27-cllib
-```
-
-#### Meaning
-
-In all previous versions admin had possibility to manage individual MySQL Governor limits like:
-- SPEED MYSQL
-- MySQL IO
-
-Now admin can manage all those limits for hosting packages and this will increase the convenience of administration.
-
-**All principles** of working with MySQL Governor package limits are the same as for LVE limits:
-
-- Initial limits for package can be settled from the the LVE extension (cPanel only) or they are inherited from the DEFAULT package (user).
-- Non default (updated) package limits will not be  changed in case DEFAULT limits are changed.
-- Users in the package inherit package’s limits  or have individual limits.
-- Individual user limits can be reseted to the package’s limits.
-- In case of reseller’s packages and users Mysql Governor limits can be managed only by admin.
-
-#### Manage MySQL Governor limits
-
-To view the package limits open this page:
-
-![](./images/mysql_packages_limits.png)
-
-To manage the package limits edit the needed package:
-
-![](./images/mysql_packages_limits_edit.png)
-
-### PHP Selector
-
-* [Selector tab](./#selector-tab)
-* [Selector tab additional features (cPanel)](./#selector-tab-additional-features)<sup> CloudLinux Manager 6.0.1-2</sup>
-  * [PHP Selector troubleshooting (cPanel)](./#php-selector-troubleshooting)<sup> CloudLinux Manager 6.0.1-2</sup>
-* [PHP Selector diagnostic tool and notifications](./#php-selector-diagnostic-tool-and-notifications)<sup> CloudLinux Manager 6.0.1-2</sup>
-
-#### Selector tab
-
-<span class="notranslate"> Selector</span> tab allows controlling <span class="notranslate">PHP Selector</span> settings.
-
-* In <span class="notranslate">_Selector is_</span> section choose <span class="notranslate">`Enabled`</span> or <span class="notranslate">`Disabled`</span> from the dropdown list to enable or disable <span class="notranslate">PHP Selector</span>.
-* In <span class="notranslate">_Default PHP version_</span> choose a proper PHP version or <span class="notranslate"> Native</span> from dropdown list to apply.
-* In <span class="notranslate">_Hide php extensions for end-user_</span> you can enable/disable the ability for end-user to select PHP extensions in his web interface.
-* In <span class="notranslate">_Supported versions_</span> choose required PHP versions to support.
-
-Choose default modules from the list for a proper PHP version or for native.
-
-![](./images/php_selector.png)
-
-:::tip Note
-You can also use [PHP Selector CLI](/shared/command-line_tools/#php-selector)
-:::
-
-####  Selector tab additional features <Badge text="cPanel" /> <Badge text="CloudLinux Manager 6.0.1-2" />
-
-Go to cPanel admin interface → CloudLinux manager → Selector
-
-![](./images/NewSelector.png)
-
-<span class="notranslate">_Selector_</span> tab has two sub tabs: <span class="notranslate">_Main settings_</span> and <span class="notranslate">_Domains_</span>.
-
-* <span class="notranslate">_Main settings_</span> sub tab allows to config general settings for PHP Selector
-  * <span class="notranslate">_Selector is_</span>: allows to enable/disable PHP Selector
-  * <span class="notranslate">_Default PHP version_</span>: allows to set PHP version by default
-  * <span class="notranslate">_Hide PHP extensions for end-user_</span>: allows to hide PHP extensions
-  * <span class="notranslate">_Hide "My domains" page for end-user_</span>: allows to disable such tab for end-user
-  * <span class="notranslate">_Supported versions_</span>: allows to select supported PHP versions 
-* <span class="notranslate">_Domains_</span> sub tab contains the list of User-Domain pairs to visualize which PHP Selector is used by a domain
-
-![](./images/Domains.png)
-
-Admin can filter the list:
-
-![](./images/SelectorFilters.png)
-
-If an admin clicks <span class="notranslate">_Use PHP selector_</span> in the <span class="notranslate">_Action_</span> table, the PHP version for a domain in MultiPHP Selector is changed to the system default version and <span class="notranslate">`php-fpm`</span> is disabled. Users' websites will use the version set in CloudLinux OS Shared PHP Selector (user interface). Group operation also can be used.
-
-![](./images/UsePHPSelector.png)
-
-#### PHP Selector troubleshooting <Badge text="cPanel"/> <Badge text="CloudLinux Manager 6.0.1-2" />
-
-
-You can see the following errors in the <span class="notranslate">_Domains_</span> tab.
-
-1. <span class="notranslate">PHP Selector cannot be activated for this domain. Initialize CageFS in the Options tab first</span>.
-
-![](./images/Error1.png)
-
-**Solution**
-
-Initialize CageFS in the Options tab (see [installation instructions](/shared/cloudlinux_os_components/#installation-instructions-for-cpanel-users)).
-
-![](./images/CageFSInit.png)
-
-2. <span class="notranslate">PHP Selector cannot be activated for this domain. Enable CageFS for this user in the Users tab first</span>.
-
-![](./images/Error2.png)
-
-**Solution**
-
-Enable CageFS in the Users tab (see [installation instructions](/shared/cloudlinux_os_components/#installation-instructions-for-cpanel-users)).
-
-![](./images/CageFSEnable.png)
-
-* You can enable CageFS for one user by individual slider (for lve 1001 in the picture above)
-* You can enable CageFS for a group of user by the CageFS button (for lve 1002, 1003 in the picture above)
-
-3. Some PHP related issues need to be resolved in order to enable domain management. Find the list of PHP related issues that prevent domain management above.
-
-![](./images/Error3.png)
-
-**Solution**
-
-If you cannot see Diagnostic tool notifications, you can restart it. Then you can fix the issues using [these instructions](./#php-selector-diagnostic-tool-and-notifications).
-
-#### PHP Selector diagnostic tool and notifications <Badge text="CloudLinux Manager 6.0.1-2" />
-
-The diagnostic tool allows to catch some issues. You can start diagnostic by clicking <span class="notranslate">_Run diagnostic_</span> button.
-
-![](./images/RunDiagnostic.png)
-
-The most popular errors and solutions:
-
-1. Your PHP Handler does not support CLoudLinux OS Shared PHP Selector
-
-![](./images/Issue1.png)
-   
-**Solution**: install `mod_suexec` (see instructions [here](/shared/cloudlinux_os_components/#installation-5)) and then run the following command:
-
-<div class="notranslate">
-
-```
-cagefsctl --force-update
-```
-</div>
-
-2. Incorrect config file format
-
-![](./images/Issue2.png)
-       
-**Solution**: correct the file format via SSH.
-
-3. Some domains have neither PHP version selected in MultiPHP Manager no system default version or have `php-fpm` enabled.
-
-![](./images/Issue3.png)
-
-**Solution**: see [installation instructions](/shared/cloudlinux_os_components/#installation-instructions-for-cpanel-users) for cPanel users
-
-4. MultiPHP system default version is not ea-php
-
-![](./images/Issue4.png)
-
-**Solution**: see [installation instructions](/shared/cloudlinux_os_components/#installation-instructions-for-cpanel-users) for cPanel users
-
-In the CloudLinux Manager v.6.0.6-1 the diagnostic tool can not catch problems with CageFS. See [installation instructions](/shared/cloudlinux_os_components/#installation-instructions-for-cpanel-users) for cPanel users.
-
-
-
-
-### Python Selector
-
-* [How to enable/disable Python Selector]( ./#how-to-enable-disable-python-selector)
-* [How to manage Python Selector](./#how-to-manage-python-selector)
-* [Enable and disable particular Python version](./#enable-and-disable-particular-python-version)
-* [Install and delete particular Python version](./#install-and-delete-particular-python-version)
-* [Make a particular Python version as a default](./#make-a-particular-python-version-as-a-default)
-* [Applications column](./#applications-column)
-
-Hoster interface allows to enable and disable Python Selector and manage individual Python versions.
-
-Go to <span class="notranslate">CloudLinux Manager → Options Tab → Python Selector</span>.
-
-A list of installed Python versions is displayed. There are several columns in the list.
-* <span class="notranslate">Version</span> — displays Python version.
-* <span class="notranslate">Path</span> — Python package location.
-* <span class="notranslate">Applications</span> — number of applications that use this Python version. Click on an application number to go to the list of applications.
-* <span class="notranslate">Enabled</span> — displays if particular Python version is enabled.
-* <span class="notranslate">Actions</span> — allows to install, delete, and make default a particular Python version.
-
-To display all changes immediately click <span class="notranslate">_Refresh_</span>.
-
-![](./images/PythonGeneral.png) 
-
-#### How to enable/disable Python Selector
-
-To enable Python Selector move a slider to <span class="notranslate">_Enable_</span> and complete the action by clicking <span class="notranslate">_Agree_</span> or click <span class="notranslate">_Cancel_</span> to close the popup.
-To disable Python Selector move a slider back to <span class="notranslate">_Disable_</span>.
-
-:::tip Note
-If you disable Python, all users won't be able to manage their applications
-:::
-
-![](./images/PythonEnableDisable.png)
-
-::: tip Note
-Python Selector icon in end user interface is hidden when Python is disabled.
-:::
-
-![](./images/PythonEndUserIcon.png)
-
-#### How to manage Python Selector 
-
-In the list of installed Python versions you can enable and disable, install and delete, and set a particular Python version as a default.
- 
-#### Enable and disable particular Python version
- 
-To enable particular Python version do the following:
-
-* Move a disabled slider in the <span class="notranslate">Enabled</span> column for a particular Python version.
-* In the confirmation popup click <span class="notranslate">_Agree_</span> to save changes or <span class="notranslate">_Cancel_</span> to close popup.
-
-![](./images/PythonEnabled.png)
-
-To disable particular Python version do the following:
-
-* Move an enabled slider in the <span class="notranslate">Enabled</span> column for a particular Python version.
-* In the confirmation popup click <span class="notranslate">_Agree_</span> to save changes or <span class="notranslate">_Cancel_</span> to close popup.
- 
-#### Install and delete particular Python version
- 
-To install particular Python version do the following:
-
-* Click <span class="notranslate">_Install_</span> button in the Actions column for a particular Python version.
-* In the confirmation popup click <span class="notranslate">_Agree_</span> to save changes or <span class="notranslate">_Cancel_</span> to close popup.
- 
-To delete particular Python version do the following:
-
-* Click <span class="notranslate">_Bin_</span> icon in the <span class="notranslate">Actions</span> column for a particular Python version.
-* In the confirmation popup click <span class="notranslate">_Agree_</span> to start uninstalling process. Or close popup without changes by clicking <span class="notranslate">_Cancel_</span> button.
-
-:::tip Note
-It is impossible:
-* to remove default Python version
-* to remove version with applications
-* to install or remove version if another installation/uninstalling process is running
-:::
-
-![](./images/PythonInstall.png)
-
-#### Make a particular Python version as a default
-
-:::tip Note
-You can set a particular Python version as a default version in the CloudLinux OS Shared [installation wizard](./#cloudlinux-installation-wizard) during the first installation.
-:::
-
-To make a particular Python version as a default version, do the following:
-
-* Click <span class="notranslate">_Double-Tick_</span> icon in the Actions column for a particular Python version.
-* In the confirmation popup click <span class="notranslate">_Agree_</span> to save changes or <span class="notranslate">_Cancel_</span> to close popup.
- 
-:::tip Note
-It is impossible to make disabled Python version as a default version
-:::
-
-![](./images/PythonChangeDefaultVersion.png)
-
-#### Applications column
- 
-To view and operate with the list of domains with Python versions click a number in the <span class="notranslate">_Applications_</span> column for a particular Python version. A section with a list of Domains for particular Python version will be displayed.
-
-![](./images/PythonDomains.png)
-
-Domains are displayed by three. To load more domains click <span class="notranslate">_Load More_</span> button.
- 
-To change Python version for a particular application do the following:
-
-* Click <span class="notranslate">_Double-Arrow_</span> icon in the <span class="notranslate">_Actions_</span> column in a particular application row. A confirmation popup will be displayed.
-* In the popup choose Python version from a dropdown.
-* Click <span class="notranslate">_Change_</span> to confirm the action or <span class="notranslate">_Cancel_</span> to close the popup.
-* To refresh state of applications in current version you can click <span class="notranslate">_Refresh_</span>.
- 
-:::tip Note
-All packages of the application(s) will be re-installed.
-:::
-
-:::tip Note
-You can also use [Python Selector CLI](/shared/command-line_tools/#hoster)
-:::
-
-See also: [Python Selector client plugin](./#python-selector-client-plugin)
-
-
-### Node.js Selector
-
-* [How to enable/disable Node.js](./#how-to-enable-disable-node-js)
-* [How to manage Node.js](./#how-to-manage-node-js)
-* [Enable and disable particular Node.js version](./#enable-and-disable-particular-node-js-version)
-* [Install and delete particular Node.js version](./#install-and-delete-particular-node-js-version)
-* [Make a particular Node.js version as a default](./#make-a-particular-node-js-version-as-a-default)
-* [Applications column](./#applications-column-2)
-* [Application error log](./#application-error-log)
-
-
-Hoster interface allows to enable and disable Node.js, and manage individual Node.js versions.
-
-Go to <span class="notranslate"> _CloudLinux Manager → Options Tab → Node.js Section_ </span>. A list of installed Node.js versions is displayed. There are several columns in the list.
-
-* <span class="notranslate"> Version </span> — displays Node.js version.
-* <span class="notranslate"> Path </span> — Node.js package location.
-* <span class="notranslate"> Applications </span> — number of applications that use this Node.js version. Click on a digit to go to the list of applications.
-* <span class="notranslate"> Enabled </span> — displays if particular Node.js version is enabled.
-* <span class="notranslate"> Actions </span> — allows to install, delete, and make default a particular Node.js version.
-
-To display all changes immediately click <span class="notranslate"> _Refresh_ </span> link.
-
-![](./images/nodejsgeneral_zoom70.png)
-
-#### How to enable/disable Node.js
-
-* To enable Node.js move the slider to <span class="notranslate">_Enable_</span>.
-* To disable Node.js move the slider back to <span class="notranslate">_Disable_</span>. 
-
-::: tip Note
-If you disable Node.js, its version for all your applications will not be changed, but you can not add a new application to this version.
-:::
-
-![](./images/nodejsslider_zoom70.png)
-
-::: tip Note
-<span class="notranslate">Node.js Selector</span> icon in end user interface is hidden when Node.js is disabled.
-:::
-
-![](./images/nodejsselectorlogo_zoom70.png)
-
-#### How to manage Node.js
-
-The list of installed Node.js versions allows to enable and disable, install and delete, and set a particular Node.js version as a default.
-
-#### Enable and disable particular Node.js version
-
-To enable particular Node.js version do the following:
-* Move a disabled slider in the <span class="notranslate"> _Enabled_ </span> column for a particular Node.js version.
-* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to save changes or <span class="notranslate"> _Cancel_ </span> to close pop-up.
-
-![](./images/nodejsenable_zoom70.png)
-
-To disable particular Node.js version do the following:
-* Move an enabled slider in the <span class="notranslate"> _Enabled_ </span> column for a particular Node.js version.
-* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to save changes or <span class="notranslate"> _Cancel_ </span> to close pop-up.
-
-#### Install and delete particular Node.js version
-
-To install particular Node.js version do the following:
-* Click <span class="notranslate"> _Install_ </span> button in the <span class="notranslate"> _Actions_ </span> column for a particular Node.js version.
-* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to save changes or <span class="notranslate"> _Cancel_ </span> to close pop-up.
-
-To delete particular Node.js version do the following:
-* Click <span class="notranslate"> _Bin_ </span> icon in the <span class="notranslate"> _Actions_ </span> column for a particular Node.js version.
-* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to start uninstall process.
-* Or just close a pop-up without any changes.
-
-::: warning Note
-It is impossible:  
-* to remove default Node.js version;
-* to remove version with applications;
-* to install or remove version if another installation/uninstall process is running.
-:::
-
-![](./images/nodejsconfirmation_zoom70.png)
-
-#### Make a particular Node.js version as a default
-
-To make a particular Node.js version as a default do the following:
-* Click <span class="notranslate"> _Double-Tick_ </span> icon in the <span class="notranslate"> _Actions_ </span> column for a particular Node.js version.
-* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to save changes or <span class="notranslate"> _Cancel_ </span> to close pop-up.
-
-::: tip Note
-It is impossible to make a disabled version default.
-:::
-
-
-![](./images/nodejsmakedefault_zoom70.png)
-
-#### Applications column
-
-To view and operate with the list of domains with Node.js versions click on a number in the <span class="notranslate"> _Applications_ </span> column for a particular Node.js version. A section with a list of Domains for particular Node.js version will be displayed.
-
-![](./images/nodejsselectordomains_zoom70.png)
-
-Domains are displayed by three. To load more domains click on <span class="notranslate"> _Load More_ </span> button.
-
-
-To change Node.js version for a particular application do the following:
-* Click <span class="notranslate"> _Double-Arrow_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a particular application row. A confirmation pop-up will be displayed.
-* In the pop-up choose Node.js version from a drop-down.
-* Click <span class="notranslate"> _Change_ </span> to confirm the action or <span class="notranslate"> _Cancel_ </span> to close the pop-up.
-* To refresh state of applications in current version you can click <span class="notranslate"> _Refresh_ </span> link. 
-
-:::tip Note
-All packages of the application(s) will be re-installed.
-:::
-
-:::tip Note
-You can also use [Node.js Selector CLI](/shared/command-line_tools/#hoster-2)
-:::
-
-See also: [Node.js Selector client plugin](./#node-js-selector-client-plugin)
-
-#### Application error log
-
-Since <span class="notranslate">alt-mod-passenger</span> version 5.3.7-3 we have included support for the PassengerAppLogFile directive.
-<div class="notranslate">
-
-``` 
-Syntax: PassengerAppLogFile path
-Default: PassengerAppLogFile path-to-passenger-log-file
-Context: virtual host, htaccess
-```
-</div>
- 
-By default, <span class="notranslate">Passenger</span> log messages are all written to the Passenger log file. With this option, you can have the app specific messages logged to a different file in addition. In <span class="notranslate"> alt-mod-passenger </span>, you can use it in the context of a virtual host or in the htaccess file.
-
-See also: [Node.js Selector CLI tools](/shared/command-line_tools/#node-js-selector).
-
-### Website monitoring tool and Slow Site analyzer
-
-* [Website monitoring tab](./#website-monitoring-tab)
-* [Main](./#main)
-* [PHP Slow Site analyzer](./#php-slow-site-analyzer)
-* [Settings](./#settings)
-* [What is the density threshold?](./#what-is-the-density-threshold)
-* [Email notifications](./#email-notifications)
-* [The cloudlinux-ssa-manager CLI utility](/shared/command-line_tools/#the-cloudlinux-ssa-manager-utility)
-* [The wmt-api CLI utility](/shared/command-line_tools/#the-wmt-api-utility)
-* [FAQ](./#faq)
-
-**Website monitoring tool** is a new tool that collects the statistics of the domains' availability and responsiveness, as well as errors that occur when accessing these domains. An admin can get email reports with the statistics. The website monitoring tool uses the simple curl request like `curl http://domain.com` to get domains’ statistics.
-
-**PHP Slow Site analyzer** is a new tool that generates daily reports for the server administrator with information about the top N slow PHP-based domains and URLs. Slow Site analyzer tracks all PHP-based requests and selects slow ones by certain rules.   
-
-:::tip Note
-Slow Site analyzer is not available for CloudLinux OS Shared 6.
-:::
- 
-**Installation**
-
-To install the tool, run the following command:
-
-```
-yum update lvemanager
-```
-
-:::warning Warning
-For now, there is no any possibility to remove the `alt-php-ssa` and `cl-web-monitoring-tool` packages so that the _Website monitoring_ tab will be removed. This possibility will be added in the future releases.
-
-You can turn off the _Website monitoring_, _PHP Sites Analyzer_ in the _[Settings](./#settings)_ subtab, so sites statistics will stop collecting and there will be no additional load on the server.
-:::
-
-#### Website monitoring tab
-
-You can configure the Website monitoring tool and Slow Site analyzer and view the daily reports in the CloudLinux Manager -> Website monitoring tab.
-
-There are Main, PHP Site analyzer, and Settings subtabs here.
-
-#### Main
-
-This subtab views the latest report (for the previous day) of the Website monitoring tool.
-
-![](./images/WebsiteMonitoringMain.png)
-
-Remember that report is created every 24 hours and all changes in configuration (the _Settings_ tab) or in the list of domains will be applied for the next 24 hours (from midnight).
-
-* **Total number of requests** - requests that were sent to all domains, existing on the servers
-* **Successful requests** - the number of requests for all domains with ![](./images/Code200.png)
-* **Requests with errors** - the number of requests for all domains which status code is not 200
-* **Not started requests due to short check interval** - this metric is used to adjust configuration. If it is not equal 0, an admin should increase the value of Requests sending interval, because the tool does not fit into this interval to send requests to all domains.
-* **Slowest websites in 24h and Websites with most errors in 24h** - in these sections you can find the number of domains that was exposed here.
-
-  ![](./images/TopSlow.png)
-
-
-#### PHP Slow Site analyzer
-
-:::tip Note
-The Slow Site analyzer is not available for CloudLinux OS Shared 6.
-:::
-
-![](./images/WebsiteMonitoringPHPSiteAnalyzer.png)
-
-This is an example of a report from the Slow Site analyzer. The report shows the number of slow requests per domain and its URLs and the average duration of each slow URL.
-
-You can find the explanation of the **Slow requests density in period** [here](./#what-is-the-density-threshold).
-
-
-#### Settings
-
-Here, an admin can configure the Website monitoring and the PHP Site analyzer.
-
-:::tip Note
-All settings which was changed after starting Website monitoring and Slow site analyzer will be applied for the next 24h (from midnight).
-:::
-
-To enable or disable **Website monitoring**, use the following slider.
-
-![](./images/WebsiteMonitoringSlider.png)
-
-* **Top N slow websites to show** - this number (N) will be used to select the top N domains from the list of all domains, sorted by response duration (Slowest websites list). And this number also will be used to select the top N domains from the list of all domains, sorted by amount of errors (Websites with most errors list).
-* **Requests sending interval** - this is a period in minutes between requests to the same domain.
-* **Domain response timeout** - if there is no answer from the website for this period of time, the Website Monitoring tool will regard this behaviour as the `HTTP 408` error.
-* **Concurrent requests limit** - how many concurrent requests can be done by the Website Monitoring tool.
-
-To enable or disable the **Slow site analyzer**, use the following slider.
-
-:::tip Note
-Slow Site analyzer is not available for CloudLinux OS Shared 6.
-:::
-
-![](./images/WebsiteMonitoringSlider1.png)
-
-* **Top N slow websites to show** - this number (N) will be used to select the top N domains from the list of all domains, marked as slow.
-* **Top slow URLs** - this number (N) will be used to select the top N URLs for each domain, marked as slow.
-* **Slow request duration** - the duration of a request in seconds. 
-* **Slow requests number & Analysis time** - how many requests with a certain request duration should be done in time to mark the domain as a slow one.
-* **Slow requests density threshold** can be in the interval [0..1], by default it is 0.8. The **density threshold** can be disabled. And the **Domains and URLs Ignore List** can be specified.
-
-#### What is the density threshold?
-
-We try to find the most interesting requests for the optimisation from all number of requests to domains during 24 hours. The _Density threshold_ parameter helps to find the most visited URLs and the most popular requests. 
-
-A density threshold is a numerical measure of some type of correlation, meaning the power of the statistical relationship between slow requests and all requests to the domain. If this parameter is enabled then the resulting table will contain slow requests that have exceeded the specified threshold. Requests with the highest density are usually the most distributed per day and are considered valuable to users, thus interesting for optimization.
-
-Slow requests that represent bursts of activity and are weakly related to all activity per domain typically have a low density and will be weeded out.
-
-#### Email notifications
-
-Email notifications are created by the Web monitoring tools. 
-
-**Example of the Web monitoring tools report**.
-
-![](./images/EmailNotifications.png)
-
-**Example of the PHP Slow site analyzer report**.
-
-![](./images/SlowSiteAnalyzerEmailNotifications.png)
-
-
-#### FAQ
-
-Q: Does this feature consume a lot server resources for collecting website and PHP data? If I enable it can this slow down the server?
-
-A: The load depends on the number of websites and the Website monitoring tool settings. Basically, the Website monitoring should not create a significant load and you can keep it always on.
-
----
-
-Q: Can I change the default value to 10, for example for the "Top N slow websites to show" setting?
-
-A: This number is simply the number of the slowest responding sites. All sites are sampled during the day. When generating a report, all sites' responses are sorted by response time from highest to lowest, and to make the report readable, only the first N sites are taken. You can specify N as all existing sites or only the 5 slowest. This number does not affect the server load, it only affects the report that will be visible in the UI or emailed to the administrator.
-
----
-
-Q: What would you recommend: to enable the Website monitoring tool for some days and then disable or I can keep it always turned on?
-
-A: The load depends on the number of websites and the Website monitoring tool settings. Basically, the Website monitoring tool should not create a significant load and you can keep it always on.
-
-### Reseller interface
-
-Reseller interface is designed to manage limits for resellers’ end users, to monitor statistics and the history of resource usage and to modify reseller’s end user packages limits.
-
-Log in under a particular reseller credentials to have access to the following functionality:
-
-* <span class="notranslate">[Current Usage](./#current-usage-tab)</span> tab - allows to monitor resellers’ end users resource usage at the moment;
-* <span class="notranslate"> [Historical Usage](./#historical-usage-tab)</span> tab - allows to control resellers’ end users resource usage history;
-* <span class="notranslate"> [Users](./#users-tab)</span> tab with the list of all resellers’ end users allows to view and manage all the reseller’s end user limits;
-* <span class="notranslate"> [Statistics](./#statistics-tab)</span> tab displays the statistics of resource usage for particular timeframe or particular reseller's end user;
-* <span class="notranslate"> [Options](./#options-tab)</span> tab allows to set LVE Faults email notifications.
-* <span class="notranslate"> [Packages](./#packages-tab)</span> tab allows to manage reseller’s end user packages limits.
-
-:::warning
-Reseller can manage all his end users via Reseller Interface. Reseller cannot manage <span class="notranslate"> INODE </span> or <span class="notranslate"> MYSQL </span> limits, neither his own nor for his users.
-:::
-
-<div class="notranslate">
-
-#### Current Usage tab
-
-</div>
-
-Current usage table provides the information on the usage of the following:
-* <span class="notranslate"> SPEED (All)</span>
-* <span class="notranslate">memory (MEM)</span>
-* data throughput <span class="notranslate">(IO)(All)</span>
-* read/write operations per second (<span class="notranslate">IOPS</span>)
-* <span class="notranslate">number of processes (PNO)</span>
-* <span class="notranslate">entry processes (EP)</span>
-
-Resource usage data is being refreshed every 10 seconds which is set by default in <span class="notranslate">_Auto-refresh_</span> field. You can set <span class="notranslate">_Auto-refresh time_</span> by choosing the value from the drop-down.
-
-You can refresh the table manually by clicking <span class="notranslate">_Refresh now_</span> or you can freeze the values by clicking <span class="notranslate">_pause_</span> button.
-
-Usage values will not change until the next manual refresh. To unfreeze click on <span class="notranslate">_unpause_</span> button. The countdown will continue.
-
-:::warning
-Reseller cannot manage <span class="notranslate">INODE</span> or MYSQL limits. Neither his own, nor for his users.
-:::
-
-The bottom line star in the table displays the total reseller resource usage. It means, that all the usage of resellers’ end users and of his own is displayed as a summary for each parameter.
-
-
-![](./images/currentusagetabresellerr_zoom70.png)
-
-<div class="notranslate">
-
-#### Historical Usage tab
-
-</div>
-
-Choose <span class="notranslate">_Historical Usage_</span> tab to view reseller and resellers’ end users resource usage history and faults. The list of users can be filtered by <span class="notranslate">_Timeframe_</span>.
-
-When reseller’s end user reaches the limits set by hoster for the reseller, this will be displayed on the chart. 
-
-:::tip Note
-In this case reseller’s end user would not necessarily reaches his limits set by the reseller. These faults are not displayed on the chart.
-:::
-
-On the <span class="notranslate">_Historical Usage_</span> page the reseller is also able to see the list of <span class="notranslate">_Top 5 Reseller’s end users_</span> (based on resource usage, for the same period as charts/overall usage). Click <span class="notranslate">_History_</span> in the <span class="notranslate">_Actions_</span> column to view resource usage statistics for particular user.
-
-Click <span class="notranslate">_LVE Statistics_</span> on the top of the <span class="notranslate">Top 5</span> list to go to the <span class="notranslate">_Statistics_</span> page to view or manage the rest of users.
-
-![](./images/historicalusageresellertab_zoom70.png)
-
-<div class="notranslate">
-
-#### Users tab
-
-</div>
-
-Choose <span class="notranslate">_Users_</span> tab to view and manage the list of all resellers’ end users and resource usage limits provided for them. The following limits are available for the resellers’ end users:
-
-* <span class="notranslate">SPEED</span>
-* <span class="notranslate">PMEM</span>
-* <span class="notranslate">IO</span>
-* <span class="notranslate">IOPS</span>
-* <span class="notranslate">EP</span>
-* <span class="notranslate">NPROC</span>
-
-You can filter the list by <span class="notranslate">_Username_, _Domain_, _LVE ID_.</span>
-
-Tick <span class="notranslate">_Show only ignored users_</span> to display only users with <span class="notranslate">MySQL Governor</span> disabled.
-
-![](./images/userstabreseller_zoom70.png)
-
-<div class="notranslate">
-
-#### Actions column
-
-</div>
-
-Click on a pencil icon in <span class="notranslate">_Actions_</span> column to edit limits for a particular user. The following actions are available:
-
-* Click <span class="notranslate">Reset</span> to reset limits to default values.
-* Click <span class="notranslate">Apply</span> for <span class="notranslate">Do not limit</span> to set unlimited resources to a user.
-* Set values for <span class="notranslate"> PEED, PMEM, IO, IOPS, EP</span>, and NPROC and click <span class="notranslate">_Save_</span> to save changes or <span class="notranslate">_Cancel_</span> to close the window.
-
-![](./images/userstabpopup_zoom70.png)
-
-<div class="notranslate">
-
-#### Statistics tab
-
-</div>
-
-Choose <span class="notranslate">_Statistics_</span> tab to view resource usage limits statistics.
-
-<span class="notranslate">_Statistics_</span> table can be filtered by <span class="notranslate">_Timeframe_, _Limit_, _Top LVEs_, _LVE approaching limit_, _Fault LVE_</span>.
-
-The following parameters are displayed:
-
-* <span class="notranslate"> SPEED</span> per user;
-* <span class="notranslate"> PMEM</span> usage per user;
-* <span class="notranslate"> IO</span> usage per user;
-* <span class="notranslate"> EP</span> usage per user;
-* <span class="notranslate"> NPROC</span> usage per user;
-* <span class="notranslate"> IOPS</span> usage per user.
-
-![](./images/statisticstabreseller_zoom70.png)
-
-
-Use <span class="notranslate">_Charts_</span> in the <span class="notranslate">_View_</span> column to view detailed resource usage charts for a particular period of time.
-
-For example, 7 days period chart.
-
-![](./images/sevendayschartresellers_zoom70.png)
-
-<div class="notranslate">
-
-
-#### Options tab
-
-</div>
-
-Choose <span class="notranslate">_Options_</span> tab to set user email notifications for resellers’ end users.
-
-In <span class="notranslate">_LVE Faults email notifications_</span> section tick appropriate checkboxes to set the required type of notification.
-
-Starting from CloudLinux Manager v.7.3.0-1 and LVE-Stats v.4.1.4-1 users can disable in their Resource Usage plugin email notifications about hitting LVE limits by themselves.
-
-To allow users to do so, the reseller should enable the _Notify Customers_ and _Notify Reseller’s Customers_ options.
-
-Unfortunately, it is not possible to disable LVE Faults Email Notifications for all users by default so that users can enable the feature themselves in their interface.
-
-But it is possible to enable LVE Faults Email Notifications for all users by default, so that users can disable the feature themselves in their interface.
-
-
-![](./images/optionsresellernotify_zoom70.png)
-
-* <span class="notranslate">_Notify me on users faults_</span> - notify reseller when his users have exceeded limits.
-* <span class="notranslate">_Notify Customers_</span> - notify resellers’ end users when they have exceeded limits.
-* <span class="notranslate">_Notify me when I hit my limits_</span> - notify reseller when overall resource usage limits are reached.
-
-In <span class="notranslate">_Faults to include_</span> section tick checkboxes to include particular limits to email notifications.
-
-![](./images/options02_zoom70.png)
-
-In <span class="notranslate">_Minimum number of Faults to notify_</span> section enter the number of faults required for the notification to be sent for reseller and customer. You can also set the reseller notification frequency.
-
-Set the frequency of sending the reseller email notifications in <span class="notranslate">_Notify Reseller Every ... days/hours/minutes/seconds_</span> section.
-
-![](./images/options03_zoom70.png)
-
-Click <span class="notranslate">_Save Changes_</span> to apply changes.
-
-<div class="notranslate">
-
-#### Packages tab
-
-</div>
-
-Choose <span class="notranslate">_Packages_</span> tab to view and modify limits for reseller’s packages.
-
-![](./images/packagesreseller_zoom70.png)
-
-Click pencil icon in a package row to set the following limits for a package:
-
-* <span class="notranslate">SPEED</span> limit;
-* <span class="notranslate">Physical memory (PMEM)</span> (can be set as unlimited by setting 0);
-* <span class="notranslate">I/O</span> limits;
-* <span class="notranslate">IOPS</span> limits;
-* <span class="notranslate">Concurrent connections (EP)</span> limits.
-
-When limits are set click <span class="notranslate">_Save_</span> to apply changes.
-
-
-
-
-### LVE plugins branding
-
-:::tip Note
-Requires <span class="notranslate">CloudLinux Manager</span> 2.0-33+
-:::
-
-It is possible to apply branding to the LVE Plugins in cPanel end users’ interface. To brand the cPanel end users'  interface please do the following:
-
-* Create a script that will patch <span class="notranslate">CloudLinux Manager</span> files (with branding data, for example, image and logo) after every update of <span class="notranslate">`lvemanager rpm`</span> package;
-
-* Locate this script in <span class="notranslate">`/usr/share/l.v.e-manager/branding_script`</span>;
-
-* Make this script executable by running the command:
-
-<div class="notranslate">
-
-```
-chmod a+x /usr/share/l.v.e-manager/branding_script
-```
-</div>
-
-When done, the branding script will be executed while every update of <span class="notranslate">lvemanager</span> package and all branding changes will be applied in the end user’s interface.
-
-:::tip Note
-Modifying the <span class="notranslate">CloudLinux Manager WHM</span> plugin (<span class="notranslate">`/usr/local/cpanel/whostmgr/docroot/cgi/CloudLinux.cgi`</span>) via <span class="notranslate">`branding_script`</span> is not allowed.
-:::
-
-
-### User message for PHP version
-
-Since version 1.0-4 <span class="notranslate">CloudLinux Manager</span> acquired a feature of adding user messages to PHP versions*. To add a message, you should create a file in <span class="notranslate">`/opt/alt/phpXX/name_modifier`</span> with a message that you want to be shown to a user.
-
-For example, if you need to add the following message <span class="notranslate">`Don't use this PHP version`</span> to PHP version 4.4, you should create the following file:
-
-<div class="notranslate">
-
-```
-/opt/alt/php44/name_modifier:
-
-echo 'Don`t use this php version' > /opt/alt/php44/name_modifier
-```
-</div>
-
-As a result, <span class="notranslate">CloudLinux Manager</span> will automatically pick up this message and will show it in web-interface to administrator (see Figure 1.1 for cPanel, Figure 1.2 for DirectAdmin) and to user (see Figure 2.1 for cPanel, Figure 2.2 for DirectAdmin). You can add messages to other PHP versions this way as well.
-
-| |
-|:---:|
-|![](./images/PHP_version_message_cPanel_admin.png)|
-| Figure 1.1 cPanel CloudLinux Manager (administrator)| 
-
-
-| |
-|:---:|
-|![](./images/PHP_version_message_DirectAdmin_admin.png)|
-| Figure 1.2 DirectAdmin CloudLinux Manager (administrator)| 
-
-
-| |
-|:---:|
-|![](./images/PHP_version_message_cPanel_user.png)|
-| Figure 2.1 cPanel CloudLinux Manager (user)|
-
-
-| |
-|:---:|
-|![](./images/PHP_version_message_DirectAdmin_user.png)|
-| Figure 2.2 DirectAdmin CloudLinux Manager (user)| 
-
-:::tip Note
-*For cPanel and DirectAdmin only.
-:::
-
-## Client plugins
-
-* [Resource Usage client plugin](./#resource-usage-client-plugin)
-* [Dashboard](./#dashboard-2)
-* [Current Usage](./#current-usage-3)
-  * [Current Usage table](./#current-usage-table)
-  * [Filters](./#filters)
-  * [Charts](./#charts)
-  * [Usage](./#usage)
-* [Snapshot](./#snapshot)
-  * [Server processes snapshots](./#server-processes-snapshots)
-  * [Process list](./#process-list)
-  * [Database queries (cPanel only)](./#database-queries-cpanel-only)
-  * [HTTP queries](./#http-queries)
-* [Python Selector client plugin](./#python-selector-client-plugin)
-  * [How to manage an application](./#how-to-manage-an-application)
-  * [Create application](./#create-application)
-  * [Start application](./#start-application)
-  * [Stop application](./#stop-application)
-  * [Restart application](./#restart-application)
-  * [Remove application](./#remove-application)
-  * [Edit application](./#edit-application)
-  * [Migrate application](./#migrate-application)
-* [Node.js Selector client plugin](./#node-js-selector-client-plugin)
-  * [How to manage application](./#how-to-manage-application)
-  * [Start application](./#start-application-2)
-  * [Stop application](./#stop-application-2)
-  * [Restart application](./#restart-application-2)
-  * [Remove application](./#remove-application-2)
-  * [Edit application](./#edit-application-2)
-* [Ruby Selector client plugin](./#ruby-selector-client-plugin)
-* [PHP Selector client plugin](./#php-selector-client-plugin)
-  * [PHP Selector. My Domains tab (cPanel)](./#php-selector-my-domains-tab) <sup>CloudLinux Manager 6.0.1-2</sup>
-* [CloudLinux Manager options](./#cloudlinux-manager-options)
-  * [Changing settings manually](./#changing-settings-manually)
-  * [Changing settings in the config file](./#changing-settings-in-the-config-file)
-
-### Resource Usage client plugin
-
-Client resource usage plugin for cPanel, Plesk, and DirectAdmin allows host’s end users to view and monitor resource usage.
-
-
-Go to your control panel and click _CPU and concurrent connection usage_.
-
-![](./images/client_resource_usage.png)
-
-Here you can see three tabs:
-
-* **<span class="notranslate">Dashboard</span>**: displays the general condition of your site. If your site is limited, this displays on the Dashboard.
-* **<span class="notranslate">Current usage</span>**: here you can find full information on the resource usage displayed in charts and tables.
-* **<span class="notranslate">Snapshot</span>**: server snapshots with processes list and database and HTTP queries.
-
-![](./images/RU-dashboard.png)
-
-#### Dashboard
-
-Go to the <span class="notranslate">_Dashboard_</span> tab to see the general condition of your site.
-If your site is limited, you can see this on the <span class="notranslate">_Dashboard_</span> with the resource you are limited over.
-To see detailed information about resource usage, click <span class="notranslate">_Details_</span>.
-
-If your site is not limited, you will see the plain <span class="notranslate">Dashboard</span>.
-
-![](./images/RU-no-issues.png)
-
-#### Current Usage
-
-Go to the <span class="notranslate">_Current Usage_</span> tab to see the detailed information about resource usage on your server.
-
-![](./images/RU-current-usage.png)
-
-:::tip Note
-It's possible to add the <span class="notranslate">`normalized_user_cpu = N`</span> value to the <span class="notranslate">`/etc/sysconfig/cloudlinux`</span> file. So you can see for example CPU Usage X/200 (%) in the scenario where a user's LVE CPU limit is 200%. If the value is equal to `Y`, CPU Usage cannot get greater than 100%.
-:::
-
-
-#### Current Usage table
-
-The <span class="notranslate">_Current Usage_</span> table displays resource usage.
-
-:::warning Warning
-**<span class="notranslate">Inodes</span>** usage is displayed if it is enabled and **<span class="notranslate">Inodes</span>** limits are set for the user. cPanel only.
-:::
-
-![](./images/RU-current-usage-table.png)
-
-* **<span class="notranslate">Description</span>**: resource name
-* **<span class="notranslate">Usage</span>**: resource usage value
-* **<span class="notranslate">Limit</span>**: resource usage limit
-* **<span class="notranslate">Fault</span>**: number of faults
-
-#### Filters
-
-You can filter charts and the Usage table by timeframe and time unit (day, hour, minute).
-
-#### Charts
-
-The following resources are displayed in charts:
-
-* <span class="notranslate">CPU</span>
-* <span class="notranslate">Virtual Memory</span>
-* <span class="notranslate">Physical Memory</span>
-* <span class="notranslate">Input/Output</span>
-* <span class="notranslate">Io operations</span>
-* <span class="notranslate">Entry Processes</span>
-* <span class="notranslate">Processes</span>
-  
-All charts have the color legend:
-
-* Green — average resource usage
-* Red — limit set for this parameter
-* Blue — database
-* Green-cyan — faults (limit violations)
-  
-You can also see the Faults chart with all faults for all resources.
-
-![](./images/RU-faults-chart.png)
-
-#### Usage
-
-The <span class="notranslate">_Usage_</span> table displays information on each resource usage sorted by timeframe and time unit.
-
-![](./images/RU-usage-table.png)
-
-* **<span class="notranslate">From-To</span>**: period
-* **<span class="notranslate">A</span>**: average
-* **<span class="notranslate">L</span>**: limit
-* **<span class="notranslate">F</span>**: faults
-
-Use controls below the table to navigate through it.
-
-#### Snapshot
-
-Go to the <span class="notranslate">_Snapshot_</span> tab to see server snapshots with processes list and database and HTTP queries.
-
-![](./images/RU-snapshots.png)
-
-You can choose a date and a snapshot to display in the table.
-
-#### Server processes snapshots
-
-In case when a CloudLinux OS Shared user hits LVE limits, appropriate faults are generated and [lvestats](/shared/deprecated/#lve-stats-0-x) package generates server processes snapshot. Snapshot is a list of running applications and a list of running MySQL queries right after the faults happened.
-
-Snapshots allow users to investigate the reason of account hitting its limits. Several snapshots are generated for each incident. An incident is a state when faults are generated in a close time period. The time period is configurable. By default, if faults are generated in 300 seconds time period, we consider them as a single incident.
-
-The snapshot configuration options are available in
-
-<div class="notranslate">
-
-```
-/etc/sysconfig/lvestats.config/SnapshotSaver.cfg
-```
-</div>
-
-* <span class="notranslate">`period_between_incidents = 300`</span> by default, time in seconds
-* <span class="notranslate">`snapshots_per_minute = 2`</span> by default, maximum number of snapshots per minute
-* <span class="notranslate">`max_snapshots_per_incident = 10`</span> by default, maximum number of snapshots for an incident
-
-To access <span class="notranslate">**Snapshots**</span> you can also use [lve-read-snapshot](/shared/command-line_tools/#lve-read-snapshot) utility.
-
-:::tip Note
-The list of processes in a snapshot is close but not similar to the real processes list when faults were generated. It happens because of delay when the faults are happened and the snapshot is taken by the system.
-:::
-
-The list of MySQL queries is an output of a query:
-
-<div class="notranslate">
-
-```
-SELECT command, time, info FROM information_schema.processlist
-
-WHERE user = '%username';
-```
-</div>
-
-#### Process list
-
-Displays information on processes in the selected snapshot.
-
-* **<span class="notranslate">PID</span>**: process ID
-* **<span class="notranslate">CMD</span>**: what command was run
-* **<span class="notranslate">CPU</span>**: CPU usage
-* **<span class="notranslate">MEM</span>**: memory usage
-  
-#### Database queries (cPanel only)
-
-Displays information on database queries in the selected snapshot.
-
-![](./images/RU-db-queries.png)
-
-#### HTTP queries
-
-Displays information on HTTP queries in the selected snapshot.
-
-![](./images/RU-HTTP-queries.png)
-
-
-#### Turning On / Off email notifications per user
-
-:::warning The following packages are required:
-* lvemanager-7.3.0-1
-* lve-stats-4.1.4-1
-:::
-
-A user can disable LVE-Stats notifications about hitting LVE limits by himself.
-
-The feature is available via **Resource Usage client plugin** | **Options** | **LVE Stats Email Notifications**
-
-![](./images/TurningOnOffNotifications.png)
-
-### Python Selector client plugin
-
-:::tip Note
-Python Selector icon in end user interface is hidden when Python is disabled
-:::
-
-![](./images/PythonEndUserIcon.png)
-
-End User interface allows end users to setup and manage Python for their web applications.
-
-Go to <span class="notranslate">cPanel → Software Section → Setup Python App</span>.
- 
-Web Applications page is displayed.
-
-![](./images/PythonEUWebApp.png)
-
-There are several columns in the list:
-
-* <span class="notranslate">App URI</span> — application URI including the domain.
-* <span class="notranslate">App Root Directory</span> — application root directory relative to user's home.
-* <span class="notranslate">Status — started/stopped</span> — displays if an application is running or not and version of the application.
-* <span class="notranslate">Actions</span> — allows to migrate, start, restart, stop, edit, and remove a particular application.
-
-#### How to manage an application
-
-#### Create application
-
-1. Click <span class="notranslate">_Create Application_</span> to create an application. The Create Application tab opens.
-
-    ![](./images/PythonCreateApp1.png)
-
-2. Specify the following:
-    * <span class="notranslate">Python version</span> — select from the dropdown (required);
-    * <span class="notranslate">Application root</span> — physical address to your application on a server that corresponds with its URI (required);
-    * <span class="notranslate">Application URL</span> —  HTTP/HTTPS link to your application (optional);
-    * <span class="notranslate">Application startup file</span> — the file where WSGI callable object is located. It is required for application to run. Default is <span class="notranslate">`passenger_wsgi.py`</span>;
-    * Application Entry point — WSGI callable object for your application (optional). Default is <span class="notranslate">`application`</span>;
-    * <span class="notranslate">Passenger log file</span> — starting from CloudLinux Manager 5.1.0-2 you can set paths to Passenger logs for Python applications via UI (or using [cloudlinux-selector utility](/command-line_tools/#new-python-selector)).
-3. Optionally, add environment variable. To do so, click <span class="notranslate">_Add Variable_</span> and specify variable name and value, then click the <span class="notranslate">_Done_</span> or <span class="notranslate">_Cancel_</span> to close an adding form.
-
-To delete or edit environment variable, click <span class="notranslate">_Bin_</span> or <span class="notranslate">_Pencil_</span> for the required variable.
-
-![](./images/PythonEnvVar.png)
-
-#### Start application
- 
-To start a stopped application do the following:
-
-* Click <span class="notranslate">_Start_</span> in the <span class="notranslate">_Actions_</span> column in a stopped application row.
-* When an action is completed a <span class="notranslate">_Start_</span> changes to <span class="notranslate">_Stop_</span>.
- 
-#### Stop application
- 
-To stop a started application do the following:
-
-* Click <span class="notranslate">_Stop_</span> icon in the <span class="notranslate">_Actions_</span> column in a started application row.
-* When an action is completed a <span class="notranslate">_Stop_</span> changes to <span class="notranslate">_Start_</span>.
-
-![](./images/PythonStartStopApp.png)
-
-#### Restart application
- 
-To restart a started application do the following:
-
-* Click <span class="notranslate">_Restart_</span> in the <span class="notranslate">_Actions_</span> column in a started application row. A current row is blocked and when a process is completed it will be unblocked.
- 
-#### Remove application
- 
-To remove application do the following:
-
-* Click <span class="notranslate">_Bin_</span> in the <span class="notranslate">_Actions_</span> column in a particular application row.
-* In the confirmation popup click <span class="notranslate">_Agree_</span> to start removing or <span class="notranslate">_Cancel_</span> to close the popup.
-* When an action is completed an application will be removed from the <span class="notranslate">_Web Applications_</span> table and a confirmation popup will be displayed.
-
-![](./images/PythonRestartRemove.png)
-
-#### Edit application
- 
-To edit application do the following:
-
-* Click the <span class="notranslate">_Pencil_</span> in the <span class="notranslate">_Actions_</span> column in a particular application row. A particular application tab opens.
-
-![](./images/PythonSelectorEditApp.png)
-
-The following actions are available:
-
-* Restart application — click <span class="notranslate">_Restart_</span>.
-* Stop application — click <span class="notranslate">_Stop App_</span>.
-* Remove application — click <span class="notranslate">_Destroy_</span> and confirm the action in a popup.
-* Change Python version — choose Python version from a dropdown.
-* Change Application root — specify in a field a physical address to the application on a server that corresponds with its URI.
-* Change Application URL — specify in a field an HTTP/HTTPS link to the application.
-* Open Application URL — click the <span class="notranslate">_Open_</span>.
-* Change Application startup file — specify as <span class="notranslate">`NAME.py`</span> file.
-* Change Application Entry point — specify WSGI callable object for your application.
-* Passenger log file — starting from CloudLinux Manager 5.1.0-2 you can set paths to Passenger logs for Python applications via UI (or using [cloudlinux-selector](/shared/command-line_tools/#new-python-selector) utility).
-* Run pip install command — click <span class="notranslate">_Run pip install_</span> to install the package(s) described in the configuration file.
-* Add Configuration files — click <span class="notranslate">_Add_</span> and specify all required information.
-* Edit available configuration file — click <span class="notranslate">_Edit_</span>, the file opens in a new popup.
-* Remove available configuration file from the list — click <span class="notranslate">_Remove_</span> and confirm the action or click <span class="notranslate">_Cancel_</span> to close the popup.
-* Add Environment variables — click <span class="notranslate">_Add Variable_</span> and specify a name and a value.
-  
-Click <span class="notranslate">_Save_</span> to save all changes or <span class="notranslate">_Cancel_</span> to close the tab.
-
-#### Migrate application
-
-For details see [How to migrate an application to the new Python Selector](/shared/cloudlinux_os_components/#how-to-migrate-an-application-to-the-new-python-selector)
-
-
-:::tip Note
-You can also use [Python Selector CLI](/shared/command-line_tools/#end-user)
-:::
-
-### Node.js Selector client plugin
-
-:::tip Note
-<span class="notranslate">Node.js Selector</span> icon in end user interface is hidden when Node.js is disabled.
-:::
-
-![](./images/Node.jsClientPlugin.png)
-
-End User interface allows end users to setup and manage Node.js for their web applications.  
-Go to <span class="notranslate">_cPanel → Software Section → Setup Node.js App_</span>.
-
-<span class="notranslate">_Web Applications_</span> page is displayed.
-
-![](./images/nodejsusermain_zoom70.png)
-
-There are several columns in the list.
-* <span class="notranslate"> App URI </span> — application URI including the domain.
-* <span class="notranslate"> App Root Directory </span> — application root directory relative to user's home.
-* <span class="notranslate"> Mode </span> — can be production or development.
-* <span class="notranslate"> Status </span> — started/stopped — displays if an application is running or not and version of application.
-* <span class="notranslate"> Actions </span> — allows to start, restart, stop, edit, and remove a particular application.
-
-#### How to manage application
-
-#### Start application
-
-To start a stopped application do the following:
-* Click <span class="notranslate"> _Start_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a stopped application row.
-* When an action is completed a <span class="notranslate"> _Start_ </span> icon changes to <span class="notranslate"> _Stop_ </span> icon.
-
-#### Stop application
-
-To stop a started application do the following:
-* Click <span class="notranslate"> _Stop_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a started application row.
-* When an action is completed a <span class="notranslate"> _Stop_ </span> icon changes to <span class="notranslate"> _Start_ </span> icon.
-
-![](./images/nodejsuseruistartstop_zoom70.png)
-
-#### Restart application
-
-To restart started application do the following:
-* Click <span class="notranslate"> _Restart_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a started application row. A current row is blocked and when a process is completed it will be unblocked.
-
-#### Remove application
-
-To remove application do the following:
-* Click <span class="notranslate"> _Bin_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a particular application row.
-* In the confirmation pop-up click <span class="notranslate"> _Agree_ </span> to start removing or <span class="notranslate"> _Cancel_ </span> to close pop-up.
-* When an action is completed an application will be removed from the <span class="notranslate"> _Web Applications_ </span> table and a confirmation pop-up will be displayed.
-
-![](./images/nodejsuseruirestartremove_zoom70.png)
-
-#### Edit application
-
-To edit application do the following:
-* Click <span class="notranslate"> _Pencil_ </span> icon in the <span class="notranslate"> _Actions_ </span> column in a particular application row. A particular application tab opens.
-
-![](./images/Node.js-Selector-edit-app.png)
-
-The following actions are available:
-* Restart application — click <span class="notranslate"> _Restart_ </span> button.
-* Stop Node.js — click <span class="notranslate"> _Stop Node.js_ </span> button.
-* Run JavaScript script — click <span class="notranslate"> _Run JS Script_ </span> button to run a command specified in the <span class="notranslate"> Scripts </span> section of the <span class="notranslate"> package.json </span> file. Specify the name of the script to run plus any parameters then click <span class="notranslate"> Ok </span> .
-* Remove application — click <span class="notranslate"> _Delete_ </span> button and confirm the action in a pop-up.
-* Change Node.js version — choose Node.js version from a drop-down.
-* Change Application mode — choose application mode from a drop-down. Available modes are <span class="notranslate"> _Production_ </span> and <span class="notranslate"> _Development_ </span> .
-* Application root — specify in a field a physical address to the application on a server that corresponds with its URI.
-* Application URL — specify in a field an HTTP/HTTPS link to the application.
-* Application startup file — specify as <span class="notranslate"> NAME.js file </span>.
-* Passenger log file — starting from CloudLinux Manager 5.1.0-2 you can set paths to Passenger logs for Node.js applications via UI (or using [cloudlinux-selector](/shared/command-line_tools/#node-js-selector) utility).
-* Run <span class="notranslate"> npm install command </span> — click <span class="notranslate"> _Run npm install_ </span> button to install the package(s) described in the <span class="notranslate"> package.json </span> file.
-* Add Environment variables — click <span class="notranslate"> _Add Variable_ </span> and specify a name and a value.
-
-:::tip Note
-You can also use [Node.js Selector CLI](/shared/command-line_tools/#end-user-2)
-:::
-
-### Ruby Selector client plugin
-
-End user interface allows end users to setup and manage Ruby for their web applications.
-
-Go to <span class="notranslate">_cPanel → Software Section → Setup Ruby App_</span>.
-
-![](./images/RubyClientPluginStart.png)
-
-Setup Ruby application page is displayed.
-
-![](./images/RubyClientPlugin1.png)
-
-Here you can do the following:
-
-* Setup a new application.
-* View/edit/restart/remove the existing application.
-
-### PHP Selector client plugin
-
-End user interface allows end users to select and manage PHP extensions and options for the particular PHP version.
-
-Go to <span class="notranslate">_cPanel → Software Section → Select PHP Version_</span>.
-
-![](./images/PHPSelectorClientPlugin.png)
-
-PHP Extensions page opens.
-
-![](./images/php_selector_customer.png)
-
-Here you can choose extensions for the particular PHP version, the current PHP version and reset to default.
-
-To manage PHP options, click <span class="notranslate">_Switch to PHP options_</span>.
-
-![](./images/php_selector_options.png)
-
-All changes are saved automatically.
-
-* <span class="notranslate">`allow_url_fopen`</span>. Allows PHP file functions to retrieve data from remote locations over FTP or HTTP. This option is a great security risk, thus do not turn it on without necessity.
-* <span class="notranslate">`display_errors`</span>. Determines whether errors should be printed to the screen as part of the output or if they should not be shown to a user.
-* <span class="notranslate">`error_reporting`</span>. The error reporting level.
-* <span class="notranslate">`file_uploads`</span>. Allows uploading files over HTTP.
-* <span class="notranslate">`include_path`</span>. The list of directories where scripts look for files (similar to system's PATH variable). To separate directories, use a colon (`:`) For example: <span class="notranslate">`.:/dir/inc:/usr/lib/php`</span>
-* <span class="notranslate">`log_errors`</span>. Tells whether to log errors. By default, errors are logged in the server's error log. Use the error_log directive to specify the path to your own log file.
-* <span class="notranslate">`mail.force_extra_parameters`</span>. Additional parameters for the mail() function used to send mail. For example, to use your custom Sendmail configuration: <span class="notranslate">`-C /dir/conf.cf`</span>
-* <span class="notranslate">`max_execution_time`</span>. The maximum time in seconds a script is allowed to run before it is terminated.
-* <span class="notranslate">`max_input_time`</span>. The maximum time in seconds a script is allowed to parse input data.
-* <span class="notranslate">`memory_limit`</span>. The maximum amount of memory in bytes a script is allowed to allocate. Set the value to -1 to have no memory limit (not recommended). Use shortcuts for byte values: K (kilo), M (mega), and G (giga). For example, 128M.
-* <span class="notranslate">`open_basedir`</span>. The list of directories used to limit the files that can be opened by PHP. If the file is outside the specified directories, PHP scripts will refuse to open it. To separate directories, use a colon. For example: <span class="notranslate">`/dir/upload:/usr/tmp`</span>.
-* <span class="notranslate">`post_max_size`</span>. The maximum size in bytes of data that can be posted with the POST method. Typically, should be larger than <span class="notranslate">`upload_max_filesize`</span> and smaller than <span class="notranslate">`memory_limit`</span>. Use shortcuts for byte values: K (kilo), M (mega), and G (giga). For example, 16M.
-* <span class="notranslate">`session.save_path`</span>. The directory where PHP writes session data (files). For example: <span class="notranslate">`/dir/tmp`</span>
-* <span class="notranslate">`short_open_tag`</span>. Allows the short form of the PHP open tag.
-* <span class="notranslate">`upload_max_filesize`</span>. The maximum size in bytes of an uploaded file. Use shortcuts for byte values: K (kilo), M (mega), and G (giga). For example, 128M.
-
-#### PHP Selector. My Domains tab <Badge text="cPanel" /> <Badge text="CloudLinux Manager 6.0.1-2" />
-
-The <span class="notranslate">_My Domains_</span> tab contains a list of user’s domains to visualize which PHP Selector is used by domain.
-
-![](./images/MyDomainsTab.png)
-
-A user can configure a domain to use CloudLinux OS Shared <span class="notranslate">PHP Selector</span>.
-
-1. Click <span class="notranslate">_Use PHP Selector_</span>
-  
-![](./images/UsePHPSelector1.png)
-
-2. Set a version in <span class="notranslate">PHP Selector</span>
-
-![](./images/SetVersion.png)
-
-:::tip Note
-If `php-fpm` is enabled for a domain the only administrator can set it to <span class="notranslate">_disable_</span>.
-:::
-
-
-### CloudLinux Manager options
-
-You can change CloudLinux Manager settings for a server manually via cPanel/WHM or, if you have many servers, you can change CloudLinux Manager settings for them in the config file.
-
-####  Changing settings manually
-
-* Log in to cPanel, go to WHM, choose CloudLinux OS Shared and click <span class="notranslate">_Options_</span>.
-* Change settings.
-
-#### Changing settings in the config file
-
-You can modify the following options in the config file <span class="notranslate">`/var/cpanel/cpanel.config`</span> directly for example via Puppet.
-
-| | |
-|-|-|
-|<span class="notranslate">`lve_hideextensions`</span>| Hides (when =1) range of php extensions for user in <span class="notranslate"> Select PHP </span> version|
-|<span class="notranslate">`lve_hideuserstat  `</span>| Hides (when =1) LVE statistics in <span class="notranslate">cPanel Stats Bar (UI)</span>|
-|<span class="notranslate">`lve_showinodeusage`</span>| Displays (when =1) used inodes in cPanel (UI)|
-|<span class="notranslate">`lve_hide_selector`</span>| Turns off <span class="notranslate">UI PHP Selector</span> (Select <span class="notranslate">PHP Version</span> option)|
-|<span class="notranslate">`lve_enablerubyapp`</span>|Displays (when =1) Ruby Selector in user’s interface (UI)|
-
-
-:::warning Note
-It is not allowed to change <span class="notranslate">`lve_enablepythonapp`</span> option in the config file directly.
-:::
-
-You can use <span class="notranslate">`cloudlinux-selector`</span> utility to change <span class="notranslate">`lve_enablepythonapp`</span> option:
-
-<div class="notranslate">
-
-```
-cloudlinux-selector set --json --interpreter=python --selector-status=enabled
-```
-</div>
-
-Or you can change it via <span class="notranslate">WHM -> CloudLinux Manager -> Options -> Python Selector -> Python</span>
-
-After modifying the config files directly, you should execute the following command to apply changes:
-
-<div class="notranslate">
-
-```
-/usr/share/l.v.e-manager/utils/dynamicui.py --sync-conf=all
-```
-</div>
-
-
-## cPanel LVE Extension
-
-* [Add Package Extension](./#add-package-extension)
-* [Edit Package Extensions](./#edit-package-extensions)
-
-:::tip Note
-<span class="notranslate">CloudLinux Manager</span> 1.0-9.8+
-:::
-
-<span class="notranslate"> cPanel LVE Extension </span> allows to control LVE limits for packages via cPanel hosting packages control interface and via <span class="notranslate"> cPanel WHM API </span> . It simplifies integration with existing billing systems for cPanel (like WHMCS for example).
-
-#### Add Package Extension
-
-To add LVE Settings to standard cPanel package, go to <span class="notranslate">_Packages_</span> | <span class="notranslate">_Add a Package_</span>.
-
-:::tip Note
-You can find the information on how to add a package in official cPanel documentation on the link: [https://documentation.cpanel.net/display/ALD/Add+a+Package](https://documentation.cpanel.net/display/ALD/Add+a+Package)
-:::
-
-![](./images/lve-extension_01.jpg)
-
-
-Tick <span class="notranslate">_LVE Settings_</span> in the bottom of the page to open <span class="notranslate">_LVE Settings_</span> form.
-
-![](./images/lve-extension_02.jpg)
-
-You can specify the following options:
-
-:::tip Note
-Your changes to <span class="notranslate">_LVE Settings_</span> will appear in the system after a little while.
-:::
-
-| | |
-|-|-|
-|<span class="notranslate">Speed Settings</span> | Maximum CPU usage for an account. Must be in the range 1 - 100 (but obligatory > 0 ) if old format is used; use `%` or <span class="notranslate">`Mhz\Ghz`</span> to set <span class="notranslate">`CPU`</span> limit as speed; Type <span class="notranslate">`DEFAULT`</span> to use default value.|
-|<span class="notranslate"> Memory Settings </span> |`Pmem` - Maximum physical memory usage for an account. `Vmem` - Maximum virtual memory usage for an account. Must be a positive number. Postfix allowed only in `KGMT`. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` for unlimited resource.|
-|<span class="notranslate"> Max entry proc Settings </span> | Maximum number of entry processes (concurrent connections) for an account. Must be a positive number. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` for unlimited resource.|
-|<span class="notranslate"> Nproc Settings </span> | Maximum number of processes usage for an account. Must be a positive number. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` for unlimited resource.|
-|<span class="notranslate"> IO Settings </span> | Maximum <span class="notranslate">I/O (input/output)</span> usage speed for an account. Is measured in <span class="notranslate">`Kb/s`</span>. Must be a positive number. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` for unlimited resource.|
-|<span class="notranslate"> IOPS Settings </span> | Maximum <span class="notranslate">`IOPS`</span> (input/output operations per second) usage for an account. Must be a positive number. Type <span class="notranslate">`DEFAULT`</span> to use default value. Type `0` to unlimited resource.|
-
-![](./images/lve-extension_03.jpg) 
-
-Click <span class="notranslate">_Add_</span> to apply your changes.
-
-#### Edit Package Extensions
-
-You can edit limits in any convenient for you way - in <span class="notranslate">_Edit a Package_</span> section, in the  <span class="notranslate">CloudLinux Manager </span> or even via WHM API.
-
-<span class="notranslate">**Edit a Package**</span>
-
-To edit package extensions, go to <span class="notranslate"> _Packages_</span> | <span class="notranslate">_Edit a Package_</span>. Choose a package from the <span class="notranslate">_Package_</span> list and click <span class="notranslate">_Edit_</span>.
-
-![](./images/lve-extension_04.jpg)
-
-<span class="notranslate">**CloudLinux Manager**</span>
-
-To edit package extensions, go to <span class="notranslate">CloudLinux Manager</span> | <span class="notranslate">Server Configuration</span> | <span class="notranslate"> CloudLinux OS Shared CloudLinux Manager</span> | <span class="notranslate"> Packages</span> and click pencil (edit) icon.
-
-![](./images/lve-extension_05.jpg)
-
-<span class="notranslate">**WHM API**</span>
-
-To learn how to work with package extensions limits using WHM API, please read the official cPanel documentation: [https://documentation.cpanel.net/display/SDK/Guide+to+Package+Extensions+-+Data+Behavior+and+Changes](https://documentation.cpanel.net/display/SDK/Guide+to+Package+Extensions+-+Data+Behavior+and+Changes)
-
-#### Control panel integration guide
-
-[Here](/shared/control_panel_integration/) you will find the instructions and common techniques used to integrate your software with CloudLinux OS Shared.
diff --git a/docs/shared/lve_manager/images/CageFSEnable.png b/docs/shared/lve_manager/images/CageFSEnable.png
deleted file mode 100644
index 43658f272..000000000
Binary files a/docs/shared/lve_manager/images/CageFSEnable.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/CageFSEnabledUsers.png b/docs/shared/lve_manager/images/CageFSEnabledUsers.png
deleted file mode 100644
index 68e508467..000000000
Binary files a/docs/shared/lve_manager/images/CageFSEnabledUsers.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/CageFSInit.png b/docs/shared/lve_manager/images/CageFSInit.png
deleted file mode 100644
index 904432cfe..000000000
Binary files a/docs/shared/lve_manager/images/CageFSInit.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Code200.png b/docs/shared/lve_manager/images/Code200.png
deleted file mode 100644
index 14e9e4ebf..000000000
Binary files a/docs/shared/lve_manager/images/Code200.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Domains.png b/docs/shared/lve_manager/images/Domains.png
deleted file mode 100644
index 97baf2573..000000000
Binary files a/docs/shared/lve_manager/images/Domains.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/EmailNotifications.png b/docs/shared/lve_manager/images/EmailNotifications.png
deleted file mode 100644
index 299d59bba..000000000
Binary files a/docs/shared/lve_manager/images/EmailNotifications.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Error1.png b/docs/shared/lve_manager/images/Error1.png
deleted file mode 100644
index 91f45a3fa..000000000
Binary files a/docs/shared/lve_manager/images/Error1.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Error2.png b/docs/shared/lve_manager/images/Error2.png
deleted file mode 100644
index 30487d2b2..000000000
Binary files a/docs/shared/lve_manager/images/Error2.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Error3.png b/docs/shared/lve_manager/images/Error3.png
deleted file mode 100644
index 6bbd3dd10..000000000
Binary files a/docs/shared/lve_manager/images/Error3.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/GroupDisableCageFS.png b/docs/shared/lve_manager/images/GroupDisableCageFS.png
deleted file mode 100644
index 3c7e0ad23..000000000
Binary files a/docs/shared/lve_manager/images/GroupDisableCageFS.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Issue1.png b/docs/shared/lve_manager/images/Issue1.png
deleted file mode 100644
index 4fe9fd7c8..000000000
Binary files a/docs/shared/lve_manager/images/Issue1.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Issue2.png b/docs/shared/lve_manager/images/Issue2.png
deleted file mode 100644
index 48049c01e..000000000
Binary files a/docs/shared/lve_manager/images/Issue2.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Issue3.png b/docs/shared/lve_manager/images/Issue3.png
deleted file mode 100644
index 605e3d9d2..000000000
Binary files a/docs/shared/lve_manager/images/Issue3.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Issue4.png b/docs/shared/lve_manager/images/Issue4.png
deleted file mode 100644
index 6547dc72c..000000000
Binary files a/docs/shared/lve_manager/images/Issue4.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/MyDomainsTab.png b/docs/shared/lve_manager/images/MyDomainsTab.png
deleted file mode 100644
index 5b77d3d4a..000000000
Binary files a/docs/shared/lve_manager/images/MyDomainsTab.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/NewSelector.png b/docs/shared/lve_manager/images/NewSelector.png
deleted file mode 100644
index a4dffd609..000000000
Binary files a/docs/shared/lve_manager/images/NewSelector.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Node.js-Selector-edit-app.png b/docs/shared/lve_manager/images/Node.js-Selector-edit-app.png
deleted file mode 100644
index c579f0423..000000000
Binary files a/docs/shared/lve_manager/images/Node.js-Selector-edit-app.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/Node.jsClientPlugin.png b/docs/shared/lve_manager/images/Node.jsClientPlugin.png
deleted file mode 100644
index 3b5c84d79..000000000
Binary files a/docs/shared/lve_manager/images/Node.jsClientPlugin.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PHPSelectorClientPlugin.png b/docs/shared/lve_manager/images/PHPSelectorClientPlugin.png
deleted file mode 100644
index cf7127877..000000000
Binary files a/docs/shared/lve_manager/images/PHPSelectorClientPlugin.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PHPSelectorDashboardMalfunction.png b/docs/shared/lve_manager/images/PHPSelectorDashboardMalfunction.png
deleted file mode 100644
index fe758c849..000000000
Binary files a/docs/shared/lve_manager/images/PHPSelectorDashboardMalfunction.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PHP_version_message_DirectAdmin_admin.png b/docs/shared/lve_manager/images/PHP_version_message_DirectAdmin_admin.png
deleted file mode 100644
index dd446251d..000000000
Binary files a/docs/shared/lve_manager/images/PHP_version_message_DirectAdmin_admin.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PHP_version_message_DirectAdmin_user.png b/docs/shared/lve_manager/images/PHP_version_message_DirectAdmin_user.png
deleted file mode 100644
index 2ebdbd625..000000000
Binary files a/docs/shared/lve_manager/images/PHP_version_message_DirectAdmin_user.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PHP_version_message_cPanel_admin.png b/docs/shared/lve_manager/images/PHP_version_message_cPanel_admin.png
deleted file mode 100644
index bf9dcffdd..000000000
Binary files a/docs/shared/lve_manager/images/PHP_version_message_cPanel_admin.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PHP_version_message_cPanel_user.png b/docs/shared/lve_manager/images/PHP_version_message_cPanel_user.png
deleted file mode 100644
index e4845202d..000000000
Binary files a/docs/shared/lve_manager/images/PHP_version_message_cPanel_user.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonChangeDefaultVersion.png b/docs/shared/lve_manager/images/PythonChangeDefaultVersion.png
deleted file mode 100644
index 98c196d3b..000000000
Binary files a/docs/shared/lve_manager/images/PythonChangeDefaultVersion.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonCreateApp1.png b/docs/shared/lve_manager/images/PythonCreateApp1.png
deleted file mode 100644
index 10a4b6c96..000000000
Binary files a/docs/shared/lve_manager/images/PythonCreateApp1.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonDomains.png b/docs/shared/lve_manager/images/PythonDomains.png
deleted file mode 100644
index d879b8293..000000000
Binary files a/docs/shared/lve_manager/images/PythonDomains.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonEUWebApp.png b/docs/shared/lve_manager/images/PythonEUWebApp.png
deleted file mode 100644
index b7dcc1b7a..000000000
Binary files a/docs/shared/lve_manager/images/PythonEUWebApp.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonEnableDisable.png b/docs/shared/lve_manager/images/PythonEnableDisable.png
deleted file mode 100644
index 2af7efa76..000000000
Binary files a/docs/shared/lve_manager/images/PythonEnableDisable.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonEnabled.png b/docs/shared/lve_manager/images/PythonEnabled.png
deleted file mode 100644
index d5205f378..000000000
Binary files a/docs/shared/lve_manager/images/PythonEnabled.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonEndUserIcon (1).png b/docs/shared/lve_manager/images/PythonEndUserIcon (1).png
deleted file mode 100644
index 27a42ab23..000000000
Binary files a/docs/shared/lve_manager/images/PythonEndUserIcon (1).png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonEndUserIcon.png b/docs/shared/lve_manager/images/PythonEndUserIcon.png
deleted file mode 100644
index 27a42ab23..000000000
Binary files a/docs/shared/lve_manager/images/PythonEndUserIcon.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonEnvVar.png b/docs/shared/lve_manager/images/PythonEnvVar.png
deleted file mode 100644
index 67d3f35da..000000000
Binary files a/docs/shared/lve_manager/images/PythonEnvVar.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonGeneral.png b/docs/shared/lve_manager/images/PythonGeneral.png
deleted file mode 100644
index c89fa9ad3..000000000
Binary files a/docs/shared/lve_manager/images/PythonGeneral.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonInstall.png b/docs/shared/lve_manager/images/PythonInstall.png
deleted file mode 100644
index 150fc3ba3..000000000
Binary files a/docs/shared/lve_manager/images/PythonInstall.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonRestartRemove.png b/docs/shared/lve_manager/images/PythonRestartRemove.png
deleted file mode 100644
index d2f6832ad..000000000
Binary files a/docs/shared/lve_manager/images/PythonRestartRemove.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonSelectorEditApp.png b/docs/shared/lve_manager/images/PythonSelectorEditApp.png
deleted file mode 100644
index 49eee7471..000000000
Binary files a/docs/shared/lve_manager/images/PythonSelectorEditApp.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/PythonStartStopApp.png b/docs/shared/lve_manager/images/PythonStartStopApp.png
deleted file mode 100644
index 0d1aacba8..000000000
Binary files a/docs/shared/lve_manager/images/PythonStartStopApp.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-HTTP-queries.png b/docs/shared/lve_manager/images/RU-HTTP-queries.png
deleted file mode 100644
index 7b7e2d7de..000000000
Binary files a/docs/shared/lve_manager/images/RU-HTTP-queries.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-current-usage (1).png b/docs/shared/lve_manager/images/RU-current-usage (1).png
deleted file mode 100644
index b276829d7..000000000
Binary files a/docs/shared/lve_manager/images/RU-current-usage (1).png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-current-usage-table.png b/docs/shared/lve_manager/images/RU-current-usage-table.png
deleted file mode 100644
index 6cc58f237..000000000
Binary files a/docs/shared/lve_manager/images/RU-current-usage-table.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-current-usage.png b/docs/shared/lve_manager/images/RU-current-usage.png
deleted file mode 100644
index b276829d7..000000000
Binary files a/docs/shared/lve_manager/images/RU-current-usage.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-dashboard.png b/docs/shared/lve_manager/images/RU-dashboard.png
deleted file mode 100644
index 49b0d826b..000000000
Binary files a/docs/shared/lve_manager/images/RU-dashboard.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-db-queries.png b/docs/shared/lve_manager/images/RU-db-queries.png
deleted file mode 100644
index ced341034..000000000
Binary files a/docs/shared/lve_manager/images/RU-db-queries.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-faults-chart.png b/docs/shared/lve_manager/images/RU-faults-chart.png
deleted file mode 100644
index 508785199..000000000
Binary files a/docs/shared/lve_manager/images/RU-faults-chart.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-no-issues.png b/docs/shared/lve_manager/images/RU-no-issues.png
deleted file mode 100644
index be5e2bbf3..000000000
Binary files a/docs/shared/lve_manager/images/RU-no-issues.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-snapshots.png b/docs/shared/lve_manager/images/RU-snapshots.png
deleted file mode 100644
index b7e497104..000000000
Binary files a/docs/shared/lve_manager/images/RU-snapshots.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RU-usage-table.png b/docs/shared/lve_manager/images/RU-usage-table.png
deleted file mode 100644
index 5e5d5a541..000000000
Binary files a/docs/shared/lve_manager/images/RU-usage-table.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RubyClientPlugin1.png b/docs/shared/lve_manager/images/RubyClientPlugin1.png
deleted file mode 100644
index 6338dca77..000000000
Binary files a/docs/shared/lve_manager/images/RubyClientPlugin1.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RubyClientPluginStart.png b/docs/shared/lve_manager/images/RubyClientPluginStart.png
deleted file mode 100644
index 0d49523d4..000000000
Binary files a/docs/shared/lve_manager/images/RubyClientPluginStart.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/RunDiagnostic.png b/docs/shared/lve_manager/images/RunDiagnostic.png
deleted file mode 100644
index 28efccbfb..000000000
Binary files a/docs/shared/lve_manager/images/RunDiagnostic.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/SelectorFilters.png b/docs/shared/lve_manager/images/SelectorFilters.png
deleted file mode 100644
index c76da7cbb..000000000
Binary files a/docs/shared/lve_manager/images/SelectorFilters.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/SetVersion.png b/docs/shared/lve_manager/images/SetVersion.png
deleted file mode 100644
index f5a87676d..000000000
Binary files a/docs/shared/lve_manager/images/SetVersion.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/SlowSiteAnalyzerEmailNotifications.png b/docs/shared/lve_manager/images/SlowSiteAnalyzerEmailNotifications.png
deleted file mode 100644
index 31daac5a3..000000000
Binary files a/docs/shared/lve_manager/images/SlowSiteAnalyzerEmailNotifications.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/TopSlow.png b/docs/shared/lve_manager/images/TopSlow.png
deleted file mode 100644
index 7fd037327..000000000
Binary files a/docs/shared/lve_manager/images/TopSlow.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/TurningOnOffNotifications.png b/docs/shared/lve_manager/images/TurningOnOffNotifications.png
deleted file mode 100644
index da25bdf59..000000000
Binary files a/docs/shared/lve_manager/images/TurningOnOffNotifications.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/UsePHPSelector.png b/docs/shared/lve_manager/images/UsePHPSelector.png
deleted file mode 100644
index eb902c097..000000000
Binary files a/docs/shared/lve_manager/images/UsePHPSelector.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/UsePHPSelector1.png b/docs/shared/lve_manager/images/UsePHPSelector1.png
deleted file mode 100644
index 7dacd8028..000000000
Binary files a/docs/shared/lve_manager/images/UsePHPSelector1.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/WebsiteMonitoringMain.png b/docs/shared/lve_manager/images/WebsiteMonitoringMain.png
deleted file mode 100644
index 8e94945d8..000000000
Binary files a/docs/shared/lve_manager/images/WebsiteMonitoringMain.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/WebsiteMonitoringPHPSiteAnalyzer.png b/docs/shared/lve_manager/images/WebsiteMonitoringPHPSiteAnalyzer.png
deleted file mode 100644
index 27b733cba..000000000
Binary files a/docs/shared/lve_manager/images/WebsiteMonitoringPHPSiteAnalyzer.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/WebsiteMonitoringSlider.png b/docs/shared/lve_manager/images/WebsiteMonitoringSlider.png
deleted file mode 100644
index 865bbe95b..000000000
Binary files a/docs/shared/lve_manager/images/WebsiteMonitoringSlider.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/WebsiteMonitoringSlider1.png b/docs/shared/lve_manager/images/WebsiteMonitoringSlider1.png
deleted file mode 100644
index b86ee1b18..000000000
Binary files a/docs/shared/lve_manager/images/WebsiteMonitoringSlider1.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/actionshoster.png b/docs/shared/lve_manager/images/actionshoster.png
deleted file mode 100644
index fae6d6072..000000000
Binary files a/docs/shared/lve_manager/images/actionshoster.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/client_resource_usage.png b/docs/shared/lve_manager/images/client_resource_usage.png
deleted file mode 100644
index d8404d735..000000000
Binary files a/docs/shared/lve_manager/images/client_resource_usage.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/currentusagetabresellerr_zoom70.png b/docs/shared/lve_manager/images/currentusagetabresellerr_zoom70.png
deleted file mode 100644
index c8a73a9ae..000000000
Binary files a/docs/shared/lve_manager/images/currentusagetabresellerr_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/dashboard_zoom70.png b/docs/shared/lve_manager/images/dashboard_zoom70.png
deleted file mode 100644
index e27c17307..000000000
Binary files a/docs/shared/lve_manager/images/dashboard_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/faults-to-include.png b/docs/shared/lve_manager/images/faults-to-include.png
deleted file mode 100644
index 4aed2862f..000000000
Binary files a/docs/shared/lve_manager/images/faults-to-include.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/historicalusageresellertab_zoom70.png b/docs/shared/lve_manager/images/historicalusageresellertab_zoom70.png
deleted file mode 100644
index d00f68303..000000000
Binary files a/docs/shared/lve_manager/images/historicalusageresellertab_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/history_charts_zoom70.png b/docs/shared/lve_manager/images/history_charts_zoom70.png
deleted file mode 100644
index 83de38f6e..000000000
Binary files a/docs/shared/lve_manager/images/history_charts_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/historyhoster.jpg b/docs/shared/lve_manager/images/historyhoster.jpg
deleted file mode 100644
index 2a21f0c35..000000000
Binary files a/docs/shared/lve_manager/images/historyhoster.jpg and /dev/null differ
diff --git a/docs/shared/lve_manager/images/inode-limits.png b/docs/shared/lve_manager/images/inode-limits.png
deleted file mode 100644
index 824d8f1ad..000000000
Binary files a/docs/shared/lve_manager/images/inode-limits.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/installationwizardmain_zoom70.png b/docs/shared/lve_manager/images/installationwizardmain_zoom70.png
deleted file mode 100644
index 68b5026be..000000000
Binary files a/docs/shared/lve_manager/images/installationwizardmain_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/installationwizardstep1_zoom70.png b/docs/shared/lve_manager/images/installationwizardstep1_zoom70.png
deleted file mode 100644
index 92ca790bb..000000000
Binary files a/docs/shared/lve_manager/images/installationwizardstep1_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/lve-extension_01.jpg b/docs/shared/lve_manager/images/lve-extension_01.jpg
deleted file mode 100644
index 586069845..000000000
Binary files a/docs/shared/lve_manager/images/lve-extension_01.jpg and /dev/null differ
diff --git a/docs/shared/lve_manager/images/lve-extension_02.jpg b/docs/shared/lve_manager/images/lve-extension_02.jpg
deleted file mode 100644
index 29cfc6bf6..000000000
Binary files a/docs/shared/lve_manager/images/lve-extension_02.jpg and /dev/null differ
diff --git a/docs/shared/lve_manager/images/lve-extension_03.jpg b/docs/shared/lve_manager/images/lve-extension_03.jpg
deleted file mode 100644
index 908d2f30f..000000000
Binary files a/docs/shared/lve_manager/images/lve-extension_03.jpg and /dev/null differ
diff --git a/docs/shared/lve_manager/images/lve-extension_04.jpg b/docs/shared/lve_manager/images/lve-extension_04.jpg
deleted file mode 100644
index f2efee9d9..000000000
Binary files a/docs/shared/lve_manager/images/lve-extension_04.jpg and /dev/null differ
diff --git a/docs/shared/lve_manager/images/lve-extension_05.jpg b/docs/shared/lve_manager/images/lve-extension_05.jpg
deleted file mode 100644
index 28fd95733..000000000
Binary files a/docs/shared/lve_manager/images/lve-extension_05.jpg and /dev/null differ
diff --git a/docs/shared/lve_manager/images/lve-faults-email-notifications.png b/docs/shared/lve_manager/images/lve-faults-email-notifications.png
deleted file mode 100644
index d36bb6829..000000000
Binary files a/docs/shared/lve_manager/images/lve-faults-email-notifications.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/lvemanagermainmenu_zoom80.png b/docs/shared/lve_manager/images/lvemanagermainmenu_zoom80.png
deleted file mode 100644
index 3e843f598..000000000
Binary files a/docs/shared/lve_manager/images/lvemanagermainmenu_zoom80.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/man_01_zoom73 (1).png b/docs/shared/lve_manager/images/man_01_zoom73 (1).png
deleted file mode 100644
index a3e5e5925..000000000
Binary files a/docs/shared/lve_manager/images/man_01_zoom73 (1).png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/man_01_zoom73.png b/docs/shared/lve_manager/images/man_01_zoom73.png
deleted file mode 100644
index a3e5e5925..000000000
Binary files a/docs/shared/lve_manager/images/man_01_zoom73.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/minimum-number-of-faults-to-notify.png b/docs/shared/lve_manager/images/minimum-number-of-faults-to-notify.png
deleted file mode 100644
index 750de2e67..000000000
Binary files a/docs/shared/lve_manager/images/minimum-number-of-faults-to-notify.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/mysql-governor-settings.png b/docs/shared/lve_manager/images/mysql-governor-settings.png
deleted file mode 100644
index 72c126510..000000000
Binary files a/docs/shared/lve_manager/images/mysql-governor-settings.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/mysql_packages_limits.png b/docs/shared/lve_manager/images/mysql_packages_limits.png
deleted file mode 100644
index 8663ed925..000000000
Binary files a/docs/shared/lve_manager/images/mysql_packages_limits.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/mysql_packages_limits_edit.png b/docs/shared/lve_manager/images/mysql_packages_limits_edit.png
deleted file mode 100644
index f56772a44..000000000
Binary files a/docs/shared/lve_manager/images/mysql_packages_limits_edit.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsconfirmation_zoom70.png b/docs/shared/lve_manager/images/nodejsconfirmation_zoom70.png
deleted file mode 100644
index 65af43322..000000000
Binary files a/docs/shared/lve_manager/images/nodejsconfirmation_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsenable_zoom70.png b/docs/shared/lve_manager/images/nodejsenable_zoom70.png
deleted file mode 100644
index d8ca450a3..000000000
Binary files a/docs/shared/lve_manager/images/nodejsenable_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsgeneral_zoom70.png b/docs/shared/lve_manager/images/nodejsgeneral_zoom70.png
deleted file mode 100644
index 809887eba..000000000
Binary files a/docs/shared/lve_manager/images/nodejsgeneral_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsmakedefault_zoom70.png b/docs/shared/lve_manager/images/nodejsmakedefault_zoom70.png
deleted file mode 100644
index c524a6fdf..000000000
Binary files a/docs/shared/lve_manager/images/nodejsmakedefault_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsselectordomains_zoom70.png b/docs/shared/lve_manager/images/nodejsselectordomains_zoom70.png
deleted file mode 100644
index c2c79a0f0..000000000
Binary files a/docs/shared/lve_manager/images/nodejsselectordomains_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsselectorlogo_zoom70.png b/docs/shared/lve_manager/images/nodejsselectorlogo_zoom70.png
deleted file mode 100644
index 2b1f6642f..000000000
Binary files a/docs/shared/lve_manager/images/nodejsselectorlogo_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsslider_zoom70.png b/docs/shared/lve_manager/images/nodejsslider_zoom70.png
deleted file mode 100644
index 62763ca93..000000000
Binary files a/docs/shared/lve_manager/images/nodejsslider_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsusermain_zoom70.png b/docs/shared/lve_manager/images/nodejsusermain_zoom70.png
deleted file mode 100644
index 2c034ef1d..000000000
Binary files a/docs/shared/lve_manager/images/nodejsusermain_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsuseruirestartremove_zoom70.png b/docs/shared/lve_manager/images/nodejsuseruirestartremove_zoom70.png
deleted file mode 100644
index 617fa075f..000000000
Binary files a/docs/shared/lve_manager/images/nodejsuseruirestartremove_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/nodejsuseruistartstop_zoom70.png b/docs/shared/lve_manager/images/nodejsuseruistartstop_zoom70.png
deleted file mode 100644
index 7103a6906..000000000
Binary files a/docs/shared/lve_manager/images/nodejsuseruistartstop_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/options-cagefs.png b/docs/shared/lve_manager/images/options-cagefs.png
deleted file mode 100644
index 0cc46cab3..000000000
Binary files a/docs/shared/lve_manager/images/options-cagefs.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/options-general.png b/docs/shared/lve_manager/images/options-general.png
deleted file mode 100644
index ec07bb8b5..000000000
Binary files a/docs/shared/lve_manager/images/options-general.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/options-nodejs.png b/docs/shared/lve_manager/images/options-nodejs.png
deleted file mode 100644
index bbc78c169..000000000
Binary files a/docs/shared/lve_manager/images/options-nodejs.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/options-python-selector.png b/docs/shared/lve_manager/images/options-python-selector.png
deleted file mode 100644
index 6c4fbac62..000000000
Binary files a/docs/shared/lve_manager/images/options-python-selector.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/options02_zoom70.png b/docs/shared/lve_manager/images/options02_zoom70.png
deleted file mode 100644
index b888802a0..000000000
Binary files a/docs/shared/lve_manager/images/options02_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/options03_zoom70.png b/docs/shared/lve_manager/images/options03_zoom70.png
deleted file mode 100644
index 87920b1ac..000000000
Binary files a/docs/shared/lve_manager/images/options03_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/optionsresellernotify_zoom70.png b/docs/shared/lve_manager/images/optionsresellernotify_zoom70.png
deleted file mode 100644
index bbc7723f0..000000000
Binary files a/docs/shared/lve_manager/images/optionsresellernotify_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/packageshostertab_zoom70.png b/docs/shared/lve_manager/images/packageshostertab_zoom70.png
deleted file mode 100644
index 9a0561e19..000000000
Binary files a/docs/shared/lve_manager/images/packageshostertab_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/packagesreseller_zoom70.png b/docs/shared/lve_manager/images/packagesreseller_zoom70.png
deleted file mode 100644
index 6795e75d6..000000000
Binary files a/docs/shared/lve_manager/images/packagesreseller_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/php_selector (1).png b/docs/shared/lve_manager/images/php_selector (1).png
deleted file mode 100644
index dff51fc9c..000000000
Binary files a/docs/shared/lve_manager/images/php_selector (1).png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/php_selector.png b/docs/shared/lve_manager/images/php_selector.png
deleted file mode 100644
index dff51fc9c..000000000
Binary files a/docs/shared/lve_manager/images/php_selector.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/php_selector_customer.png b/docs/shared/lve_manager/images/php_selector_customer.png
deleted file mode 100644
index 02ff23c74..000000000
Binary files a/docs/shared/lve_manager/images/php_selector_customer.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/php_selector_options.png b/docs/shared/lve_manager/images/php_selector_options.png
deleted file mode 100644
index 50ba47b44..000000000
Binary files a/docs/shared/lve_manager/images/php_selector_options.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/pic_error.png b/docs/shared/lve_manager/images/pic_error.png
deleted file mode 100644
index dd8553d4e..000000000
Binary files a/docs/shared/lve_manager/images/pic_error.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/pic_info.png b/docs/shared/lve_manager/images/pic_info.png
deleted file mode 100644
index 848a65c29..000000000
Binary files a/docs/shared/lve_manager/images/pic_info.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/pic_success.png b/docs/shared/lve_manager/images/pic_success.png
deleted file mode 100644
index e461b0197..000000000
Binary files a/docs/shared/lve_manager/images/pic_success.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/pic_warning.png b/docs/shared/lve_manager/images/pic_warning.png
deleted file mode 100644
index 7f8904a65..000000000
Binary files a/docs/shared/lve_manager/images/pic_warning.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/sevendayschartresellers_zoom70.png b/docs/shared/lve_manager/images/sevendayschartresellers_zoom70.png
deleted file mode 100644
index b16abd140..000000000
Binary files a/docs/shared/lve_manager/images/sevendayschartresellers_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/statisticstabhoster_zoom70.png b/docs/shared/lve_manager/images/statisticstabhoster_zoom70.png
deleted file mode 100644
index c111e1761..000000000
Binary files a/docs/shared/lve_manager/images/statisticstabhoster_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/statisticstabreseller_zoom70.png b/docs/shared/lve_manager/images/statisticstabreseller_zoom70.png
deleted file mode 100644
index 4dffbdf1d..000000000
Binary files a/docs/shared/lve_manager/images/statisticstabreseller_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/user-interface-settings.png b/docs/shared/lve_manager/images/user-interface-settings.png
deleted file mode 100644
index 9055964f5..000000000
Binary files a/docs/shared/lve_manager/images/user-interface-settings.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/userstabhoster_zoom70.png b/docs/shared/lve_manager/images/userstabhoster_zoom70.png
deleted file mode 100644
index f8b2b39ae..000000000
Binary files a/docs/shared/lve_manager/images/userstabhoster_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/userstabpopup_zoom70.png b/docs/shared/lve_manager/images/userstabpopup_zoom70.png
deleted file mode 100644
index be591d161..000000000
Binary files a/docs/shared/lve_manager/images/userstabpopup_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/userstabreseller_zoom70.png b/docs/shared/lve_manager/images/userstabreseller_zoom70.png
deleted file mode 100644
index 69b41d7c5..000000000
Binary files a/docs/shared/lve_manager/images/userstabreseller_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard-dashboard_zoom60.png b/docs/shared/lve_manager/images/wizard-dashboard_zoom60.png
deleted file mode 100644
index 7b821d735..000000000
Binary files a/docs/shared/lve_manager/images/wizard-dashboard_zoom60.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_close_btn (1).png b/docs/shared/lve_manager/images/wizard_close_btn (1).png
deleted file mode 100644
index db4add17f..000000000
Binary files a/docs/shared/lve_manager/images/wizard_close_btn (1).png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_close_btn.png b/docs/shared/lve_manager/images/wizard_close_btn.png
deleted file mode 100644
index db4add17f..000000000
Binary files a/docs/shared/lve_manager/images/wizard_close_btn.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_download_btn (1).png b/docs/shared/lve_manager/images/wizard_download_btn (1).png
deleted file mode 100644
index ba3904e2f..000000000
Binary files a/docs/shared/lve_manager/images/wizard_download_btn (1).png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_download_btn.png b/docs/shared/lve_manager/images/wizard_download_btn.png
deleted file mode 100644
index ba3904e2f..000000000
Binary files a/docs/shared/lve_manager/images/wizard_download_btn.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_installation_status_zoom70.png b/docs/shared/lve_manager/images/wizard_installation_status_zoom70.png
deleted file mode 100644
index 1132860fa..000000000
Binary files a/docs/shared/lve_manager/images/wizard_installation_status_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_lsapi_zoom90.png b/docs/shared/lve_manager/images/wizard_lsapi_zoom90.png
deleted file mode 100644
index f761c3e0b..000000000
Binary files a/docs/shared/lve_manager/images/wizard_lsapi_zoom90.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_mysqlgovernor_zoom90.png b/docs/shared/lve_manager/images/wizard_mysqlgovernor_zoom90.png
deleted file mode 100644
index 2d0d1064f..000000000
Binary files a/docs/shared/lve_manager/images/wizard_mysqlgovernor_zoom90.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_node.jsselector_zoom90.png b/docs/shared/lve_manager/images/wizard_node.jsselector_zoom90.png
deleted file mode 100644
index ca1772833..000000000
Binary files a/docs/shared/lve_manager/images/wizard_node.jsselector_zoom90.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_php_selector_zoom90.png b/docs/shared/lve_manager/images/wizard_php_selector_zoom90.png
deleted file mode 100644
index 6eae41c50..000000000
Binary files a/docs/shared/lve_manager/images/wizard_php_selector_zoom90.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_python_selector_zoom90.png b/docs/shared/lve_manager/images/wizard_python_selector_zoom90.png
deleted file mode 100644
index 7f2ed00de..000000000
Binary files a/docs/shared/lve_manager/images/wizard_python_selector_zoom90.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_ruby_selector_zoom90.png b/docs/shared/lve_manager/images/wizard_ruby_selector_zoom90.png
deleted file mode 100644
index 9779ec2f8..000000000
Binary files a/docs/shared/lve_manager/images/wizard_ruby_selector_zoom90.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_try_again_btn (1).png b/docs/shared/lve_manager/images/wizard_try_again_btn (1).png
deleted file mode 100644
index 53a2f7cb5..000000000
Binary files a/docs/shared/lve_manager/images/wizard_try_again_btn (1).png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_try_again_btn.png b/docs/shared/lve_manager/images/wizard_try_again_btn.png
deleted file mode 100644
index 53a2f7cb5..000000000
Binary files a/docs/shared/lve_manager/images/wizard_try_again_btn.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizard_warning_zoom70.png b/docs/shared/lve_manager/images/wizard_warning_zoom70.png
deleted file mode 100644
index c39900794..000000000
Binary files a/docs/shared/lve_manager/images/wizard_warning_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizardautoinstallationfails_zoom80.png b/docs/shared/lve_manager/images/wizardautoinstallationfails_zoom80.png
deleted file mode 100644
index 053b1503e..000000000
Binary files a/docs/shared/lve_manager/images/wizardautoinstallationfails_zoom80.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizardbroken_zoom70.png b/docs/shared/lve_manager/images/wizardbroken_zoom70.png
deleted file mode 100644
index bb011d16f..000000000
Binary files a/docs/shared/lve_manager/images/wizardbroken_zoom70.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizardcagefs_zoom90.png b/docs/shared/lve_manager/images/wizardcagefs_zoom90.png
deleted file mode 100644
index 971daa714..000000000
Binary files a/docs/shared/lve_manager/images/wizardcagefs_zoom90.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizardinstallremove_zoom90.png b/docs/shared/lve_manager/images/wizardinstallremove_zoom90.png
deleted file mode 100644
index d84d27764..000000000
Binary files a/docs/shared/lve_manager/images/wizardinstallremove_zoom90.png and /dev/null differ
diff --git a/docs/shared/lve_manager/images/wizardsuccess_zoom90.png b/docs/shared/lve_manager/images/wizardsuccess_zoom90.png
deleted file mode 100644
index 6a1051561..000000000
Binary files a/docs/shared/lve_manager/images/wizardsuccess_zoom90.png and /dev/null differ
diff --git a/docs/solo/.DS_Store b/docs/solo/.DS_Store
deleted file mode 100644
index 8c847eb1b..000000000
Binary files a/docs/solo/.DS_Store and /dev/null differ
diff --git a/docs/solo/activation/README.md b/docs/solo/activation/README.md
deleted file mode 100644
index 56ba02e17..000000000
--- a/docs/solo/activation/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-
-# Licensing
-
-[[toc]]
-
-## Getting license
-
-You will need a trial or payed activation key to be able to use your CloudLinux OS Solo server. 
-Please [refer to this page](https://lp.cloudlinux.com/cloudlinux-os-solo) to find information on how to get activation key.
-
-The activation key looks like: `CLSOLO-d34463a182fede4f4d7e140f1841bcf2`
-
-Use it to [activate your system](/solo/activation/#license-activation) 
-or to [convert server to CloudLinux](/solo/installation/#converting-existing-servers) server.
-
-:::warning
-The CloudLinux OS Solo activation key is used ONLY for registration CloudLinux OS Solo 8.
-Trying use it for registration CloudLinux OS Shared 6/7/8 or converting from CentOS 6/7/ 8 to CloudLinux OS Shared 6/7/8 cause errors.
-:::
-
-:::tip Note
-Activation gives you access to the [CloudLinux Manager](/solo/manager/#cloudLinux_manager) features and system updates. 
-:::
-
-## License activation
-
-There are several ways to register your server with CloudLinux Network:
-
-using the activation key by following commands:
-
-```
-yum install rhn-setup --enablerepo=cloudlinux-base
-/usr/sbin/rhnreg_ks --activationkey=<activation key>
-```
-
-using IP-based licensing:
-
-```
-yum install rhn-setup --enablerepo=cloudlinux-base
-/usr/sbin/clnreg_ks
-```
\ No newline at end of file
diff --git a/docs/solo/administration/README.md b/docs/solo/administration/README.md
deleted file mode 100644
index 43f6f21f3..000000000
--- a/docs/solo/administration/README.md
+++ /dev/null
@@ -1,72 +0,0 @@
-
-# Administration
-
-This section contains information that will be useful for server 
-administrators that want to automatize server configuration or do some
-unusual things which are not available in the WEB UI.
-
-[[toc]]
-
-## OS detection
-
-To get information about the current CloudLinux OS edition, you can run the following command:
-
-    cldetect --detect-edition
-    
-A response for CloudLinux OS Solo will be like follows:
-
-    CloudLinux OS Solo 
-
-## Best practices for virtualization templates
-
-While we recommend and support using of the usual [CloudLinux Solo](/solo/installation/) installation process, 
-it may require more time than is necessary for Virtual Private Server (VPS) and Virtual Machine (VM) hosts. 
-
-Instead, you can provision VPS or VM systems with a templated environment.
-
-### Create a minimal installation for templating
-
-Before you begin, you need the activation key that you will use for CloudLinux OS Solo installation. 
-Follow the [installation](/solo/installation/) guide and create the minimal working CloudLinus OS Solo environment.
-Use activation key to register your instance and get full access to repositories and run the
-`yum update` command to fetch recent changes.
-
-### Manage templates
-
-#### Provisioning
-
-We recommend using tools like `ansible` to add packages and tune server configuration.
-You are free to install any control panels, tune settings and configure the default CloudLinux tools.
-
-#### Finalize your template
-
-If you install the control panel in your customized template, 
-please run following commands once installation is done.
-
-    /usr/bin/package_reinstaller.py
-    
-Commands above will fix hooks and control panel plugins after installation.
-
-Before you save your customized template, it is required to remove license files:
-
-    rm -f /etc/sysconfig/rhn/jwt.token*
-    rm -f /etc/sysconfig/rhn/systemid*
-    rm -f /etc/sysconfig/rhn/cl-rollout*
-
-#### Updating templates
-
-:::tip
-We strongly recommend recreating templates at least once a month to keep images
-fresh and up-to-date with the recent CloudLinux OS Solo repositories.
-:::
-
-There are two ways of templates update:
-
-1. Recreate them from scratch each time (recommended).
-2. Boot customized template, register instance again and run the `yum update` command.
-   Don't forget to remove license keys from the template as described 
-   in [Finalize your template](./#finalize-your-template).
-
-#### Next steps
-
-Save the modified environment as the template and publish it for your clients.
diff --git a/docs/solo/faq/README.md b/docs/solo/faq/README.md
deleted file mode 100644
index b4203bf8e..000000000
--- a/docs/solo/faq/README.md
+++ /dev/null
@@ -1,126 +0,0 @@
-
-# FAQ
-
-[[toc]]
-
-### What is the difference between CloudLinux Solo and CloudLinux OS Shared?
-
-CloudLinux OS Solo is not designed for shared hosting usage and it does not include any [LVE-related](/shared/lve_manager/) features and CageFS. 
-
-CloudLinux OS Solo provides a set of tools for website monitoring and performance tracking out-of-box. [Read more](/solo/manager/).
-
-### Can I convert CloudLinux Solo to CloudLinux Shared?
-
-The conversion mechanism will be implemented in the next releases.
-
-### Is the CloudLinux OS Solo paid/unpaid?
-
-The final pricing will be available with the upcoming Beta release, but you already can [sign up](https://lp.cloudlinux.com/cloudlinux-os-solo) for free Beta testing and test it without any costs using the trial license which can be extended.
-
-### Where can I get the latest ISO of CloudLinux OS Solo?
-
-You can download the latest ISO and use it to install CloudLinux OS Solo on your server using [this link](https://repo.cloudlinux.com/cloudlinux/8.3_solo_beta-netinstall/iso/x86_64/).
-
-### How can I get the CloudLinux OS Solo trial license?
-
-Please refer to [this page](https://lp.cloudlinux.com/cloudlinux-os-solo) to find information on how to get the trial license and the activation key.
-
-### How many servers can I use with the trial license?
-
-The number of servers is unlimited.
-
-### What control panel can be used with CloudLinux OS Solo?
-
-For the current implementation, we recommend using cPanel Solo and DirectAdmin. Plesk is not supported yet.
-
-### How can I get support for my CloudLinux OS Solo servers?
-
-Please feel free to ask your questions [here](https://cloudlinux.zendesk.com/hc/en-us/).
-
-### Can I convert to CloudLinux OS Solo from another OS?
-
-You can convert CentOS/AlmaLinux OS to CloudLinux OS Solo. Please refer to [this instruction](/solo/installation/#converting-existing-servers).
-
-### What is the Website Monitoring tool intended for?
-
-The Website Monitoring tool is intended for monitoring the domain main page generation time and errors occurring when requesting the main page (the main tab).
-
-* The administrator can get the list of the slowest requests during 24 hours (the PHP Slow Site analyzer tab).
-* The administrator can receive the daily reports with the list of the slow requests.
-* The administrator receives instant emails if the domain main page is unavailable.
-
-You can read more about the Website Monitoring tool [here](/solo/manager/#website-monitoring-tool).
-
-### What is the X-Ray tool intended for?
-
-The X-ray tool is intended for deep analysis of slow request cause. The X-ray tool can provide information about software modules and plugins execution time, database queries, system functions and external requests execution time.
-
-It can be used by the administrator and by the user.
-
-You can read more about the X-Ray tool [here](/solo/manager/#x-ray).
-
-### Will the Website Monitoring Tool (WMT) work with the LiteSpeed and Nginx web servers?
-
-Yes, they will.
-
-### Why I don't receive emails from the Website Monitoring tool?
-
-Please verify your cPanel firewall settings.
-
-### Can I use other CloudLinux products (Imunify360, KernelCare) with CloudLinux OS Solo?
-
-Yes, it is possible.
-
-### Can I register my CloudLinux OS Shared 6/7/8 with CloudLinux OS Solo trial key?
-
-No, you cannot.
-
-### Can I convert CentOS 6,7 to CloudLinux OS Solo 8 using the cldeploy script?
-
-No, you cannot. Only CentOS 8/AlmaLinux 8 can be converted.
-
-### Does CloudLinux OS Solo work with LiteSpeed?
-
-No, it does not. We are still implementing this feature, so it will be available in the next CloudLinux OS Solo releases.
-
-### What is the process of upgrading if the customer adds more users to the server and will have to upgrade? (i.e., upgrading from CloudLinux OS Solo to CloudLinux OS Shared)
-
-Create a new server by [converting an existing server](/solo/installation/#converting-existing-servers) or [from ISO](/solo/installation/#iso-file-source)) and migrate the settings of that one user.
-
-:::tip
-We are collecting feedback about CloudLinux OS Solo to CloudLinux OS Shared transitions and may consider implementing that automatically in the future.
-:::
-
-### Where can I use the WP Optimization Suite?
-
-In the current beta release only on CloudLinux OS Solo and cPanel. In the next releases it will be available for CloudLinux OS Shared PRO.
-
-### How will it help my customers?
-
-In the current beta version, the WP Optimization Suite automatically configures the Object Cache module per site. In the next releases we will add modules to help automatically increase performance for WordPress sites.
-
-### How to set up PHP-fpm handler for the domain?
-
-Since the PHP-fpm handler is required to use WP Optimization Suite, you may need to configure it manually.
-
-These are configuration steps:
-
-1. Ensure the PHP-fpm package for the current PHP version is installed or install it.
-
-    * **Manual installation**
-    
-    Run the following command:
-    ```
-    yum -y install ea-phpXY-php-fpm
-    ```
-    Where `XY` - is required PHP version, for instance `ea-php74-php-fpm`
-
-    * **Via MultiPHP Manager**
-
-    ![](./images/InstallationViaMultiPHPManager.png)
-
-
-2. Enable PHP-fpm handler for domain via MultiPHP Manager
-
-![](./images/EnablePHPFpm.png)
-
diff --git a/docs/solo/faq/images/EnablePHPFpm.png b/docs/solo/faq/images/EnablePHPFpm.png
deleted file mode 100644
index 96224a3c2..000000000
Binary files a/docs/solo/faq/images/EnablePHPFpm.png and /dev/null differ
diff --git a/docs/solo/faq/images/InstallationViaMultiPHPManager.png b/docs/solo/faq/images/InstallationViaMultiPHPManager.png
deleted file mode 100644
index c3be670fc..000000000
Binary files a/docs/solo/faq/images/InstallationViaMultiPHPManager.png and /dev/null differ
diff --git a/docs/solo/faq/images/blank b/docs/solo/faq/images/blank
deleted file mode 100644
index 8b1378917..000000000
--- a/docs/solo/faq/images/blank
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/docs/solo/installation/README.md b/docs/solo/installation/README.md
deleted file mode 100644
index 85c6520a8..000000000
--- a/docs/solo/installation/README.md
+++ /dev/null
@@ -1,329 +0,0 @@
-# Installation
-
-[[toc]]
-
-
-## Hardware compatibility
-
-CloudLinux OS Solo supports all the hardware supported by RHEL/CentOS, with few exceptions. 
-Exceptions are usually hardware that require binary drivers, and that doesn't have any open source alternatives.
-
-:::warning
-CloudLinux OS Solo does not support ARM-based CPUs (e.g. Graviton)
-:::
-
-
-With RHEL 8 (**CloudLinux 8**), some devices are no longer supported. 
-You can [check the entire list here](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/considerations_in_adopting_rhel_8/hardware-enablement_considerations-in-adopting-rhel-8#removed-hardware-support_hardware-enablement).
-
-
-## Fresh installation
-
-### Downloading installation media
-
-You can download the latest ISO and use it to install 
-CloudLinux OS Solo on your server using [this link](https://repo.cloudlinux.com/cloudlinux/8/iso/x86_64/).
-
-There are multiple ISO types available:
-
-* `CloudLinux-*-boot.iso` - this ISO is made specifically for network installation and does not contain any packages inside.
-* `CloudLinux-*-dvd1.iso` - this one contains all packages from network installation repository, 
-  so you can set up any possible configuration without network access.
-* `CloudLinux-*-minimal.iso` - this one contains only minimal set of packages to set up light server without GUI and Development tools.
-
-:::tip Note
-Once you install server from the ISO, make sure you [register your system](/shared/cloudlinux_installation/#license-activation) 
-and then run the `yum update` command to get all recent updates.
-:::
-
-
-### Installing in the Graphical User Interface
-
-The graphical installation interface is the preferred method of manually installing CloudLinux OS Solo. 
-It allows you to have full control over all available settings, including disk partitioning and storage configuration.
-
-The graphical mode is used by default when you boot the system from the local media.
-
-#### Language selection
-
-The first screen displayed is the language selection page.
-
-![Welcome page screenshot](./images/welcome_page.png)
-
-First, find your preferred language in the left column and than select locale in the right one.
-Selected language will be used during installation and also as a default language of the installed system.
-
-After you select your language and locale, click `Continue` to confirm your selection 
-and proceed to the [Installation Summary](/solo/installation/#installation-summary). 
-
-#### Installation summary
-
-The Installation summary screen is the main dashboard of your installation parameters. 
-Most of the options which can be configured during the installation can be accessed from here.
-
-![Welcome page screenshot](./images/installation_summary.png)
-
-The summary screen displays links to other configuration screens, those links can be in 
-several different states, which are graphically indicated:
-
-- Grayed out link means that the installer is currently updating this sections. 
-  Please wait a little before accessing this section. 
-
-- A warning symbol next to an icon means that a screen requires your attention before you start the installation.
-
-- Links without warning symbol mean that screen does not require your attention. 
-  You can still change your settings in these screens, but it is not required to start installation.
-
-#### Installation source
-
-The first thing that you should define is where the system will be installed from.
-There are basically two options:
-
-- ISO file
-- On the network
-
-#### On the network source
-
-Use this option to download packages to be installed from a network location. 
-This is the preferred way as you automatically receive all critical bug fixes that may affect installation.
-
-:::tip Note
-Most likely your network is not configured by default, 
-so you can see the URL configuration field greyed out, like on the screenshot below. Please refer to the Network Configuration screen first to set up a network connection.
-:::
-
-![Unavailable network source](./images/installation_source_gray_network.png)
-
-The correct installation URL for CloudLinux OS Solo is
-
-```text
-https://repo.cloudlinux.com/cloudlinux/8/BaseOS/x86_64/kickstart/
-```
-
-Type in installation URL in the corresponding field, configure proxy if needed and press the `Done` button.
-
-![](./images/installation_source_network_address.png)
-
-
-#### ISO file source
-
-This option is primary used as an alternative when you don't have internet connection on a target server.
-It is only available if you downloaded Minimal or DVD ISO which contains some bundled packages in.
-
-![](./images/installation_iso_source.png)
-
-Tick the `ISO file` checkbox and press the `Done` button.
-
-#### Next steps
-
-After clicking `Done`, you will be redirected to the [Installation Summary](/solo/installation/#installation-summary) screen
-where [Installation source](/solo/installation/#installation-source) and [Software Selection](/solo/installation/#software-selection) links
-will be greyed and the `Downloading package metadata` message wll be shown. 
-
-![](./images/installation_source_gray_working.png)
-
-Please hold on while that message disappears and proceed to the [Software Selection](/solo/installation/#software-selection) section.
-
-![](./images/installation_source_gray_done.png)
-
-
-#### Software Selection
-
-The Software Selection screen allows you to choose a Base Environment and Add-ons. 
-These options control which software packages will be installed on your system during the installation process.
-
-This screen is only available if Installation Source is properly configured and only after the installer 
-has downloaded package metadata from the source.
-
-It is not possible to select specific packages during a manual installation, you can only select pre-defined environments and add-ons.
-
-To install CloudLinux OS Solo, first, choose the `CloudLinux OS Solo (minimal)` environment on the left of the screen.
-
-:::warning Warning
-All other environments are used to install [CloudLinux OS Shared](http://docs.cloudlinux.com/), so make sure you choose `CloudLinux OS Solo (minimal)`. 
-:::
-
-Only one environment can be chosen, even if more are available. 
-
-Then, on the right side of the screen, select one or more add-ons which you want to install by ticking the check boxes next to each add-on.
-
-#### Final preparations
-
-Installation is almost done, all you need to do is to [configure your installation target](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-disk-partitioning-setup-x86)
-using the `Installation Destination` menu and create your [Root Password](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/sect-configuration-progress-menu-x86#sect-account-configuration-x86).
-
-Doing that, the `Begin installation` button becomes blue, so click it.
-
-![](./images/installation_available.png) 
-
-After this point, the installation process actually starts and changes are being made to your selected disks.
-It is not possible to go back to the Installation Summary and change any settings configured there; 
-if you need to do so, you must wait for the installation process to finish, reboot your system, log in and change your settings 
-on the installed system.
-
-The bottom of the screen shows a progress bar and a message informing you of the current progress of the installation. 
-When the installation finishes, you can press the Finish installation button
-to reboot your computer and log in to your newly installed system.
-
-:::warning Warning
-Before you finish the installation and reboot, either remove the media
-which you used to start the installation, or make sure that your system tries to boot 
-from the hard drive before trying removable media. Otherwise, your computer will start the installer again instead of the installed system.
-:::
-
-![](./images/installation_done.png)
-
-#### Next steps
-
-Reboot your system, login and check EULA which is located in the `/usr/share/cloudlinux-release/EULA`.
-
-Next, [activate your installation](/solo/manager/#activation) in order to get updates.
-
-
-## Converting existing servers
-
-:::warning
-Only CenOS 8/AlmaLinux 8 can be converted to the CloudLinux OS Solo 8. 
-:::
-
-Sometimes it is required to convert already existing servers with `CentOS` or `AlmaLinux` and make them `CloudLinux OS Solo`.
-
-It is easy to convert your existing installation by cldeploy script. The process takes a few minutes and replaces just a handful of RPMs.
-
-:::warning
-Unlike [Fresh installation](/solo/installation/#fresh-installation), converting requires CloudLinux OS Solo license. 
-Please refer to the [guide](/solo/activation/) to get activation key.
-:::
-
-### Downloading and running conversion script
-
-If you already have an activation key, run the following commands:
-
-```
-yum install wget -y
-wget https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
-bash cldeploy -k ACTIVATION_KEY
-```
-
-Where `ACTIVATION_KEY` is the one that you got on previous step.
-
-If you want to get IP-based license, run the following commands:
-
-```
-yum install wget -y
-wget https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
-bash cldeploy -i --to-solo-edition
-```
-
-After successful conversion, reboot your system by running the following command:
-
-```
-reboot
-```
-
-The script automatically detects and supports the following control panels:
-* cPanel with Easy Apache 4
-
-Unfortunately, for now it is not possible to convert servers with:
-
-* Plesk
-* DirectAdmin
-* Other control panels that use [CloudLinux OS Shared integration](https://docs.cloudlinux.com/control_panel_integration/#introduction).
-
-Please subscribe to [our blog](https://blog.cloudlinux.com/), check news and receive updates. 
-
-#### The cldeploy explanation
-
-By its design, CloudLinux OS Solo is very close to the upstream operating system, RHEL (and so, CentOS and AlmaLinux). 
-This makes the conversion process relatively straightforward, requiring just one reboot. 
-
-Here's what the cldeploy script does when you run it:
-
-* Backups the original repository settings into the`/etc/cl-convert-saved`.
-* Backups RHEL system ID into the `/etc/cl-convert-saved` (RHEL systems only).
-* Installs CloudLinux repository settings and imports CloudLinux RPM key.
-* Replaces redhat/centos-release, redhat-release-notes, redhat-logos with CloudLinux version.
-* Re-installs CloudLinux version of rhnlib/rhnplugin.
-* Checks for binary kernel modules, finds replacement if needed.
-* Detects OVH servers and fixes the mkinitrd issues.
-* Detects Linode servers and fixes the grub issues.
-* Checks if LES is installed.
-* Checks that the `/etc/fstab` has correct `/dev/root`.
-* Checks for efi.
-* Installs CloudLinux Manager for cPanel Solo.
-
-#### Next steps
-
-Reboot your system, login and check EULA which is located in the `/usr/share/cloudlinux-release/EULA`.
-
-:::tip Note
-ISO installation provisions server with outdated packages. 
-It is highly recommended to run `yum update` right after first boot.
-:::
-
-## Uninstalling
-
-You can always uninstall CloudLinux OS Solo. In this case, the system will be converted back to CentOS or
-AlmaLinux.
-
-The following actions will be taken:
-
-* CloudLinux repositories & yum plugin will be removed.
-* CentOS or AlmaLinux repositories will be set up.
-
-In the end, the script will provide instructions on how to finish the conversion back. 
-That will require removal of the CloudLinux kernel (a manual step), and installing CentOS or AlmaLinux kernel (if needed).
-
-:::warning Warning
-Do not forget to free up a CloudLinux OS Solo license by removing the server from the [Servers section of your CLN account](https://docs.cln.cloudlinux.com/dashboard/#servers)
-After that, if you don't intend to use the license anymore, you can [remove it](https://docs.cln.cloudlinux.com/dashboard/#cloudlinux-os-activation-keys) to avoid being billed.
-:::
-
-To uninstall CloudLinux OS, run the following command:
-
-```
-wget -O cldeploy https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
-sh cldeploy -c
-```
-
-Now you have converted back and it is the time to install kernel.
-
-To delete CloudLinux kernel, run the following command (change the kernel package name to the one you've been using):
-
-```
-rpm -e --nodeps kernel-2.6.32-673.26.1.lve1.4.27.el6.x86_64
-```
-
-To install new CentOS or AlmaLinux kernel once you deleted CloudLinux kernel, run the following command:
-
-```
-yum install kernel
-```
-
-If yum says that the latest kernel is already installed, it is OK.
-Please check your bootloader configuration before rebooting the system.
-
-To remove unused kmods and lve libs, run the following command:
-
-```
-yum remove lve kmod*lve*
-```
-
-Before the reboot, the following command should be executed for restoring Apache and httpd.conf without mod_hostinglimits:
-
-*For EasyApache 3:*
-
-```
-/scripts/easyapache --build
-```
-
-*For EasyApache 4:*
-
-```
-/usr/local/bin/ea_install_profile --install /etc/cpanel/ea4/profiles/cpanel/default.json
-```
-
-:::tip Note
-Some packages from CloudLinux repo will still remain. They are the same as CentOS or AlmaLinux packages, and don't have to be removed. 
-They will be updated in the future from CentOS repositories, as new versions come out.
-:::
diff --git a/docs/solo/installation/images/installation_available.png b/docs/solo/installation/images/installation_available.png
deleted file mode 100644
index ed38e5aea..000000000
Binary files a/docs/solo/installation/images/installation_available.png and /dev/null differ
diff --git a/docs/solo/installation/images/installation_done.png b/docs/solo/installation/images/installation_done.png
deleted file mode 100644
index 69edad6ef..000000000
Binary files a/docs/solo/installation/images/installation_done.png and /dev/null differ
diff --git a/docs/solo/installation/images/installation_iso_source.png b/docs/solo/installation/images/installation_iso_source.png
deleted file mode 100644
index 0e376e8f9..000000000
Binary files a/docs/solo/installation/images/installation_iso_source.png and /dev/null differ
diff --git a/docs/solo/installation/images/installation_progress.png b/docs/solo/installation/images/installation_progress.png
deleted file mode 100644
index b5c9bff7e..000000000
Binary files a/docs/solo/installation/images/installation_progress.png and /dev/null differ
diff --git a/docs/solo/installation/images/installation_source_gray_done.png b/docs/solo/installation/images/installation_source_gray_done.png
deleted file mode 100644
index 025860a74..000000000
Binary files a/docs/solo/installation/images/installation_source_gray_done.png and /dev/null differ
diff --git a/docs/solo/installation/images/installation_source_gray_network.png b/docs/solo/installation/images/installation_source_gray_network.png
deleted file mode 100644
index 7f7df0f15..000000000
Binary files a/docs/solo/installation/images/installation_source_gray_network.png and /dev/null differ
diff --git a/docs/solo/installation/images/installation_source_gray_working.png b/docs/solo/installation/images/installation_source_gray_working.png
deleted file mode 100644
index 201c8e203..000000000
Binary files a/docs/solo/installation/images/installation_source_gray_working.png and /dev/null differ
diff --git a/docs/solo/installation/images/installation_source_network_address.png b/docs/solo/installation/images/installation_source_network_address.png
deleted file mode 100644
index cd0378ad1..000000000
Binary files a/docs/solo/installation/images/installation_source_network_address.png and /dev/null differ
diff --git a/docs/solo/installation/images/installation_summary.png b/docs/solo/installation/images/installation_summary.png
deleted file mode 100644
index 7353ab849..000000000
Binary files a/docs/solo/installation/images/installation_summary.png and /dev/null differ
diff --git a/docs/solo/installation/images/software_selection_solo.png b/docs/solo/installation/images/software_selection_solo.png
deleted file mode 100644
index 262563b7e..000000000
Binary files a/docs/solo/installation/images/software_selection_solo.png and /dev/null differ
diff --git a/docs/solo/installation/images/welcome_page.png b/docs/solo/installation/images/welcome_page.png
deleted file mode 100644
index df6649f1e..000000000
Binary files a/docs/solo/installation/images/welcome_page.png and /dev/null differ
diff --git a/docs/solo/introduction/README.md b/docs/solo/introduction/README.md
deleted file mode 100644
index 882c44899..000000000
--- a/docs/solo/introduction/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# Introduction
-
-[[toc]]
-
-## What is CloudLinux OS Solo
-
-
-CloudLinux OS Solo is designed for installation on VPS or dedicated servers with a single hosting account for any number of websites.
-
-Unlike [CloudLinux OS Shared](/introduction/), this edition is not designed for Shared Hosting usage and it does not include any [LVE-related](/shared/lve_manager/) features.
-
-We provide the CloudLinux OS Solo with pre-installed features, but for grafical interface, please install a control panel on your server.
-
-:::warning
-Currently supported OS version is CloudLinux OS Solo 8 only. Therefore, for now, there is no possibility to use CloudLinux OS Solo on servers with OS version 6 and 7.
-Please refer to the [currently supported OS versions](/introduction/#cloudlinux-os-solo-lifecycle).
-:::
-
-#### Supported control panels
-
-|**Panel**|**Supported**|
-|:-:|:-:|
-|cPanel Solo|Yes|
-|cPanel regular with one user|Yes|
-|Plesk|Yes|
-|DirectAdmin|Yes|
-|Other panels|No|
-|No control panel|No|
-
-#### CloudLinux OS editions comparison
-
-
-|**Features**|**<font color="#2c98f0">CloudLinux OS Solo</font>**|**CloudLinux OS Admin**|**CloudLinux OS Shared**|**CloudLinux OS Shared Pro**|
-|:-:|:-:|:-:|:-:|:-:|
-|Maximum amount of hosting accounts|<font color="#2c98f0">1</font>|5|unlimited|unlimited|
-|Resource Limits (LVE)|<font color="#2c98f0">No</font>|**Yes***|**Yes**|**Yes**|
-|Cage FS|**<font color="#2c98f0">Yes</font>**|**Yes**|**Yes**|**Yes**|
-|MySQL Governor|<font color="#2c98f0">No</font>|No|**Yes**|**Yes**|
-|PHP Selector|**<font color="#2c98f0">Yes</font>**|**Yes**|**Yes**|**Yes**|
-|Other Selectors (Python, Node.js, Ruby)|<font color="#2c98f0">No</font>|**Yes****|**Yes****|**Yes****|
-|HardenedPHP|**<font color="#2c98f0">Yes</font>**|**Yes**|**Yes**|**Yes**|
-|Apache mod_lsapi PRO|**<font color="#2c98f0">Yes</font>**|**Yes**|**Yes**|**Yes**|
-|SecureLinks|<font color="#2c98f0">No</font>|**Yes**|**Yes**|**Yes**|
-|Website monitoring tool|**<font color="#2c98f0">Yes</font>**|**Yes**|**Yes**|**Yes**|
-|Website monitoring alerts|**<font color="#2c98f0">Yes</font>**|No|No|No|
-|Slow Site analyzer|**<font color="#2c98f0">Yes</font>**|**Yes**|**Yes**|**Yes**|
-|PHP X-Ray|**<font color="#2c98f0">Yes</font>**|**Yes**|No|**Yes**|
-|Centralized Monitoring|<font color="#2c98f0">No</font>|No|No|**Yes**|
-|AccelerateWP|**<font color="#2c98f0">Yes</font>**|**Yes**|No|**Yes**|
-|Support 24/7|**<font color="#2c98f0">Yes</font>**|**Yes**|**Yes**|**Yes**|
-
-\* Limits are disabled by default.
-
-\** Python/Node.js/Ruby Selectors are available only for cPanel, DirectAdmin servers, and servers with custom panel with own integration.
-
-
-### Benefits
-
-We believe that this distribution will be useful for you if: 
-1. as a site owner you have different performance issues with websites hosted. 
-   CloudLinux OS Solo provides a set of tools for website monitoring and performance tracking out-of-box;
-2. as a service provider you sell VPS servers and some of your customers require OS with extensive features 
-   for better security, support, and performance.
-
-In any case we provide you [24/7 professional support](https://cloudlinux.zendesk.com/)
-to resolve any issues related to CloudLinux OS, its unique components and kernel.
-
-### CloudLinux OS Solo features
- 
-We've pre-installed a couple of useful features in our distribution.
-
-* **CloudLinux Manager**
-
-  CloudLinux Manager is a plugin which allows you to control all the
-  CloudLinux settings from an easy-to-use web UI integrated into your control panel. 
-  
-  The sub-modules you can find in CloudLinux Manager are Website Monitoring tool, PHP Slow Site analyzer, and X-Ray.
-
-  [See more](/solo/manager/).
-
-* **Website Monitoring tool**
-
-  Website Monitoring tool is a tool that allows you to track your websites uptime 
-  and receive notifications about problems with access.
-
-  Website Monitoring tool can gather and display information regarding the slowest websites on the server, 
-  notify by emails about errors happened on websites and send you daily website performance reports.
-
-  [See more](/solo/manager/#website-monitoring-tool).
-
-* **PHP Slow Site analyzer**
-
-  PHP Slow Site analyzer (SSA) is a tool that generates daily reports for the server administrator 
-  with information about the top N slow PHP-based URLs for all domains.
-
-  The Slow Site analyzer tracks all PHP-based requests and selects slow ones by specific rules.
-
-  [See more](/solo/manager/#php-slow-site-analyzer).
-
-* **X-Ray**
-
-  X-Ray is a tool developed for website performance monitoring and performance issues detection.
-
-  X-Ray can gather and visualize information about top slowest system functions, external requests, 
-  software modules and database queries of the client’s PHP website.
-
-  [See more](/solo/manager/#x-ray).
-
-### How can I try your distribution before paying for it?
-
-We provide trial licenses for 30 days. You can get your trial key in two ways:
-
-1. On the CloudLinux OS Solo main page, see [CloudLinux OS Solo](https://lp.cloudlinux.com/cloudlinux-os-solo).
-2. In the CloudLinux Manager plugin, see the [Getting trial key](/solo/manager/#activation) section.
-
-
-The trial key must be entered during installation.
-
-### CloudLinux OS Solo lifecycle
-
-CloudLinux OS Solo has the same life cycle policy as RHEL. 
-Using a supported operating system is critical to maintaining a stable server environment.
-
-Currently, the following version are supported:
-
-|Operating System | Release Date| End of Life and Support|
-|-|--|-|
-|CloudLinux OS Solo 8 | Jun 1, 2021 | May 31, 2029 |
-
-## What's next
-
-1. The [Installation](/shared/installation) section contains information about how to install this OS.
-2. The [landing page](https://lp.cloudlinux.com/cloudlinux-os-solo) contains the instructions about how to buy license or get trial.
diff --git a/docs/solo/manager/.DS_Store b/docs/solo/manager/.DS_Store
deleted file mode 100644
index c05184e38..000000000
Binary files a/docs/solo/manager/.DS_Store and /dev/null differ
diff --git a/docs/solo/manager/README.md b/docs/solo/manager/README.md
deleted file mode 100644
index 52ed43bb6..000000000
--- a/docs/solo/manager/README.md
+++ /dev/null
@@ -1,1792 +0,0 @@
-# CloudLinux Manager
-
-[[toc]]
-
-<span class="notranslate">CloudLinux Manager</span> is a plugin for most popular control panels including cPanel, Plesk, DirectAdmin and ISPmanager (InterWorx coming soon). It allows you to control and monitor all CloudLinux OS Solo features.
-
-CloudLinux Manager (previously LVE Manager) is accessible via the *Server Configuration* tab:
-
-![](./images/howtofindlvemanagerinpanel.png)
-
-
-:::warning Warning
-LVE Manager is renamed to CloudLinux Manager since cPanel v 96.0.9
-:::
-
-
-![](./images/solo_lvemanagermainmenu.png)
-
-Log in as administrator to get access to the following functionality:
-
-* <span class="notranslate">Website Monitoring</span> provides access to Website Monitoring and PHP Slow Site Analyzer.
-* <span class="notranslate">X-Ray</span> tab - provides access to X-Ray;
-
-## Activation
-
-To start using CloudLinux Manager, it must be activated with your CloudLinux OS Solo activation key.
-
-In order to activate CloudLinux Manager features, follow the next steps: 
-
-* Enter your CLN activation key if you already have it 
-    ![](./images/cloudlinuxmanageractivation.png)
-  
-    If you have IP-based license, please leave the _Enter Activation Key_ field empty and just click _Activate_.
-    
-    You can read more about CloudLinux OS Solo and how to get the license [here](https://lp.cloudlinux.com/cloudlinux-os-solo)
-
-* Sign up and get 30-days trial license
-
-    Fill out the next form
-
-    ![](./images/cloudlinuxmanageractivationsignupform.png)
-
-    CloudLinux Manager will be activated automatically after submitting the form.
-
-    ![](./images/cloudlinuxmanageractivationsignup.png)
-
-    :::tip Note
-    After submitting the registration form you will get a trial license valid for next 24 hours.
-    To prolong license for 30 days, please follow the activation instructions sent to email specified during the
-    registration.
-    :::
-
-## Website Monitoring tool
-
-**Website Monitoring tool (WMT)**  is a tool that collects the statistics of the domains' availability and responsiveness, as well as errors that occur when accessing these domains. An admin can get email reports with the statistics. The Website Monitoring tool uses the simple curl request like `curl http://domain.com` to get domains’ statistics.
-
-You can configure the Website Monitoring tool and the [Slow Site analyzer](/solo/manager/#php-slow-site-analyzer) and view the daily reports in the CloudLinux Manager -> Website monitoring tab.
-
-There are Main, PHP Site analyzer, and Settings subtabs [here](/solo/manager/#main).
-
-:::warning Warning
-For now, there is no any possibility to remove the `alt-php-ssa` and `cl-web-monitoring-tool` packages so that the _Website monitoring_ tab will be removed.
-You can turn off the _Website monitoring_, _PHP Sites Analyzer_ in the _[Settings](/solo/manager/#wmt-settings)_ tabs, so sites statistics will stop collecting and there will be no additional load on the server.
-:::
-
-#### Main
-
-This subtab views the latest report (for the last 24 hours) of the Website monitoring tool.
-
-![](./images/WebsiteMonitoringMain.png)
-
-Report is regenerated each time the page is loaded, so all changes in configuration (the [_Settings_](/solo/manager/#wmt-settings) tab) or in the list of domains will be applied immediately.
-
-* **Total number of requests** - requests that were sent to all domains, existing on the servers
-* **Successful requests** - the number of requests for all domains with status code 200
-* **Requests with errors** - the number of requests for all domains which status code is not 200
-* **Not started requests due to short check interval** - this metric is used to adjust configuration. If it is not equal 0, an admin should increase the value of Requests sending interval, because the tool does not fit into this interval to send requests to all domains.
-* **Slowest websites in 24h and Websites with most errors in 24h** - in these sections you can find the number of domains that was exposed here.
-
-### WMT Settings
-
-To enable or disable **Website Monitoring**, use the following slider.
-
-![](./images/WebsiteMonitoringSlider.png)
-
-
-* **Email to send report** - all email notifications will be sent to this email address
-
-:::warning Warning
-If email is not specified, all [notifications](/solo/manager/#wmt-email-notifications) will be sent to control panel administrator's email.
-:::
-
-![](./images/Webmonitoringtoolsettings.png)
-
-* **Check every X minutes** - this is a period in minutes between requests to the same domain.
-* **Time allowed for response** - if there is no answer from the website for this period of time, the Website Monitoring tool will regard this behaviour as the `HTTP 408` error.
-* **Enable summary notifications** - turn on/off summary daily email report notifications
-* **Enable alert notifications** - turn on/off immediate alert email notifications
-* **Domains and URLs Ignore List** - domains and URLs that will not be requested and displayed in reports; supported formats: `example.com, http://example.com`
-
-### WMT CLI
-
-The `wmt-api-solo` utility allows managing Website Monitoring tool via CLI.
-
-**Usage**
-
-```
-# /usr/share/web-monitoring-tool/wmtbin/wmt-api-solo [command] [--optional arguments]
-```
-
-**Optional arguments**:
-
-| | |
-|-|-|
-|`-h`, `--help`|show help message and exit|
-
-**Commands**:
-
-| | |
-|-|-|
-|`config-change`|set the WMT configuration using the JSON string that follows the command|
-|`config-get`|get the WMT configuration as JSON|
-|`report-get`|generate a report for last 24 hours|
-|`send-clickhouse`|send the summary report to the ClickHouse|
-|`start`|start the WMT system|
-|`status`|check the status of the WMT system|
-|`stop`|stop the WMT system|
-
-Example of the `/usr/share/web-monitoring-tool/wmtbin/wmt-api-solo` command usage:
-
-```
-# /usr/share/web-monitoring-tool/wmtbin/wmt-api-solo --config-change "{\"ping_timeout\":10,\"ping_interval\":5,\"report_email\":\"user@example.com\"}"
-```
-
-This way you can set all or only certain parameters.
-
-### WMT email notifications
-
-There are two types of emails sent by the Web Monitoring tool: **daily email report** and **alert**.
-
-#### Daily email report
-
-The summary report with all data for the previous day. It is created and sent every day at midnight.
-
-
-**Example of the Web Monitoring tools daily report**.
-
-![](./images/Webmonitoringtoolemail.png)
-
-#### Alert
-
-Domains that are responding with non-200 status code will be re-requested in 5 minutes or in the `ping_interval` setting (in case it is less than 5 minutes).
-
-If domains are still responding with non-200 status code - Web Monitoring tool will inform about such domains with immediate alert email.
-
-**Example of the Web monitoring tools immediate alert**.
-
-![](./images/Webmonitoringtoolalert.png)
-
-:::tip Note
-The next alert with domains will not be sent in less than 6 hours. Also, if the alerted domain is still responding with non-200 status code even after 6 hours - it will not be re-alerted until it responds with 200 status code at least once and becomes unavailable again.
-:::
-
-## PHP Slow Site analyzer
-
-**PHP Slow Site analyzer** (**SSA**) is a tool that generates daily reports for the server administrator with information about the top N slow PHP-based URLs for all domains. The Slow Site analyzer tracks all PHP-based requests and selects slow ones by specific rules.
-
-![](./images/solo_SlowSiteAnalyzerReport.png)
-
-This is an example of a report from the Slow Site analyzer. The report shows the number of slow requests per domain and its URLs and the average duration of each slow URL.
-
-
-### SSA settings
-
-To enable or disable the **Slow Site analyzer**, use the following slider:
-
-![](./images/WebsiteMonitoringSlider1.png)
-
-The following settings can be changed through the UI:
-
-![](./images/solo_SlowSiteAnalyzerSettings.png)
-
-* **Enable summary notifications** - turn on/off summary daily email report notifications;
-* **Top slow URLs** - this number (N) will be used to select the top N URLs for each domain, marked as slow;
-* **Slow request duration** - the duration of a request in seconds. If the request duration was less than specified in this setting then this request will not be marked as slow;
-* **Domains and URLs Ignore List** - domains and URLs that will not be displayed in reports.
-
-
-
-### SSA CLI
-
-The `cloudlinux-ssa-manager` utility allows to manage Slow Site analyzer via CLI.
-
-**Usage**
-
-```
-# /usr/sbin/cloudlinux-ssa-manager [command] [--optional arguments]
-```
-
-**Optional arguments**:
-
-| | |
-|-|-|
-|`-h`, `--help`|show help message and exit|
-
-**Commands**:
-
-| | |
-|-|-|
-|`set-config`|set the SSA configuration|
-|`get-config`|get the SSA configuration|
-|`get-ssa-status`|get a current status of SSA|
-|`enable-ssa`|enable SSA|
-|`disable-ssa`|disable SSA|
-|`get-report`|get the latest report|
-
-You can use the `-h`, `--help` option with commands to get a full list of available optional arguments for each command.
-
-Example of the `/usr/sbin/cloudlinux-ssa-manager get-report | json_reformat` command output:
-
-```
-# /usr/sbin/cloudlinux-ssa-manager get-report | json_reformat
-{
-    "result": "success",
-    "date": "18.05.2021",
-    "domains": [
-        {
-            "name": "user1.com",
-            "slow_urls": 2,
-            "slow_reqs": 23,
-            "total_reqs": 24,
-            "urls": [
-                {
-                    "name": "http://user1.com/",
-                    "reqs_num": 13,
-                    "average_duration": 3004509
-                },
-                {
-                    "name": "http://user1.com/info.php",
-                    "reqs_num": 10,
-                    "average_duration": 3641018
-                }
-            ]
-        },
-        {
-            "name": "user2.com",
-            "slow_urls": 1,
-            "slow_reqs": 12,
-            "total_reqs": 12,
-            "urls": [
-                {
-                    "name": "http://user2.com/",
-                    "reqs_num": 12,
-                    "average_duration": 3010571
-                }
-            ]
-        }
-    ]
-}
-```
-
-Example of the `/usr/sbin/cloudlinux-ssa-manager set-config --requests-duration 2.5` command output:
-
-```
-# /usr/sbin/cloudlinux-ssa-manager set-config --requests-duration 2.5
-{"result": "success"}
-```
-
-
-### SSA email notifications
-
-SSA sends email reports daily if the "**Enable summary notifications**" setting is turned on.
-
-**Example of the PHP Slow Site analyzer report**:
-
-![](./images/solo_SlowSiteAnalyzerEmailNotifications.png)
-
-
-## X-Ray
-
-* [Description](/solo/manager/#description)
-* [How to manage X-Ray](/solo/manager/#how-to-manage-x-ray)
-* [Managing tracing task](/solo/manager/#managing-tracing-task)
-* [Managing continuous tasks](/solo/manager/#managing-continuous-tasks)
-* [X-Ray Autotracing](/solo/manager/#x-ray-autotracing)
-* [End-user X-Ray plugin](/solo/manager/#end-user-x-ray-plugin)
-* [X-Ray client](/solo/manager/#x-ray-client)
-* [X-Ray service](/solo/manager/#x-ray-agent)
-* [FAQ](/solo/manager/#faq)
-
-### Description
-
-X-Ray is a tool developed for website performance monitoring and performance issues detection.
-
-X-Ray can gather and visualize information about top N slowest system functions, external requests, software modules and database queries of the website.
-
-### How to manage X-Ray
-
-X-Ray provides two options for monitoring domain requests speed: Tracing task and Continuous task.
-
-* **Tracing task** is a task created manually for a specific URL to collect server requests. The task will end either after a specified number of requests to the URL or after a specified time (maximum after two days). It is not possible here to automatically email a report but it is possible to export the report in PDF and send to a user.
-
-* **Continuous task** is a task that initiates a daily hourly tracing requests for a specified domain and email a monitoring report. Continuous task can't stop automatically, you need to stop it manually.
-
-In fact, continuous task allows to automatically create a tracing task for each new day, with the ability to get a report for the past day.
-
-#### Tracing tasks tab
-
-The *Tracing tasks* tab contains a list of all tracing tasks created both manually and automatically via continuous tasks.
-
-![](./images/XRayTracingTaskCreated.png)
-
-The *Created* column shows how a task was created – automatically (by continuous task) or manually.
-
-#### Continuous tracing tab
-  
-The *Continuous tracing* tab contains a list of continuous tasks for which tracing tasks will be created automatically for a new day for a specific domain.
-
-![](./images/XRayContinuousTasksList.png)
-
-### Managing tracing task
-
-#### Creating a new tracing task
-
-1. Go to the <span class="notranslate">_X-Ray_</span> tab
-2. Click the <span class="notranslate">_Start tracing_</span> button to create a new task
-3. In the opened popup specify a website URL to trace
-4. Click the <span class="notranslate">_Run_</span> button
-5. Tracing will run in the default mode. In the default mode <span class="notranslate">X-Ray</span> traces the first 20 requests for a specified URL
-
-![](./images/XRayTracingTask.png)
-
-* <span class="notranslate">**URL**</span> should be a valid URL of the domain which exists on the current hosting server. The URL field supports wildcard matching. To learn more about wildcard matching, click _How to use special characters_.
-* <span class="notranslate">**Advanced settings**</span> allow you to set an IP address and tracing options: by time or by number of queries.
-
-    ![](./images/XRayAdvanced.png)
-
-**Advanced settings**
-
-* <span class="notranslate">**Client’s IP**</span>: it is an IPv4 address of a machine to trace. For example, if you have a production website that processes requests from different IP addresses and you do not want to add these requests to the tracing task. So, you can set a specific IP address and <span class="notranslate">X-Ray</span> will analyze requests only from this specific IP address.
-Record for
-* <span class="notranslate">**Time period**</span>: how much time <span class="notranslate">X-Ray</span> collect the requests (2 days max)
-* <span class="notranslate">**Requests**</span>: the amount of requests that <span class="notranslate">X-Ray</span> will collect
-
-After creating, the task appears in the list of tracing tasks.
-
-![](./images/XRayTrcingTaskList.png)
-
-#### Viewing tracing tasks list
-
-![](./images/XRayTrcingTaskList1.png)
-
-Tasks created *Manually* are simply tracing tasks.
-
-#### Tracing status
-
-A tracing task can have the following statuses:
-
-* <span class="notranslate">**Running**</span> – tracing is in progress
-* <span class="notranslate">**Stopped**</span> – tracing was stopped by administrator
-* <span class="notranslate">**On hold**</span> – the same URL already exists in the lists. Task processing will not start automatically. Administrator should start it manually.
-* <span class="notranslate">**Completed**</span> – period of time is finished or number of requests is reached.
-
-#### Collected requests for tracing task
-
-:::warning Warning!
-Collected requests are available in the UI for two weeks.
-:::
-
-Click ![](./images/XRayView.png) to open a list of collected requests.
-
-#### Tracing tasks
-
-![](./images/solo_XRayCollectedRequests.png)
-
-The slowest request is highlighted.
-
-![](./images/XRaySlowestRequest.png)
-
-* <span class="notranslate">**Total**</span> displays how many requests were collected according to tasks requirements.
-* <span class="notranslate">**Pending**</span> displays how many of collected requests are not visible in the table yet.
-* <span class="notranslate">**Slow**</span> displays the number of requests lasting more than one second.
-
-There are filters for the request types and the indicator of a filter used now.
-
-![](./images/FilterIndicator.png)
-
-If slow requests were not detected during the tracing task, the following is displayed. Here, you can also view all requests.
-
-![](./images/solo_RecordedSession.png)
-
-
-<span class="notranslate">X-Ray</span> collects the following data for each request:
-
-* <span class="notranslate">**Top issues**</span> – the slowest items of a request
-* <span class="notranslate">**Software modules/plugins**</span> by execution time (only for WordPress plugins)
-* <span class="notranslate">**Database queries**</span> by execution time 
-* <span class="notranslate">**External requests**</span> by execution time
-* <span class="notranslate">**Other system functions**</span> by execution time 
-
-#### Software modules/plugins
-
-![](./images/XRaySoftwareModulesPlugins.png)
-
-The <span class="notranslate">_Software modules/plugins_</span> section displays the following data:
-
-* <span class="notranslate">**Software type**</span> – a type a module/plugin. For now, <span class="notranslate">X-Ray</span> can analyze only WordPress software
-* <span class="notranslate">**Software module**</span> – a name of the WordPress plugin
-* <span class="notranslate">**Duration**</span> – plugin execution time
-* <span class="notranslate">**Duration (%)**</span> – plugin execution time as a percentage of the total duration of the request
-
-#### Database queries
-
-![](./images/XRayDatabaseQueries.png)
-
-The <span class="notranslate">_Database queries_</span> section displays the following data:
-
-* <span class="notranslate">**Query**</span> – the executed SQL-query
-* <span class="notranslate">**File**</span> – the file and the line of the executed query and backtrace
-* <span class="notranslate">**Software module**</span> – a WordPress plugin name from which the request was completed. If the request does not belong to any of the WordPress plugin, the name of the function that executed the given request is displayed
-* <span class="notranslate">**Calls**</span> – the number of identical SQL queries
-* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
- 
-#### External requests
-
-![](./images/XRayExternalRequests.png)
-
-The <span class="notranslate">_External requests_</span> section displays the following data:
-
-* <span class="notranslate">**URL**</span> – the URL of the executed request
-* <span class="notranslate">**File**</span> – the file and the line of the executed request and backtrace
-* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
- 
-#### System functions
-
-![](./images/XRaySystemFunctions.png)
-
-The <span class="notranslate">_System functions_</span> section displays the following data:
-
-* <span class="notranslate">**Function**</span> – the executed function
-* <span class="notranslate">**File**</span> – the file and the line of the executed request
-* <span class="notranslate">**Duration**</span> – execution time as a percentage of the total duration of a request and the function processing time (in brackets)
-
-#### Stopping tracing task
-
-Click ![](./images/XRayStop.png) to stop the tracing task.
-
-![](./images/XRayStopped.png)
-
-The tracing task status will be changed to <span class="notranslate">**Stopped**</span>. Data will not be collected anymore but you can see already collected information or continue tracing later by clicking ![](./images/XRayStart.png).
-
-#### Deleting tracing task 
-
-Click ![](./images/XRayDelete.png) to delete the tracing task.
-
-:::warning Warning!
-When you have deleted a tracing task, all collected data will be unavailable.
-:::
-
-### Managing continuous tasks
-
-#### Creating a new continuous task
-
-1. Click the *Create continuous tracing*  button 
-
-![](./images/XRayCreateContinuousTaskBtn.png)
-
-2. Specify URL in the *Domain* field and email in the *Email for reports* field and click the *Create* button.
-
-![](./images/XRayCreateContinuousTaskForm.png)
-
-3. You can see a new task in the *Continuous tracing* tab in the X-Ray UI.
-
-![](./images/XRayContinuousTracingTab.png)
-
-4. If you stop a continuous tracing task, a new task for the next 24 hours will not be created. The task for the current day will be finished at midnight and the report will be emailed.
-
-5. If you delete a continuous tracing task, the task for the current day will be finished at midnight and the report will be emailed.
-
-#### Viewing continuous tasks list
-
-You can find a list of continuous tracing tasks in the _Continuous tracing_ tab.
-
-![](./images/XRayContinuousTracingTasksList.png)
-
-You can find automatically created tasks in the _Tracing tasks_ tab marked as _Automatically_ in the _Created_ column.
-
-![](./images/XRayContinuousTracingTasksListCreated.png)
-
-The [statuses for automatically created tasks](/solo/manager/#tracing-status) are the same as for tracing task.
-
-To view detailed info about an automatically created task, click ![](./images/XRayView1.png). You will get requests grouped by hour.
-
-![](./images/XRayContinuousTracingTasksListGrouped.png)
-
-Click to a group to open a list of the requests.
-
-![](./images/XRayContinuousTracingTasksRequestsList.png)
-
-The following data is collected for each request:
-
-* Software modules/plugins by execution time (only for WordPress plugins)
-* Database queries by execution time
-* External requests by execution time
-* Other system functions by execution time
-
-#### Stopping automatic tracing task
-
-Stopping automatic tracing task (a part of continuous tracing task) affects only the automatic tracing task for the current day. A new task for the next day will be created at the end of the day.
-
-To stop the continuous tracing task completely, see [Creating a new continuous task, paragraph 4](/solo/manager/#creating-a-new-continuous-task).
-
-
-#### Deleting automatic tracing task
-
-Deleting automatic tracing task (a part of continuous tracing task) affects only the automatic tracing task for the current day. A new task for the next day will be created at the end of the day.
-
-To delete the continuous tracing task completely, see [Creating a new continuous task, paragraph 5](/solo/manager/#creating-a-new-continuous-task).
-
-
-#### Continuous task daily report
-
-1. Users get daily reports on their emails. An example of a report is shown below:
-
-    ![](./images/XRayContinuousTaskDaylyReportExample.png)
-
-2. Click the link in the email to show the detailed report:
-
-    ![](./images/XRayContinuousTaskDaylyReportCollectedRequests.png)
-
-3. You can view requests grouped by hour:
-
-    ![](./images/XRayContinuousTaskDaylyReportByHourRequests.png)
-
-4. You can also view the detailed information about request:
-
-    ![](./images/XRayContinuousTaskDaylyReportRequestDetails.png)
-
-
-### X-Ray Autotracing
-
-X-Ray Autotracing automatically creates tracing tasks for slow URLs that were found during a day by the [PHP Slow Site Analyzer](/shared/lve_manager/#website-monitoring-tool-and-slow-site-analyzer) (SSA).
-
-:::warning Warning
-To use X-Ray Autotracing, update your alt-php-ssa and alt-php-xray packages to versions alt-php-ssa-0.2-1 and alt-php-xray-0.4-1 or higher by running the following command:
-```
-# yum update alt-php-ssa alt-php-xray --enablerepo=cloudlinux-updates-testing
-```
-:::
-
-#### How to enable X-Ray Autotracing
-
-To enable X-Ray Autotracing, run the following commands via SSH:
-
-```
-# /usr/sbin/cloudlinux-ssa-manager enable-ssa
-# /usr/sbin/cloudlinux-xray-autotracing enable --all
-```
-
-Check [CLI documentation](/solo/manager/#x-ray-autotracing-cli) for a description of the `/usr/sbin/cloudlinux-xray-autotracing` CLI utility.
-
-#### Requirements
-
-* CloudLinux OS Shared Pro or CloudLinux OS Solo
-* alt-php-ssa > 0.2-1 version
-* alt-php-xray > 0.4-1 version
-* Enabled PHP SSA on the server
-
-#### Autotracing Interface
-
-A new tab for Autotracing tasks was added to the X-Ray UI:
-
-
-![](./images/XRayAutotracingtaskstab.png)
-
-
-#### Autotracing FAQ
-
-Q: Why are the slow URLs in the Slow Site Analyzer report different from those on which the autotracing tasks were created?
-
-A: Because the autotracing decision module uses rules and thresholds different from Slow Site Analyzer, which are configured by the CloudLinux team.
-
-Q: How often autotracing tasks will be generated?
-
-A: Once a day at the same time as a Slow Site Analyzer report.
-
-
-#### X-Ray Autotracing CLI
-
-
-The `cloudlinux-xray-autotracing` utility allows to manage the X-Ray Autotracing via CLI.
-
-**Usage**
-
-```
-# /usr/sbin/cloudlinux-xray-autotracing [command] [--optional arguments]
-```
-
-**Commands**:
-
-| | |
-|-|-|
-|`enable`|Enable X-Ray Autotracing|
-|`disable`|Disable X-Ray Autotracing|
-|`status`|Get current status of the X-Ray Autotracing|
-
-**Optional arguments**:
-
-| | |
-|-|-|
-|`-h`, `--help`|Show help message and exit|
-|`--all`|Enable or disable for all users|
-|`{username}`|Enable/disable the specified user|
-|`--list-disabled`|Show list of disabled users|
-
-You can use the `-h`, `--help` option with commands to get a full list of available optional arguments for each command.
-
-**Example usage:**
-
-Disable user1:
-	
-```
-# /usr/sbin/cloudlinux-xray-autotracing disable user1
-{"result": "success"}
-```
-
-Show list of disabled users:
-	
-```
-# /usr/sbin/cloudlinux-xray-autotracing status --list-disabled
-{"result": "success", "disabled_users": ["user1"]}
-```
-	
-Enable all:
-
-```
-# /usr/sbin/cloudlinux-xray-autotracing enable --all
-{"result": "success"}
-```
-
-
-### X-Ray Smart Advice
-
-Smart advice is a new feature of X-Ray that is designed to find and propose solutions to fix performance issues and speed up the performance of a sites.
-
-:::tip Note
-Smart Advice will work only for CloudLinux OS Solo servers with cPanel or Plesk Control Panel for now.
-
-At the moment, Smart Advice is focused only on WordPress sites.
-:::
-
-:::warning Warning
-To use X-Ray Smart Advice, update your alt-php-ssa and alt-php-xray packages to versions alt-php-ssa-0.2-3 and alt-php-xray-0.5-1 or higher by running the following command:
-```
-# yum update alt-php-ssa alt-php-xray lve-utils lvemanager --enablerepo=cloudlinux-updates-testing
-```
-:::
-
-#### Requirements
-
-* CloudLinux OS Shared Pro or CloudLinux OS Solo
-* alt-php-xray > 0.5-1 version
-* lve-utils > 6.3.2-1 version
-* lvemanager > 7.6.1-1 version
-* cloudlinux-site-optimization-module > 0.1-1 version
-
-We Recommend:
-
-* Enable [X-Ray Autotracing](/solo/manager/#x-ray-autotracing) on the server
-* Use alt-php-ssa > 0.2-3 version
-
-#### How X-Ray Smart Advice works
-
-The main process of looking for advice is X-Ray tracing tasks. The best way for doing this is to enable X-Ray Autotracing. 
-This will allow you to most effectively find Smart Advice for sites that have performance issues without your manual participation. 
-You can find information on how to enable X-Ray Autotracing [here](/solo/manager/#how-to-enable-x-ray-autotracing).
-On the other hand, you can create tracing tasks manually or use continuous X-Ray but we suggest you use X-Ray Autotracing for this purpose.
-
-:::tip Note
-Advice will not be generated by old tracing tasks.
-:::
-
-While the tracing task is running, X-Ray will look for places where advice can be applied. New advice will be displayed on the *Smart Advice* tab. 
-
-
-#### Smart Advice FAQ
-
-Q: Why I can't see new advice on the *Smart Advice* tab?
-
-A: For the generating of advice, it is necessary to run X-Ray tracing tasks, the best way to do it without manual interaction is to use X-Ray Autoracing. You can find more information on how to enable X-Ray Autotracing [here](/solo/manager/#how-to-enable-x-ray-autotracing).
-
-#### Useful Smart Advice CLI commands
-
-:::warning Warning!
-This is an experimental feature. The backwards compatibility is not guaranteed.
-:::
-
-To obtain the full list of advice generated for your server use the following CLI command:
-
-```
-cl-smart-advice list
-```
-
-For each advice in the list the CLI command returns the following information:
-* `metadata`, which includes information about `username`, `domain` and `website` for which the advice is issued
-* `advice` information:
-  * its identifier `id`
-  * its `type`
-  * its `status` -- `review` or `applied`
-  * if advice is Premium `is_premium`
-  * other internal informational fields
-
-The example output is given below:
-
-```
-{
-  "data": [
-    {
-      "created_at": "2023-04-11T07:33:48.191870+00:00",
-      "updated_at": "2023-04-11T07:33:48.191870+00:00",
-      "metadata": {
-        "username": "user16",
-        "domain": "user16.com",
-        "website": "/wordpress"
-      },
-      "advice": {
-        "id": 23484,
-        "type": "OBJECT_CACHE",
-        "status": "review",
-        "description": "Turn on Object Caching",
-        "is_premium": true,
-        "module_name": "object_cache",
-        "subscription": {
-          "status": "no",
-          "upgrade_url": null
-        },
-        "total_stages": 0,
-        "completed_stages": 0,
-        "detailed_description": "To improve site performance, enable the Object Caching We recommend applying the advice if you see it frequen
-tly for the most valuable URLs of your site."
-      }
-    },
-    {
-      "created_at": "2023-04-11T07:33:48.297784+00:00",
-      "updated_at": "2023-04-11T08:51:42.362117+00:00",
-      "metadata": {
-        "username": "user16",
-        "domain": "user16.com",
-        "website": "/wordpress"
-      },
-      "advice": {
-        "id": 23485,
-        "type": "SITE_OPTIMIZATION",
-        "status": "applied",
-        "description": "Turn on AccelerateWP feature",
-        "is_premium": false,
-        "module_name": "accelerate_wp",
-        "total_stages": 0,
-        "completed_stages": 0,
-        "detailed_description": "To improve site performance, enable the AccelerateWP optimization feature. We recommend applying the advice if you see it frequently for the most valuable URLs of your site."
-      }
-    }
-  ],
-  "result": "success",
-  "timestamp": 1681203110
-}
-```
-
-
-### End-user X-Ray plugin
-
-Please refer to the [CloudLinux OS Solo user documentation](/user-docs/user-docs-solo-cloudlinux/#end-user-x-ray-plugin).
-
-
-### X-Ray client
-
-X-Ray client is a PHP extension named `xray.so`. It analyzes the processing time of the entire request and its parts and then sends the data to the X-Ray agent.
-
-#### List of supported PHP versions
-
-The list of currently supported PHP versions:
-
-| | | | | |
-|-|-|-|-|-|
-|**ALT PHP**:|**EA PHP**:|**Plesk PHP**|**DirectAdmin PHP**|**Other panels PHP**|
-| <ul><li>alt-php54</li><li>alt-php55</li><li>alt-php56</li><li>alt-php70</li><li>alt-php71</li><li>alt-php72</li><li>alt-php73</li><li>alt-php74</li></ul>|<ul><li>ea-php54</li><li>ea-php55</li><li>ea-php56</li><li>ea-php70</li><li>ea-php71</li><li>ea-php72</li><li>ea-php73</li><li>ea-php74</li></ul>|<ul><li>php54</li><li>php55</li><li>php56</li><li>php70</li><li>php71</li><li>php72</li><li>php73</li><li>php74</li></ul>|<ul><li>php54</li><li>php55</li><li>php56</li><li>php70</li><li>php71</li><li>php72</li><li>php73</li><li>php74</li></ul>|<ul><li>54</li><li>55</li><li>56</li><li>70</li><li>71</li><li>72</li><li>73</li><li>74</li></ul>|
-
-
-#### Functions that X-Ray client can hook
-
-#### Database queries
-
-* Functions from the [MySQL](https://www.php.net/manual/ru/book.mysql.php) extension:
-    * <span class="notranslate">`mysql_query`</span>
-    * <span class="notranslate">`mysql_db_query`</span>
-    * <span class="notranslate">`mysql_unbuffered_query`</span>
-* Functions from the [MySQLi](https://www.php.net/manual/ru/book.mysqli.php) extension:
-    * <span class="notranslate">`mysqli_query`</span>
-    * <span class="notranslate">`mysqli::query`</span>
-    * <span class="notranslate">`mysqli_multi_query`</span>
-    * <span class="notranslate">`mysqli::multi_query`</span>
-    * <span class="notranslate">`mysqli_real_query`</span>
-    * <span class="notranslate">`mysqli::real_query`</span>
-* Functions from the [PDO](https://www.php.net/manual/ru/book.pdo.php) extension:
-    * <span class="notranslate">`PDO::exec`</span>
-    * <span class="notranslate">`PDO::query`</span>
-    * <span class="notranslate">`PDOStatement::execute`</span>
-
-#### External requests
-
-* Function [curl_exec](https://www.php.net/manual/ru/function.exec)
-
-#### System PHP functions
-
-It may be any PHP system function which can be related to a PHP engine or other PHP extension, for example <span class="notranslate">`fopen()`</span> or <span class="notranslate">`json_encode()`</span>. A list of these functions can be found [here](https://www.php.net/manual/en/indexes.functions.php).
-
-#### Configuration Options
-
-<div class="notranslate">
-
-#### xray.enabled
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.enabled=On/Off`</span>
-
-**Default**: <span class="notranslate">On</span>
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Enable or disable <span class="notranslate">X-Ray</span> extension from php.ini
-
------
-
-<div class="notranslate">
-
-#### xray.database_queries
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.database_queries=[number]`</span>
-
-**Default**: 20
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The number of the slowest SQL queries which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
-
------
-
-<div class="notranslate">
-
-#### xray.external_requests
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.external_requests=[number]`</span>
-
-**Default**: 20
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The number of the slowest external requests (the curl_exec function) which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
-
------
-
-<div class="notranslate">
-
-#### xray.system_functions
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.system_functions=[number]`</span>
-
-**Default**: 20
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The number of the slowest system functions which will be sent to the <span class="notranslate">X-Ray</span> agent. 
-The min value is 0 and the max value is 100. If the variable value is more, the default value will be used.
-
------
-
-<div class="notranslate">
-
-#### xray.backtrace_depth
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.backtrace_depth=[number]`</span>
-
-**Default**: 10
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The backtrace depth to the main() function which will be sent to the <span class="notranslate">X-Ray</span> agent. The min value is 0 and the max value is 20. If the variable value is more, the default value will be used.
-
------
-
-<div class="notranslate">
-
-#### xray.processor
-
-</div>
-
-
-**Syntax**: <span class="notranslate">`xray.processor=[processor_name]`</span>
-
-**Default**: <span class="notranslate">xray</span>
-
-**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Tells the <span class="notranslate">X-Ray</span> client which processor to use. The new processors may be added in the future. The default processor is xray which means to send data to the <span class="notranslate">X-Ray</span> agent.
-
------
-
-<div class="notranslate">
-
-#### xray.tasks
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.tasks=host:uri:ip:id`</span>
-
-**Default**: <span class="notranslate">no value</span>
-
-**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: The current tracing tasks for the given PHP request. This directive is added automatically by the <span class="notranslate">X-Ray</span> manager when creating a task. It is not allowed to edit manually, as <span class="notranslate">X-Ray</span> may stop working.
-
------
-
-<div class="notranslate">
-
-#### xray.to_file
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.to_file=On/Off`</span>
-
-**Default**: <span class="notranslate">Off</span>
-
-**Changeable**:  <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Only for debug purposes. Writes to a file data which is sent to the processor.
-
------
-
-<div class="notranslate">
-
-#### xray.debug
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.debug=On/Off`</span>
-
-**Default**: <span class="notranslate">Off</span>
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Only for debug purposes. Enables debug output during request processing. In the On mode can slow down the domain.
-
------
-
-<div class="notranslate">
-
-#### xray.debug_file
-
-</div>
-
-**Syntax**: <span class="notranslate">`xray.debug_file=[path_to_file]`</span>
-
-**Default**: <span class="notranslate">`/tmp/xray-debug.log`</span>
-
-**Changeable**: <span class="notranslate">PHP_INI_SYSTEM</span>
-
-**Description**: Only for debug purposes. Specifies a file for logging debug information.
-
-
-### X-Ray agent 
-
-
-This is a service that receives data from the <span class="notranslate">X-Ray</span> client and sends it to the remote storage.
-
-#### Managing X-Ray service
-
-The <span class="notranslate">X-Ray</span> agent is managed by the <span class="notranslate">`service`</span> utility.
-
-* To start the <span class="notranslate">X-Ray</span> agent, run the following command:
-
-    <div class="notranslate">
-
-    ```
-    # service xray-agent start
-    ```
-    </div>
-
-* To stop the <span class="notranslate">X-Ray</span> agent, run the following command:
-
-    <div class="notranslate">
-
-    ```
-    # service xray-agent stop
-    ```
-    </div>
-
-* To restart the <span class="notranslate">X-Ray</span> agent, run the following command:
-
-    <div class="notranslate">
-
-    ```
-    # service xray-agent restart
-    ```
-    </div>
-
-### FAQ
-
-#### Does X-Ray affect website performance?
-
-<span class="notranslate">X-Ray</span> affects website performance. Our tests show 5-10 % overhead from a website loading time with <span class="notranslate">X-Ray</span> tracing enabled.
-<span class="notranslate">X-Ray</span> allows you to find website performance issues and should not be enabled permanently. If your website is very slow, you can enable <span class="notranslate">X-Ray</span> to find the cause and then disable it.
-
-#### What should I do if I see the warning "Task is duplicated by URL"?
-
-This warning means that you already have a task to trace this URL in the list of your tracing tasks. If you see this warning, a new task can be created only with the <span class="notranslate">_On hold_</span> status and you will be able to run it only when the previous task with the same URL will be completed.
-
-Note that the URL field supports wildcard matching and you can have a case when <span class="notranslate">X-Ray</span> is tracing the <span class="notranslate">`URL=domain.com/*`</span> and you are trying to create a new task with <span class="notranslate">`URL=domain.com/xray.php`</span>. In this case, you will see that warning because the `*` URLs array includes <span class="notranslate">`xray.php`</span>.
-
-####  I started a tracing task and made requests to URL but did not see any results in the UI. What should I do?
-
-1. Check that <span class="notranslate">**xray**</span> extension is enabled for the domain. To do so, go to the <span class="notranslate">`phpinfo()`</span> page and make a request. In the phpinfo output try to find the following section:
-   
-    ![](./images/XRayPHPInfo.png)
-
-If you cannot see that section, try to restart PHP processes for that user (the simplest way is to restart Apache) and check that you can see the <span class="notranslate">**xray**</span> extension.
-
-
-2. If you can see the <span class="notranslate">**xray**</span> extension in the phpinfo, check that <span class="notranslate">X-Ray</span> agent service is running with the service xray-agent status command. If it is not running, start it with the <span class="notranslate">`service xray-agent start`</span> command.
-3. <span class="notranslate">X-Ray</span> may not send data if a site uses a caching plugin, as the caching plugin is outputting HTML, thus there are no PHP scripts to examine. We encountered such issues with sites that use <span class="notranslate">LSCache</span> and <span class="notranslate">WP Super Cache</span> plugins. Check that your site does not use caching plugins. If so, disable it while tracing a site to get information from <span class="notranslate">X-Ray</span>.
-4. If you set a client’s IP when creating the tracing task, check that your requests come to the server with this IP via phpinfo (since there may be NAT between your local machine and the server).
-   
-    ![](./images/XRayPHPInfoRemoteAddr.png)
-
-5. If, after checking the previous items, the issue persists, [contact our support team](https://cloudlinux.zendesk.com/hc/en-us/requests/new).
-
-#### What to do if X-Ray is not found in the phpinfo() page?
-
-If you managed to create a tracing task, this means that the <span class="notranslate">`xray.ini`</span> file was created in a system. Therefore, there may be two reasons why it did not appear in the phpinfo page of the domain.
-
-1. PHP process wasn't reloaded after adding the xray.ini. To solve this, you should restart the Apache or fpm service for the domain on which the tracing was started. At the moment, this is done automatically by the <span class="notranslate">X-Ray</span> manager after creating the task.
-2. Your domain uses a PHP version different from the one which was detected by the <span class="notranslate">X-Ray</span> manager. To solve this, check the scan dir for additional ini files for your domain.
-
-    ![](./images/XRayScanDir.png)
-
-    Then check the <span class="notranslate">`ini_location`</span> that was passed to the <span class="notranslate">X-Ray</span> manager by running the following command:
-
-    <div class="notranslate">
-
-    ```
-    # cat /usr/share/alt-php-xray/manager.log | grep ini_location
-    ```
-    </div>
-
-    Find your tracing task in the output and check that the <span class="notranslate">`xray.ini`</span> exists in this directory, also check that the `ini` path is the same in the phpinfo page output and in the <span class="notranslate">`ini_location`</span> directive for your tracing task. If they are the same, you should reload your PHP. If they are different that means that the <span class="notranslate">X-Ray</span> manager could not correctly determine the PHP version your domain uses. In this case, contact our support team at [https://cloudlinux.zendesk.com/hc/requests/new](https://cloudlinux.zendesk.com/hc/requests/new).
-
-
-#### I use LiteSpeed, X-Ray is enabled and it is shown in the phpinfo() page but does not collect data when sending requests to a site. What to do?
-
-Check for the <span class="notranslate">`CacheLookup on`</span> option in the `htaccess` file for your domain.
-If the option is there, LiteSpeed processes requests bypassing the PHP X-Ray extension.
-In this case, to get tracing information, you should remove the <span class="notranslate">`CacheLookup on`</span> option.
-
-#### What is the proper format for the URL?
-
-All of the examples below are correct:
-
-* `http://domain.com`
-* `http://domain.com/`
-* `https://domain.com`
-* `https://domain.com/`
-
-You can use any of them with a prefix `www.` and it is also correct.
-
-
-## AccelerateWP
-
-### Get started
-
-AccelerateWP carries a suite of optimization features that can be enabled and automatically configured for the end-user's site.
-
-There are AccelerateWP and AccelerateWP Premium feature suites.
-
-AccelerateWP suite is always enabled when AccelerateWP is turned on. Choose whether you want to offer AccelerateWP Premium 
-for your users and click "Turn on" to start exploring AccelerateWP. 
-
-![](./images/awp/AWPGettingStarted.png)
-
-Once the AccelerateWP suite is enabled by administrator,
-end-users will see an AccelerateWP tab in their cPanel interface and be able to activate the optimization feature.
-
-When AccelerateWP Premium suite enabled by administrator, 
-end-users will see the Object Caching feature in their interface, 
-but cannot install the plugin unless they purchase the feature using WHMCS or 3'd party billing.
-
-#### AccelerateWP suite
-This is a basic suite which includes [AccelerateWP base feature](/user-docs/user-docs-shared-cloudlinux/#acceleratewp-feature-wordpress-optimization-plugin): 
-a WordPress optimization plugin that provides full page caching, GZIP compression and some other useful optimizations.
-
-**AccelerateWP suite limitations**
-* the website must be served with Apache web server;
-* the website must use PHP version 7.2 or higher.
-* the WordPress version must be 5.6 and higher.
-* the other WordPress Caching plugins must not be installed.
-* the WordPress should not run in Multisite mode.
-
-#### AccelerateWP Premium suite
-
-:::warning Attention
-This feature is free of charge only during the beta testing period. 
-Afterwards it will be charged. Beta testing period ends no earlier than March 2023.
-:::
-
-This is a premium suite which includes [Object Caching feature](/user-docs/user-docs-shared-cloudlinux/#acceleratewp-premium-object-caching-feature).
-
-The Object Caching mechanism stores database query results in additional storage for quick access. 
-This mechanism is really helpful in case if website needs to process multiple pages per second as 
-requests come in and may be helpful in case when full page caching cannot be used, e.g. on personalized pages.
-
-**Premium suite limitations**
-
-
-* the website must be served with Apache web server;
-* the website must use one of the following PHP handlers:
-  * [php-fpm](https://blog.cpanel.com/how-to-use-php-fpm-with-cpanel/)
-  * [lsapi](/shared/cloudlinux_os_components/#apache-mod-lsapi-pro)
-* the website must use ea-PHP version 7.4 or 8.0.
-* the WordPress version must be 3.7 and higher.
-* the other WordPress Caching plugins must not be installed.
-* the [Snuffleupagus](https://snuffleupagus.readthedocs.io/) must be turned off.
-* the WordPress should not run in Multisite mode.
-
-
-
-### Limitations
-There are the following requirements to use AccelerateWP:
-* the server must have CloudLinux Shared PRO license;
-* the server must be powered with cPanel.
-
-
-### Administrator interface
-
-#### Overview
-
-In the _CloudLinux Manager → AccelerateWP_ tab Administrator has the opportunity to provide end-user with suites of features, which on its turn could be activated by end-user. To provide best experience,
-[activate free features for all WordPress sites](/solo/manager/#activate-free-acceleratewp-for-all-wordpress-sites-on-the-server).
-
-
-![](./images/AWPAdminSolo.png)
-
-
-By toggling the `Enable AccelerateWP for all users` an administrator provides end-users with AccelerateWP feature.
-Once the feature suite is enabled by administrator, end-users will see an AccelerateWP tab in their cPanel interface and be able to activate the optimization feature.
-
-#### Suites usage statistics
-When AccelerateWP is enabled, the AccelerateWP usage statistics is shown.
-
-![](./images/awp/AWPStats.png)
-
-It includes:
-* `Active Users` block with total number of users and number of users who has activated the optimization feature/total users
-* `Wordpress sites on server` block with total number of WordPress sites and WordPress sites optimized by the feature
-* statistics table
-
-Each row in the statistics table represents a particular user.
-
-The first column `#of Wordpress sites` shows total number of user's WordPress sites.
-
-The second column `AccelerateWP` shows number of user's WordPress sites, optimized by the feature.
-
-In case if both AccelerateWP and AccelerateWP Premium feature suites are enabled, 
-the statistics is extended with AccelerateWP Premium metrics.
-
-![](./images/awp/AWPStatsPremium.png)
-
-Please notice the `AccelerateWP Premium` rows in the `Active Users` and the `Wordpress sites on server` 
-blocks, and also the `AccelerateWP Premium` column in statistics table.
-
-:::tip Note
-Newly created users will be accounted for 10 min after adding. 
-If you want to get updated statistics immediately, use the "Rescan users websites" button.
-:::
-
-#### Filters
-You may use the following filters to browse AccelerateWP statistics slices.
-
-![](./images/awp/AWPFilters.png)
-
-* `Users with WordPress sites only` filter will show statistics for users which already have WordPress sites; users without WordPress installations will be hidden
-* `Users with AccelerateWP only` filter will show statistics for users who utilizes the AccelerateWP optimization feature; users who did not activated AccelerateWP feature will be hidden
-* `Users with AccelerateWP Premium only` filter will show statistics for users who utilizes AccelerateWP Premium (Object Caching) feature; users who did not activated AccelerateWP Premium feature will be hidden
-
-
-
-### Activate free AccelerateWP for all WordPress sites on the server
-Use the `cloudlinux-awp-admin enable-feature` CLI command to
-ensure the best performance for every WordPress site. CLI command
-scans a server for all WP sites and activates the AccelerateWP
-feature suite. It can take up to 2 minutes for a single site.
-CLI command skips activation for WordPress sites with
-page caching or feature incompatibilities.
-
-Scan the server in background mode and activate AccelerateWP
-on those WordPress sites where it is possible:
-```
-cloudlinux-awp-admin enable-feature --all
-```
-The output will denote the
-progress state of the process.
-
-Check activation status:
-```
-cloudlinux-awp-admin enable-feature --status
-```
-The output will be either:
-* Activation is still in progress,
-* Activation is done. The message will state how many users
-were initially for the scan, a number of WordPress sites with
-successfully activated suite, and the total number of WordPress sites
-scanned.
-
-### Disable AccelerateWP for a particular user
-Use CLI commands to disable undesired optimization suites for a single user.
-
-To disable AccelerateWP suite:
-```
-cloudlinux-awp-admin set-suite --suite=accelerate_wp --disallowed --users=<username>
-```
-
-To disable AccelerateWP Premium suite:
-```
-cloudlinux-awp-admin set-suite --suite=accelerate_wp_premium --disallowed --users=<username>
-```
-
-To disable both suites:
-```
-cloudlinux-awp-admin set-suite --suite=accelerate_wp,accelerate_wp_premium --disallowed --users=<username>
-```
-
-### Useful AccelerateWP CLI commands
-Use CLI commands to check AccelerateWP features status.
-
-If you are also interested in Smart Advice CLI command, they could be found [here](/manager/#useful-smart-advice-cli-commands).
-
-:::warning Warning!
-This is an experimental feature. The backwards compatibility is not guaranteed.
-:::
-
-#### AccelerateWP suites statistics
-
-Get suites statistics:
-```
-cloudlinux-awp-admin get-report --all
-```
-
-This CLI command returns the following information:
-* `suites` visibility status
-  * possible values for visibility status are: `visible`, `allowed`, `disabled`
-
-The example output is given below:
-
-```
-{
-    "result": "success",
-    "suites": {
-        "accelerate_wp": {
-            "source": "default",
-            "status": "allowed"
-        },
-        "accelerate_wp_premium": {
-            "source": "default",
-            "status": "visible"
-        }
-    },
-    "timestamp": 1681216482.2929366
-}
-```
-
-#### AccelerateWP features statistics
-
-Get overall AccelerateWP features usage statistics for a server with:
-
-```
-cloudlinux-awp-admin get-stat
-```
-
-This CLI command returns the following information:
-* number of `allowed_users` in `total` and per feature
-* number of sites with enabled features in `total` and per feature -- `enabled_sites`
-* number of users with visible features in `total` and per feature -- `visible_users`
-* features which are currently allowed -- `features_allowed_by_default`
-* features which are currently visible -- `features_visible_by_default`
-
-The example output is given below:
-
-```
-{
-    "allowed_users": {
-        "object_cache": 0,
-        "site_optimization": 1,
-        "total": 1
-    },
-    "enabled_sites": {
-        "object_cache": 0,
-        "site_optimization": 1,
-        "total": 1
-    },
-    "features_allowed_by_default": [
-        "site_optimization"
-    ],
-    "features_visible_by_default": [
-        "object_cache",
-        "site_optimization"
-    ],
-    "is_accelerate_wp_flag_enabled": false,
-    "is_accelerate_wp_icon_enabled": true,
-    "result": "success",
-    "timestamp": 1681208259.19426,
-    "visible_users": {
-        "object_cache": 1,
-        "site_optimization": 1,
-        "total": 1
-    }
-}
-```
-
-#### AccelerateWP features detailed statistics
-
-AccelerateWP features detailed statistics is available in user's environment only.
-
-Use the following CLI command **_on behalf of a user_**:
-
-```
-cloudlinux-awp-user get
-```
-
-The command reports:
-* features allowed for a user -- `allowed_features`
-* all user's websites `docroots` with features information per each `wps`, which includes:
-  * status of each feature -- if the feature is `enabled`, if the feature is `visible`
-  * issues detected (if any) for each feature
-* subscription status (for premium features) -- `subscription`
-* features visible for a user -- `visible_features`
-
-The example output is given below:
-
-```
-{
-    "allowed_features": {
-        "accelerate_wp": [],
-        "accelerate_wp_premium": []
-    },
-    "docroots": [
-        {
-            "domains": [
-                "user0.com"
-            ],
-            "php_handler": "fastcgi",
-            "php_version": "plesk-php73-fastcgi",
-            "wps": [
-                {
-                    "features": {
-                        "accelerate_wp": {
-                            "enabled": false,
-                            "issues": [
-                                {
-                                    "context": {
-                                        "plugins": "WP Rocket"
-                                    },
-                                    "description": "Found conflicting plugins: %(plugins)s.",
-                                    "fix_tip": "Deactivate and uninstall the conflicting plugin using the WordPress administration interface.",
-                                    "header": "Conflicting plugins are enabled",
-                                    "type": "incompatibility"
-                                }
-                            ],
-                            "visible": true
-                        },
-                        "object_cache": {
-                            "enabled": false,
-                            "issues": [
-                                {
-                                    "context": {
-                                        "blog_url": "https://blog.cloudlinux.com/",
-                                        "supported_handlers": "php-fpm, lsapi"
-                                    },
-                                    "description": "Website uses unsupported PHP handler. Currently supported handler(s): %(supported_handlers)s.",
-                                    "fix_tip": "Please, set or ask your system administrator to set one of the supported PHP handlers for the domain: %(supported_handlers)s. Or keep watching our blog: %(blog_url)s for supported handlers list updates.",
-                                    "header": "Unsupported PHP handler",
-                                    "type": "incompatibility"
-                                }
-                            ],
-                            "visible": true
-                        }
-                    },
-                    "path": "wordpress",
-                    "version": "6.2"
-                }
-            ]
-        },
-        {
-            "domains": [
-                "sub.user0.com"
-            ],
-            "php_handler": "fastcgi",
-            "php_version": "plesk-php73-fastcgi",
-            "wps": []
-        }
-    ],
-    "max_cache_memory": "64mb",
-    "result": "success",
-    "subscription": {
-        "object_cache": "no"
-    },
-    "timestamp": 1681200081.765476,
-    "upgrade_url": null,
-    "used_memory": null,
-    "visible_features": {
-        "accelerate_wp": [
-            "accelerate_wp"
-        ],
-        "accelerate_wp_premium": [
-            "object_cache"
-        ]
-    }
-}
-```
-
-### WHMCS billing
-
-CloudLinux developed it's own WHMCS plugin 
-which provides you AccelerateWP billing integration out of the box. 
-Check out [the documentation](/cln/whmcs_awp_plugin/) to find how to install and use the plugin.
-
-### Other billing integration
-
-As AccelerateWP Premium is the feature that works on subscription basis, 
-we made it possible for hosters to integrate their existing billing systems with our plugin and sell the 
-feature for their users.
-
-When AccelerateWP Premium is enabled in admin interface, users get proposal to upgrade their subscription.
-
-![](./images/awp/AWPUpgradeNoLink.png)
-
-When user upgrades the subscription to the plan with AccelerateWP support, 
-billing must execute the following command on the server:
-```
-cloudlinux-awp-admin set-suite --suite=accelerate_wp_premium --allowed --source=BILLING_OVERRIDE --users=<username>
-```
-
-This command makes two things:
-- allow user to install plugin, bypassing the upgrade window;
-- reports premium as being used to CLN, starting the billing cycle for hoster.
-
-
-When user terminates or downgrades plan, the following command must be executed by the billing system:
-```
-cloudlinux-awp-admin set-suite --suite=accelerate_wp_premium --default --source=BILLING_OVERRIDE --users=<username>
-```
-
-### Setup upgrade URL for AccelerateWP Premium
-
-The upgrade window can be customized with link to the plan upgrade page, which can be set using CLI command:
-
-```
-cloudlinux-awp-admin set-options --upgrade-url https://plan.upgrade/splash
-```
-
-![](./images/awp/AWPUpgradeLink.png)
-
-AccelerateWP automatically appends GET parameters when the link is displayed.
-
-```
-https://plan.upgrade/splash/?m=acceleratewp&action=provisioning&username=democom&domain=demo.com&server_ip=10.51.0.10
-```
-
-| Parameter | Value        | Description                                              |
-|-----------|--------------|----------------------------------------------------------|
-| m         | acceleratewp | Constant.                                                |
-| action    | provisioning | Constant.                                                |
-| username  | democom      | Customer's account name.                                 |
-| domain    | demo.com     | Customer's account primary domain.                       |
-| server_ip | 10.51.0.10   | Primary IP of the server where AccelerateWP is installed |
-
-Parameters can be used to determine the billing account of the user in order to display proper page. 
-WHMCS plugin already has automatic redirect to upgrade page, there is only needed to set upgrade-url 
-to the root of your WHMCS instance.
-
-```
-cloudlinux-awp-admin set-options --upgrade-url https://whmcs.mydomain.zone/
-```
-
-Upgrade URL is opened in modal browser window and will be automatically closed
-when AccelerateWP receives callback about successful upgrade.
-
-Callback is already implemented in WHMCS plugin, but if you are using some other billing,
-you should add the following code on the page which appears when user successfully upgrades subscription.
-
-    <script>
-    if(window.opener && !window.opener.closed) {
-        window.opener.postMessage('PAYMENT_SUCCESS', '*');
-    }
-    </script>
-
-
-In order to remove the link, just set upgrade url to the empty one.
-
-```
-cloudlinux-awp-admin set-options --upgrade-url ''
-```
-
-### Disable AccelerateWP Premium
-
-If you would like to stop using AccelerateWP Premium, 
-click on the `manage` link and remove `Premium Features` checkbox.
-AccelerateWP will be still available for your users.
-
-![](./images/awp/AWPDisablePremiumOnly.png)
-
-### Disable AccelerateWP
-
-If you would like to stop using AccelerateWP completely, toggle the `AccelerateWP` back.
-Both AccelerateWP and AccelerateWP Premium will be turned off.
-
-![](./images/awp/AWPDisable.png)
-
-This operation will:
-* disable AccelerateWP tab in users' control panel interface
-* disable all AccelerateWP optimization suites
-* deactivate all optimization features for all users
-
-This operation will NOT:
-* cancel the subscription made by user in WHMCS or other billing. User's subscription stays 
-  alive and user will still be charged in billing system unless hoster manually makes a refund
-
-
-### Logs
-The main AccelerateWP log is located at
-* `/var/log/clwpos/main.log`
-
-
-In case if AccelerateWP Premium is active, the auxiliary monitoring daemon `clwpos_monitoring` is also activated. Its log is located at
-* `/var/log/clwpos/daemon.log`
-
-
-### FAQ
-
-#### With which panel can I use AccelerateWP?
-
-Currently AccelerateWP is compatible with cPanel and Plesk only.
-
-If you are interested in supporting DirectAdmin control panel, please record your demand on our feature portal respectively:
-* [AccelerateWP for DirectAdmin](https://features.cloudlinux.com/c/15-acceleratewp-for-directadmin?utm_medium=social&utm_source=portal_share)
-
-#### Is it possible to use AccelerateWP on a non-control panel server?
-No, AccelerateWP is compatible with cPanel and Plesk only.
-
-
-#### Do you plan to enable support of Nginx server?
-This is a part of our very long term plans, thus not expected in the nearest future.
-
-#### How will it help my customers?
-AccelerateWP is a complex solution to help your customers increase their WordPress site performance. AccelerateWP brings number of optimization features, like object caching, css and js preprocessing and website preloading.
-
-#### How could I monitor Redis instances while using AccelerateWP Premium suite?
-Redis process is started for a user after activating AccelerateWP Premium Object Caching feature for at least one Wordpress site.
-It is killed after AccelerateWP Premium Object Caching has been deactivated for all user's websites.
-
-Look through the processes list to check Redis status for a particular user:
-```
- $ ps aux | grep redis
- awpuser  2662517  0.0  0.5 101096  8512 ?        Sl   15:33   0:00 /opt/alt/redis/bin/redis-server unixsocket:/home/awpuser/.clwpos/redis.sock
-```
-In case if AccelerateWP Premium is active, the auxiliary monitoring daemon `clwpos_monitoring` is also activated. It checks Redis instances each 5 minutes, starts new instances, restart failed ones and kills the “garbage” instances if needed.
-Check daemon status using `service clwpos_monitoring status` and its main log: `/var/log/clwpos/daemon.log`.
-
-
-### Troubleshooting
-
-#### My users are complaining that their feature are not installed automatically after subscription upgrade
-This can be caused by several reasons. Either your customer's website was detected to have malfunctions
-or there was an issue with environment when feature was installed 
-(e.g. bad internet connectivity with wordpress market).
-
-First, try to enable feature manually using AccelerateWP interface. 
-Most likely you will find human-readable error message there.
-
-Next, you can try to dive into `/var/log/clwpos/daemon.log` and find the reason why the `enable` command failed.
-Here is an example of successful feature installation for reference:
-
-
-    2023-02-14 11:01:14,696: (clwpos.daemon_base) [INFO] Running cloudlinux-awp-user enable --feature object_cache --domain wpujj.com --wp-path
-    2023-02-14 11:01:15,081: (clwpos.daemon_base) [INFO] Command succeded with output:
-    `CompletedProcess(args=['/bin/cagefs_enter.proxied', 'cloudlinux-awp-user', 'enable', '--feature', 'object_cache', '--domain', 'wpujj.com', '--wp-path', ''], returncode=0, stdout='{\n    "context": {\n        "domain": "wpujj.com",\n        "feature": "object_cache"\n    },\n    "result": "success",\n    "timestamp": 1676372475.044419,\n \n}\n', stderr='')`
-    2023-02-14 11:01:15,086: (clwpos.daemon_base) [INFO] background process finished: pid=415368
-
-Also, some useful notes may be present in user's log located at `/home/<username>/.clwpos/main.log`.
-
-If the issue persists, or you cannot resolve it yourself, 
-contact CloudLinux support and attach `/var/log/clwpos/daemon.log` and `/home/<username>/.clwpos/main.log` 
-for further investigation.
-
-#### End-users of AccelerateWP Premium feature encounter Redis extension is not installed for selected php version
-In order to make use of AccelerateWP Premium Object Caching feature, the loaded Redis extension is required for the end-user's website.
-End-users will not be able to activate the Object Caching feature until Redis extension configuration is incomplete.
-
-Corresponding incompatibility warning will be displayed in control panel's User interface:
-
-![](./images/awp/AWPNoRedis.png)
-
-The Redis extensions are configured for all installed and supported PHP versions automatically:
-* right after the AccelerateWP Premium suite is enabled
-* by cron once a day
-
-or you can trigger the utility manually:
-```
-/usr/sbin/enable_redis_for_panel_php
-```
-
-All errors will be displayed in standard output and logged into `/var/log/clwpos/main.log`.
-
-
-**Ensuring the EA-PHP Redis extension is configured correctly**
-
-1. Check Redis extension package is installed by running the following command
-
-    ```
-    rpm -q ea-phpXY-php-redis
-    ```
-    Install the corresponding extension if it is not present:
-    ```
-    yum install ea-phpXY-php-redis
-    ```
-    Consider the example for checking out and installing Redis extension for `ea-php74`: 
-    ```
-    rpm -q ea-php74-php-redis
-    yum install ea-php74-php-redis
-    ```
-2. Check Redis `ini` file is present by running the following command:
-    ```
-    ls /opt/cpanel/ea-phpXY/root/etc/php.d/ | grep 50-redis
-    ```
-    Consider the example for checking out Redis extension for `ea-php74`: 
-    ```
-    ls /opt/cpanel/ea-php74/root/etc/php.d/ | grep 50-redis
-    ```
-    Try reinstalling the package if `ini` file is missing.
-3. Make sure Redis module is loaded under specific user by running the following command:
-    ```
-    su -c "php -m | grep redis" <username>
-    ```
-
-
-**Ensuring the ALT-PHP Redis extension is configured correctly**
-
-1. Check if `redis.so` is present for a particular alt-php version:
-    ```
-    ls /opt/alt/phpXY/usr/lib64/php/modules | grep redis.so
-    ```
-    Consider the example for checking alt-php74 redis.so:
-    ```
-    # ls /opt/alt/php74/usr/lib64/php/modules | grep redis.so
-    redis.so
-    ```
-2. If the Redis module is missing:
-   
-   a. Install the `alt-phpXY-pecl-ext` package manually
-   b. Run the Redis configuration script `/usr/share/cloudlinux/wpos/enable_redis_for_alt_php.py` 
-      
-   All errors will be displayed in standard output and logged into `/var/log/clwpos/main.log`.
-3. If the Redis module is present for a particular php version, but the incompatibility issue persists, re-check the following:
-    
-    a. Make sure the Redis module is loaded under user:
-    ```
-    su -c "php -m | grep redis" <username>
-    ```
-    b. Check the required extensions are enabled in `php.ini`:
-    ```
-    cat /opt/alt/phpXY/etc/php.ini | grep redis.so
-    cat /opt/alt/phpXY/etc/php.ini | grep json.so
-    cat /opt/alt/phpXY/etc/php.ini | grep igbinary.so
-    ```
-    
-    c. Enable missing extensions manually.
-
-
-#### End-users of AccelerateWP encounter PHP-related issues during feature activation
-End-users may encounter PHP-related errors while activating the AccelerateWP features.
-
-![](./images/awp/AWPBrokenPHP.png)
-
-The general examples of possible reasons are:
-* broken PHP binaries
-* missing PHP files
-* etc.
-
-To check that this issue is caused by PHP itself, call any PHP command, example for cPanel:
-```
-/opt/cpanel/ea-php80/root/usr/bin/php -i
-```
-And make sure that installed `ea-php80` packages are not broken using
-`rpm -V <package_name>`.
-
-Reinstall broken packages if found.
-
-Consider the example issue (presented at the picture above) with broken `mbstring.so` for `ea-php80`:
-```
-# /opt/cpanel/ea-php80/root/usr/bin/php -i
-Segmentation fault (core dumped)
-# rpm -V ea-php80
-# rpm -V ea-php80-php-mbstring
-S.5....T.    /opt/cpanel/ea-php80/root/usr/lib64/php/modules/mbstring.so
-......G..  a /usr/lib/.build-id/9c/38ed78a6d401ff6dce059ccea51c95870d98c5
-# yum reinstall ea-php80-php-mbstring
-```
-
-
-### AccelerateWP for End-Users
-
-Please find the AccelerateWP Suite End-User documentation [here](/user-docs/user-docs-solo-cloudlinux/).
-
-## PHP Selector
-
-* [Overview](/solo/manager/#php-selector-overview)
-* [How to enable PHP Selector](/solo/manager/#how-to-enable-php-selector)
-* [PHP Handlers](/solo/manager/#php-handlers)
-* [Administrator interface](/manager/#selector-admin-interface)
-
-### Overview
-
-PHP Selector is a CloudLinux component which allows users to select  PHP versions and modules for  particular user’s domains. These PHP versions are provided by CloudLinux and  in the list there are newest as well as outdated versions.
-
-### How to enable PHP selector
-
-PHP selector is available for SOLO starting from these versions:
-
-```
-liblve-2.1-12
- alt-python27-cllib@3.2.40-1 
- lve-wrappers #0.7.8-1
- lve-utils #6.4.6-1
- cagefs #7.5.2-1
- lvemanager #7.8.3-1
-```
-
-**To start working with CloudLinux PHP Selector:**
-
-1.  Update packages
-```
-yum update lvemanager lve-utils alt-python27-cllib
-```
-
-2. Open CloudLinux manager -> Selector tab -> Select PHP versions to install.
-
-![](./images/solo_php_selector_1.png)
-
-### PHP Handlers
-
-#### Compatibility matrix
-
-|**Web Server**|**PHP Selector**|
-|:-:|:-:|
-|Apache/suPHP|Yes|
-|Apache/FCGID|Yes|
-|Apache/CGI|Yes|
-|Apache/mod_lsapi|Yes|
-
-#### How to install Apache modules 
-
-You can use cPanel interface:
-
-![](./images/solo_php_selector_2.png)
-
-### Administrator interface
-
-In the Selector tab the diagnostic bar help to monitor configuration of PHP Selector
-
-![](./images/solo_php_selector_3.png)
-
-The Main Settings helps to monitor next settings
-
-![](./images/solo_php_selector_4.png)
-
-![](./images/solo_php_selector_5.png)
diff --git a/docs/solo/manager/images/.DS_Store b/docs/solo/manager/images/.DS_Store
deleted file mode 100644
index a8955f7cf..000000000
Binary files a/docs/solo/manager/images/.DS_Store and /dev/null differ
diff --git a/docs/solo/manager/images/AWPAdminSolo.png b/docs/solo/manager/images/AWPAdminSolo.png
deleted file mode 100644
index b78c5f2e3..000000000
Binary files a/docs/solo/manager/images/AWPAdminSolo.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPBrokenPHP.d69c93c1.png b/docs/solo/manager/images/AWPBrokenPHP.d69c93c1.png
deleted file mode 100644
index 41ab367ec..000000000
Binary files a/docs/solo/manager/images/AWPBrokenPHP.d69c93c1.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPDisable.8d6e3701.png b/docs/solo/manager/images/AWPDisable.8d6e3701.png
deleted file mode 100644
index 7372711b0..000000000
Binary files a/docs/solo/manager/images/AWPDisable.8d6e3701.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPDisablePremiumOnly.29475d2a.png b/docs/solo/manager/images/AWPDisablePremiumOnly.29475d2a.png
deleted file mode 100644
index d3e2a03cc..000000000
Binary files a/docs/solo/manager/images/AWPDisablePremiumOnly.29475d2a.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPFilters.ddf8451a.png b/docs/solo/manager/images/AWPFilters.ddf8451a.png
deleted file mode 100644
index 2b7d3d3c1..000000000
Binary files a/docs/solo/manager/images/AWPFilters.ddf8451a.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPGettingStarted.df20613a.png b/docs/solo/manager/images/AWPGettingStarted.df20613a.png
deleted file mode 100644
index 9bf1561ac..000000000
Binary files a/docs/solo/manager/images/AWPGettingStarted.df20613a.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPNoRedis.8fb30039.png b/docs/solo/manager/images/AWPNoRedis.8fb30039.png
deleted file mode 100644
index 903b43202..000000000
Binary files a/docs/solo/manager/images/AWPNoRedis.8fb30039.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPStats.88c80ca6.png b/docs/solo/manager/images/AWPStats.88c80ca6.png
deleted file mode 100644
index 2f70ecd31..000000000
Binary files a/docs/solo/manager/images/AWPStats.88c80ca6.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPStatsPremium.67c9ebd7.png b/docs/solo/manager/images/AWPStatsPremium.67c9ebd7.png
deleted file mode 100644
index 7543dfd6b..000000000
Binary files a/docs/solo/manager/images/AWPStatsPremium.67c9ebd7.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPUpgradeLink.f34baf60.png b/docs/solo/manager/images/AWPUpgradeLink.f34baf60.png
deleted file mode 100644
index e1662470a..000000000
Binary files a/docs/solo/manager/images/AWPUpgradeLink.f34baf60.png and /dev/null differ
diff --git a/docs/solo/manager/images/AWPUpgradeNoLink.914ceca7.png b/docs/solo/manager/images/AWPUpgradeNoLink.914ceca7.png
deleted file mode 100644
index 804f104f0..000000000
Binary files a/docs/solo/manager/images/AWPUpgradeNoLink.914ceca7.png and /dev/null differ
diff --git a/docs/solo/manager/images/FilterIndicator.png b/docs/solo/manager/images/FilterIndicator.png
deleted file mode 100644
index a8b031801..000000000
Binary files a/docs/solo/manager/images/FilterIndicator.png and /dev/null differ
diff --git a/docs/solo/manager/images/Webmonitoringtoolalert.png b/docs/solo/manager/images/Webmonitoringtoolalert.png
deleted file mode 100644
index 358945602..000000000
Binary files a/docs/solo/manager/images/Webmonitoringtoolalert.png and /dev/null differ
diff --git a/docs/solo/manager/images/Webmonitoringtoolemail.png b/docs/solo/manager/images/Webmonitoringtoolemail.png
deleted file mode 100644
index bc7852550..000000000
Binary files a/docs/solo/manager/images/Webmonitoringtoolemail.png and /dev/null differ
diff --git a/docs/solo/manager/images/Webmonitoringtoolsettings.png b/docs/solo/manager/images/Webmonitoringtoolsettings.png
deleted file mode 100644
index 53d575a1e..000000000
Binary files a/docs/solo/manager/images/Webmonitoringtoolsettings.png and /dev/null differ
diff --git a/docs/solo/manager/images/WebsiteMonitoringMain.png b/docs/solo/manager/images/WebsiteMonitoringMain.png
deleted file mode 100644
index 12410c6dc..000000000
Binary files a/docs/solo/manager/images/WebsiteMonitoringMain.png and /dev/null differ
diff --git a/docs/solo/manager/images/WebsiteMonitoringSlider.png b/docs/solo/manager/images/WebsiteMonitoringSlider.png
deleted file mode 100644
index 865bbe95b..000000000
Binary files a/docs/solo/manager/images/WebsiteMonitoringSlider.png and /dev/null differ
diff --git a/docs/solo/manager/images/WebsiteMonitoringSlider1.png b/docs/solo/manager/images/WebsiteMonitoringSlider1.png
deleted file mode 100644
index b86ee1b18..000000000
Binary files a/docs/solo/manager/images/WebsiteMonitoringSlider1.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayAdvanced.png b/docs/solo/manager/images/XRayAdvanced.png
deleted file mode 100644
index 00fe9e3be..000000000
Binary files a/docs/solo/manager/images/XRayAdvanced.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayAutotracingtaskstab.png b/docs/solo/manager/images/XRayAutotracingtaskstab.png
deleted file mode 100644
index 4b3bc9400..000000000
Binary files a/docs/solo/manager/images/XRayAutotracingtaskstab.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTaskDaylyReportByHourRequests.png b/docs/solo/manager/images/XRayContinuousTaskDaylyReportByHourRequests.png
deleted file mode 100644
index d852896b6..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTaskDaylyReportByHourRequests.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTaskDaylyReportCollectedRequests.png b/docs/solo/manager/images/XRayContinuousTaskDaylyReportCollectedRequests.png
deleted file mode 100644
index b23ce70fc..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTaskDaylyReportCollectedRequests.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTaskDaylyReportExample.png b/docs/solo/manager/images/XRayContinuousTaskDaylyReportExample.png
deleted file mode 100644
index 9e9e86ef6..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTaskDaylyReportExample.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTaskDaylyReportRequestDetails.png b/docs/solo/manager/images/XRayContinuousTaskDaylyReportRequestDetails.png
deleted file mode 100644
index faf0da446..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTaskDaylyReportRequestDetails.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTasksList.png b/docs/solo/manager/images/XRayContinuousTasksList.png
deleted file mode 100644
index 198f7691a..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTasksList.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTracingTab.png b/docs/solo/manager/images/XRayContinuousTracingTab.png
deleted file mode 100644
index bb48baac1..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTracingTab.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTracingTasksList.png b/docs/solo/manager/images/XRayContinuousTracingTasksList.png
deleted file mode 100644
index 198f7691a..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTracingTasksList.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTracingTasksListCreated.png b/docs/solo/manager/images/XRayContinuousTracingTasksListCreated.png
deleted file mode 100644
index 2cc0e42ed..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTracingTasksListCreated.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTracingTasksListGrouped.png b/docs/solo/manager/images/XRayContinuousTracingTasksListGrouped.png
deleted file mode 100644
index 564c8a678..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTracingTasksListGrouped.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayContinuousTracingTasksRequestsList.png b/docs/solo/manager/images/XRayContinuousTracingTasksRequestsList.png
deleted file mode 100644
index b3a517429..000000000
Binary files a/docs/solo/manager/images/XRayContinuousTracingTasksRequestsList.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayCreateContinuousTaskBtn.png b/docs/solo/manager/images/XRayCreateContinuousTaskBtn.png
deleted file mode 100644
index ec857b78f..000000000
Binary files a/docs/solo/manager/images/XRayCreateContinuousTaskBtn.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayCreateContinuousTaskForm.png b/docs/solo/manager/images/XRayCreateContinuousTaskForm.png
deleted file mode 100644
index 0f17c23fc..000000000
Binary files a/docs/solo/manager/images/XRayCreateContinuousTaskForm.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayDatabaseQueries.png b/docs/solo/manager/images/XRayDatabaseQueries.png
deleted file mode 100644
index d7674621f..000000000
Binary files a/docs/solo/manager/images/XRayDatabaseQueries.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayDelete.png b/docs/solo/manager/images/XRayDelete.png
deleted file mode 100644
index ab558dd0e..000000000
Binary files a/docs/solo/manager/images/XRayDelete.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayExternalRequests.png b/docs/solo/manager/images/XRayExternalRequests.png
deleted file mode 100644
index d95c6e002..000000000
Binary files a/docs/solo/manager/images/XRayExternalRequests.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayPHPInfo.png b/docs/solo/manager/images/XRayPHPInfo.png
deleted file mode 100644
index bb1f213eb..000000000
Binary files a/docs/solo/manager/images/XRayPHPInfo.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayPHPInfoRemoteAddr.png b/docs/solo/manager/images/XRayPHPInfoRemoteAddr.png
deleted file mode 100644
index abb0eebe0..000000000
Binary files a/docs/solo/manager/images/XRayPHPInfoRemoteAddr.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayScanDir.png b/docs/solo/manager/images/XRayScanDir.png
deleted file mode 100644
index 01f5afcf8..000000000
Binary files a/docs/solo/manager/images/XRayScanDir.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRaySlowestRequest.png b/docs/solo/manager/images/XRaySlowestRequest.png
deleted file mode 100644
index cc8d3a0ca..000000000
Binary files a/docs/solo/manager/images/XRaySlowestRequest.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRaySoftwareModulesPlugins.png b/docs/solo/manager/images/XRaySoftwareModulesPlugins.png
deleted file mode 100644
index ae43d3ae1..000000000
Binary files a/docs/solo/manager/images/XRaySoftwareModulesPlugins.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayStart.png b/docs/solo/manager/images/XRayStart.png
deleted file mode 100644
index 4fbc984d1..000000000
Binary files a/docs/solo/manager/images/XRayStart.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayStop.png b/docs/solo/manager/images/XRayStop.png
deleted file mode 100644
index d06485591..000000000
Binary files a/docs/solo/manager/images/XRayStop.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayStopped.png b/docs/solo/manager/images/XRayStopped.png
deleted file mode 100644
index 189479a8e..000000000
Binary files a/docs/solo/manager/images/XRayStopped.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRaySystemFunctions.png b/docs/solo/manager/images/XRaySystemFunctions.png
deleted file mode 100644
index f8f2f8a8d..000000000
Binary files a/docs/solo/manager/images/XRaySystemFunctions.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayTracingTask.png b/docs/solo/manager/images/XRayTracingTask.png
deleted file mode 100644
index 4c4b936c7..000000000
Binary files a/docs/solo/manager/images/XRayTracingTask.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayTracingTaskCreated.png b/docs/solo/manager/images/XRayTracingTaskCreated.png
deleted file mode 100644
index 0609d9c68..000000000
Binary files a/docs/solo/manager/images/XRayTracingTaskCreated.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayTrcingTaskList.png b/docs/solo/manager/images/XRayTrcingTaskList.png
deleted file mode 100644
index e44fe40d5..000000000
Binary files a/docs/solo/manager/images/XRayTrcingTaskList.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayTrcingTaskList1.png b/docs/solo/manager/images/XRayTrcingTaskList1.png
deleted file mode 100644
index 959f707f4..000000000
Binary files a/docs/solo/manager/images/XRayTrcingTaskList1.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayView.png b/docs/solo/manager/images/XRayView.png
deleted file mode 100644
index dac49b18b..000000000
Binary files a/docs/solo/manager/images/XRayView.png and /dev/null differ
diff --git a/docs/solo/manager/images/XRayView1.png b/docs/solo/manager/images/XRayView1.png
deleted file mode 100644
index 4c1e9e46d..000000000
Binary files a/docs/solo/manager/images/XRayView1.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPBrokenPHP.png b/docs/solo/manager/images/awp/AWPBrokenPHP.png
deleted file mode 100644
index 41ab367ec..000000000
Binary files a/docs/solo/manager/images/awp/AWPBrokenPHP.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPDisable.png b/docs/solo/manager/images/awp/AWPDisable.png
deleted file mode 100644
index 7372711b0..000000000
Binary files a/docs/solo/manager/images/awp/AWPDisable.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPDisablePremiumOnly.png b/docs/solo/manager/images/awp/AWPDisablePremiumOnly.png
deleted file mode 100644
index d3e2a03cc..000000000
Binary files a/docs/solo/manager/images/awp/AWPDisablePremiumOnly.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPFilters.png b/docs/solo/manager/images/awp/AWPFilters.png
deleted file mode 100644
index 2b7d3d3c1..000000000
Binary files a/docs/solo/manager/images/awp/AWPFilters.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPGettingStarted.png b/docs/solo/manager/images/awp/AWPGettingStarted.png
deleted file mode 100644
index 9bf1561ac..000000000
Binary files a/docs/solo/manager/images/awp/AWPGettingStarted.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPNoRedis.png b/docs/solo/manager/images/awp/AWPNoRedis.png
deleted file mode 100644
index 903b43202..000000000
Binary files a/docs/solo/manager/images/awp/AWPNoRedis.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPStats.png b/docs/solo/manager/images/awp/AWPStats.png
deleted file mode 100644
index 2f70ecd31..000000000
Binary files a/docs/solo/manager/images/awp/AWPStats.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPStatsPremium.png b/docs/solo/manager/images/awp/AWPStatsPremium.png
deleted file mode 100644
index 7543dfd6b..000000000
Binary files a/docs/solo/manager/images/awp/AWPStatsPremium.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPUpgradeLink.png b/docs/solo/manager/images/awp/AWPUpgradeLink.png
deleted file mode 100644
index e1662470a..000000000
Binary files a/docs/solo/manager/images/awp/AWPUpgradeLink.png and /dev/null differ
diff --git a/docs/solo/manager/images/awp/AWPUpgradeNoLink.png b/docs/solo/manager/images/awp/AWPUpgradeNoLink.png
deleted file mode 100644
index 804f104f0..000000000
Binary files a/docs/solo/manager/images/awp/AWPUpgradeNoLink.png and /dev/null differ
diff --git a/docs/solo/manager/images/cloudlinuxmanageractivation.png b/docs/solo/manager/images/cloudlinuxmanageractivation.png
deleted file mode 100644
index 88b5229d5..000000000
Binary files a/docs/solo/manager/images/cloudlinuxmanageractivation.png and /dev/null differ
diff --git a/docs/solo/manager/images/cloudlinuxmanageractivationsignup.png b/docs/solo/manager/images/cloudlinuxmanageractivationsignup.png
deleted file mode 100644
index 3772241e2..000000000
Binary files a/docs/solo/manager/images/cloudlinuxmanageractivationsignup.png and /dev/null differ
diff --git a/docs/solo/manager/images/cloudlinuxmanageractivationsignupform.png b/docs/solo/manager/images/cloudlinuxmanageractivationsignupform.png
deleted file mode 100644
index ec376ac6e..000000000
Binary files a/docs/solo/manager/images/cloudlinuxmanageractivationsignupform.png and /dev/null differ
diff --git a/docs/solo/manager/images/howtofindlvemanagerinpanel.png b/docs/solo/manager/images/howtofindlvemanagerinpanel.png
deleted file mode 100644
index aede1ce80..000000000
Binary files a/docs/solo/manager/images/howtofindlvemanagerinpanel.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_RecordedSession.png b/docs/solo/manager/images/solo_RecordedSession.png
deleted file mode 100644
index d742fb799..000000000
Binary files a/docs/solo/manager/images/solo_RecordedSession.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_SlowSiteAnalyzerEmailNotifications.png b/docs/solo/manager/images/solo_SlowSiteAnalyzerEmailNotifications.png
deleted file mode 100644
index dbadf175d..000000000
Binary files a/docs/solo/manager/images/solo_SlowSiteAnalyzerEmailNotifications.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_SlowSiteAnalyzerReport.png b/docs/solo/manager/images/solo_SlowSiteAnalyzerReport.png
deleted file mode 100644
index 51a355da9..000000000
Binary files a/docs/solo/manager/images/solo_SlowSiteAnalyzerReport.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_SlowSiteAnalyzerSettings.png b/docs/solo/manager/images/solo_SlowSiteAnalyzerSettings.png
deleted file mode 100644
index c9afdcea3..000000000
Binary files a/docs/solo/manager/images/solo_SlowSiteAnalyzerSettings.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_XRayCollectedRequests.png b/docs/solo/manager/images/solo_XRayCollectedRequests.png
deleted file mode 100644
index 95f0e0aa8..000000000
Binary files a/docs/solo/manager/images/solo_XRayCollectedRequests.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_lvemanagermainmenu.png b/docs/solo/manager/images/solo_lvemanagermainmenu.png
deleted file mode 100644
index f08cbea15..000000000
Binary files a/docs/solo/manager/images/solo_lvemanagermainmenu.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_php_selector_1.png b/docs/solo/manager/images/solo_php_selector_1.png
deleted file mode 100644
index a5e6222a4..000000000
Binary files a/docs/solo/manager/images/solo_php_selector_1.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_php_selector_2.png b/docs/solo/manager/images/solo_php_selector_2.png
deleted file mode 100644
index e93351b7c..000000000
Binary files a/docs/solo/manager/images/solo_php_selector_2.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_php_selector_3.png b/docs/solo/manager/images/solo_php_selector_3.png
deleted file mode 100644
index c2687f857..000000000
Binary files a/docs/solo/manager/images/solo_php_selector_3.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_php_selector_4.png b/docs/solo/manager/images/solo_php_selector_4.png
deleted file mode 100644
index ec3ca8115..000000000
Binary files a/docs/solo/manager/images/solo_php_selector_4.png and /dev/null differ
diff --git a/docs/solo/manager/images/solo_php_selector_5.png b/docs/solo/manager/images/solo_php_selector_5.png
deleted file mode 100644
index 4d4bba718..000000000
Binary files a/docs/solo/manager/images/solo_php_selector_5.png and /dev/null differ
diff --git a/docs/ubuntu/README.md b/docs/ubuntu/README.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/docs/ubuntu/faq/README.md b/docs/ubuntu/faq/README.md
index 5fdd55a98..3cbea1125 100644
--- a/docs/ubuntu/faq/README.md
+++ b/docs/ubuntu/faq/README.md
@@ -1,52 +1,43 @@
 # FAQ
 
-### What is the CloudLinux subsystem on Ubuntu?
+## What is the CloudLinux Subsystem on Ubuntu?
 
-CloudLinux subsystem on Ubuntu is a scope of deb-packages which allows using CloudLinux features on Ubuntu OS.
-The main goal of this subsystem is to allow operating the already existed CloudLinux functionality on another OS.
+CloudLinux Subsystem on Ubuntu is a scope of deb-packages that allows using CloudLinux features on Ubuntu OS.
+The main goal of this subsystem is to allow using the already existing CloudLinux functionality on another OS.
 
-#### Lorem ipsum dolor.
-Lorem ipsum dolor sit amet, consectetur adipisicing elit. At id laudantium quod tempore velit!
-
-##### Lorem ipsum dolor five.
-Lorem ipsum dolor sit amet, consectetur adipisicing elit. At id laudantium quod tempore velit!
-
-### How to install the CloudLinux subsystem on Ubuntu?
+## How to install the CloudLinux subsystem on Ubuntu?
 
 See [Installation](/sub-system-ubuntu/installation/).
 
-### Is the CloudLinux subsystem on Ubuntu paid/unpaid?
+## Is the CloudLinux Subsystem on Ubuntu paid/unpaid?
 
-During the beta period it is free.
+The CloudLinux Subsystem on Ubuntu is paid.
+It follows the same licensing model as CloudLinux OS.
 
-### Can I get the ISO for the CloudLinux subsystem on Ubuntu?
+## Can I get the ISO for the CloudLinux subsystem on Ubuntu?
 
 As of now, only installation via `ubuntu2cloudlinux.py` is available.
+ISO images can be provided upon request.
 
-### What control panel can be used with the CloudLinux subsystem on Ubuntu?
+## What control panel can be used with the CloudLinux subsystem on Ubuntu?
 
 As of now, only cPanel is supported. Plesk and DirectAdmin are not supported.
 
-### How can I get support for my CloudLinux subsystem on Ubuntu servers?
+## How can I get support for my CloudLinux subsystem on Ubuntu servers?
 
 Feel free to contact Support via [Support Portal](https://www.cloudlinux.com/support-portal/).
 
-### Can I use other CloudLinux products (Imunify360, KernelCare) with the CloudLinux subsystem on Ubuntu?
-
-During the first beta release you cannot use other CloudLinux products (Imunify360, KernelCare) with the CloudLinux
-subsystem on Ubuntu We're planning to add them in the upcoming releases.
-
-### Can I use Docker with the CloudLinux subsystem on Ubuntu?
+## Can I use Docker with the CloudLinux subsystem on Ubuntu?
 
 You cannot use Docker with the CloudLinux subsystem on Ubuntu in the current version.
 
-### Is control panel integration functionality available in the current release?
+## Is control panel integration functionality available in the current release?
 
 Yes, it is available.
 
-### How to set up a PHP-fpm handler for the domain?
+## How to set up a PHP-fpm handler for the domain?
 
-Since the PHP-fpm handler is required to use WP Optimization Suite, you may need to configure it manually.
+Since the PHP-fpm handler is required to use Accelerate WP, you may need to configure it manually.
 
 These are configuration steps:
 
@@ -54,14 +45,8 @@ These are configuration steps:
 
     * Via MultiPHP Manager
 
-<<<<<<< Updated upstream
-
-2. Enable PHP-fpm handler for domain via MultiPHP Manager
-
-=======
-   ![](./images/viaMultiPHP.png)
+   ![](/images/ubuntu/faq/viaMultiPHP.webp)
 
 2. Enable PHP-fpm handler for domain via MultiPHP Manager
 
-   ![](./images/enablephp-fpm.png)
->>>>>>> Stashed changes
+   ![](/images/ubuntu/faq/enablephp-fpm.webp)
diff --git a/docs/ubuntu/faq/images/enablephp-fpm.png b/docs/ubuntu/faq/images/enablephp-fpm.png
deleted file mode 100644
index c1a42fd78..000000000
Binary files a/docs/ubuntu/faq/images/enablephp-fpm.png and /dev/null differ
diff --git a/docs/ubuntu/faq/images/viaMultiPHP.png b/docs/ubuntu/faq/images/viaMultiPHP.png
deleted file mode 100644
index 7506b2987..000000000
Binary files a/docs/ubuntu/faq/images/viaMultiPHP.png and /dev/null differ
diff --git a/docs/ubuntu/features/README.md b/docs/ubuntu/features/README.md
index 1af0f4c8a..38051a1a8 100644
--- a/docs/ubuntu/features/README.md
+++ b/docs/ubuntu/features/README.md
@@ -1,41 +1,39 @@
 # Features
 
-Below, you can find the list of supported features with the links to the documentation available.
+Below you can find the list of supported features with the links to the documentation available.
 
 ## LVE limits
 
-* [Understanding limits](/shared/limits/#understanding-limits)
-* [SPEED limit](/shared/limits/#speed-limit)
-* [Memory limit](/shared/limits/#memory-limit)
-* [IO](/shared/limits/#io)
-* [IOPS](/shared/limits/#iops)
-* [Entry processes](/shared/limits/#entry-processes)
-* [Number of processes](/shared/limits/#number-of-processes)
-* [Inodes](/shared/limits/#inodes)
-* [Network traffic bandwidth control and accounting system](/shared/limits/#network-traffic-bandwidth-control-and-accounting-system)
-* [Limits validation](/shared/limits/#limits-validation)
-* [Compatibility matrix](/shared/limits/#compatibility-matrix)
-* [Reseller limits](/shared/limits/#reseller-limits)
+* [Understanding limits](/cloudlinuxos/limits/#understanding-limits)
+* [SPEED limit](/cloudlinuxos/limits/#speed-limit)
+* [Memory limit](/cloudlinuxos/limits/#memory-limit)
+* [IO](/cloudlinuxos/limits/#io)
+* [IOPS](/cloudlinuxos/limits/#iops)
+* [Entry processes](/cloudlinuxos/limits/#entry-processes)
+* [Number of processes](/cloudlinuxos/limits/#number-of-processes)
+* [Inodes](/cloudlinuxos/limits/#inodes)
+* [Network traffic bandwidth control and accounting system](/cloudlinuxos/limits/#network-traffic-bandwidth-control-and-accounting-system)
+* [Limits validation](/cloudlinuxos/limits/#limits-validation)
+* [Compatibility matrix](/cloudlinuxos/limits/#compatibility-matrix)
+* [Reseller limits](/cloudlinuxos/limits/#reseller-limits)
 
 ## Inode limits
 
-The documentation is available [here](/shared/limits/#inodes).
+The documentation is available [here](/cloudlinuxos/limits/#inodes).
 
 ## Reseller limits
 
-The documentation is available [here](/shared/limits/#reseller-limits).
+The documentation is available [here](/cloudlinuxos/limits/#reseller-limits).
 
 ## MySQL Governor
 
-MySQL Governor is software to monitor and restrict MySQL usage in a shared hosting environment. The monitoring is done
-via resource usage statistics per each MySQL thread.
+MySQL Governor is a software package that monitors and restricts MySQL usage in a shared hosting environment. The monitoring is done via resource usage statistics per each MySQL thread.
 
 MySQL Governor can also kill off slow SELECT queries.
 
-MySQL Governor has multiple modes of operations, depending on the configuration. It can work in monitor-only mode, or it
-can use different throttling scenarios.
+MySQL Governor has multiple modes of operations, depending on the configuration. It can work in monitor-only mode, or it can use different throttling scenarios.
 
-MySQL Governor allows restricting customers who use too many resources. It supports following limits:
+MySQL Governor allows restricting customers that use too many resources. It supports following limits:
 
 |       |       |                                                                                                        |
 |-------|-------|--------------------------------------------------------------------------------------------------------|
@@ -43,12 +41,9 @@ MySQL Governor allows restricting customers who use too many resources. It suppo
 | READ  | bytes | bytes read. Cached reads are not counted, only those that were actually read from disk will be counted |
 | WRITE | bytes | bytes written. Cached writes are not counted, only once data is written to disk, it is counted         |
 
-You can set different limits for different periods: current, short, med, long. By default those periods are defined as 1
-second, 5 seconds, 1 minute and 5 minutes. They can be re-defined using
-the [configuration file](/shared/cloudlinux_os_components/#configuration-and-operation). The idea is
-to use larger acceptable values for shorter periods. Like you could allow a customer to use two cores (200%) for one
-second, but only 1 core (on average) for 1 minute, and only 70% within 5 minutes. That would make sure that customer can
-burst for short periods of time.
+You can set different limits for different periods: current, short, mid, long. By default those periods are defined as 1 second, 5 seconds, 1 minute and 5 minutes. They can be re-defined using the [configuration file](/cloudlinuxos/cloudlinux_os_components/#configuration-and-operation).
+The idea is to use larger acceptable values for shorter periods. Like you could allow a customer to use two cores (200%) for one second, but only 1 core (on average) for 1 minute, and only 70% within 5 minutes.
+That would make sure that customer can burst for short periods of time.
 
 When a customer is restricted, the customer will be placed into special LVE with ID 3. All restricted customers will be
 placed into that LVE, and you can control the amount of resources available to restricted customers. Restricted
@@ -60,10 +55,9 @@ connections to the server.
 :::warning Attention!
 MySQL Governor on Ubuntu supports the following only:
 
-* cl-MySQL80 on non-panel system
+* cl-MySQL80 on non-panel systems
 * cl-MySQL80 on cPanel
-* cl-MariaDB103 on non-panel system
-  :::
+:::
 
 1. Install MySQL Governor
 
@@ -73,10 +67,6 @@ apt  install governor-mysql
 
 2. To use MySQL Governor with
 
-    * cl-MariaDB103
-    ```
-    /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mariadb103
-    ```
     * cl-MySQL80
     ```
     /usr/share/lve/dbgovernor/mysqlgovernor.py --mysql-version=mysql80
@@ -90,17 +80,14 @@ apt  install governor-mysql
 
 In case of installing on cPanel + Ubuntu server, set the following parameter:
 
-<<<<<<< Updated upstream
-=======
-![](./images/Param.png)
->>>>>>> Stashed changes
+![](/images/ubuntu/features/Param.webp)
 
 5. After installation, check that the database server is working properly. If you have any problems,
    use [Support Portal]().
 6. Configure user mapping to the database. The mapping format is described in
-   the [following section](/shared/cloudlinux_os_components/#mapping-a-user-to-a-database).
+   the [following section](/cloudlinuxos/cloudlinux_os_components/#mapping-a-user-to-a-database).
 
-In case a non-panel system the `/etc/container/dbuser-map` should be created and updated with new users by admin.
+In case of a non-panel system the `/etc/container/dbuser-map` mapping file should be created and updated with new users by an admin.
 
 The format is as follows:
 
@@ -110,15 +97,15 @@ The format is as follows:
 [dbuser_nameN] [account_nameN] [UIDN]
 ```
 
-The control panel should automatically generate such mapping and write it to the `/etc/container/dbuser-map`. Usually,
+The control panel should automatically generate this mapping and write it to the `/etc/container/dbuser-map` file. Usually,
 it is enough to write a hook when adding, deleting or renaming a database for a user. The control panel should implement
 such a mechanism for MySQL Governor to operate properly. MySQL Governor automatically applies changes from the
 dbuser-map file every five minutes.
 
 7. MySQL Governor configuration can be found in the
-   following [section](/shared/cloudlinux_os_components/#configuration-3).
+   following [section](/cloudlinuxos/cloudlinux_os_components/#configuration-3).
 8. MySQL Governor CLI tools description can be found in the
-   following [section](/shared/command-line_tools/#mysql-governor).
+   following [section](/cloudlinuxos/command-line_tools/#mysql-governor).
 9. Having configured the mapping use `dbtop` to see the current user load on the database (you'd need to make some
    database queries).
 
@@ -131,14 +118,14 @@ dbtop
 ### How To upgrade database server
 
 You can find the instructions
-in [this documentation](/shared/cloudlinux_os_components/#upgrading-database-server).
+in [this documentation](/cloudlinuxos/cloudlinux_os_components/#upgrading-database-server).
 
 ### Uninstalling
 
 To remove MySQL Governor, run the following command:
 
 ```
-$ /usr/share/lve/dbgovernor/mysqlgovernor.py --delete
+/usr/share/lve/dbgovernor/mysqlgovernor.py --delete
 ```
 
 The script will install the original MySQL server, and remove MySQL Governor.
@@ -146,53 +133,46 @@ The script will install the original MySQL server, and remove MySQL Governor.
 ### Configuration and operation
 
 You can find the instructions
-in [this documentation](/shared/cloudlinux_os_components/#configuration-and-operation).
+in [this documentation](/cloudlinuxos/cloudlinux_os_components/#configuration-and-operation).
 
 ## Administrator WEB interface (CloudLinux Manager)
 
-The documentation is available [here](/shared/lve_manager/#cloudlinux-manager).
+The documentation is available [here](/cloudlinuxos/lve_manager/#cloudlinux-manager).
 
 * [Dashboard](/sub-system-ubuntu/features/#dashboard)
-* [Current Usage](/shared/lve_manager/#current-usage)
-* [Users](/shared/lve_manager/#users)
-* [Statistics](/shared/lve_manager/#statistics)
-* [Packages](/shared/lve_manager/#packages)
-* [Options](/shared/lve_manager/#options)
-* [PHP Selector](/shared/cloudlinux_os_components/#php-selector)
+* [Current Usage](/cloudlinuxos/lve_manager/#current-usage)
+* [Users](/cloudlinuxos/lve_manager/#users)
+* [Statistics](/cloudlinuxos/lve_manager/#statistics)
+* [Packages](/cloudlinuxos/lve_manager/#packages)
+* [Options](/cloudlinuxos/lve_manager/#options)
+* [PHP Selector](/cloudlinuxos/cloudlinux_os_components/#php-selector)
     * [Installation instructions](/features/#php-selector-installation-instructions)
-    * [Selector tab](/shared/lve_manager/#selector-tab)
-    * [Selector tab additional features (cPanel)](/shared/lve_manager/#selector-tab-additional-features)
+    * [Selector tab](/cloudlinuxos/lve_manager/#selector-tab)
+    * [Selector tab additional features (cPanel)](/cloudlinuxos/lve_manager/#selector-tab-additional-features)
       CloudLinux Manager 6.0.1-2
-    * [PHP Selector troubleshooting (cPanel)](/shared/lve_manager/#php-selector-troubleshooting)
+    * [PHP Selector troubleshooting (cPanel)](/cloudlinuxos/lve_manager/#php-selector-troubleshooting)
       CloudLinux Manager 6.0.1-2
-    * [PHP Selector diagnostic tool and notifications](/shared/lve_manager/#php-selector-diagnostic-tool-and-notifications)
+    * [PHP Selector diagnostic tool and notifications](/cloudlinuxos/lve_manager/#php-selector-diagnostic-tool-and-notifications)
       CloudLinux Manager 6.0.1-2
 
 ### Dashboard
 
-:::warning Attention!
-MySQL Governor is not available in the current version. We're planning to add it in the upcoming releases.
-:::
-
 Dashboard provides a quick overview of statistics and all administrative information for server administrators.
 
 Go to _CloudLinux Manager_ | _Dashboard_.
 
-<<<<<<< Updated upstream
-=======
-![](./images/Dashboard.png)
->>>>>>> Stashed changes
+![](/images/ubuntu/features/Dashboard.webp)
 
 * End Users hitting limits — number of users reaching their limit in any kind of resource. Data is within the last 24
   hours.
 * Resellers hitting limits — number of enrolled Resellers that are reaching their limit in any kind of resource. Data is
   within the last 24 hours.
-* [PHP Selector](/shared/lve_manager/#php-selector-2) block displays the following information:
+* [PHP Selector](/cloudlinuxos/lve_manager/#php-selector-2) block displays the following information:
     * Default version — the default version of PHP binaries. Click _Manage_ to change the default version, enable or
       disable PHP Selector, change the list of supported versions, and choose default modules. You will be redirected to
       CloudLinux Manager | PHP Selector. PHP Selector (cPanel) has malfunctions warnings
-      about [the most common issues](/shared/lve_manager/#errors).
-* [CageFS](/shared/cloudlinux_os_components/#cagefs) block displays the following information:
+      about [the most common issues](/cloudlinuxos/lve_manager/#errors).
+* [CageFS](/cloudlinuxos/cloudlinux_os_components/#cagefs) block displays the following information:
     * CageFS status (Enabled/Disabled/Not installed). To manage CageFS, click _Manage_. You will be redirected to
       CloudLinux Manager | Options | CageFS. Click _Install_ to install CageFS.
     * Mode displays the current CageFS mode of operation.
@@ -200,20 +180,20 @@ Go to _CloudLinux Manager_ | _Dashboard_.
 
 ## Reseller WEB interface (CloudLinux Manager)
 
-* [Current Usage](/shared/lve_manager/#current-usage-tab)
-* [Historical Usage](/shared/lve_manager/#historical-usage-tab)
-* [Users](/shared/lve_manager/#users-tab)
-* [Statistics](/shared/lve_manager/#statistics-tab)
-* [Packages](/shared/lve_manager/#packages-tab)
+* [Current Usage](/cloudlinuxos/lve_manager/#current-usage-tab)
+* [Historical Usage](/cloudlinuxos/lve_manager/#historical-usage-tab)
+* [Users](/cloudlinuxos/lve_manager/#users-tab)
+* [Statistics](/cloudlinuxos/lve_manager/#statistics-tab)
+* [Packages](/cloudlinuxos/lve_manager/#packages-tab)
 
 ## User WEB interface
 
-* [Resource Usage](/shared/lve_manager/#resource-usage-client-plugin)
-* [PHP Selector](/shared/lve_manager/#php-selector-client-plugin)
+* [Resource Usage](/cloudlinuxos/lve_manager/#resource-usage-client-plugin)
+* [PHP Selector](/cloudlinuxos/lve_manager/#php-selector-client-plugin)
 
 ## LVE Wrappers
 
-The documentation is available [here](/shared/cloudlinux_os_components/#lve-wrappers).
+The documentation is available [here](/cloudlinuxos/cloudlinux_os_components/#lve-wrappers).
 
 * lve_wrapper
 * lve_suwrapper
@@ -221,14 +201,14 @@ The documentation is available [here](/shared/cloudlinux_os_components/#lve-wrap
 ## CageFS and running commands inside
 
 The documentation is
-available [here](/shared/control_panel_integration/#running-commands-inside-cagefs).
+available [here](/cloudlinuxos/control_panel_integration/#running-commands-inside-cagefs).
 
 * cagefs_enter
 * cagefs_enter_user
 
 ## Hardened PHP
 
-* alt-php versions 5.6 - 8.0
+* alt-php versions 5.5 - 8.2
 
 ## Mod_hostinglimits
 
@@ -239,7 +219,7 @@ sure that no single web site can bring down your web server.
 Today, a single site can consume all CPU, IO, Memory resources or Apache processes - and bring the server to a halt. LVE
 prevents that. It is done via collaboration of Apache module, PAM module and kernel.
 
-[mod_hostinglimits](/shared/cloudlinux_os_components/#hostinglimits-module-for-apache) is an Apache
+[mod_hostinglimits](/cloudlinuxos/cloudlinux_os_components/#hostinglimits-module-for-apache) is an Apache
 module that:
 
 * detects VirtualHost from which the request came;
@@ -262,17 +242,12 @@ other users.
 * If the site is limited by memory or number of processes limits, then the user will receive 500 or 503 errors that
   server cannot execute the script.
 
-:::warning Attention!
-In the current version ONLY the following combinations are available: **ea-php81 with php-fpm** and **alt-php with
-suphp, cgi**
-:::
-
 #### ea-php81 with php-fpm
 
 To install, run the following command:
 
 ```
-# apt install ea-php81*
+apt install ea-php81*
 ```
 
 #### alt-php with suphp, cgi
@@ -281,84 +256,74 @@ To install, follow these steps:
 
 1. Remove `mod-ruid2`:
 
-<<<<<<< Updated upstream
-=======
-   ![](./images/remove-mod-ruid2.png)
->>>>>>> Stashed changes
+   ![](/images/ubuntu/features/remove-mod-ruid2.webp)
 
 2. Install packages (with `alt-php74` as an example):
 
    ```
-   # apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
-   # apt install alt-php74
+   apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
+   apt install alt-php74
    ```
 
 #### PHP Selector installation instructions
 
-The documentation is available [here](/shared/cloudlinux_os_components/#php-selector).
-
-:::warning Attention!
-Only the following handlers can be used:
-
-* suphp
-* cgi
-  :::
+The documentation is available [here](/cloudlinuxos/cloudlinux_os_components/#php-selector).
 
 To install, run the following commands:
 
 ```
-# apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
-# apt install cagefs
-# cagefsctl –-init
+apt install ea-apache24-mod-suphp ea-apache24-mod-suexec
+apt install cagefs
+cagefsctl –-init
 ```
 
 ## Symlink owner match protection
 
-The documentation is available [here](/shared/cloudlinux_os_kernel/#fs-enforce-symlinksifowner).
+The documentation is available [here](/cloudlinuxos/cloudlinux_os_kernel/#fs-enforce-symlinksifowner).
 
-* [fs.enforce_symlinksifowner](/shared/cloudlinux_os_kernel/#fs-enforce-symlinksifowner)
-* [fs.symlinkown_gid](/shared/cloudlinux_os_kernel/#fs-symlinkown-gid)
-* [fs.process_symlinks_by_task](/shared/cloudlinux_os_kernel/#fs-process-symlinks-by-task)
+* [fs.enforce_symlinksifowner](/cloudlinuxos/cloudlinux_os_kernel/#fs-enforce-symlinksifowner)
+* [fs.symlinkown_gid](/cloudlinuxos/cloudlinux_os_kernel/#fs-symlinkown-gid)
+* [fs.process_symlinks_by_task](/cloudlinuxos/cloudlinux_os_kernel/#fs-process-symlinks-by-task)
 
 ## Link traversal protection
 
-* [fs.protected_symlinks_create](/shared/cloudlinux_os_kernel/#link-traversal-protection)
-* [fs.protected_hardlinks_create](/shared/cloudlinux_os_kernel/#link-traversal-protection)
+* [fs.protected_symlinks_create](/cloudlinuxos/cloudlinux_os_kernel/#link-traversal-protection)
+* [fs.protected_hardlinks_create](/cloudlinuxos/cloudlinux_os_kernel/#link-traversal-protection)
 
 ## Tuned profiles
 
-The documentation is available [here](/shared/cloudlinux_os_kernel/#tuned-profiles-cloudlinux).
+The documentation is available [here](/cloudlinuxos/cloudlinux_os_kernel/#tuned-profiles-cloudlinux).
 
 ## Apache mod_lsapi
 
 ### General requirements
 
 General requirements are
-available [here](/shared/cloudlinux_os_components/#general-information-and-requirements-9).
+available [here](/cloudlinuxos/cloudlinux_os_components/#general-information-and-requirements-9).
 
 ### Installation
 
 Installation on cPanel servers with EasyApache 4:
 
 ```
-$ apt install liblsapi liblsapi-dev 
-$ apt install ea-apache24-mod-lsapi
-$ /usr/bin/switch_mod_lsapi --setup
-$ service httpd restart
+apt install liblsapi liblsapi-dev 
+apt install ea-apache24-mod-lsapi
+/usr/bin/switch_mod_lsapi --setup
+service httpd restart
 ```
 
 Installation on servers with no panel:
 
 ```
-$ apt install liblsapi liblsapi-dev 
-$ apt install mod-lsapi
-$ /usr/bin/switch_mod_lsapi --setup
-$ service apache2 restart
+apt install liblsapi liblsapi-dev 
+apt install mod-lsapi
+/usr/bin/switch_mod_lsapi --setup
+service apache2 restart
 ```
 
 ### Configuration
 
-Configuration instructions are available [here](/shared/cloudlinux_os_components/#configuration-4).
+Configuration instructions are available [here](/cloudlinuxos/cloudlinux_os_components/#configuration-4).
 
 ### Troubleshooting
 
@@ -367,15 +332,15 @@ In case the site responds with the error: 503 Service unavailable.
 1. Be sure that /opt has drwxr-xr-x permissions. It can be fixed with the following command:
 
 ```
-$ chmod 755 /opt 
+chmod 755 /opt 
 ```
 
 2. Change the default folder for mod_lsapi socket:
 
 ```
-$ mkdir /var/mod_lsapi
-$ chown nobody.nobody /var/mod_lsapi
-$ chmod 755 /var/mod_lsapi
+mkdir /var/mod_lsapi
+chown nobody.nobody /var/mod_lsapi
+chmod 755 /var/mod_lsapi
 ```
 
 Add to /etc/apache2/conf.d/lsapi.conf new path:
@@ -387,21 +352,21 @@ lsapi_socket_path /var/mod_lsapi
 And restart service:
 
 ```
-$ service httpd restart
+service httpd restart
 ```
 
-### Uninstall
+### Uninstallation
 
-Uninstall procedure for cPanel servers with EasyApache 4:
+Uninstallation procedure for cPanel servers with EasyApache 4:
 
 ```
-$ /usr/bin/switch_mod_lsapi --uninstall
-$ apt remove liblsapi liblsapi-dev ea-apache24-mod-lsapi
+/usr/bin/switch_mod_lsapi --uninstall
+apt remove liblsapi liblsapi-dev ea-apache24-mod-lsapi
 ```
 
-Uninstall procedure for servers with no panel:
+Uninstallation procedure for servers with no panel:
 
 ```
-$ /usr/bin/switch_mod_lsapi --uninstall
-$ apt remove liblsapi liblsapi-dev mod-lsapi
+/usr/bin/switch_mod_lsapi --uninstall
+apt remove liblsapi liblsapi-dev mod-lsapi
 ```
diff --git a/docs/ubuntu/features/images/Dashboard.png b/docs/ubuntu/features/images/Dashboard.png
deleted file mode 100644
index ce8bec7e6..000000000
Binary files a/docs/ubuntu/features/images/Dashboard.png and /dev/null differ
diff --git a/docs/ubuntu/features/images/Param.png b/docs/ubuntu/features/images/Param.png
deleted file mode 100644
index bd6b59d5c..000000000
Binary files a/docs/ubuntu/features/images/Param.png and /dev/null differ
diff --git a/docs/ubuntu/features/images/remove-mod-ruid2.png b/docs/ubuntu/features/images/remove-mod-ruid2.png
deleted file mode 100644
index 3715873f5..000000000
Binary files a/docs/ubuntu/features/images/remove-mod-ruid2.png and /dev/null differ
diff --git a/docs/ubuntu/installation/README.md b/docs/ubuntu/installation/README.md
index e5ac29409..71fdc90d9 100644
--- a/docs/ubuntu/installation/README.md
+++ b/docs/ubuntu/installation/README.md
@@ -1,30 +1,48 @@
 # Installation
 
+:::tip
 For the current release, installation from the ISO images is not available.
-
-:::warning Attention!
-This is a beta version! We strongly don't recommend using it on the production servers!
 :::
 
-To install the CloudLinux subsystem, run the following command:
+To install the CloudLinux Subsystem on an Ubuntu machine:
+
+1. Make sure you have Python 3 installed on your system. If not, install it using the following command:
+
+```shell
+apt install python3
+```
+
+2. Download the `ubuntu2cloudlinux.py` script:
 
+```shell
+wget https://repo.cloudlinux.com/cloudlinux-ubuntu/sources/cln/ubuntu2cloudlinux.py
 ```
-# apt install python3
-# wget https://repo.cloudlinux.com/cloudlinux-ubuntu/sources/cln/ubuntu2cloudlinux.py
-# python3 ubuntu2cloudlinux.py
-# reboot
+
+3. Run the script. Provide a key if your license is key-based:
+
+```shell
+python3 ubuntu2cloudlinux.py --key=your_key
+```
+
+If you have an IP-based license, pass the `--byip` option instead:
+
+```shell
+python3 ubuntu2cloudlinux.py --byip
 ```
 
-No registration required! You can start working right after the installation.
+The script will install the CloudLinux Subsystem on your Ubuntu machine. After the installation is complete, reboot your system.
 
 ## Ubuntu2Cloudlinux explained
 
-The `ubuntu2cloudlinux.py` script gives an opportunity to install CloudLinux Subsystem For Ubuntu. It is much more simplier script than the CLdeploy script for CentOS and AlmaLinux. For example, it doesn't replace the linux kernel, only adds a dynamic module to it. Here is a list of actions done by the `ubuntu2cloudlinux`:
+The `ubuntu2cloudlinux.py` script installs the CloudLinux Subsystem For Ubuntu.
+It is a simpler script compared to the CLdeploy script for CentOS and AlmaLinux. For example, it doesn't replace the Linux kernel, only adds a dynamic module to it.
+Here is a list of actions that the `ubuntu2cloudlinux` script performs:
 
-* It checks that you are running the latest available version of the `ubuntu2cloudlinux.py script`, and updates itself if necessary.
+* Checks that you are running the latest available version of the `ubuntu2cloudlinux.py script`, and updates itself if necessary.
 * Upgrades all installed packages to the latest versions (unless the `--skip-full-update` option is passed).
-* Adds to your system CloudLinux repositories for Ubuntu and a corresponding gpg key.
+* Registers your system with the CloudLinux Network (CLN) using the provided key or IP address.
+* Adds CloudLinux repositories for Ubuntu and a corresponding GPG key to your system.
 * Installs a minimum set of CloudLinux OS components: lve, kernel module kmodlve-dkms, lve-utils, lve-stats, alt-python.
 * Installs CloudLinux Manager (currently works with cPanel on Ubuntu).
 * Installs the mod_hostinglimits Apache module.
-* Asks you to manually reboot the system to load a new kernel module.
+* Asks you to manually reboot the system to load the new kernel module.
diff --git a/docs/ubuntu/introduction/README.md b/docs/ubuntu/introduction/README.md
index d7f8b214f..a5933ce3f 100644
--- a/docs/ubuntu/introduction/README.md
+++ b/docs/ubuntu/introduction/README.md
@@ -5,38 +5,43 @@
 * [Ubuntu](https://ubuntu.com/) is a registered trademark of Canonical Ltd.
 :::
 
-CloudLinux subsystem on Ubuntu is a scope of deb-packages which allows using CloudLinux features on Ubuntu OS.
-For the first beta release we were focusing on the major CloudLinux features for hosting providers: isolation of each customer into a separate “Lightweight Virtualized Environment” (LVE) and “caging” tenants from one another to avoid security breaches.
+CloudLinux subsystem on Ubuntu is a scope of deb-packages which allows using CloudLinux features on Ubuntu OS. It is a Stable version of a free extension designed exclusively for Ubuntu® 22.04 LTS users.
 
 ## Supported version of Ubuntu
 
-We support Ubuntu 20.04 LTS.
+We support Ubuntu 22.04 LTS.
 
 ## CloudLinux OS editions comparison
 
+CloudLinux Subsystem for Ubuntu supports the same editions as CloudLinux OS, with some exceptions.
 
-|**Features**|**CloudLinux OS Solo**|**CloudLinux OS Admin**|**CloudLinux OS Shared**|**CloudLinux OS Shared Pro**|**<font color="#2c98f0">CloudLinux Subsystem For Ubuntu</font>**|
+In the table below, a feature marked with "No" for the CloudLinux Subsystem for Ubuntu means that no edition of CloudLinux Subsystem for Ubuntu supports this feature.
+
+|**Features**|**CloudLinux OS Solo**|**CloudLinux OS Admin**|**CloudLinux OS Legacy (Shared)**|**CloudLinux OS Shared Pro**|**<font color="#2c98f0">CloudLinux Subsystem For Ubuntu</font>**|
 |:-:|:-:|:-:|:-:|:-:|:-:|
 |Maximum amount of hosting accounts|1|5|unlimited|unlimited|**<font color="#2c98f0">unlimited</font>**|
-|Resource Limits (LVE)|No|**Yes***|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
+|Resource Limits (LVE)|No*|**Yes****|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
 |Cage FS|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
-|MySQL Governor|No|No|**Yes**|**Yes**|**<font color="#2c98f0">No</font>**|
+|MySQL Governor|No|No|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
 |PHP Selector|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
-|Other Selectors (Python, Node.js, Ruby)|No|**Yes****|**Yes****|**Yes****|**<font color="#2c98f0">No</font>**|
+|Python/Node.js Selectors|**Yes*****|**Yes*****|**Yes*****|**Yes*****|**<font color="#2c98f0">No</font>**|
+|Ruby Selector|No|**Yes*****|**Yes*****|**Yes*****|**<font color="#2c98f0">No</font>**|
 |HardenedPHP|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
-|Apache mod_lsapi PRO|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">No</font>**|
+|Apache mod_lsapi PRO|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
 |SecureLinks|No|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
-|Website monitoring tool|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">No</font>**|
-|Website monitoring alerts|**Yes**|No|No|No|**<font color="#2c98f0">No</font>**|
-|Slow Site analyzer|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">No</font>**|
-|PHP X-Ray|**Yes**|**Yes**|No|**Yes**|**<font color="#2c98f0">No</font>**|
-|Centralized Monitoring|No|No|No|**Yes**|**<font color="#2c98f0">No</font>**|
-|AccelerateWP|**Yes**|**Yes**|No|**Yes**|**<font color="#2c98f0">No</font>**|
+|Website monitoring tool|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
+|Website monitoring alerts|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
+|Slow Site analyzer|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
+|PHP X-Ray|**Yes**|**Yes**|No|**Yes**|**<font color="#2c98f0">Yes</font>**|
+|Centralized Monitoring|No|No|No|**Yes**|**<font color="#2c98f0">Yes</font>**|
+|AccelerateWP|**Yes**|**Yes**|No|**Yes**|**<font color="#2c98f0">Yes</font>**|
 |Support 24/7|**Yes**|**Yes**|**Yes**|**Yes**|**<font color="#2c98f0">Yes</font>**|
 
-\* Limits are disabled by default.
+\* Only inodes limits are available.
+
+\** Limits are disabled by default.
 
-\** Python/Node.js/Ruby Selectors are available only for cPanel, DirectAdmin servers, and servers with custom panel with own integration.
+\*** Python/Node.js/Ruby Selectors are available only for cPanel, DirectAdmin, and servers with custom panels with own integration.
 
 ## Supported control panels
 
diff --git a/docs/ubuntu/troubleshooting/README.md b/docs/ubuntu/troubleshooting/README.md
index 53ea3479d..5342a6bc7 100644
--- a/docs/ubuntu/troubleshooting/README.md
+++ b/docs/ubuntu/troubleshooting/README.md
@@ -1,45 +1,16 @@
-# Troubleshooting and Knows Issues
+# Troubleshooting and Known Issues
 
 ## Troubleshooting
 
 To troubleshoot and resolve issues, you can use the following log files:
 
 ```
-/var/log/ubuntu2cloudlinux.log - conversion log 
-/var/log/lve-stats.log - lve-stats 
-/var/log/dmesg - kernel module 
+/var/log/ubuntu2cloudlinux.log - conversion log
+/var/log/lve-stats.log - lve-stats
+/var/log/dmesg - kernel module
 ```
 
-## Knows Issues
+## Known issues
 
-1. Please take into account that if one of the [`alt-python37*` packages](/sub-system-ubuntu/troubleshooting/#list-of-alt-python37-packages) is updated you should execute the following command to ensure the proper work of the LVE-stats daemon:
-
-```
-# /sbin/service lvestats try-restart
-```
-
-#### List of alt-python37* packages:
-
-* alt-python37
-* alt-python37-raven
-* alt-python37-simplejson
-* alt-python37-sqlalchemy
-* alt-python37-alembic
-* alt-python37-libs
-* alt-python37-markupsafe
-* alt-python37-setuptools
-* alt-python37-contextlib
-* alt-python37-mako
-* alt-python27-cllib
-* alt-python37-prettytable
-* alt-python37-logilab-common
-* alt-python37-jinja2
-* alt-python37-psycopg2
-* alt-sqlite
-
-Such behavior will be fixed in the upcoming versions.
-
-2. LVE statistics works only with SQLite, other databases (MySQL, postgreSQL) will be available in the next releases.
-3. `alt-php*-zts` are not available yet.
-4. The `tmpreaper package` is using instead of `tmpwatch`.
-5. PNG format for LVE Charts does not work correctly on CloudLinux subsystem on Ubuntu (lvechart utility may produce broken images).
+1. `alt-php*-zts` packages are not available at the moment.
+2. The `tmpreaper package` is used instead of `tmpwatch`.
diff --git a/docs/ubuntu/uninstalling/README.md b/docs/ubuntu/uninstalling/README.md
index d15d40c3e..4588cc75e 100644
--- a/docs/ubuntu/uninstalling/README.md
+++ b/docs/ubuntu/uninstalling/README.md
@@ -1,12 +1,28 @@
 # Uninstalling
 
-### Deleting the CloudLinux Subsystem For Ubuntu
+## Deleting the CloudLinux Subsystem For Ubuntu
 
-You can uninstall CloudLinux Subsystem For Ubuntu by running the following command:
+You can uninstall CloudLinux Subsystem For Ubuntu by running the following commands:
 
+```shell
+# Install Python 3 if you don't have it
+apt install python3
+```
 
-In that case the script will:
+```shell
+wget https://repo.cloudlinux.com/cloudlinux-ubuntu/sources/cln/ubuntu2cloudlinux.py
+```
 
-* Remove the CloudLinux OS components which are installed on your system, choosing from the following list: lve, kmodlve-dkms, lve-utils, lve-stats, lvemanager, cagefs, alt-python, alt-php, db-governor.
+```shell
+python3 ubuntu2cloudlinux.py --uninstall
+```
+
+```shell
+reboot
+```
+
+The script will:
+
+* Remove the CloudLinux OS components which are installed on your system, going over the following list: lve, kmodlve-dkms, lve-utils, lve-stats, lvemanager, cagefs, alt-python, alt-php, db-governor.
 * Remove configs for CloudLinux repositories for Ubuntu.
 * Ask you to check for remaining packages from CloudLinux and manually reboot your system.
diff --git a/docs/user-docs/.DS_Store b/docs/user-docs/.DS_Store
index dfec7c20c..9d83671ec 100644
Binary files a/docs/user-docs/.DS_Store and b/docs/user-docs/.DS_Store differ
diff --git a/docs/user-docs/README.md b/docs/user-docs/README.md
index dae8c3f10..9ec35cc2b 100644
--- a/docs/user-docs/README.md
+++ b/docs/user-docs/README.md
@@ -2,4 +2,4 @@
 
 [[toc]]
 
-Here you may find the documentation sections for end-users on Cloudlinux OS Shared & Solo.
\ No newline at end of file
+Here you may find the documentation sections for end-users on Cloudlinux OS.
\ No newline at end of file
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/.DS_Store b/docs/user-docs/user-docs-shared-cloudlinux/.DS_Store
deleted file mode 100644
index c2cb512fa..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/.DS_Store and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/README.md b/docs/user-docs/user-docs-shared-cloudlinux/README.md
deleted file mode 100644
index 9a394eb48..000000000
--- a/docs/user-docs/user-docs-shared-cloudlinux/README.md
+++ /dev/null
@@ -1,574 +0,0 @@
-# CloudLinux OS Shared for end-users
-
-## Introduction
-
-CloudLinux OS Shared is designed for shared hosting providers. It isolates each customer into a separate “Lightweight Virtualized Environment” (LVE), which allocates and limits server resources, like memory, CPU and the number of simultaneous connections, for each web hosting tenant. This ensures that tenants cannot jeopardize the stability of your servers, causing all sites to slow down or even come to a halt. CloudLinux OS Shared also “cages” tenants from one another to avoid security breaches. This way, unstable scripts or malware are not able to sprawl across your customer sites, causing severe harm.
-
-## SmartAdvice Plugin
-
-### Overview
-
-SmartAdvice Plugin is a WordPress Must Use Plugin that displays the available advise for the site, which can be activated/deactivated from the WordPress admin panel.
-Installing and uninstalling the plugin is an automatic process, depending on the available advise for the site.
-
-
-### Requirements
-
-* PHP version 5.6 or higher
-* WordPress version 5.0 or higher
-
-### Managing Advice via SmartAdvice Plugin
-
-If there is available advice, a widget will be displayed in the Dashboard of the WordPress site.
-The table displays a list of advice, their status (1) and the ability to go to their settings (2).
-Click _See advice_ (2) to go to the detailed information of the advice.
-
-![](./images/SmartAdviceDashboard.png)
-
-On the plugin page, you can see detailed information on each Advice (2), get acquainted with their statuses (1) and apply them to automatically improve the website (3).
-
-![](./images/SmartAdviceDetails.png)
-
-Advice in the "Applied"(1) status can be deactivated using the "Rollback"(3) button.
-Advice that is in the process of applying or rolling back, displays the percentage of progress (4).
-
-:::tip Note
-Advice activation may take some time.
-:::
-
-![](./images/SmartAdviceApply.png)
-
-If the application of Advice caused an error, you would be notified.
-
-![](./images/SmartAdviceError.png)
-
-Please contact our [Support team](https://www.cloudlinux.com/support-portal/) if you are unable to resolve the issue yourself.
-
-## AccelerateWP
-
-### Overview
-
-AccelerateWP is a complex solution to help customers increase their WordPress site performance. 
-With AccelerateWP you can manage optimization features, like object caching, CSS and JavaScript 
-preprocessing and website preloading.
-
-In order to start using AccelerateWP, go to the cPanel interface and find the `AccelerateWP` 
-application in the `Software` section.
-
-![](./images/AWPApp.png)
-
-If you use Plesk control panel, go to the `Websites & Domains` section on the left, (1) trigger the side panel and (2) choose the AccelerateWP widget.
-
-![](./images/AWPPlesk.png)
-
-Click the application button and get into the AccelerateWP interface.
-
-![](./images/AWPUserUI.png)
-
-Each row in the table is the WordPress website that was found on server and each column is the 
-optimization feature.
-
-AccelerateWP is built as advice-driven plugin: the feature is suggested to be enabled once 
-the Smart Advice is issued. Smart advice may be issued during profiling a website with X-Ray. 
-X-Ray PHP profiler detects concrete bottlenecks in website performance and thus is able to select 
-a best suited optimization feature to increase it significantly.
-
-Use the `Advice available` link to check advice details and click the `Apply advice` 
-button to activate the feature.
-
-![](./images/AdviceReview.png)
-
-After a couple of minutes, the feature will be activated and advice becomes `Applied`.
-Close the window and see `Active` link in the corresponding cell of the table.
-
-![](./images/AdviceApplied.png)
-
-If you still would like to try the feature on the website where advice was not issued,
-click on the gear icon and enable the feature.
-
-![](./images/AWPEnableManually.png)
-
-### AccelerateWP feature: WordPress optimization plugin
-AccelerateWP is a base feature that provides full page caching, GZIP compression and some other useful 
-optimizations.
-
-In order to start working with AccelerateWP feature, check if advice is available in the corresponding 
-cell on the intersection of website and AccelerateWP column.
-
-![](./images/AWPUserUI.png)
-
-And click the "Apply advice" button to activate the AccelerateWP feature.
-
-![](./images/AdviceReview.png)
-
-After a couple of minutes, the plugin will be installed.
-Login into the WordPress Admin and find the AccelerateWP in the list of active plugins.
-
-![](./images/WPPlugins.png)
-
-Page caching will be enabled by default. Click the "Settings" link below the plugin name to configure additional options.
-
-![](./images/AWPPlugin.png)
-
-
-#### Limitations
-* Website must use PHP version 7.2 or higher.
-* WordPress version must be 5.6 and higher.
-* Other WordPress Caching plugins must not be installed.
-* WordPress should not run in Multisite mode.
-
-
-### AccelerateWP feature additional options
-Find more additional options in WordPress admin page.
-
-#### Mobile caching
-Use it only if you website is adapted to use on smartphones and mobile phones.
-
-Separate cache files for mobile devices. In this case the content for mobile devices will be cached 
-into different cache file as for desktop\tablets.
-
-This option is necessary if you have some functionality only for mobile devices, not for desktop\tablets.
-
-The following diagram helps you understand if you need mobile caching.
-
-![](./images/MobileDiag.png)
-
-:::tip Note
-If you use an additional layer of Cache (Varnish, NGINX , etc.) make sure it can distinguish between desktop and mobile visitors.
-:::
-
-
-#### User Cache
-It is recommended to use such an option when your website has a unique content for each logged-in user. If the user is not logged-in, a common site cache will be used, otherwise each logged-in user’s content will be cached separately.
-
-
-#### File Optimization
-File Optimization consists of Minification and file Combining.
-
-Minification is the process of minimizing code in your web pages and script files. Webmasters look at minification as a primary method of reducing website load times via the bandwidth they use.
-
-Minification also reduces JS, CSS and HTML files. The goal is removing comments and extra spaces. It crunches variables that minimize code and ultimately reduces the file size.
-
-After minification, the file still functions as it should. The difference is a reduction in bandwidth due to network requests.
-
-**By combining CSS & JS files, HTTP/1 does not allow multiple requests from the same TCP connection between a host server and a web browser.**
-
-Putting CSS and JS files into their respective groups, makes requests for downloads from a browser safe and more efficient. The old way meant multiple connections that took up bandwidth.
-
-**File (CSS & JS) combining is not necessary for HTTP/2 (see https://webspeedtools.com/should-i-combine-css-js/)**
-
-HTTP/2 introduced multiplexing. Now, the browser can send unlimited number of requests to the server, then download all files simultaneously with only one TCP connection.
-
-Consequently, HTTP/2 takes care of multiple TCP connections and the waiting time before each download. In one sense, consolidating CSS and JS files might be unnecessary.
-
-To verify which HTTP version is used for requests on your site, you can use https://tools.keycdn.com/http2-test
-
-
-#### CSS Files
-**Minify CSS**
-
-Minify CSS reduces file sizes by taking out white space and comments embedded in the code.
-
-**Combine CSS**
-
-Combine CSS reduces HTTP requests by merging all your files into one. Combine CSS is not recommended if your site uses HTTP/2.
-
-**Excluded CSS Files**
-
-To single out those CSS files that should not be minimized, list the URLs attached to the CSS files that should be excluded from minification and concatenation (one per line).
-
-:::warning Caution!
-Minification removes the domain from the URL.
-:::
-
-To prevent that, use (. *).CSS wildcards to exclude all files in a specific location.
-
-3rd Party: when excluding external CSS files, use the domain or the full URL path.
-
-**Optimize CSS delivery (Critical Path CSS)**
-
-Critical Path CSS eliminates render-blocking CSS on your website and improves browser page render performance. Your website will load much faster for your visitors.
-
-:::tip Note
-This feature can only be activated in the AccelerateWP hosting panel interface or in the SmartAdvice WordPress plugin. Once activated, you will be able to manage the options in the AccelerateWP WordPress plugin.
-:::
-
-![](./images/AWPCriticalCSSEnabled.png)
-
-The function starts automatically after switching on. It takes some time to generate the Critical CSS. You will see a notification with the generation status. If necessary, you can add additional styles to the Critical CSS in the fallback CSS field.
-
-![](./images/AWPCriticalCSSStarted.png)
-
-Each time you change the site's theme, the Critical CSS will be regenerated. Also, if you have made any changes to the styles of your site, you need to manually regenerate the Critical CSS by clicking on the "Regenerate critical CSS" button.
-
-#### JavaScript Files
-**Minify javascript files**
-
-Minify JavaScript removes whitespace and comments to reduce the file size.
-
-**Combine JavaScripts files**
-
-This option will be active only if you choose Minify javascript files. It is not recommended for HTTP2.
-
-**Load JavaScript deferred**
-
-One major cause of slow web pages is a so-called blocking script: [https://www.dummies.com/web-design-development/javascript/deferred-loading-with-javascript/](https://www.dummies.com/web-design-development/javascript/deferred-loading-with-javascript/).
-
-Loading JavaScript called a blocking script blocks the webpage from loading.
-
-Using the `defer` attribute alerts the browser not to wait for the script. Things will continue as usual per the build HTML and DOM processes. Quietly, the script rests in the background, then runs once the DOM is built.
-
-So, the `Load JavaScript deferred` option adds to each script tag the `defer` attribute.
-
-**Delay JavaScript Execution**
-
-This option helps to decrease the page load time by delaying loading of all JavaScripts on the page. This option can be applied only for already cached pages, it is incompatible with the Combine JavaScripts files option.
-
-
-#### Media
-**LazyLoad**
-
-LazyLoad affects the page in the next way - if the user opens the page for the first loading there will be only first displayed (visible to user) images, others will be loaded if the user scrolls down. Images added via CSS file, the `<style>` tag or via `Elementor` will not be affected by the LazyLoad.
-
-The following options allows working with LazyLoad
-* Enable LazyLoad for images
-* Enable LazyLoad for iframes and videos
-* Excluded images or iframes
-
-
-#### Image Dimensions
-Add Missing Image Dimensions
-
-Correct image dimensions help the browser to recognize page structure without delays, because the browser knows how much space is needed for the image.
-
-Cases when image will not be affected by the *Add Missing Image Dimensions*:
-
-* Images which have any attribute with name containing `*height*` or `*width*`
-* Images which are part of the `<picture>` tag
-* SVG images
-* Image from external domains
-
-
-#### Image Optimization
-Optimize image delivery by minifying the existing images and serving next-gen image formats when possible.
-
-:::tip Note
-This feature can only be activated/deactivated in the AccelerateWP hosting panel interface or in the SmartAdvice WordPress plugin.
-:::
-
-![](./images/AWPImageOptimizationSettings.png)
-
-After activating the function, it will start searching for files in the `WP_CONTENT_DIR/uploads` folder in supported formats - jpg, jpeg, gif and png.
-
-Each found file (except those already optimized) will be queued for optimization using CloudLinux SaaS.
-
-In the WordPress admin interface, the number of images to optimize will be displayed at the top of the AccelerateWP settings screen.
-
-![](./images/AWPImageOptimizationProgress.png)
-
-After the file is successfully optimized, a notification will be sent to the special API of the site that the file is ready.
-
-The original file will be copied to the backup folder:  
-`WP_CONTENT_DIR/accelerate-wp/images/backup/uploads/{relative_path_of_the_file}`  
-Then it was replaced with an optimized one and added with an additional file in the webp format.
-
-The image optimization function automatically activates the ability of the plugin to replace the original images with the WebP format if they are present in the file system.
-
-When a new image is uploaded to your site using the WordPress functions/interface, it will be submitted for optimization with high priority.
-
-After optimization of all images is completed, you will see the notification in the admin panel.
-
-![](./images/AWPImageOptimizationSuccess.png)
-
-**Restore images from backup folder**
-
-`WP_CONTENT_DIR` - path to your site's wp-content folder
-
-Test before run (dry run):  
-```rsync -avnI WP_CONTENT_DIR/accelerate-wp/images/backup/uploads/ WP_CONTENT_DIR/uploads```
-
-Restore and override files from backup folder:  
-```rsync -avI WP_CONTENT_DIR/accelerate-wp/images/backup/uploads/ WP_CONTENT_DIR/uploads```
-
-**Troubleshooting**
-
-**Wrong file permissions** - Image optimization will not start and show an admin notice. You can try re-enabling the optimization feature again or create folders manually.
-
-![](./images/AWPImageOptimizationWrongFilePermissions.png)
-
-**Database table cannot be created** - Image optimization will not start and show an admin notice. You can try re-enabling the optimization feature or contact your system administrator.
-
-![](./images/AWPImageOptimizationDatabaseTableCannotBeCreated.png)
-
-**Monthly quota exceeded** - Your plan has reached the feature usage limit for current month. The plugin will show an admin notice and pause the image optimization until the start of the next month.
-
-![](./images/AWPImageOptimizationMonthlyQuotaExceeded.png)
-
-**Authentication failed** - The plugin will postpone the image optimization process and retry every 15 minutes. If the authentication is failing for more then 24 hours, the plugin will stop the process and show an admin notice. Contact your system administrator.
-
-![](./images/AWPImageOptimizationAuthenticationFailed.png)
-
-**SaaS service not available** - The plugin will show an admin notice, pause processing other jobs in the queue and retry every 5  minutes for the next hour and then every hour.
-
-![](./images/AWPImageOptimizationSaaSServiceNotAvailable.png)
-
-#### Preload
-**Preload Cache**
-
-Usually, a page cache is created when this page is first visited. You can activate the preload page cache. It means that the cache for the page will be created when the page is created or updated.
-
-If sitemap-based cache preloading is activated, a specified sitemap file will be used for preliminary cache generation.
-
-**Preload Links**
-
-Provides functionality to preload the HTML content of the hovered link for acceleration loading pages after click.
-
-**Prefetch DNS Requests**
-
-If your website uses external resources (e.g. Google fonts, YouTube video, etc.), AccelerateWP can preload these resources for accelerating loading pages. To activate preloading external URLs, provide a list of external URLs.
-
-**Preload Fonts**
-
-Accelerates the loading of fonts by the browser, informing the browser at the very beginning of the request about the full list of fonts to download
-
-
-#### Advanced Rules
-Advanced site caching settings. If you have specific pages that must be processed individually you can add a custom rule for them.
-
-**Never Cache URL(s)**
-
-Provide a list of URLs that cannot be cached.
-
-**Never Cache Cookies**
-
-Provide a list of Cookie files that cannot be cached.
-
-**Never Cache User Agent(s)**
-
-Provide a list of User Agent names that cannot be cached.
-
-**Always Purge URL(s)**
-
-You can specify URLs that will be deleted from the cache when any post or page will be updated.
-
-**Cache Query String(s)**
-
-By default AccelerateWP does not cache URLs with query strings, but in this option, you can specify GET-parameters that must be cached.
-
-
-#### Database
-Database optimization provides clearing database from expired and unused data.
-
-**Post Cleanup**
-
-Provides clearing posts revisions, autosaved drafts, and deleted posts from the trash. Be careful, you will not be able to restore this data after clearing it.
-
-**Comments Cleanup**
-
-Provides clearing spam and deleted comments from the trash. Be careful, you will not be able to restore this data after clearing it.
-
-**Transients Cleanup**
-
-Provides clearing temporary options for existing plugins and older unused options that keep after deleting plugins.
-
-**Database Cleanup**
-
-Provides table optimizations in your database server.
-
-**Automatic cleanup**
-
-Allows you to schedule periodic database cleanups.
-
-
-#### Heartbeat
-WordPress Heartbeat is a function of server polling that provides delivery data from server to browser periodically.
-
-**Reduce or disable Heartbeat activity**
-
-To control server loads you can activate the *Control Heartbeat* function and reduce or disable Heartbeat activity. You can manage Heartbeat activity separately for backend, frontend, and post-editing parts. Be careful, disabling Heartbeat can break plugins that use this functionality.
-
-
-#### One-click AccelerateWP Add-ons
-**Varnish**
-
-When the server uses Varnish, you need to activate the add-on for implementing clearing Varnish cache when AccelerateWP clears site cache.
-
-**WebP Compatibility**
-
-If your site uses the WebP plugin you can activate AccelerateWP WebP Compatibility add-on to achieve browser compatibility with your WebP images.
-
-
-#### CDN
-CDN stands for Content Delivery Network, the feature that simplifies and speeds up resources loading for your customers.
-
-In order to start using CDN, you need:
-1. Public website on the Internet with a valid domain name
-2. Pull a CDN zone, for example, https://bunny.net/
-
-To set up a CDN in the AccelerateWP you must register CDN zone and get pull zone configuration.
-
-After setting up the Pull zone, you will receive an address, for example: domain.b-cdn.net
-
-![](./images/CDNGeneral.png)
-
-Go to the WP Admin of your WordPress site, open the settings of the AccelerateWP (Step 1) and select the CDN section (Step 2).  Select the option: Enable Content Delivery Network (Step 3) and fill in the "CDN CNAME(s)" field with the previously received domain.b-cdn.net address (Step 4).
-
-![](./images/CDNFlow.png)
-
-Click the "Save changes" button (Step 5).
-
-In order to check CDN is working, open website in incognito mode with Developer Tools open in your browser. Go to the "Network" tab, find the "Domain" column, you should see the specified address in the CDN settings of the AccelerateWP plugin for your js/css/image files.
-
-
-#### Tools
-For backing up the settings, there is a function for exporting settings. To use it, click the *Download settings* button. When you need to restore settings, choose your saved settings file and click the *Upload file and import settings* button.
-
-
-### AccelerateWP Premium: Object caching feature
-
-:::tip Note
-Object caching is a premium feature which is currently in beta and available only for some hosters.
-:::
-
-Unlike full page caching, this mechanism is not saving the whole page in cache, but stores database 
-query results in additional storage for quick access. This mechanism is really helpful in case your 
-site needs to process multiple pages per second as requests come in and may be helpful in case when 
-full page caching cannot be used, e.g. on personalized pages.
-
-The Object caching feature is recommended to use in the following:
-
-* Websites used for extremely active exchange of information (forums, blogs, etc..)
-* Websites with too many requests running at the same time
-* Websites having important pages that cannot be cached entirely and exclude from the "whole page caching" due to any reason
-
-In order to start working with Object caching feature, check if advice is available in the corresponding
-cell on the intersection of website and AccelerateWP Premium column.
-
-![](./images/AWPPremiumUI.png)
-
-And click the "Apply advice" button to activate the Object caching feature.
-
-![](./images/AWPPremiumReview.png)
-
-If you still would like to try the feature on the website where advice was not issued,
-click on the gear icon and enable the feature.
-
-![](./images/AWPEnableManually.png)
-
-In case if you still don't have active Premium subscription, you will see the following
-window with link to the page where you can upgrade subscription.
-
-![](./images/AWPUpgradeLink.png)
-
-When upgrade link is clicked, you will see the billing interface opened in new browser window.
-Successful upgrade of your subscription will automatically close the billing window and start
-background upgrade process. Once your payment is processed, feature will be automatically installed
-on the website.
-
-![](./images/AWPUpgradeModuleWait.png)
-
-If you don't see any links, contact your hoster to upgrade your subscription manually.
-
-![](./images/AWPUpgradeNoLink.png)
-
-If subscription is active, you will bypass the subscription window and proceed
-directly to the plugin installation.
-
-After a couple of minutes, the redis instance will be configured, plugin will be installed and activated.
-
-![](./images/AWPPremiumApplied.png)
-
-Close the window and see "Active" link in the corresponding cell of the table.
-
-Object caching does not require any additional configuration.
-
-#### Limitations
-There are the following requirements to activate Object Caching:
-* Website must use ea-PHP version 7.4 or 8.0.
-* WordPress version must be 3.7 and higher.
-* Other WordPress Caching plugins must not be installed.
-* [Snuffleupagus](https://snuffleupagus.readthedocs.io/) must be turned off.
-* WordPress should not run in Multisite mode.
-
-
-### FAQ
-#### What does "AccelerateWP is advice-driven" mean?
-CloudLinux automatically tracks slow requests for the websites for the appropriate period of
-time and sometimes creates an advice to activate the specific feature for your website. 
-When you see the `Advice available` link in the corresponding feature cell, it means that 
-AccelerateWP decided that this feature will significantly improve the performance of your website. 
-Otherwise you see the `No advice` note.
-
-![](./images/FAQAdviceTable.png)
-
-Click the `Advice available` link and push `Apply advice` button to automatically enable the feature.
-
-![](./images/FAQAdviceReview.png)
-
-#### What should I do if I see both the "No advice" note and the "Incompatible" link?
-Causes of the `Incompatible` note are always Limitations: [AccelerateWP](/user-docs/user-docs-shared-cloudlinux/#limitations) or
-[AccelerateWP Premium](/user-docs/user-docs-shared-cloudlinux/#limitations-1) related ones.
-
-Each message has a small "how to", so you can try to fix them by yourself via control panel or WordPress Admin interface.
-
-![](./images/FAQIncompatible.png)
-
-![](./images/FAQIncMessage.png)
-
-#### What should I do if I see the "Misconfiguration"?
-The misconfiguration message can appear in the cases when optimization feature was activated, but AccelerateWP detects it as not working anymore.
-
-The most frequent cases are:
-* Redis process cannot be started for some period of time.
-  * **Resolution:** [contact our support team](https://cloudlinux.zendesk.com/hc/en-us/requests/new) for further investigation.
-* WordPress Redis Object Cache plugin is disabled via WordPress Admin Gui/Plugins.
-  * **Resolution:** You can resolve it by yourself via the WordPress Admin Gui.
-* Version of PHP was changed for website and it is no longer compatible with feature.
-  * **Resolution:** change website php version to the one which is compatible with optimization feature.
-  
-In all cases, please refer to the misconfiguration text, which has a small "how to", so you can try to fix them by yourself via control panel or WordPress Admin interface.
-
-#### Feature activation starts, but fails with "post check issue"
-Post check is a sanity check of your website to make sure that it is working properly after feature activation.
-
-AccelerateWP expects website to:
-* return http code 200 when downloading home page
-* do not write any errors in logs
-
-If you have some Post check issue after turning on the feature, you can leave them as disabled (in that case the engine reverts all changes). Or you can ignore the issue and continue working with the enabled Object Caching in order to manually check the source of the issue.
-
-#### How to measure the speed of the website?
-You can measure the speed of your website before turning On the Object Caching and after.
-
-The popular tools:
-* [PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/)
-* [Pingdom Website Speed Test](https://tools.pingdom.com/)
-
-#### Where the AccelerateWP tool log files are located?
-Login via SSH, find in your home directory `~/.clwpos/main.log`. Or you can open it using the control panel file manager.
-
-#### I already use the WordPress Redis object cache plugin. Will the AccelerateWP be useful for me?
-No, in the current version we suggest the same optimization as you already have. But we include other useful features in the next versions, so let’s stay in touch.
-
-#### I already use the WordPress Redis object cache PRO plugin. Will the AccelerateWP be useful for me?
-No, in the current version we suggest the same optimization as you already have. But we include other useful features in the next versions, so let’s stay in touch.
-
-#### Why did my site's PageSpeed score decrease after enabling AccelerateWP?
-AccelerateWP & mod_pagespeed:
-1. Enabling AccelerateWP activates the force gzip cache function when the cache is archived by the plugin, and Apache simply gives it as is to the user browser. In this case, the mod_pagespeed module cannot apply its optimizations, since it does not work with archives, but only with pure HTML.
-2. AccelerateWP does not activate all possible resource optimizations by default.
-
-Because of this, the total score of the site by PageSpeed may be reduced. **To improve the PageSpeed score, it is necessary to enable additional optimizations of AccelerateWP.**
-
-AccelerateWP with maximum settings for fast sites gives a similar PageSpeed score for mobile and an improved result for desktop.
-AccelerateWP with maximum settings for sites loading longer than 1 second always gives a better score than mod_pagespeed.
-
-#### My subscription was upgraded, but feature was not installed automatically
-This can be caused by several reasons. Either your website was detected to have malfunctions
-or there was an issue with environment when feature was installed (e.g. bad internet connectivity with WordPress market).
-
-First, try to enable feature manually using AccelerateWP interface. 
-Most likely you will find human-readable error message there.
-
-If the issue persists, or you cannot resolve it yourself, 
-contact your hoster and attach `~/.clwpos/main.log` for further investigation. 
\ No newline at end of file
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPApp.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPApp.png
deleted file mode 100644
index 7980501c5..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPApp.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPCriticalCSSEnabled.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPCriticalCSSEnabled.png
deleted file mode 100644
index 0fb455cfa..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPCriticalCSSEnabled.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPCriticalCSSStarted.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPCriticalCSSStarted.png
deleted file mode 100644
index a7f4e817b..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPCriticalCSSStarted.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPEnableManually.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPEnableManually.png
deleted file mode 100644
index 3e1f32c89..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPEnableManually.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationAuthenticationFailed.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationAuthenticationFailed.png
deleted file mode 100644
index 16fdc57c1..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationAuthenticationFailed.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationDatabaseTableCannotBeCreated.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationDatabaseTableCannotBeCreated.png
deleted file mode 100644
index c116991d4..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationDatabaseTableCannotBeCreated.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationMonthlyQuotaExceeded.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationMonthlyQuotaExceeded.png
deleted file mode 100644
index b936ce327..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationMonthlyQuotaExceeded.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationProgress.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationProgress.png
deleted file mode 100644
index 0847af784..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationProgress.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSaaSServiceNotAvailable.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSaaSServiceNotAvailable.png
deleted file mode 100644
index 53be3bb71..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSaaSServiceNotAvailable.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSettings.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSettings.png
deleted file mode 100644
index c55a97477..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSettings.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSuccess.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSuccess.png
deleted file mode 100644
index 44e6e4c66..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationSuccess.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationWrongFilePermissions.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationWrongFilePermissions.png
deleted file mode 100644
index 4a8daebbd..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPImageOptimizationWrongFilePermissions.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPlesk.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPlesk.png
deleted file mode 100644
index f74f94f2a..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPlesk.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPlugin.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPlugin.png
deleted file mode 100644
index c0b54e248..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPlugin.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumApplied.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumApplied.png
deleted file mode 100644
index 48b84a74f..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumApplied.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumReview.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumReview.png
deleted file mode 100644
index 3bd51f8de..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumReview.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumUI.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumUI.png
deleted file mode 100644
index 66ef97250..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPPremiumUI.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeLink.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeLink.png
deleted file mode 100644
index e1662470a..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeLink.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeModuleWait.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeModuleWait.png
deleted file mode 100644
index 31fbc6e24..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeModuleWait.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeNoLink.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeNoLink.png
deleted file mode 100644
index 804f104f0..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUpgradeNoLink.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUserUI.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUserUI.png
deleted file mode 100644
index d49e2dbdb..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AWPUserUI.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AdviceApplied.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AdviceApplied.png
deleted file mode 100644
index d50e36af8..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AdviceApplied.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AdviceReview.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AdviceReview.png
deleted file mode 100644
index 9ca38d190..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AdviceReview.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/AppliedAdvice.png b/docs/user-docs/user-docs-shared-cloudlinux/images/AppliedAdvice.png
deleted file mode 100644
index 4d16c8497..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/AppliedAdvice.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/CDNFlow.png b/docs/user-docs/user-docs-shared-cloudlinux/images/CDNFlow.png
deleted file mode 100644
index e20a8457f..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/CDNFlow.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/CDNGeneral.png b/docs/user-docs/user-docs-shared-cloudlinux/images/CDNGeneral.png
deleted file mode 100644
index f6e958184..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/CDNGeneral.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/FAQAdviceReview.png b/docs/user-docs/user-docs-shared-cloudlinux/images/FAQAdviceReview.png
deleted file mode 100644
index ea8e8535e..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/FAQAdviceReview.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/FAQAdviceTable.png b/docs/user-docs/user-docs-shared-cloudlinux/images/FAQAdviceTable.png
deleted file mode 100644
index e685ee98b..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/FAQAdviceTable.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/FAQIncMessage.png b/docs/user-docs/user-docs-shared-cloudlinux/images/FAQIncMessage.png
deleted file mode 100644
index d5a92928b..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/FAQIncMessage.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/FAQIncompatible.png b/docs/user-docs/user-docs-shared-cloudlinux/images/FAQIncompatible.png
deleted file mode 100644
index 8752bac8b..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/FAQIncompatible.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/MobileDiag.png b/docs/user-docs/user-docs-shared-cloudlinux/images/MobileDiag.png
deleted file mode 100644
index 99140cd7a..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/MobileDiag.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceApply.png b/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceApply.png
deleted file mode 100644
index 1072d4273..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceApply.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceDashboard.png b/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceDashboard.png
deleted file mode 100644
index 0e40e6cae..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceDashboard.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceDetails.png b/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceDetails.png
deleted file mode 100644
index d8ae01e5c..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceDetails.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceError.png b/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceError.png
deleted file mode 100644
index e39cb6dc2..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceError.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceTable.png b/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceTable.png
deleted file mode 100644
index 1ef0f9cc9..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/SmartAdviceTable.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-cloudlinux/images/WPPlugins.png b/docs/user-docs/user-docs-shared-cloudlinux/images/WPPlugins.png
deleted file mode 100644
index bc0d5d5f5..000000000
Binary files a/docs/user-docs/user-docs-shared-cloudlinux/images/WPPlugins.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-shared-pro-cloudlinux/.DS_Store b/docs/user-docs/user-docs-shared-pro-cloudlinux/.DS_Store
new file mode 100644
index 000000000..6464676c4
Binary files /dev/null and b/docs/user-docs/user-docs-shared-pro-cloudlinux/.DS_Store differ
diff --git a/docs/user-docs/user-docs-shared-pro-cloudlinux/README.md b/docs/user-docs/user-docs-shared-pro-cloudlinux/README.md
new file mode 100644
index 000000000..4bf04fddc
--- /dev/null
+++ b/docs/user-docs/user-docs-shared-pro-cloudlinux/README.md
@@ -0,0 +1,583 @@
+# CloudLinux OS for end-users
+
+## Introduction
+
+CloudLinux OS is designed for shared hosting providers. It isolates each customer into a separate “Lightweight Virtualized Environment” (LVE), which allocates and limits server resources, like memory, CPU and the number of simultaneous connections, for each web hosting tenant. This ensures that tenants cannot jeopardize the stability of your servers, causing all sites to slow down or even come to a halt. CloudLinux OS also “cages” tenants from one another to avoid security breaches. This way, unstable scripts or malware are not able to sprawl across your customer sites, causing severe harm.
+
+## SmartAdvice Plugin
+
+### Overview
+
+SmartAdvice Plugin is a WordPress Must Use Plugin that displays the available advise for the site, which can be activated/deactivated from the WordPress admin panel.
+Installing and uninstalling the plugin is an automatic process, depending on the available advise for the site.
+
+
+### Requirements
+
+* PHP version 5.6 or higher
+* WordPress version 5.0 or higher
+
+### Managing Advice via SmartAdvice Plugin
+
+If there is available advice, a widget will be displayed in the Dashboard of the WordPress site.
+The table displays a list of advice, their status (1) and the ability to go to their settings (2).
+Click _See advice_ (2) to go to the detailed information of the advice.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceDashboard.webp)
+
+On the plugin page, you can see detailed information on each Advice (2), get acquainted with their statuses (1) and apply them to automatically improve the website (3).
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceDetails.webp)
+
+Advice in the "Applied"(1) status can be deactivated using the "Rollback"(3) button.
+Advice that is in the process of applying or rolling back, displays the percentage of progress (4).
+
+:::tip Note
+Advice activation may take some time.
+:::
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceApply.webp)
+
+If the application of Advice caused an error, you would be notified.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/SmartAdviceError.webp)
+
+Please contact our [Support team](https://www.cloudlinux.com/support-portal/) if you are unable to resolve the issue yourself.
+
+## AccelerateWP
+
+### Overview
+
+AccelerateWP is a complex solution to help customers increase their WordPress site performance. 
+With AccelerateWP you can manage optimization features, like object caching, CSS and JavaScript 
+preprocessing and website preloading.
+
+In order to start using AccelerateWP, go to the cPanel interface and find the `AccelerateWP` 
+application in the `Software` section.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPApp.webp)
+
+If you use Plesk control panel, go to the `Websites & Domains` section on the left, (1) trigger the side panel and (2) choose the AccelerateWP widget.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPlesk.webp)
+
+If you use DirectAdmin control panel, hover over the main menu and choose the AccelerateWP in the Extra Features group.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPDirectAdmin.webp)
+
+Click the application button and get into the AccelerateWP interface.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUserUI.webp)
+
+Each row in the table is the WordPress website that was found on server and each column is the 
+optimization feature.
+
+AccelerateWP is built as advice-driven plugin: the feature is suggested to be enabled once 
+the Smart Advice is issued. Smart advice may be issued during profiling a website with X-Ray. 
+X-Ray PHP profiler detects concrete bottlenecks in website performance and thus is able to select 
+a best suited optimization feature to increase it significantly.
+
+Use the `Advice available` link to check advice details and click the `Apply advice` 
+button to activate the feature.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceReview.webp)
+
+After a couple of minutes, the feature will be activated and advice becomes `Applied`.
+Close the window and see `Active` link in the corresponding cell of the table.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceApplied.webp)
+
+If you still would like to try the feature on the website where advice was not issued,
+click on the gear icon and enable the feature.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPEnableManually.webp)
+
+### AccelerateWP feature: WordPress optimization plugin
+AccelerateWP is a base feature that provides full page caching, GZIP compression and some other useful 
+optimizations.
+
+In order to start working with AccelerateWP feature, check if advice is available in the corresponding 
+cell on the intersection of website and AccelerateWP column.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUserUI.webp)
+
+And click the "Apply advice" button to activate the AccelerateWP feature.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AdviceReview.webp)
+
+After a couple of minutes, the plugin will be installed.
+Login into the WordPress Admin and find the AccelerateWP in the list of active plugins.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/WPPlugins.webp)
+
+Page caching will be enabled by default. Click the "Settings" link below the plugin name to configure additional options.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPlugin.webp)
+
+
+#### Limitations
+* the website must use PHP version 7.3 or higher.
+* the WordPress version must be 5.8 and higher.
+* the other WordPress Caching plugins must not be installed.
+* the WordPress should not run in Multisite mode.
+
+
+### AccelerateWP feature additional options
+Find more additional options in WordPress admin page.
+
+#### Mobile caching
+Use it only if you website is adapted to use on smartphones and mobile phones.
+
+Separate cache files for mobile devices. In this case the content for mobile devices will be cached 
+into different cache file as for desktop\tablets.
+
+This option is necessary if you have some functionality only for mobile devices, not for desktop\tablets.
+
+The following diagram helps you understand if you need mobile caching.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/MobileDiag.webp)
+
+:::tip Note
+If you use an additional layer of Cache (Varnish, NGINX , etc.) make sure it can distinguish between desktop and mobile visitors.
+:::
+
+
+#### User Cache
+It is recommended to use such an option when your website has a unique content for each logged-in user. If the user is not logged-in, a common site cache will be used, otherwise each logged-in user’s content will be cached separately.
+
+
+#### File Optimization
+File Optimization consists of Minification and file Combining.
+
+Minification is the process of minimizing code in your web pages and script files. Webmasters look at minification as a primary method of reducing website load times via the bandwidth they use.
+
+Minification also reduces JS, CSS and HTML files. The goal is removing comments and extra spaces. It crunches variables that minimize code and ultimately reduces the file size.
+
+After minification, the file still functions as it should. The difference is a reduction in bandwidth due to network requests.
+
+**By combining CSS & JS files, HTTP/1 does not allow multiple requests from the same TCP connection between a host server and a web browser.**
+
+Putting CSS and JS files into their respective groups, makes requests for downloads from a browser safe and more efficient. The old way meant multiple connections that took up bandwidth.
+
+**File (CSS & JS) combining is not necessary for HTTP/2 (see https://webspeedtools.com/should-i-combine-css-js/)**
+
+HTTP/2 introduced multiplexing. Now, the browser can send unlimited number of requests to the server, then download all files simultaneously with only one TCP connection.
+
+Consequently, HTTP/2 takes care of multiple TCP connections and the waiting time before each download. In one sense, consolidating CSS and JS files might be unnecessary.
+
+To verify which HTTP version is used for requests on your site, you can use https://tools.keycdn.com/http2-test
+
+
+#### CSS Files
+**Minify CSS**
+
+Minify CSS reduces file sizes by taking out white space and comments embedded in the code.
+
+**Combine CSS**
+
+Combine CSS reduces HTTP requests by merging all your files into one. Combine CSS is not recommended if your site uses HTTP/2.
+
+**Excluded CSS Files**
+
+To single out those CSS files that should not be minimized, list the URLs attached to the CSS files that should be excluded from minification and concatenation (one per line).
+
+:::warning Caution!
+Minification removes the domain from the URL.
+:::
+
+To prevent that, use (. *).CSS wildcards to exclude all files in a specific location.
+
+3rd Party: when excluding external CSS files, use the domain or the full URL path.
+
+**Optimize CSS delivery (Critical Path CSS)**
+
+Critical Path CSS eliminates render-blocking CSS on your website and improves browser page render performance. Your website will load much faster for your visitors.
+
+:::tip Note
+This feature can only be activated in the AccelerateWP hosting panel interface or in the SmartAdvice WordPress plugin. Once activated, you will be able to manage the options in the AccelerateWP WordPress plugin.
+:::
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCriticalCSSEnabled.webp)
+
+The function starts automatically after switching on. It takes some time to generate the Critical CSS. You will see a notification with the generation status. If necessary, you can add additional styles to the Critical CSS in the fallback CSS field.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCriticalCSSStarted.webp)
+
+Each time you change the site's theme, the Critical CSS will be regenerated. Also, if you have made any changes to the styles of your site, you need to manually regenerate the Critical CSS by clicking on the "Regenerate critical CSS" button.
+
+#### JavaScript Files
+**Minify javascript files**
+
+Minify JavaScript removes whitespace and comments to reduce the file size.
+
+**Combine JavaScripts files**
+
+This option will be active only if you choose Minify javascript files. It is not recommended for HTTP2.
+
+**Load JavaScript deferred**
+
+One major cause of slow web pages is a so-called blocking script: [https://www.dummies.com/web-design-development/javascript/deferred-loading-with-javascript/](https://www.dummies.com/web-design-development/javascript/deferred-loading-with-javascript/).
+
+Loading JavaScript called a blocking script blocks the webpage from loading.
+
+Using the `defer` attribute alerts the browser not to wait for the script. Things will continue as usual per the build HTML and DOM processes. Quietly, the script rests in the background, then runs once the DOM is built.
+
+So, the `Load JavaScript deferred` option adds to each script tag the `defer` attribute.
+
+**Delay JavaScript Execution**
+
+This option helps to decrease the page load time by delaying loading of all JavaScripts on the page. This option can be applied only for already cached pages, it is incompatible with the Combine JavaScripts files option.
+
+
+#### Media
+**LazyLoad**
+
+LazyLoad affects the page in the next way - if the user opens the page for the first loading there will be only first displayed (visible to user) images, others will be loaded if the user scrolls down. Images added via CSS file, the `<style>` tag or via `Elementor` will not be affected by the LazyLoad.
+
+The following options allows working with LazyLoad
+* Enable LazyLoad for images
+* Enable LazyLoad for iframes and videos
+* Excluded images or iframes
+
+
+#### Image Dimensions
+Add Missing Image Dimensions
+
+Correct image dimensions help the browser to recognize page structure without delays, because the browser knows how much space is needed for the image.
+
+Cases when image will not be affected by the *Add Missing Image Dimensions*:
+
+* Images which have any attribute with name containing `*height*` or `*width*`
+* Images which are part of the `<picture>` tag
+* SVG images
+* Image from external domains
+
+
+#### Image Optimization
+Optimize image delivery by minifying the existing images and serving next-gen image formats when possible.
+
+:::tip Note
+This feature can only be activated/deactivated in the AccelerateWP hosting panel interface or in the SmartAdvice WordPress plugin.
+:::
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSettings.webp)
+
+After activating the function, it will start searching for files in the `WP_CONTENT_DIR/uploads` folder in supported formats - jpg, jpeg, gif and png.
+
+Each found file (except those already optimized) will be queued for optimization using CloudLinux SaaS.
+
+In the WordPress admin interface, the number of images to optimize will be displayed at the top of the AccelerateWP settings screen.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationProgress.webp)
+
+After the file is successfully optimized, a notification will be sent to the special API of the site that the file is ready.
+
+The original file will be copied to the backup folder:  
+`WP_CONTENT_DIR/accelerate-wp/images/backup/uploads/{relative_path_of_the_file}`  
+Then it was replaced with an optimized one and added with an additional file in the webp format.
+
+The image optimization function automatically activates the ability of the plugin to replace the original images with the WebP format if they are present in the file system.
+
+When a new image is uploaded to your site using the WordPress functions/interface, it will be submitted for optimization with high priority.
+
+After optimization of all images is completed, you will see the notification in the admin panel.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSuccess.webp)
+
+**Restore images from backup folder**
+
+`WP_CONTENT_DIR` - path to your site's wp-content folder
+
+Test before run (dry run):  
+```rsync -avnI WP_CONTENT_DIR/accelerate-wp/images/backup/uploads/ WP_CONTENT_DIR/uploads```
+
+Restore and override files from backup folder:  
+```rsync -avI WP_CONTENT_DIR/accelerate-wp/images/backup/uploads/ WP_CONTENT_DIR/uploads```
+
+**Troubleshooting**
+
+**Wrong file permissions** - Image optimization will not start and show an admin notice. You can try re-enabling the optimization feature again or create folders manually.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationWrongFilePermissions.webp)
+
+**Database table cannot be created** - Image optimization will not start and show an admin notice. You can try re-enabling the optimization feature or contact your system administrator.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationDatabaseTableCannotBeCreated.webp)
+
+**Monthly quota exceeded** - Your plan has reached the feature usage limit for current month. The plugin will show an admin notice and pause the image optimization until the start of the next month.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationMonthlyQuotaExceeded.webp)
+
+**Authentication failed** - The plugin will postpone the image optimization process and retry every 15 minutes. If the authentication is failing for more then 24 hours, the plugin will stop the process and show an admin notice. Contact your system administrator.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationAuthenticationFailed.webp)
+
+**SaaS service not available** - The plugin will show an admin notice, pause processing other jobs in the queue and retry every 5  minutes for the next hour and then every hour.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPImageOptimizationSaaSServiceNotAvailable.webp)
+
+#### Preload
+**Preload Cache**
+
+Usually, a page cache is created when this page is first visited. You can activate the preload page cache. It means that the cache for the page will be created when the page is created or updated.
+
+If sitemap-based cache preloading is activated, a specified sitemap file will be used for preliminary cache generation.
+
+**Preload Links**
+
+Provides functionality to preload the HTML content of the hovered link for acceleration loading pages after click.
+
+**Prefetch DNS Requests**
+
+If your website uses external resources (e.g. Google fonts, YouTube video, etc.), AccelerateWP can preload these resources for accelerating loading pages. To activate preloading external URLs, provide a list of external URLs.
+
+**Preload Fonts**
+
+Accelerates the loading of fonts by the browser, informing the browser at the very beginning of the request about the full list of fonts to download
+
+
+#### Advanced Rules
+Advanced site caching settings. If you have specific pages that must be processed individually you can add a custom rule for them.
+
+**Never Cache URL(s)**
+
+Provide a list of URLs that cannot be cached.
+
+**Never Cache Cookies**
+
+Provide a list of Cookie files that cannot be cached.
+
+**Never Cache User Agent(s)**
+
+Provide a list of User Agent names that cannot be cached.
+
+**Always Purge URL(s)**
+
+You can specify URLs that will be deleted from the cache when any post or page will be updated.
+
+**Cache Query String(s)**
+
+By default AccelerateWP does not cache URLs with query strings, but in this option, you can specify GET-parameters that must be cached.
+
+
+#### Database
+Database optimization provides clearing database from expired and unused data.
+
+**Post Cleanup**
+
+Provides clearing posts revisions, autosaved drafts, and deleted posts from the trash. Be careful, you will not be able to restore this data after clearing it.
+
+**Comments Cleanup**
+
+Provides clearing spam and deleted comments from the trash. Be careful, you will not be able to restore this data after clearing it.
+
+**Transients Cleanup**
+
+Provides clearing temporary options for existing plugins and older unused options that keep after deleting plugins.
+
+**Database Cleanup**
+
+Provides table optimizations in your database server.
+
+**Automatic cleanup**
+
+Allows you to schedule periodic database cleanups.
+
+
+#### Heartbeat
+WordPress Heartbeat is a function of server polling that provides delivery data from server to browser periodically.
+
+**Reduce or disable Heartbeat activity**
+
+To control server loads you can activate the *Control Heartbeat* function and reduce or disable Heartbeat activity. You can manage Heartbeat activity separately for backend, frontend, and post-editing parts. Be careful, disabling Heartbeat can break plugins that use this functionality.
+
+
+#### One-click AccelerateWP Add-ons
+**Varnish**
+
+When the server uses Varnish, you need to activate the add-on for implementing clearing Varnish cache when AccelerateWP clears site cache.
+
+**WebP Compatibility**
+
+If your site uses the WebP plugin you can activate AccelerateWP WebP Compatibility add-on to achieve browser compatibility with your WebP images.
+
+
+#### CDN
+
+:::tip Note
+When using AccelerateWP CDN, then the enabling/disabling can only be done in the hosting panel in the AccelerateWP interface.
+:::
+
+Enabling AccelerateWP Content Delivery Network using Advice will automatically set up your AccelerateWP WordPress plugin.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPCDNEnabled.webp)
+
+CDN stands for Content Delivery Network, the feature that simplifies and speeds up resources loading for your customers.
+
+In order to start using 3rd party CDN, you need:
+1. Public website on the Internet with a valid domain name
+2. PullZone of CDN
+
+To set up a CDN in the AccelerateWP you must register CDN zone and get pull zone configuration.
+
+Go to the WP Admin of your WordPress site, open the settings of the AccelerateWP (Step 1) and select the CDN section (Step 2). Select the option: Enable Content Delivery Network (Step 3) and fill in the "CDN CNAME(s)" field with CDN pull zone address (Step 4).
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/CDNFlow.webp)
+
+Click the "Save changes" button (Step 5).
+
+In order to check CDN is working, open website in incognito mode with Developer Tools open in your browser. Go to the "Network" tab, find the "Domain" column, you should see the specified address in the CDN settings of the AccelerateWP plugin for your js/css/image files.
+
+
+#### Tools
+For backing up the settings, there is a function for exporting settings. To use it, click the *Download settings* button. When you need to restore settings, choose your saved settings file and click the *Upload file and import settings* button.
+
+
+### AccelerateWP Premium: Object caching feature
+
+:::tip Note
+Object caching is a premium feature which is currently in beta and available only for some hosters.
+:::
+
+Unlike full page caching, this mechanism is not saving the whole page in cache, but stores database 
+query results in additional storage for quick access. This mechanism is really helpful in case your 
+site needs to process multiple pages per second as requests come in and may be helpful in case when 
+full page caching cannot be used, e.g. on personalized pages.
+
+The Object caching feature is recommended to use in the following:
+
+* Websites used for extremely active exchange of information (forums, blogs, etc..)
+* Websites with too many requests running at the same time
+* Websites having important pages that cannot be cached entirely and exclude from the "whole page caching" due to any reason
+
+In order to start working with Object caching feature, check if advice is available in the corresponding
+cell on the intersection of website and AccelerateWP Premium column.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumUI.webp)
+
+And click the "Apply advice" button to activate the Object caching feature.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumReview.webp)
+
+If you still would like to try the feature on the website where advice was not issued,
+click on the gear icon and enable the feature.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPEnableManually.webp)
+
+In case if you still don't have active Premium subscription, you will see the following
+window with link to the page where you can upgrade subscription.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeLink.webp)
+
+When upgrade link is clicked, you will see the billing interface opened in new browser window.
+Successful upgrade of your subscription will automatically close the billing window and start
+background upgrade process. Once your payment is processed, feature will be automatically installed
+on the website.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeModuleWait.webp)
+
+If you don't see any links, contact your hoster to upgrade your subscription manually.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPUpgradeNoLink.webp)
+
+If subscription is active, you will bypass the subscription window and proceed
+directly to the plugin installation.
+
+After a couple of minutes, the redis instance will be configured, plugin will be installed and activated.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/AWPPremiumApplied.webp)
+
+Close the window and see "Active" link in the corresponding cell of the table.
+
+Object caching does not require any additional configuration.
+
+#### Limitations
+There are the following requirements to activate Object Caching:
+* the website must use PHP version 7.2 or higher.
+* the WordPress version must be 3.7 and higher.
+* the other WordPress Caching plugins must not be installed.
+* the [Snuffleupagus](https://snuffleupagus.readthedocs.io/) must be turned off.
+* the WordPress should not run in Multisite mode.
+
+
+### FAQ
+#### What does "AccelerateWP is advice-driven" mean?
+CloudLinux automatically tracks slow requests for the websites for the appropriate period of
+time and sometimes creates an advice to activate the specific feature for your website. 
+When you see the `Advice available` link in the corresponding feature cell, it means that 
+AccelerateWP decided that this feature will significantly improve the performance of your website. 
+Otherwise you see the `No advice` note.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/FAQAdviceTable.webp)
+
+Click the `Advice available` link and push `Apply advice` button to automatically enable the feature.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/FAQAdviceReview.webp)
+
+#### What should I do if I see both the "No advice" note and the "Incompatible" link?
+Causes of the `Incompatible` note are always Limitations: [AccelerateWP](/user-docs/user-docs-shared-pro-cloudlinux/#limitations) or
+[AccelerateWP Premium](/user-docs/user-docs-shared-pro-cloudlinux/#limitations-1) related ones.
+
+Each message has a small "how to", so you can try to fix them by yourself via control panel or WordPress Admin interface.
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/FAQIncompatible.webp)
+
+![](/images/user-docs/user-docs-shared-pro-cloudlinux/FAQIncMessage.webp)
+
+#### What should I do if I see the "Misconfiguration"?
+The misconfiguration message can appear in the cases when optimization feature was activated, but AccelerateWP detects it as not working anymore.
+
+The most frequent cases are:
+* Redis process cannot be started for some period of time.
+  * **Resolution:** [contact our support team](https://cloudlinux.zendesk.com/hc/en-us/requests/new) for further investigation.
+* WordPress Redis Object Cache plugin is disabled via WordPress Admin Gui/Plugins.
+  * **Resolution:** You can resolve it by yourself via the WordPress Admin Gui.
+* Version of PHP was changed for website and it is no longer compatible with feature.
+  * **Resolution:** change website php version to the one which is compatible with optimization feature.
+  
+In all cases, please refer to the misconfiguration text, which has a small "how to", so you can try to fix them by yourself via control panel or WordPress Admin interface.
+
+#### Feature activation starts, but fails with "post check issue"
+Post check is a sanity check of your website to make sure that it is working properly after feature activation.
+
+AccelerateWP expects website to:
+* return http code 200 when downloading home page
+* do not write any errors in logs
+
+If you have some Post check issue after turning on the feature, you can leave them as disabled (in that case the engine reverts all changes). Or you can ignore the issue and continue working with the enabled Object Caching in order to manually check the source of the issue.
+
+#### How to measure the speed of the website?
+You can measure the speed of your website before turning On the Object Caching and after.
+
+The popular tools:
+* [PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights/)
+* [Pingdom Website Speed Test](https://tools.pingdom.com/)
+
+#### Where the AccelerateWP tool log files are located?
+Login via SSH, find in your home directory `~/.clwpos/main.log`. Or you can open it using the control panel file manager.
+
+#### I already use the WordPress Redis object cache plugin. Will the AccelerateWP be useful for me?
+No, in the current version we suggest the same optimization as you already have. But we include other useful features in the next versions, so let’s stay in touch.
+
+#### I already use the WordPress Redis object cache PRO plugin. Will the AccelerateWP be useful for me?
+No, in the current version we suggest the same optimization as you already have. But we include other useful features in the next versions, so let’s stay in touch.
+
+#### Why did my site's PageSpeed score decrease after enabling AccelerateWP?
+AccelerateWP & mod_pagespeed:
+1. Enabling AccelerateWP activates the force gzip cache function when the cache is archived by the plugin, and Apache simply gives it as is to the user browser. In this case, the mod_pagespeed module cannot apply its optimizations, since it does not work with archives, but only with pure HTML.
+2. AccelerateWP does not activate all possible resource optimizations by default.
+
+Because of this, the total score of the site by PageSpeed may be reduced. **To improve the PageSpeed score, it is necessary to enable additional optimizations of AccelerateWP.**
+
+AccelerateWP with maximum settings for fast sites gives a similar PageSpeed score for mobile and an improved result for desktop.
+AccelerateWP with maximum settings for sites loading longer than 1 second always gives a better score than mod_pagespeed.
+
+#### My subscription was upgraded, but feature was not installed automatically
+This can be caused by several reasons. Either your website was detected to have malfunctions
+or there was an issue with environment when feature was installed (e.g. bad internet connectivity with WordPress market).
+
+First, try to enable feature manually using AccelerateWP interface. 
+Most likely you will find human-readable error message there.
+
+If the issue persists, or you cannot resolve it yourself, 
+contact your hoster and attach `~/.clwpos/main.log` for further investigation. 
\ No newline at end of file
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/.DS_Store b/docs/user-docs/user-docs-solo-cloudlinux/.DS_Store
index b0c391578..55fc435b3 100644
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/.DS_Store and b/docs/user-docs/user-docs-solo-cloudlinux/.DS_Store differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/README.md b/docs/user-docs/user-docs-solo-cloudlinux/README.md
index b802a6576..091007a3a 100644
--- a/docs/user-docs/user-docs-solo-cloudlinux/README.md
+++ b/docs/user-docs/user-docs-solo-cloudlinux/README.md
@@ -9,7 +9,7 @@ We provide the CloudLinux OS Solo with pre-installed features, but for grafical
 panel on your server.
 
 :::warning WARNING!
-Currently supported OS version is CloudLinux OS Solo 8 only. Therefore, for now, there is no possibility to use
+Currently supported OS version is CloudLinux OS Solo 8+ only. Therefore, for now, there is no possibility to use
 CloudLinux OS Solo on servers with OS version 6 and 7. Please refer to the currently supported OS versions.
 :::
 
@@ -26,15 +26,19 @@ In order to start using AccelerateWP, go to the cPanel interface and find the `A
 application in the `Software` section.
 
 
-![](./images/AWPApp.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPApp.webp)
 
 If you use Plesk control panel, (1) trigger the side panel and (2) choose the AccelerateWP widget.
 
-![](./images/AWPPlesk.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPPlesk.webp)
+
+If you use DirectAdmin control panel, hover over the main menu and choose the AccelerateWP in the Extra Features group.
+
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPDirectAdmin.webp)
 
 Click the application button and get into the AccelerateWP interface.
 
-![](./images/AWPUserUI.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.webp)
 
 Each row in the table is the WordPress website that was found on server and each column is the 
 optimization feature.
@@ -47,17 +51,17 @@ a best suited optimization feature to increase it significantly.
 Use the `Advice available` link to check advice details and click the `Apply advice` 
 button to activate the feature.
 
-![](./images/AdviceReview.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.webp)
 
 After a couple of minutes, the feature will be activated and advice becomes `Applied`.
 Close the window and see `Active` link in the corresponding cell of the table.
 
-![](./images/AdviceApplied.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AdviceApplied.webp)
 
 If you still would like to try the feature on the website where advice was not issued,
 click on the gear icon and enable the feature.
 
-![](./images/AWPEnableManually.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.webp)
 
 ### AccelerateWP feature: WordPress optimization plugin
 AccelerateWP is a base feature that provides full page caching, GZIP compression and some other useful 
@@ -66,27 +70,27 @@ optimizations.
 In order to start working with AccelerateWP feature, check if advice is available in the corresponding 
 cell on the intersection of website and AccelerateWP column.
 
-![](./images/AWPUserUI.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPUserUI.webp)
 
 And click the "Apply advice" button to activate the AccelerateWP feature.
 
-![](./images/AdviceReview.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AdviceReview.webp)
 
 After a couple of minutes, the plugin will be installed.
 Login into the WordPress Admin and find the AccelerateWP in the list of active plugins.
 
-![](./images/WPPlugins.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/WPPlugins.webp)
 
 Page caching will be enabled by default. Click the "Settings" link below the plugin name to configure additional options.
 
-![](./images/AWPPlugin.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPPlugin.webp)
 
 
 #### Limitations
-* Website must use PHP version 7.2 or higher.
-* WordPress version must be 5.6 and higher.
-* Other WordPress Caching plugins must not be installed.
-* WordPress should not run in Multisite mode.
+* the website must use PHP version 7.3 or higher.
+* the WordPress version must be 5.8 and higher.
+* the other WordPress Caching plugins must not be installed.
+* the WordPress should not run in Multisite mode.
 
 
 ### AccelerateWP feature additional options
@@ -102,7 +106,7 @@ This option is necessary if you have some functionality only for mobile devices,
 
 The following diagram helps you understand if you need mobile caching.
 
-![](./images/MobileDiag.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/MobileDiag.webp)
 
 :::tip Note
 If you use an additional layer of Cache (Varnish, NGINX , etc.) make sure it can distinguish between desktop and mobile visitors.
@@ -164,11 +168,11 @@ Critical Path CSS eliminates render-blocking CSS on your website and improves br
 This feature can only be activated in the AccelerateWP hosting panel interface or in the SmartAdvice WordPress plugin. Once activated, you will be able to manage the options in the AccelerateWP WordPress plugin.
 :::
 
-![AWPCriticalCSSEnabled](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/66788efe-0c22-4310-a11b-572b6647f3b0)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPCriticalCSSEnabled.webp)
 
 The function starts automatically after switching on. It takes some time to generate the Critical CSS. You will see a notification with the generation status. If necessary, you can add additional styles to the Critical CSS in the fallback CSS field.
 
-![AWPCriticalCSSStarted](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/abdd950a-75ca-4bde-8eb9-faae0b5194c5)
+![AWPCriticalCSSStarted](/images/user-docs/user-docs-solo-cloudlinux/AWPCriticalCSSStarted.webp)
 
 Each time you change the site's theme, the Critical CSS will be regenerated. Also, if you have made any changes to the styles of your site, you need to manually regenerate the Critical CSS by clicking on the "Regenerate critical CSS" button.
 
@@ -226,7 +230,7 @@ Optimize image delivery by minifying the existing images and serving next-gen im
 This feature can only be activated/deactivated in the AccelerateWP hosting panel interface or in the SmartAdvice WordPress plugin.
 :::
 
-![AWPImageOptimizationSettings](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/1a72f6b7-35a1-4a69-a1e2-53b81329645a)
+![AWPImageOptimizationSettings](/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSettings.webp)
 
 After activating the function, it will start searching for files in the `WP_CONTENT_DIR/uploads` folder in supported formats - jpg, jpeg, gif and png.
 
@@ -234,7 +238,7 @@ Each found file (except those already optimized) will be queued for optimization
 
 In the WordPress admin interface, the number of images to optimize will be displayed at the top of the AccelerateWP settings screen.
 
-![AWPImageOptimizationProgress](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/b53f9409-104d-43db-a545-81237ad26e61)
+![AWPImageOptimizationProgress](/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationProgress.webp)
 
 After the file is successfully optimized, a notification will be sent to the special API of the site that the file is ready.
 
@@ -248,7 +252,7 @@ When a new image is uploaded to your site using the WordPress functions/interfac
 
 After optimization of all images is completed, you will see the notification in the admin panel.
 
-![AWPImageOptimizationSuccess](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/143f32b1-1ef3-47c0-9f67-b1e8aa93b5a6)
+![AWPImageOptimizationSuccess](/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSuccess.webp)
 
 
 **Restore images from backup folder**
@@ -265,24 +269,46 @@ Restore and override files from backup folder:
 
 **Wrong file permissions** - Image optimization will not start and show an admin notice. You can try re-enabling the optimization feature again or create folders manually.
 
-![AWPImageOptimizationWrongFilePermissions](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/062062c4-08e3-4848-984a-42afae22a0f2)
+![AWPImageOptimizationWrongFilePermissions](/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationWrongFilePermissions.webp)
 
 **Database table cannot be created** - Image optimization will not start and show an admin notice. You can try re-enabling the optimization feature or contact your system administrator.
 
-![AWPImageOptimizationDatabaseTableCannotBeCreated](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/7515a087-7a6b-4923-bf4f-2d42cb986be5)
+![AWPImageOptimizationDatabaseTableCannotBeCreated](/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationDatabaseTableCannotBeCreated.webp)
 
 **Monthly quota exceeded** - Your plan has reached the feature usage limit for current month. The plugin will show an admin notice and pause the image optimization until the start of the next month.
 
-![AWPImageOptimizationMonthlyQuotaExceeded](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/494fe2c4-3915-4b6b-9245-ff67c0777de8)
+![AWPImageOptimizationMonthlyQuotaExceeded](/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationMonthlyQuotaExceeded.webp)
 
 **Authentication failed** - The plugin will postpone the image optimization process and retry every 15 minutes. If the authentication is failing for more then 24 hours, the plugin will stop the process and show an admin notice. Contact your system administrator.
 
-![AWPImageOptimizationAuthenticationFailed](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/5d62fb2d-51f0-410a-94d5-de74619c61cb)
+![AWPImageOptimizationAuthenticationFailed](/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationAuthenticationFailed.webp)
 
 **SaaS service not available** - The plugin will show an admin notice, pause processing other jobs in the queue and retry every 5  minutes for the next hour and then every hour.
 
-![AWPImageOptimizationSaaSServiceNotAvailable](https://github.com/cloudlinux/user-docs-solo-cloudlinux/assets/71260515/5f73a64d-bd82-482e-9a72-29dbb92ab676)
-
+![AWPImageOptimizationSaaSServiceNotAvailable](/images/user-docs/user-docs-solo-cloudlinux/AWPImageOptimizationSaaSServiceNotAvailable.webp)
+
+**Some WebP images not loading on nginx**
+
+1. Insert this block **before** the server directive, which creates the `$webp_suffix` if the browser supports WebP:
+```
+map $http_accept $webp_suffix {
+    default "";
+    "~*webp" ".webp";
+}
+```
+2. Insert this block **inside** the server directive:
+```
+location ~* ^(/wp-content/.+)\.(png|jpe?g)$ {
+    set $base $1;
+    set $webp_uri $base$webp_suffix;
+    set $webp_old_uri $base.$2$webp_suffix;
+    set $root "<<FULL PATH OF WP-CONTENT PARENT>>";
+    root $root;
+    add_header Vary Accept;
+    try_files $webp_uri $webp_old_uri $uri =404;
+}
+```
+3. Make sure to replace `<<FULL PATH OF WP-CONTENT PARENT>>` with the actual **absolute path** to the wp-content folder, without the folder itself. Example: `/home/john/public_html/`.
 
 #### Preload
 **Preload Cache**
@@ -371,21 +397,27 @@ If your site uses the WebP plugin you can activate AccelerateWP WebP Compatibili
 
 
 #### CDN
+
+
+:::tip Note
+When using AccelerateWP CDN, then the enabling/disabling can only be done in the hosting panel in the AccelerateWP interface.
+:::
+
+Enabling AccelerateWP Content Delivery Network using Advice will automatically set up your AccelerateWP WordPress plugin.
+
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPCDNEnabled.webp)
+
 CDN stands for Content Delivery Network, the feature that simplifies and speeds up resources loading for your customers.
 
-In order to start using CDN, you need:
+In order to start using 3rd party CDN, you need:
 1. Public website on the Internet with a valid domain name
-2. Pull a CDN zone, for example, https://bunny.net/
+2. PullZone of CDN
 
 To set up a CDN in the AccelerateWP you must register CDN zone and get pull zone configuration.
 
-After setting up the Pull zone, you will receive an address, for example: domain.b-cdn.net
-
-![](./images/CDNGeneral.png)
-
-Go to the WP Admin of your WordPress site, open the settings of the AccelerateWP (Step 1) and select the CDN section (Step 2).  Select the option: Enable Content Delivery Network (Step 3) and fill in the "CDN CNAME(s)" field with the previously received domain.b-cdn.net address (Step 4).
+Go to the WP Admin of your WordPress site, open the settings of the AccelerateWP (Step 1) and select the CDN section (Step 2). Select the option: Enable Content Delivery Network (Step 3) and fill in the "CDN CNAME(s)" field with CDN pull zone address (Step 4).
 
-![](./images/CDNFlow.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/CDNFlow.webp)
 
 Click the "Save changes" button (Step 5).
 
@@ -416,39 +448,39 @@ The Object caching feature is recommended to use in the following:
 In order to start working with Object caching feature, check if advice is available in the corresponding
 cell on the intersection of website and AccelerateWP Premium column.
 
-![](./images/AWPPremiumUI.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumUI.webp)
 
 And click the "Apply advice" button to activate the Object caching feature.
 
-![](./images/AWPPremiumReview.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumReview.webp)
 
 If you still would like to try the feature on the website where advice was not issued,
 click on the gear icon and enable the feature.
 
-![](./images/AWPEnableManually.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPEnableManually.webp)
 
 In case if you still don't have active Premium subscription, you will see the following
 window with link to the page where you can upgrade subscription.
 
-![](./images/AWPUpgradeLink.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeLink.webp)
 
 When upgrade link is clicked, you will see the billing interface opened in new browser window.
 Successful upgrade of your subscription will automatically close the billing window and start
 background upgrade process. Once your payment is processed, feature will be automatically installed
 on the website.
 
-![](./images/AWPUpgradeModuleWait.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeModuleWait.webp)
 
 If you don't see any links, contact your hoster to upgrade your subscription manually.
 
-![](./images/AWPUpgradeNoLink.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPUpgradeNoLink.webp)
 
 If subscription is active, you will bypass the subscription window and proceed
 directly to the plugin installation.
 
 After a couple of minutes, the redis instance will be configured, plugin will be installed and activated.
 
-![](./images/AWPPremiumApplied.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/AWPPremiumApplied.webp)
 
 Close the window and see "Active" link in the corresponding cell of the table.
 
@@ -456,11 +488,11 @@ Object caching does not require any additional configuration.
 
 #### Limitations
 There are the following requirements to activate Object Caching:
-* Website must use ea-PHP version 7.4 or 8.0.
-* WordPress version must be 3.7 and higher.
-* Other WordPress Caching plugins must not be installed.
-* [Snuffleupagus](https://snuffleupagus.readthedocs.io/) must be turned off.
-* WordPress should not run in Multisite mode.
+* the website must use PHP version 7.2 or higher.
+* the WordPress version must be 3.7 and higher.
+* the other WordPress Caching plugins must not be installed.
+* the [Snuffleupagus](https://snuffleupagus.readthedocs.io/) must be turned off.
+* the WordPress should not run in Multisite mode.
 
 
 ### FAQ
@@ -472,11 +504,11 @@ When you see the `Advice available` link in the corresponding feature cell, it m
 AccelerateWP decided that this feature will significantly improve the performance of your website. 
 Otherwise you see the `No advice` note.
 
-![](./images/FAQAdviceTable.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceTable.webp)
 
 Click the `Advice available` link and push `Apply advice` button to automatically enable the feature.
 
-![](./images/FAQAdviceReview.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/FAQAdviceReview.webp)
 
 #### What should I do if I see both the "No advice" note and the "Incompatible" link?
 Causes of the `Incompatible` note are always Limitations: [AccelerateWP](/user-docs/user-docs-solo-cloudlinux/#limitations) or
@@ -484,9 +516,9 @@ Causes of the `Incompatible` note are always Limitations: [AccelerateWP](/user-d
 
 Each message has a small "how to", so you can try to fix them by yourself via control panel or WordPress Admin interface.
 
-![](./images/FAQIncompatible.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/FAQIncompatible.webp)
 
-![](./images/FAQIncMessage.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/FAQIncMessage.webp)
 
 #### What should I do if I see the "Misconfiguration"?
 The misconfiguration message can appear in the cases when optimization feature was activated, but AccelerateWP detects it as not working anymore.
@@ -549,22 +581,22 @@ contact your hoster and attach `~/.clwpos/main.log` for further investigation.
 
 ## End-user X-Ray plugin
 
-The end-user X-Ray plugin is enabled by default on CloudLinux OS Solo.
+The end-user X-Ray plugin can be installed and enabled by the server administrator via CloudLinux Manager.
 
-![](./images/solo_XRayEndUserPluginUIIcon.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/solo_XRayEndUserPluginUIIcon.webp)
 
 ### How to manage the end-user X-Ray plugin
 
 The web interface of the end-user X-Ray plugin is almost the same as the X-Ray administrator interface.
 
-![](./images/XRayEndUserUI.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUI.webp)
 
 But there are some differences and they are described further.
 
 * End-users can create tasks only for their domains from the drop-down list:
-  ![](./images/XRayEndUserUIStart.png)
+  ![](/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUIStart.webp)
 * To specify URL or wildcard, end-users should use the input field next to the domain:
-  ![](./images/XRayEndUserUiSpecifyURL.png)
+  ![](/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUiSpecifyURL.webp)
 
 :::warning Note
 Tracing tasks created by an end-user will also be displayed in the administrator interface and administrators can manage
@@ -582,7 +614,7 @@ other end-users will not be displayed in the UI of the current user.
 * If continuous tracing is enabled for the domain, the end-user will not be able to create a new task for this domain
   because the same rule works - it will be a duplicate of the existing tracing tasks. The next warning will appear:
 
-  ![](./images/XRayEndUserUIWarning.png)
+  ![](/images/user-docs/user-docs-solo-cloudlinux/XRayEndUserUIWarning.webp)
 
   To solve this, the existing running tasks for the same Domain/URL should be stopped or completed. You can find more
   details about this in
@@ -608,12 +640,12 @@ If there is available advice, a widget will be displayed in the Dashboard of the
 The table displays a list of advice, their status (1) and the ability to go to their settings (2).
 Click _See advice_ (2) to go to the detailed information of the advice.
 
-![](./images/SmartAdviceDashboard.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceDashboard.webp)
 
 On the plugin page, you can see detailed information on each Advice (2), get acquainted with their statuses (1) and
 apply them to automatically improve the website (3).
 
-![](./images/SmartAdviceDetails.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceDetails.webp)
 
 Advice in the "Applied"(1) status can be deactivated using the "Rollback"(3) button.
 Advice that is in the process of applying or rolling back, displays the percentage of progress (4).
@@ -622,11 +654,11 @@ Advice that is in the process of applying or rolling back, displays the percenta
 Advice activation may take some time.
 :::
 
-![](./images/SmartAdviceApply.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceApply.webp)
 
 If the application of Advice caused an error, you would be notified.
 
-![](./images/SmartAdviceError.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/SmartAdviceError.webp)
 
 Please contact our [Support team](https://www.cloudlinux.com/support-portal/) if you are unable to resolve the issue
 yourself.
@@ -638,7 +670,7 @@ yourself.
 
 To manager PHP versions and modules for user domains find “ Select PHP selector “
 
-![](./images/userdoc_php_selector_1.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_1.webp)
 
 There are several tabs in PHP selector plugin:
 
@@ -646,12 +678,30 @@ There are several tabs in PHP selector plugin:
 domain php version by CloudLinux PHP selector.
 Selected version will be applied for all user domains.
 
-![](./images/userdoc_php_selector_2.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_2.webp)
 
 **Extensions** tab gives the ability to manage extensions for selected PHP version.
 
-![](./images/userdoc_php_selector_3.png)
+![](/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_3.webp)
 
 **Options** tab gives the ability to manage extensions for selected PHP version.
 
-![](./images/userdoc_php_selector_4.png)
\ No newline at end of file
+![](/images/user-docs/user-docs-solo-cloudlinux/userdoc_php_selector_4.webp)
+
+## NodeJS/Python Selectors
+Since CloudLinux Manager version 7.11.0-1 added support of NodeJS/Python selectors.
+Detailed instructions of how yo use them can be found by the links below:
+* [Node.js Selector client plugin](https://docs.cloudlinux.com/cloudlinuxos/lve_manager/#node-js-selector-client-plugin)
+* [Python Selector client plugin](https://docs.cloudlinux.com/cloudlinuxos/lve_manager/#python-selector-client-plugin)
+
+## Resource Usage client plugin
+Since CloudLinux Manager version 7.11.0-1 added support of Resource Usage client plugin.
+
+:::tip Note:
+Because the CloudLinux OS Solo does not support LVE, customer can only see the Inodes usage.
+Follow this documentation to [setup Inodes limits](https://docs.cloudlinux.com/cloudlinuxos/limits/#inodes)
+:::
+
+![](/images/user-docs/user-docs-solo-cloudlinux/ResourceUsageWithoutLVE.webp)
+
+See [Resource Usage client plugin](https://docs.cloudlinux.com/cloudlinuxos/lve_manager/#resource-usage-client-plugin)
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237417668-66788efe-0c22-4310-a11b-572b6647f3b0.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237417668-66788efe-0c22-4310-a11b-572b6647f3b0.png
deleted file mode 100644
index 0fb455cfa..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237417668-66788efe-0c22-4310-a11b-572b6647f3b0.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237417908-abdd950a-75ca-4bde-8eb9-faae0b5194c5.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237417908-abdd950a-75ca-4bde-8eb9-faae0b5194c5.png
deleted file mode 100644
index a7f4e817b..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237417908-abdd950a-75ca-4bde-8eb9-faae0b5194c5.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237428202-1a72f6b7-35a1-4a69-a1e2-53b81329645a.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237428202-1a72f6b7-35a1-4a69-a1e2-53b81329645a.png
deleted file mode 100644
index c55a97477..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237428202-1a72f6b7-35a1-4a69-a1e2-53b81329645a.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237428270-b53f9409-104d-43db-a545-81237ad26e61.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237428270-b53f9409-104d-43db-a545-81237ad26e61.png
deleted file mode 100644
index 0847af784..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237428270-b53f9409-104d-43db-a545-81237ad26e61.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237428367-143f32b1-1ef3-47c0-9f67-b1e8aa93b5a6.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237428367-143f32b1-1ef3-47c0-9f67-b1e8aa93b5a6.png
deleted file mode 100644
index 44e6e4c66..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237428367-143f32b1-1ef3-47c0-9f67-b1e8aa93b5a6.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237428429-062062c4-08e3-4848-984a-42afae22a0f2.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237428429-062062c4-08e3-4848-984a-42afae22a0f2.png
deleted file mode 100644
index 4a8daebbd..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237428429-062062c4-08e3-4848-984a-42afae22a0f2.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237428544-7515a087-7a6b-4923-bf4f-2d42cb986be5.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237428544-7515a087-7a6b-4923-bf4f-2d42cb986be5.png
deleted file mode 100644
index c116991d4..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237428544-7515a087-7a6b-4923-bf4f-2d42cb986be5.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237428583-494fe2c4-3915-4b6b-9245-ff67c0777de8.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237428583-494fe2c4-3915-4b6b-9245-ff67c0777de8.png
deleted file mode 100644
index b936ce327..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237428583-494fe2c4-3915-4b6b-9245-ff67c0777de8.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237428648-5d62fb2d-51f0-410a-94d5-de74619c61cb.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237428648-5d62fb2d-51f0-410a-94d5-de74619c61cb.png
deleted file mode 100644
index 16fdc57c1..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237428648-5d62fb2d-51f0-410a-94d5-de74619c61cb.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/237428754-5f73a64d-bd82-482e-9a72-29dbb92ab676.png b/docs/user-docs/user-docs-solo-cloudlinux/images/237428754-5f73a64d-bd82-482e-9a72-29dbb92ab676.png
deleted file mode 100644
index 53be3bb71..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/237428754-5f73a64d-bd82-482e-9a72-29dbb92ab676.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPApp.8999ae0f.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPApp.8999ae0f.png
deleted file mode 100644
index 7980501c5..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPApp.8999ae0f.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPApp.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPApp.png
deleted file mode 100644
index 7980501c5..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPApp.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.2a271fe5 (1).png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.2a271fe5 (1).png
deleted file mode 100644
index 3e1f32c89..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.2a271fe5 (1).png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.2a271fe5.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.2a271fe5.png
deleted file mode 100644
index 3e1f32c89..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.2a271fe5.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.png
deleted file mode 100644
index 3e1f32c89..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPEnableManually.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlesk.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlesk.png
deleted file mode 100644
index f74f94f2a..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlesk.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlugin.452c01c7.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlugin.452c01c7.png
deleted file mode 100644
index c0b54e248..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlugin.452c01c7.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlugin.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlugin.png
deleted file mode 100644
index c0b54e248..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPlugin.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumApplied.f4ab49cb.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumApplied.f4ab49cb.png
deleted file mode 100644
index 48b84a74f..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumApplied.f4ab49cb.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumApplied.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumApplied.png
deleted file mode 100644
index 48b84a74f..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumApplied.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumReview.02e7d6cc.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumReview.02e7d6cc.png
deleted file mode 100644
index 3bd51f8de..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumReview.02e7d6cc.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumReview.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumReview.png
deleted file mode 100644
index 3bd51f8de..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumReview.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumUI.7b99ce0c.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumUI.7b99ce0c.png
deleted file mode 100644
index 66ef97250..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumUI.7b99ce0c.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumUI.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumUI.png
deleted file mode 100644
index 66ef97250..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPPremiumUI.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeLink.f34baf60.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeLink.f34baf60.png
deleted file mode 100644
index e1662470a..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeLink.f34baf60.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeLink.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeLink.png
deleted file mode 100644
index e1662470a..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeLink.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeModuleWait.5c4c71b8.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeModuleWait.5c4c71b8.png
deleted file mode 100644
index 31fbc6e24..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeModuleWait.5c4c71b8.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeModuleWait.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeModuleWait.png
deleted file mode 100644
index 31fbc6e24..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeModuleWait.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeNoLink.914ceca7.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeNoLink.914ceca7.png
deleted file mode 100644
index 804f104f0..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeNoLink.914ceca7.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeNoLink.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeNoLink.png
deleted file mode 100644
index 804f104f0..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUpgradeNoLink.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.94d6a8ef (1).png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.94d6a8ef (1).png
deleted file mode 100644
index d49e2dbdb..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.94d6a8ef (1).png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.94d6a8ef.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.94d6a8ef.png
deleted file mode 100644
index d49e2dbdb..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.94d6a8ef.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.png
deleted file mode 100644
index d49e2dbdb..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AWPUserUI.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceApplied.0b7c5061.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceApplied.0b7c5061.png
deleted file mode 100644
index d50e36af8..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceApplied.0b7c5061.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceApplied.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceApplied.png
deleted file mode 100644
index d50e36af8..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceApplied.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.8699f409 (1).png b/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.8699f409 (1).png
deleted file mode 100644
index 9ca38d190..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.8699f409 (1).png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.8699f409.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.8699f409.png
deleted file mode 100644
index 9ca38d190..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.8699f409.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.png
deleted file mode 100644
index 9ca38d190..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AdviceReview.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/AppliedAdvice.png b/docs/user-docs/user-docs-solo-cloudlinux/images/AppliedAdvice.png
deleted file mode 100644
index 4d16c8497..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/AppliedAdvice.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/CDNFlow.466a7b63.png b/docs/user-docs/user-docs-solo-cloudlinux/images/CDNFlow.466a7b63.png
deleted file mode 100644
index e20a8457f..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/CDNFlow.466a7b63.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/CDNFlow.png b/docs/user-docs/user-docs-solo-cloudlinux/images/CDNFlow.png
deleted file mode 100644
index e20a8457f..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/CDNFlow.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/CDNGeneral.06ed95d9.png b/docs/user-docs/user-docs-solo-cloudlinux/images/CDNGeneral.06ed95d9.png
deleted file mode 100644
index f6e958184..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/CDNGeneral.06ed95d9.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/CDNGeneral.png b/docs/user-docs/user-docs-solo-cloudlinux/images/CDNGeneral.png
deleted file mode 100644
index f6e958184..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/CDNGeneral.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceReview.69722882.png b/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceReview.69722882.png
deleted file mode 100644
index ea8e8535e..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceReview.69722882.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceReview.png b/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceReview.png
deleted file mode 100644
index ea8e8535e..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceReview.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceTable.664b8959.png b/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceTable.664b8959.png
deleted file mode 100644
index e685ee98b..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceTable.664b8959.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceTable.png b/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceTable.png
deleted file mode 100644
index e685ee98b..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQAdviceTable.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncMessage.2f518d51.png b/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncMessage.2f518d51.png
deleted file mode 100644
index d5a92928b..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncMessage.2f518d51.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncMessage.png b/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncMessage.png
deleted file mode 100644
index d5a92928b..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncMessage.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncompatible.d2ab0ad9.png b/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncompatible.d2ab0ad9.png
deleted file mode 100644
index 8752bac8b..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncompatible.d2ab0ad9.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncompatible.png b/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncompatible.png
deleted file mode 100644
index 8752bac8b..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/FAQIncompatible.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/MobileDiag.deeabdcc.png b/docs/user-docs/user-docs-solo-cloudlinux/images/MobileDiag.deeabdcc.png
deleted file mode 100644
index 99140cd7a..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/MobileDiag.deeabdcc.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/MobileDiag.png b/docs/user-docs/user-docs-solo-cloudlinux/images/MobileDiag.png
deleted file mode 100644
index 99140cd7a..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/MobileDiag.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceApply.png b/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceApply.png
deleted file mode 100644
index 1072d4273..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceApply.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceDashboard.png b/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceDashboard.png
deleted file mode 100644
index 0e40e6cae..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceDashboard.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceDetails.png b/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceDetails.png
deleted file mode 100644
index d8ae01e5c..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceDetails.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceError.png b/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceError.png
deleted file mode 100644
index e39cb6dc2..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/SmartAdviceError.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/WPPlugins.47e882c9.png b/docs/user-docs/user-docs-solo-cloudlinux/images/WPPlugins.47e882c9.png
deleted file mode 100644
index bc0d5d5f5..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/WPPlugins.47e882c9.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/WPPlugins.png b/docs/user-docs/user-docs-solo-cloudlinux/images/WPPlugins.png
deleted file mode 100644
index bc0d5d5f5..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/WPPlugins.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUI.png b/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUI.png
deleted file mode 100644
index 91f3cad3d..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUI.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUIStart.png b/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUIStart.png
deleted file mode 100644
index 5a9c5f4d3..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUIStart.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUIWarning.png b/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUIWarning.png
deleted file mode 100644
index 66be2d7f1..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUIWarning.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUiSpecifyURL.png b/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUiSpecifyURL.png
deleted file mode 100644
index 951f28035..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/XRayEndUserUiSpecifyURL.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/solo_XRayEndUserPluginUIIcon.png b/docs/user-docs/user-docs-solo-cloudlinux/images/solo_XRayEndUserPluginUIIcon.png
deleted file mode 100644
index 1113273ec..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/solo_XRayEndUserPluginUIIcon.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_1.png b/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_1.png
deleted file mode 100644
index 49e875ebc..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_1.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_2.png b/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_2.png
deleted file mode 100644
index 843e9087e..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_2.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_3.png b/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_3.png
deleted file mode 100644
index b8a0b7f12..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_3.png and /dev/null differ
diff --git a/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_4.png b/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_4.png
deleted file mode 100644
index 8df1063b0..000000000
Binary files a/docs/user-docs/user-docs-solo-cloudlinux/images/userdoc_php_selector_4.png and /dev/null differ
diff --git a/package.json b/package.json
index 65b9f4474..d6db9c348 100644
--- a/package.json
+++ b/package.json
@@ -11,19 +11,23 @@
     "preview": "vite preview"
   },
   "dependencies": {
-    "@types/vue-select": "^3.16.2",
-    "@vuepress/core": "^1.9.9",
-    "@vuepress/plugin-container": "^2.0.0-beta.8",
-    "@vuepress/theme-default": "^1.9.9",
-    "@vuepress/plugin-prismjs": "^2.0.0-beta.4",
-    "stylus": "^0.59.0",
-    "vue-select": "^4.0.0-beta.6"
+    "@types/vue-select": "3.16.2",
+    "@vuepress/plugin-container": "2.0.0-beta.61",
+    "@vuepress/plugin-prismjs": "2.0.0-beta.61",
+    "@vuepress/utils": "2.0.0-beta.61",
+    "cl-doc-vue-bot-ui": "0.1.4",
+    "marked": "^15.0.4",
+    "mitt": "3.0.0",
+    "stylus": "https://github.com/stylus/stylus.git#0.64.0",
+    "vue-multiselect": "3.0.0-beta.2",
+    "vue-select": "4.0.0-beta.6"
   },
   "devDependencies": {
-    "@vitejs/plugin-vue": "^4.1.0",
-    "typescript": "^5.0.2",
-    "vite": "^4.3.0",
-    "vue-tsc": "^1.2.0",
+    "@vitejs/plugin-vue": "4.1.0",
+    "@vuepress/plugin-register-components": "2.0.0-beta.61",
+    "typescript": "5.0.2",
+    "vite": "4.3.0",
+    "vue-tsc": "1.2.0",
     "vuepress": "2.0.0-beta.61"
   }
 }
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 000000000..16556ec85
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,2260 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@adobe/css-tools@~4.3.3":
+  version "4.3.3"
+  resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff"
+  integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==
+
+"@babel/helper-string-parser@^7.27.1":
+  version "7.27.1"
+  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
+  integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
+
+"@babel/helper-validator-identifier@^7.27.1":
+  version "7.27.1"
+  resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
+  integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
+
+"@babel/parser@^7.23.5", "@babel/parser@^7.28.0":
+  version "7.28.0"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e"
+  integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==
+  dependencies:
+    "@babel/types" "^7.28.0"
+
+"@babel/types@^7.28.0":
+  version "7.28.1"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9"
+  integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==
+  dependencies:
+    "@babel/helper-string-parser" "^7.27.1"
+    "@babel/helper-validator-identifier" "^7.27.1"
+
+"@esbuild/android-arm64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23"
+  integrity sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==
+
+"@esbuild/android-arm64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
+  integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==
+
+"@esbuild/android-arm@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2"
+  integrity sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==
+
+"@esbuild/android-arm@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d"
+  integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==
+
+"@esbuild/android-x64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e"
+  integrity sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==
+
+"@esbuild/android-x64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1"
+  integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==
+
+"@esbuild/darwin-arm64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220"
+  integrity sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==
+
+"@esbuild/darwin-arm64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276"
+  integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==
+
+"@esbuild/darwin-x64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4"
+  integrity sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==
+
+"@esbuild/darwin-x64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb"
+  integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==
+
+"@esbuild/freebsd-arm64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27"
+  integrity sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==
+
+"@esbuild/freebsd-arm64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2"
+  integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==
+
+"@esbuild/freebsd-x64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72"
+  integrity sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==
+
+"@esbuild/freebsd-x64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4"
+  integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==
+
+"@esbuild/linux-arm64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca"
+  integrity sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==
+
+"@esbuild/linux-arm64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb"
+  integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==
+
+"@esbuild/linux-arm@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196"
+  integrity sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==
+
+"@esbuild/linux-arm@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a"
+  integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==
+
+"@esbuild/linux-ia32@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54"
+  integrity sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==
+
+"@esbuild/linux-ia32@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a"
+  integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==
+
+"@esbuild/linux-loong64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8"
+  integrity sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==
+
+"@esbuild/linux-loong64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72"
+  integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==
+
+"@esbuild/linux-mips64el@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726"
+  integrity sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==
+
+"@esbuild/linux-mips64el@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289"
+  integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==
+
+"@esbuild/linux-ppc64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8"
+  integrity sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==
+
+"@esbuild/linux-ppc64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7"
+  integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==
+
+"@esbuild/linux-riscv64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9"
+  integrity sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==
+
+"@esbuild/linux-riscv64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09"
+  integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==
+
+"@esbuild/linux-s390x@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87"
+  integrity sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==
+
+"@esbuild/linux-s390x@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829"
+  integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==
+
+"@esbuild/linux-x64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f"
+  integrity sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==
+
+"@esbuild/linux-x64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4"
+  integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==
+
+"@esbuild/netbsd-x64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775"
+  integrity sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==
+
+"@esbuild/netbsd-x64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462"
+  integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==
+
+"@esbuild/openbsd-x64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35"
+  integrity sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==
+
+"@esbuild/openbsd-x64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691"
+  integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==
+
+"@esbuild/sunos-x64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c"
+  integrity sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==
+
+"@esbuild/sunos-x64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273"
+  integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==
+
+"@esbuild/win32-arm64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a"
+  integrity sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==
+
+"@esbuild/win32-arm64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f"
+  integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==
+
+"@esbuild/win32-ia32@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09"
+  integrity sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==
+
+"@esbuild/win32-ia32@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03"
+  integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==
+
+"@esbuild/win32-x64@0.16.17":
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091"
+  integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==
+
+"@esbuild/win32-x64@0.17.19":
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
+  integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
+
+"@isaacs/cliui@^8.0.2":
+  version "8.0.2"
+  resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
+  integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
+  dependencies:
+    string-width "^5.1.2"
+    string-width-cjs "npm:string-width@^4.2.0"
+    strip-ansi "^7.0.1"
+    strip-ansi-cjs "npm:strip-ansi@^6.0.1"
+    wrap-ansi "^8.1.0"
+    wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
+
+"@jridgewell/sourcemap-codec@^1.5.0":
+  version "1.5.4"
+  resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7"
+  integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==
+
+"@mdit-vue/plugin-component@^0.12.0":
+  version "0.12.1"
+  resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-component/-/plugin-component-0.12.1.tgz#ed04c94c767e4ba1f6fc16ab458da82750b401f6"
+  integrity sha512-L3elbvuKUufXwPLHrmJGd/ijd/QKxfcHXy3kRy4O+P7UIV7HSWePpfB0k+wWee+by3MviYYxjVAi392z+DGy3Q==
+  dependencies:
+    "@types/markdown-it" "^13.0.0"
+    markdown-it "^13.0.1"
+
+"@mdit-vue/plugin-frontmatter@^0.12.0":
+  version "0.12.1"
+  resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-frontmatter/-/plugin-frontmatter-0.12.1.tgz#af02ebc6622fa24d71343fde627a0e49d4ffbab5"
+  integrity sha512-C6ycNjrJ+T4JgbVxwo9cUkfLacOO841Yl8ogqd5PJmAVpc5cM2OLBkqqkZxNRXos3g9xM1VvIQ7gK/047UNADg==
+  dependencies:
+    "@mdit-vue/types" "0.12.0"
+    "@types/markdown-it" "^13.0.0"
+    gray-matter "^4.0.3"
+    markdown-it "^13.0.1"
+
+"@mdit-vue/plugin-headers@^0.12.0":
+  version "0.12.1"
+  resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-headers/-/plugin-headers-0.12.1.tgz#2ab8c446fca6d39ce951819b5e18fef614a227aa"
+  integrity sha512-DXAw/iWW8f3qUYMDHgQmamL+XGjnaoeRzdvDseLRyr7gXX4xpYO9OIhe/pv9LzSvUoY7UGYmn4kFeI+0qpWJ+g==
+  dependencies:
+    "@mdit-vue/shared" "0.12.1"
+    "@mdit-vue/types" "0.12.0"
+    "@types/markdown-it" "^13.0.0"
+    markdown-it "^13.0.1"
+
+"@mdit-vue/plugin-sfc@^0.12.0":
+  version "0.12.1"
+  resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-sfc/-/plugin-sfc-0.12.1.tgz#49d6060e71e4016252ac35140f6960eb9a50cb6f"
+  integrity sha512-6j332CsSqumy1+StIM3XphdXG1zj9NXuWestDJrKgS3OLy5P0EAioXScUYiZYysw61ZG+2pP37MW7Hg+eHbyIg==
+  dependencies:
+    "@mdit-vue/types" "0.12.0"
+    "@types/markdown-it" "^13.0.0"
+    markdown-it "^13.0.1"
+
+"@mdit-vue/plugin-title@^0.12.0":
+  version "0.12.1"
+  resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-title/-/plugin-title-0.12.1.tgz#d01c2b0e9fd374fc3d52a551689cadf5fe066890"
+  integrity sha512-JOsiDj+CryGbrTDWUnDAwB9kSkN6o9GDo3udR6BPDgBNVb3zAnx9ZNaRpEhDW1LnQhf9/LYicWJ2eTNRKPcJNQ==
+  dependencies:
+    "@mdit-vue/shared" "0.12.1"
+    "@mdit-vue/types" "0.12.0"
+    "@types/markdown-it" "^13.0.0"
+    markdown-it "^13.0.1"
+
+"@mdit-vue/plugin-toc@^0.12.0":
+  version "0.12.1"
+  resolved "https://registry.yarnpkg.com/@mdit-vue/plugin-toc/-/plugin-toc-0.12.1.tgz#ed650a05d3f4b84637e79d8b3b06e89295cc78bf"
+  integrity sha512-nFGwTwVa8GLCKJMV7cGST7lYuljSjEiCTPgKIpQ/WifwouHsQaL/rnBDr22kpzY2hRTAhM3+TT5GDwLyxa/e6A==
+  dependencies:
+    "@mdit-vue/shared" "0.12.1"
+    "@mdit-vue/types" "0.12.0"
+    "@types/markdown-it" "^13.0.0"
+    markdown-it "^13.0.1"
+
+"@mdit-vue/shared@0.12.1", "@mdit-vue/shared@^0.12.0":
+  version "0.12.1"
+  resolved "https://registry.yarnpkg.com/@mdit-vue/shared/-/shared-0.12.1.tgz#b67cbfc71cac6fb49a7a0be169cd53d921e30344"
+  integrity sha512-bXgd0KThe4jC2leCFDFsyrudXIckvTwV4WnQK/rRMrXq0/BAuVdSNdIv1LGCWZxD5+oDyPyEPd0lalTIFwqsmg==
+  dependencies:
+    "@mdit-vue/types" "0.12.0"
+    "@types/markdown-it" "^13.0.0"
+    markdown-it "^13.0.1"
+
+"@mdit-vue/types@0.12.0", "@mdit-vue/types@^0.12.0":
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/@mdit-vue/types/-/types-0.12.0.tgz#096ff57d3590d076f7d7561dbc9956fb0bb89fe1"
+  integrity sha512-mrC4y8n88BYvgcgzq9bvTlDgFyi2zuvzmPilRvRc3Uz1iIvq8mDhxJ0rHKFUNzPEScpDvJdIujqiDrulMqiudA==
+
+"@nodelib/fs.scandir@2.1.5":
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+  integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+  dependencies:
+    "@nodelib/fs.stat" "2.0.5"
+    run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+  version "1.2.8"
+  resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+  dependencies:
+    "@nodelib/fs.scandir" "2.1.5"
+    fastq "^1.6.0"
+
+"@parcel/watcher-android-arm64@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1"
+  integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==
+
+"@parcel/watcher-darwin-arm64@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67"
+  integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==
+
+"@parcel/watcher-darwin-x64@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8"
+  integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==
+
+"@parcel/watcher-freebsd-x64@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b"
+  integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==
+
+"@parcel/watcher-linux-arm-glibc@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1"
+  integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==
+
+"@parcel/watcher-linux-arm-musl@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e"
+  integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==
+
+"@parcel/watcher-linux-arm64-glibc@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30"
+  integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==
+
+"@parcel/watcher-linux-arm64-musl@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2"
+  integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==
+
+"@parcel/watcher-linux-x64-glibc@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e"
+  integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==
+
+"@parcel/watcher-linux-x64-musl@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee"
+  integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==
+
+"@parcel/watcher-win32-arm64@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243"
+  integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==
+
+"@parcel/watcher-win32-ia32@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6"
+  integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==
+
+"@parcel/watcher-win32-x64@2.5.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947"
+  integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==
+
+"@parcel/watcher@^2.4.1":
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200"
+  integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==
+  dependencies:
+    detect-libc "^1.0.3"
+    is-glob "^4.0.3"
+    micromatch "^4.0.5"
+    node-addon-api "^7.0.0"
+  optionalDependencies:
+    "@parcel/watcher-android-arm64" "2.5.1"
+    "@parcel/watcher-darwin-arm64" "2.5.1"
+    "@parcel/watcher-darwin-x64" "2.5.1"
+    "@parcel/watcher-freebsd-x64" "2.5.1"
+    "@parcel/watcher-linux-arm-glibc" "2.5.1"
+    "@parcel/watcher-linux-arm-musl" "2.5.1"
+    "@parcel/watcher-linux-arm64-glibc" "2.5.1"
+    "@parcel/watcher-linux-arm64-musl" "2.5.1"
+    "@parcel/watcher-linux-x64-glibc" "2.5.1"
+    "@parcel/watcher-linux-x64-musl" "2.5.1"
+    "@parcel/watcher-win32-arm64" "2.5.1"
+    "@parcel/watcher-win32-ia32" "2.5.1"
+    "@parcel/watcher-win32-x64" "2.5.1"
+
+"@pkgjs/parseargs@^0.11.0":
+  version "0.11.0"
+  resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
+  integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
+
+"@types/debug@^4.1.7":
+  version "4.1.12"
+  resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917"
+  integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==
+  dependencies:
+    "@types/ms" "*"
+
+"@types/fs-extra@^11.0.1":
+  version "11.0.4"
+  resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.4.tgz#e16a863bb8843fba8c5004362b5a73e17becca45"
+  integrity sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==
+  dependencies:
+    "@types/jsonfile" "*"
+    "@types/node" "*"
+
+"@types/hash-sum@^1.0.0":
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/@types/hash-sum/-/hash-sum-1.0.2.tgz#32e6e4343ee25914b2a3822f27e8e641ca534f63"
+  integrity sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==
+
+"@types/jsonfile@*":
+  version "6.1.4"
+  resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.4.tgz#614afec1a1164e7d670b4a7ad64df3e7beb7b702"
+  integrity sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==
+  dependencies:
+    "@types/node" "*"
+
+"@types/linkify-it@*", "@types/linkify-it@^5":
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76"
+  integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==
+
+"@types/linkify-it@^3":
+  version "3.0.5"
+  resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.5.tgz#1e78a3ac2428e6d7e6c05c1665c242023a4601d8"
+  integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==
+
+"@types/markdown-it-emoji@^2.0.2":
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/@types/markdown-it-emoji/-/markdown-it-emoji-2.0.5.tgz#25c2f6fc68069423d136767b6bfeb6b4098d3477"
+  integrity sha512-iJLsmCNpSWKtV6Ia3mLSjcXJPEt7ubGG342z+hGvYx++TpM19oTUrJcI7XjbOqRQ+W2UQ323E7B0eCLwlgT/9g==
+  dependencies:
+    "@types/markdown-it" "*"
+
+"@types/markdown-it@*":
+  version "14.1.2"
+  resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.1.2.tgz#57f2532a0800067d9b934f3521429a2e8bfb4c61"
+  integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==
+  dependencies:
+    "@types/linkify-it" "^5"
+    "@types/mdurl" "^2"
+
+"@types/markdown-it@^12.2.3":
+  version "12.2.3"
+  resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51"
+  integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==
+  dependencies:
+    "@types/linkify-it" "*"
+    "@types/mdurl" "*"
+
+"@types/markdown-it@^13.0.0":
+  version "13.0.9"
+  resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-13.0.9.tgz#df79221eae698df5b4e982c7e91128dd8e525743"
+  integrity sha512-1XPwR0+MgXLWfTn9gCsZ55AHOKW1WN+P9vr0PaQh5aerR9LLQXUbjfEAFhjmEmyoYFWAyuN2Mqkn40MZ4ukjBw==
+  dependencies:
+    "@types/linkify-it" "^3"
+    "@types/mdurl" "^1"
+
+"@types/mdurl@*", "@types/mdurl@^2":
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd"
+  integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==
+
+"@types/mdurl@^1":
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.5.tgz#3e0d2db570e9fb6ccb2dc8fde0be1d79ac810d39"
+  integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==
+
+"@types/ms@*":
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78"
+  integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
+
+"@types/node@*":
+  version "24.1.0"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-24.1.0.tgz#0993f7dc31ab5cc402d112315b463e383d68a49c"
+  integrity sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==
+  dependencies:
+    undici-types "~7.8.0"
+
+"@types/vue-select@3.16.2":
+  version "3.16.2"
+  resolved "https://registry.yarnpkg.com/@types/vue-select/-/vue-select-3.16.2.tgz#dbff98ffd9122657c818867b423caf44ec6db516"
+  integrity sha512-KkmQiNI7Cei2YV3wn7O2fmM6PpfuM9ybYFMDqq2AvIZNZ2BRHMMV70yaa1EKBRvqu5qY5ekel5WzcRRfNu56PQ==
+  dependencies:
+    vue "^2.0.0"
+
+"@types/web-bluetooth@^0.0.16":
+  version "0.0.16"
+  resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8"
+  integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
+
+"@vitejs/plugin-vue@4.1.0":
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz#b6a9d83cd91575f7ee15593f6444397f68751073"
+  integrity sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==
+
+"@vitejs/plugin-vue@^4.0.0":
+  version "4.6.2"
+  resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz#057d2ded94c4e71b94e9814f92dcd9306317aa46"
+  integrity sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==
+
+"@volar/language-core@1.3.0-alpha.0":
+  version "1.3.0-alpha.0"
+  resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.3.0-alpha.0.tgz#4924b4cbc37dbce5f3845c1d2b2811938223a980"
+  integrity sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==
+  dependencies:
+    "@volar/source-map" "1.3.0-alpha.0"
+
+"@volar/source-map@1.3.0-alpha.0":
+  version "1.3.0-alpha.0"
+  resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.3.0-alpha.0.tgz#c45d51ecb9759604d29fb80211d2fc9765e5559c"
+  integrity sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==
+  dependencies:
+    muggle-string "^0.2.2"
+
+"@volar/typescript@1.3.0-alpha.0":
+  version "1.3.0-alpha.0"
+  resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.3.0-alpha.0.tgz#f79bbc9939016700812b18191c47eb035913c6c3"
+  integrity sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==
+  dependencies:
+    "@volar/language-core" "1.3.0-alpha.0"
+
+"@volar/vue-language-core@1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@volar/vue-language-core/-/vue-language-core-1.2.0.tgz#a600aa93c6a4e89bf2b525b7e876b39e3afdfb9b"
+  integrity sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==
+  dependencies:
+    "@volar/language-core" "1.3.0-alpha.0"
+    "@volar/source-map" "1.3.0-alpha.0"
+    "@vue/compiler-dom" "^3.2.47"
+    "@vue/compiler-sfc" "^3.2.47"
+    "@vue/reactivity" "^3.2.47"
+    "@vue/shared" "^3.2.47"
+    minimatch "^6.1.6"
+    muggle-string "^0.2.2"
+    vue-template-compiler "^2.7.14"
+
+"@volar/vue-typescript@1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-1.2.0.tgz#825dab4624a116d8be21efbf0c4a7bd6dec51d37"
+  integrity sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==
+  dependencies:
+    "@volar/typescript" "1.3.0-alpha.0"
+    "@volar/vue-language-core" "1.2.0"
+
+"@vue/compiler-core@3.5.18":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.18.tgz#521a138cdd970d9bfd27e42168d12f77a04b2074"
+  integrity sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==
+  dependencies:
+    "@babel/parser" "^7.28.0"
+    "@vue/shared" "3.5.18"
+    entities "^4.5.0"
+    estree-walker "^2.0.2"
+    source-map-js "^1.2.1"
+
+"@vue/compiler-dom@3.5.18", "@vue/compiler-dom@^3.2.47":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz#e13504492c3061ec5bbe6a2e789f15261d4f03a7"
+  integrity sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==
+  dependencies:
+    "@vue/compiler-core" "3.5.18"
+    "@vue/shared" "3.5.18"
+
+"@vue/compiler-sfc@2.7.16":
+  version "2.7.16"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz#ff81711a0fac9c68683d8bb00b63f857de77dc83"
+  integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==
+  dependencies:
+    "@babel/parser" "^7.23.5"
+    postcss "^8.4.14"
+    source-map "^0.6.1"
+  optionalDependencies:
+    prettier "^1.18.2 || ^2.0.0"
+
+"@vue/compiler-sfc@3.5.18", "@vue/compiler-sfc@^3.2.47":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz#ba1e849561337d809937994cdaf900539542eeca"
+  integrity sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==
+  dependencies:
+    "@babel/parser" "^7.28.0"
+    "@vue/compiler-core" "3.5.18"
+    "@vue/compiler-dom" "3.5.18"
+    "@vue/compiler-ssr" "3.5.18"
+    "@vue/shared" "3.5.18"
+    estree-walker "^2.0.2"
+    magic-string "^0.30.17"
+    postcss "^8.5.6"
+    source-map-js "^1.2.1"
+
+"@vue/compiler-ssr@3.5.18":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz#aecde0b0bff268a9c9014ba66799307c4a784328"
+  integrity sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==
+  dependencies:
+    "@vue/compiler-dom" "3.5.18"
+    "@vue/shared" "3.5.18"
+
+"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.6.4":
+  version "6.6.4"
+  resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343"
+  integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
+
+"@vue/reactivity@3.5.18", "@vue/reactivity@^3.2.47":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.18.tgz#fe32166e3938832c54b4134e60e9b58ca7d9bdb4"
+  integrity sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==
+  dependencies:
+    "@vue/shared" "3.5.18"
+
+"@vue/runtime-core@3.5.18":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.18.tgz#9e9ae8b9491548b53d0cea2bf25746d27c52e191"
+  integrity sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==
+  dependencies:
+    "@vue/reactivity" "3.5.18"
+    "@vue/shared" "3.5.18"
+
+"@vue/runtime-dom@3.5.18":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz#1150952d1048b5822e4f1dd8aed24665cbb22107"
+  integrity sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==
+  dependencies:
+    "@vue/reactivity" "3.5.18"
+    "@vue/runtime-core" "3.5.18"
+    "@vue/shared" "3.5.18"
+    csstype "^3.1.3"
+
+"@vue/server-renderer@3.5.18":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.18.tgz#e9fa267b95b3a1d8cddca762377e5de2ae9122bd"
+  integrity sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==
+  dependencies:
+    "@vue/compiler-ssr" "3.5.18"
+    "@vue/shared" "3.5.18"
+
+"@vue/shared@3.5.18", "@vue/shared@^3.2.47":
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.18.tgz#529f24a88d3ed678d50fd5c07455841fbe8ac95e"
+  integrity sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==
+
+"@vuepress/bundler-vite@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/bundler-vite/-/bundler-vite-2.0.0-beta.61.tgz#cd14f061733dfd63b917738fa4b72de6dfc166d1"
+  integrity sha512-J9/DGfsqr9rGJT+0osL9uL+jrrGHeAsWuZoCCbQIDbe0rEO2whvou51PJpwko3R0vvCTWsolh6rXYeb0N0+yFg==
+  dependencies:
+    "@vitejs/plugin-vue" "^4.0.0"
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/shared" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    autoprefixer "^10.4.13"
+    connect-history-api-fallback "^2.0.0"
+    postcss "^8.4.21"
+    postcss-load-config "^4.0.1"
+    rollup "^3.17.3"
+    vite "~4.1.4"
+    vue "^3.2.47"
+    vue-router "^4.1.6"
+
+"@vuepress/cli@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/cli/-/cli-2.0.0-beta.61.tgz#279784c755dde3e4868a667cb6ce7311f67bfb57"
+  integrity sha512-0CWc82c75987mVZwBOGBaCDke74NwlS6L3n1ybWrrqaFeueZSonwdm+qvaNvM/AJC10chqOJtpO/O3P+/YkBHQ==
+  dependencies:
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/shared" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    cac "^6.7.14"
+    chokidar "^3.5.3"
+    envinfo "^7.8.1"
+    esbuild "~0.16.17"
+
+"@vuepress/client@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/client/-/client-2.0.0-beta.61.tgz#d36321495924f19d468b71af48ae3a06ab626b93"
+  integrity sha512-C5QbdQkPsurEsKUkLclVucUAKMzBph9kHMUvfKHJqBaAsiXKYVLa61AICTJeyDkhTYF0faOjmpqmaElfMt1S9w==
+  dependencies:
+    "@vue/devtools-api" "^6.5.0"
+    "@vuepress/shared" "2.0.0-beta.61"
+    vue "^3.2.47"
+    vue-router "^4.1.6"
+
+"@vuepress/core@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-2.0.0-beta.61.tgz#602ceb2da0b9c2fd0bc5828115c896f17521ff08"
+  integrity sha512-jPr60d/uadgBmEQhXCRLNOm2M4Ym65lvZhGf/wyZCo14kpacp2YoO7RR8bzp/NEpWe7ndr/U8O/VDjFYTsz80g==
+  dependencies:
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/markdown" "2.0.0-beta.61"
+    "@vuepress/shared" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    vue "^3.2.47"
+
+"@vuepress/markdown@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-2.0.0-beta.61.tgz#8ea7f785b25f149ec006236cc1bbe2b59161a862"
+  integrity sha512-vzj933XxsfE9B+1kdMXncYtYU7TGTLjWP+qeikVsy5imq2BXa/n3OFVGyGkkdOYmu05hkm82+07dOvtGA+iMBQ==
+  dependencies:
+    "@mdit-vue/plugin-component" "^0.12.0"
+    "@mdit-vue/plugin-frontmatter" "^0.12.0"
+    "@mdit-vue/plugin-headers" "^0.12.0"
+    "@mdit-vue/plugin-sfc" "^0.12.0"
+    "@mdit-vue/plugin-title" "^0.12.0"
+    "@mdit-vue/plugin-toc" "^0.12.0"
+    "@mdit-vue/shared" "^0.12.0"
+    "@mdit-vue/types" "^0.12.0"
+    "@types/markdown-it" "^12.2.3"
+    "@types/markdown-it-emoji" "^2.0.2"
+    "@vuepress/shared" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    markdown-it "^13.0.1"
+    markdown-it-anchor "^8.6.7"
+    markdown-it-emoji "^2.0.2"
+    mdurl "^1.0.1"
+
+"@vuepress/plugin-active-header-links@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.61.tgz#03282f4d9cca94acaa0bf09659fcb38dbc34474a"
+  integrity sha512-+bbzb4YqnuTOANvSmJq8hbp60Tl3jLMiaZdkHKxKK9lDODGfTB8uAlH+KvuvxxuLm+Za186r+2PtBwJby773fA==
+  dependencies:
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    ts-debounce "^4.0.0"
+    vue "^3.2.47"
+    vue-router "^4.1.6"
+
+"@vuepress/plugin-back-to-top@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.61.tgz#b5feec33f99971cd3a0bd5bf100ead806c119d2b"
+  integrity sha512-2KX83rdc00FSs38o8/P2Hp0ifKVtRbO+4kXW5ilzY27v0UMY8H//KxmoE/+PZDS9iyeXF1O/YUm3VtoMN5Y/9g==
+  dependencies:
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    ts-debounce "^4.0.0"
+    vue "^3.2.47"
+
+"@vuepress/plugin-container@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.61.tgz#2e9a12d8918b3d7a7f29c6fb44d549287b89cd93"
+  integrity sha512-XVIhMpTSv0F8tsmCKFHzFtsJzD2SeiKX60jHaEGCym+shNvr9euECWY7ygEB5Ob6oQUIDZNS1dDb1RcYsksZ8A==
+  dependencies:
+    "@types/markdown-it" "^12.2.3"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/markdown" "2.0.0-beta.61"
+    "@vuepress/shared" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    markdown-it "^13.0.1"
+    markdown-it-container "^3.0.0"
+
+"@vuepress/plugin-external-link-icon@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-external-link-icon/-/plugin-external-link-icon-2.0.0-beta.61.tgz#63d3f89d8d1869a06904fb123ca41d31a8272298"
+  integrity sha512-Jyp/QdqIvybfocD2K8otKIeHrKMeOamt74tlstsZxrtveKhWE3Js1/n2MP/bJlGkcHrAb6lQQr/JFhpT5jtHVg==
+  dependencies:
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/markdown" "2.0.0-beta.61"
+    "@vuepress/shared" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    vue "^3.2.47"
+
+"@vuepress/plugin-git@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.61.tgz#4c7827a8f964b55fe594cd5f4f79509e0264bc5d"
+  integrity sha512-ozoxZ+x57yGiHDs5tXJvbyoZTiYpfb7QQaS5mgxn0+XZqfg7/cZnT7DmJtxVqk+VFmz73WHgN+4pGRjkuTOLqQ==
+  dependencies:
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    execa "^7.0.0"
+
+"@vuepress/plugin-medium-zoom@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.61.tgz#14dba3228b9b50ef1b170a8a1c94d858a7d2331f"
+  integrity sha512-mFY2vHXeqC8dizFVlFO7HIzirb79Z8sudKWPVfZmq0Qmlttyhxlns8GjrsPQl1mnz2NlYUY1ztUasikPwsYjAw==
+  dependencies:
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    medium-zoom "^1.0.8"
+    vue "^3.2.47"
+
+"@vuepress/plugin-nprogress@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.61.tgz#dbbd0e59177ffb3a051beb6103406c00e4f162d9"
+  integrity sha512-d36NEy8hkZaAuqMZec9VTEjozPkj9Wvimyx+AgJYpYN8JDBrWB58r9Gu9xHf8/PVeEnKayggD2xJYpGKtQ2lrw==
+  dependencies:
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    vue "^3.2.47"
+    vue-router "^4.1.6"
+
+"@vuepress/plugin-palette@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.61.tgz#0b907b58a57307d1e8d71b4d8713968ad4dfedb0"
+  integrity sha512-mQE/2dxwOZfkc7wwkwR6byaeMJYTqQV7WmfQ4YQ3zAOr4nDP8Bx/zZVRyV3NjAcMwuif/CURpAYJo+WkFM+fpQ==
+  dependencies:
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    chokidar "^3.5.3"
+
+"@vuepress/plugin-prismjs@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.61.tgz#f9ae5b08e1ad56aa87996892b168710618654b83"
+  integrity sha512-B6TRmttJuPs1OMJXE2Stul7zhMUKCPy2YSXEmVWwlJ90jWti85o5nhTT9/OhxBVn3EZ89b+YroPDbB/g1uUc1w==
+  dependencies:
+    "@vuepress/core" "2.0.0-beta.61"
+    prismjs "^1.29.0"
+
+"@vuepress/plugin-register-components@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-2.0.0-beta.61.tgz#b7b6b2fe81c70e40e3fe965d18fef76c315941e5"
+  integrity sha512-3sbJbiY8pZ3/M4TMfyhIn+aGAlXz+xR57I5k4NQnekzJjDxSiCmaet6FjUeUChX6/eREkVBlitfDvXq4t45RKw==
+  dependencies:
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    chokidar "^3.5.3"
+
+"@vuepress/plugin-theme-data@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.61.tgz#f95a56c8ffb4cca8b559b4cf81ef665fe07523aa"
+  integrity sha512-drPLGbaXqXnHsuFHn6FolbqdRIxJzla1+10b3cKnsslatRbSPjKWos4Eri3xzgzEIC5TotPwTeT25gDRMpW8Sw==
+  dependencies:
+    "@vue/devtools-api" "^6.5.0"
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/shared" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    vue "^3.2.47"
+
+"@vuepress/shared@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/shared/-/shared-2.0.0-beta.61.tgz#7342602990ccf3a1a4aefcdbe8315b368ed5602b"
+  integrity sha512-NhOQ1FDr5lDSu5IinNlNNzrF+jGOZ+bMFUyAlCxlTvK9oY6aRBCNwV8dWme+yoh3/zviKHGu62Xp7J2hKAHNZA==
+  dependencies:
+    "@mdit-vue/types" "^0.12.0"
+    "@vue/shared" "^3.2.47"
+
+"@vuepress/theme-default@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-2.0.0-beta.61.tgz#71fb67713bb9a39be0d28ddd37009c503179282a"
+  integrity sha512-ajjxaGqrSy5LXf+7sslHV1fbUzggMYjITcXxBYa3gT4zVu1tsytAAcmtYxnQKblL1Eo2Wo7inujl/NUwaWDjDQ==
+  dependencies:
+    "@vuepress/client" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/plugin-active-header-links" "2.0.0-beta.61"
+    "@vuepress/plugin-back-to-top" "2.0.0-beta.61"
+    "@vuepress/plugin-container" "2.0.0-beta.61"
+    "@vuepress/plugin-external-link-icon" "2.0.0-beta.61"
+    "@vuepress/plugin-git" "2.0.0-beta.61"
+    "@vuepress/plugin-medium-zoom" "2.0.0-beta.61"
+    "@vuepress/plugin-nprogress" "2.0.0-beta.61"
+    "@vuepress/plugin-palette" "2.0.0-beta.61"
+    "@vuepress/plugin-prismjs" "2.0.0-beta.61"
+    "@vuepress/plugin-theme-data" "2.0.0-beta.61"
+    "@vuepress/shared" "2.0.0-beta.61"
+    "@vuepress/utils" "2.0.0-beta.61"
+    "@vueuse/core" "^9.13.0"
+    sass "^1.58.3"
+    vue "^3.2.47"
+    vue-router "^4.1.6"
+
+"@vuepress/utils@2.0.0-beta.61":
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/@vuepress/utils/-/utils-2.0.0-beta.61.tgz#a073e1ad22386f1922af3e7ef6220c5286fc5239"
+  integrity sha512-W7g6xjrdyOW5E1V1ouyTm5d4+kgSd4KcM80D7K0NNScrhLIW6gpOggVVOVyTH3q2K1GQhzPlUcUe04ZNSo0ilQ==
+  dependencies:
+    "@types/debug" "^4.1.7"
+    "@types/fs-extra" "^11.0.1"
+    "@types/hash-sum" "^1.0.0"
+    "@vuepress/shared" "2.0.0-beta.61"
+    debug "^4.3.4"
+    fs-extra "^11.1.0"
+    globby "^13.1.3"
+    hash-sum "^2.0.0"
+    ora "^6.1.2"
+    picocolors "^1.0.0"
+    upath "^2.0.1"
+
+"@vueuse/core@^9.13.0":
+  version "9.13.0"
+  resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-9.13.0.tgz#2f69e66d1905c1e4eebc249a01759cf88ea00cf4"
+  integrity sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==
+  dependencies:
+    "@types/web-bluetooth" "^0.0.16"
+    "@vueuse/metadata" "9.13.0"
+    "@vueuse/shared" "9.13.0"
+    vue-demi "*"
+
+"@vueuse/metadata@9.13.0":
+  version "9.13.0"
+  resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-9.13.0.tgz#bc25a6cdad1b1a93c36ce30191124da6520539ff"
+  integrity sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==
+
+"@vueuse/shared@9.13.0":
+  version "9.13.0"
+  resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-9.13.0.tgz#089ff4cc4e2e7a4015e57a8f32e4b39d096353b9"
+  integrity sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==
+  dependencies:
+    vue-demi "*"
+
+ansi-regex@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+  integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-regex@^6.0.1:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
+  integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
+
+ansi-styles@^4.0.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+  dependencies:
+    color-convert "^2.0.1"
+
+ansi-styles@^6.1.0:
+  version "6.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
+  integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
+anymatch@~3.1.2:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+  integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+  dependencies:
+    normalize-path "^3.0.0"
+    picomatch "^2.0.4"
+
+argparse@^1.0.7:
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+  integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+  dependencies:
+    sprintf-js "~1.0.2"
+
+argparse@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+  integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+autoprefixer@^10.4.13:
+  version "10.4.21"
+  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d"
+  integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==
+  dependencies:
+    browserslist "^4.24.4"
+    caniuse-lite "^1.0.30001702"
+    fraction.js "^4.3.7"
+    normalize-range "^0.1.2"
+    picocolors "^1.1.1"
+    postcss-value-parser "^4.2.0"
+
+balanced-match@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+  integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base64-js@^1.3.1:
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+  integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+binary-extensions@^2.0.0:
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
+  integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
+
+bl@^5.0.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273"
+  integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==
+  dependencies:
+    buffer "^6.0.3"
+    inherits "^2.0.4"
+    readable-stream "^3.4.0"
+
+brace-expansion@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7"
+  integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==
+  dependencies:
+    balanced-match "^1.0.0"
+
+braces@^3.0.3, braces@~3.0.2:
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+  integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
+  dependencies:
+    fill-range "^7.1.1"
+
+browserslist@^4.24.4:
+  version "4.25.1"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111"
+  integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==
+  dependencies:
+    caniuse-lite "^1.0.30001726"
+    electron-to-chromium "^1.5.173"
+    node-releases "^2.0.19"
+    update-browserslist-db "^1.1.3"
+
+buffer@^6.0.3:
+  version "6.0.3"
+  resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
+  integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
+  dependencies:
+    base64-js "^1.3.1"
+    ieee754 "^1.2.1"
+
+cac@^6.7.14:
+  version "6.7.14"
+  resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
+  integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
+
+caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001726:
+  version "1.0.30001727"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85"
+  integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==
+
+chalk@^5.0.0:
+  version "5.4.1"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8"
+  integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==
+
+chokidar@^3.5.3:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
+  integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
+  dependencies:
+    anymatch "~3.1.2"
+    braces "~3.0.2"
+    glob-parent "~5.1.2"
+    is-binary-path "~2.1.0"
+    is-glob "~4.0.1"
+    normalize-path "~3.0.0"
+    readdirp "~3.6.0"
+  optionalDependencies:
+    fsevents "~2.3.2"
+
+chokidar@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30"
+  integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
+  dependencies:
+    readdirp "^4.0.1"
+
+cl-doc-vue-bot-ui@0.1.4:
+  version "0.1.4"
+  resolved "https://registry.yarnpkg.com/cl-doc-vue-bot-ui/-/cl-doc-vue-bot-ui-0.1.4.tgz#1a04eb82a49f0df6eaebc42e33c6a56bfa778eef"
+  integrity sha512-SJhiJhldI8PNoMbyyOOtrzYbefYpJYXU5dURlcEjVLDALkiIKScpiKpyvMXch1XCUNM8f9rasOC+AQ2PHfv7OA==
+  dependencies:
+    vue-star-rating "^2.1.0"
+
+cli-cursor@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea"
+  integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==
+  dependencies:
+    restore-cursor "^4.0.0"
+
+cli-spinners@^2.6.1:
+  version "2.9.2"
+  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
+  integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
+
+clone@^1.0.2:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+  integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
+
+color-convert@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+  integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+  dependencies:
+    color-name "~1.1.4"
+
+color-name@~1.1.4:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+connect-history-api-fallback@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8"
+  integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==
+
+cross-spawn@^7.0.3, cross-spawn@^7.0.6:
+  version "7.0.6"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
+  integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
+  dependencies:
+    path-key "^3.1.0"
+    shebang-command "^2.0.0"
+    which "^2.0.1"
+
+csstype@^3.1.0, csstype@^3.1.3:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
+  integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
+de-indent@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
+  integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
+
+debug@^4.3.2, debug@^4.3.4:
+  version "4.4.1"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b"
+  integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
+  dependencies:
+    ms "^2.1.3"
+
+defaults@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
+  integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
+  dependencies:
+    clone "^1.0.2"
+
+detect-libc@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+  integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+
+dir-glob@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+  integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+  dependencies:
+    path-type "^4.0.0"
+
+eastasianwidth@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
+  integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
+
+electron-to-chromium@^1.5.173:
+  version "1.5.190"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.190.tgz#f0ac8be182291a45e8154dbb12f18d2b2318e4ac"
+  integrity sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw==
+
+emoji-regex@^8.0.0:
+  version "8.0.0"
+  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
+  integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emoji-regex@^9.2.2:
+  version "9.2.2"
+  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
+  integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+
+entities@^4.5.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+  integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
+entities@~3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
+  integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
+
+envinfo@^7.8.1:
+  version "7.14.0"
+  resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae"
+  integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==
+
+esbuild@^0.16.14, esbuild@~0.16.17:
+  version "0.16.17"
+  resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259"
+  integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==
+  optionalDependencies:
+    "@esbuild/android-arm" "0.16.17"
+    "@esbuild/android-arm64" "0.16.17"
+    "@esbuild/android-x64" "0.16.17"
+    "@esbuild/darwin-arm64" "0.16.17"
+    "@esbuild/darwin-x64" "0.16.17"
+    "@esbuild/freebsd-arm64" "0.16.17"
+    "@esbuild/freebsd-x64" "0.16.17"
+    "@esbuild/linux-arm" "0.16.17"
+    "@esbuild/linux-arm64" "0.16.17"
+    "@esbuild/linux-ia32" "0.16.17"
+    "@esbuild/linux-loong64" "0.16.17"
+    "@esbuild/linux-mips64el" "0.16.17"
+    "@esbuild/linux-ppc64" "0.16.17"
+    "@esbuild/linux-riscv64" "0.16.17"
+    "@esbuild/linux-s390x" "0.16.17"
+    "@esbuild/linux-x64" "0.16.17"
+    "@esbuild/netbsd-x64" "0.16.17"
+    "@esbuild/openbsd-x64" "0.16.17"
+    "@esbuild/sunos-x64" "0.16.17"
+    "@esbuild/win32-arm64" "0.16.17"
+    "@esbuild/win32-ia32" "0.16.17"
+    "@esbuild/win32-x64" "0.16.17"
+
+esbuild@^0.17.5:
+  version "0.17.19"
+  resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955"
+  integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==
+  optionalDependencies:
+    "@esbuild/android-arm" "0.17.19"
+    "@esbuild/android-arm64" "0.17.19"
+    "@esbuild/android-x64" "0.17.19"
+    "@esbuild/darwin-arm64" "0.17.19"
+    "@esbuild/darwin-x64" "0.17.19"
+    "@esbuild/freebsd-arm64" "0.17.19"
+    "@esbuild/freebsd-x64" "0.17.19"
+    "@esbuild/linux-arm" "0.17.19"
+    "@esbuild/linux-arm64" "0.17.19"
+    "@esbuild/linux-ia32" "0.17.19"
+    "@esbuild/linux-loong64" "0.17.19"
+    "@esbuild/linux-mips64el" "0.17.19"
+    "@esbuild/linux-ppc64" "0.17.19"
+    "@esbuild/linux-riscv64" "0.17.19"
+    "@esbuild/linux-s390x" "0.17.19"
+    "@esbuild/linux-x64" "0.17.19"
+    "@esbuild/netbsd-x64" "0.17.19"
+    "@esbuild/openbsd-x64" "0.17.19"
+    "@esbuild/sunos-x64" "0.17.19"
+    "@esbuild/win32-arm64" "0.17.19"
+    "@esbuild/win32-ia32" "0.17.19"
+    "@esbuild/win32-x64" "0.17.19"
+
+escalade@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+  integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
+
+esprima@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+  integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+estree-walker@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+  integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+execa@^7.0.0:
+  version "7.2.0"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9"
+  integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==
+  dependencies:
+    cross-spawn "^7.0.3"
+    get-stream "^6.0.1"
+    human-signals "^4.3.0"
+    is-stream "^3.0.0"
+    merge-stream "^2.0.0"
+    npm-run-path "^5.1.0"
+    onetime "^6.0.0"
+    signal-exit "^3.0.7"
+    strip-final-newline "^3.0.0"
+
+extend-shallow@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+  integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+  dependencies:
+    is-extendable "^0.1.0"
+
+fast-glob@^3.3.0:
+  version "3.3.3"
+  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
+  integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
+  dependencies:
+    "@nodelib/fs.stat" "^2.0.2"
+    "@nodelib/fs.walk" "^1.2.3"
+    glob-parent "^5.1.2"
+    merge2 "^1.3.0"
+    micromatch "^4.0.8"
+
+fastq@^1.6.0:
+  version "1.19.1"
+  resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5"
+  integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
+  dependencies:
+    reusify "^1.0.4"
+
+fill-range@^7.1.1:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+  integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
+  dependencies:
+    to-regex-range "^5.0.1"
+
+foreground-child@^3.1.0:
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f"
+  integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
+  dependencies:
+    cross-spawn "^7.0.6"
+    signal-exit "^4.0.1"
+
+fraction.js@^4.3.7:
+  version "4.3.7"
+  resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
+  integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
+
+fs-extra@^11.1.0:
+  version "11.3.0"
+  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d"
+  integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==
+  dependencies:
+    graceful-fs "^4.2.0"
+    jsonfile "^6.0.1"
+    universalify "^2.0.0"
+
+fsevents@~2.3.2:
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
+function-bind@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+  integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+get-stream@^6.0.1:
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
+  integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+  dependencies:
+    is-glob "^4.0.1"
+
+glob@^10.4.5:
+  version "10.4.5"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
+  integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
+  dependencies:
+    foreground-child "^3.1.0"
+    jackspeak "^3.1.2"
+    minimatch "^9.0.4"
+    minipass "^7.1.2"
+    package-json-from-dist "^1.0.0"
+    path-scurry "^1.11.1"
+
+globby@^13.1.3:
+  version "13.2.2"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592"
+  integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==
+  dependencies:
+    dir-glob "^3.0.1"
+    fast-glob "^3.3.0"
+    ignore "^5.2.4"
+    merge2 "^1.4.1"
+    slash "^4.0.0"
+
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+  version "4.2.11"
+  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+  integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+gray-matter@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798"
+  integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==
+  dependencies:
+    js-yaml "^3.13.1"
+    kind-of "^6.0.2"
+    section-matter "^1.0.0"
+    strip-bom-string "^1.0.0"
+
+hash-sum@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a"
+  integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
+
+hasown@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+  integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+  dependencies:
+    function-bind "^1.1.2"
+
+he@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+  integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+human-signals@^4.3.0:
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2"
+  integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==
+
+ieee754@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+  integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+ignore@^5.2.4:
+  version "5.3.2"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
+  integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
+
+immutable@^5.0.2:
+  version "5.1.3"
+  resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.1.3.tgz#e6486694c8b76c37c063cca92399fa64098634d4"
+  integrity sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==
+
+inherits@^2.0.3, inherits@^2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+is-binary-path@~2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+  dependencies:
+    binary-extensions "^2.0.0"
+
+is-core-module@^2.16.0:
+  version "2.16.1"
+  resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
+  integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
+  dependencies:
+    hasown "^2.0.2"
+
+is-extendable@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+  integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
+is-extglob@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
+  integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+  integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+  dependencies:
+    is-extglob "^2.1.1"
+
+is-interactive@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90"
+  integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==
+
+is-number@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-stream@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
+  integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
+
+is-unicode-supported@^1.1.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714"
+  integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==
+
+isexe@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+  integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+jackspeak@^3.1.2:
+  version "3.4.3"
+  resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
+  integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
+  dependencies:
+    "@isaacs/cliui" "^8.0.2"
+  optionalDependencies:
+    "@pkgjs/parseargs" "^0.11.0"
+
+js-yaml@^3.13.1:
+  version "3.14.1"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+  integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+  dependencies:
+    argparse "^1.0.7"
+    esprima "^4.0.0"
+
+jsonfile@^6.0.1:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+  integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+  dependencies:
+    universalify "^2.0.0"
+  optionalDependencies:
+    graceful-fs "^4.1.6"
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+  version "6.0.3"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+lilconfig@^3.0.0:
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4"
+  integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==
+
+linkify-it@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec"
+  integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==
+  dependencies:
+    uc.micro "^1.0.1"
+
+log-symbols@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93"
+  integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==
+  dependencies:
+    chalk "^5.0.0"
+    is-unicode-supported "^1.1.0"
+
+lru-cache@^10.2.0:
+  version "10.4.3"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
+  integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
+
+magic-string@^0.30.17:
+  version "0.30.17"
+  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
+  integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
+  dependencies:
+    "@jridgewell/sourcemap-codec" "^1.5.0"
+
+markdown-it-anchor@^8.6.7:
+  version "8.6.7"
+  resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634"
+  integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==
+
+markdown-it-container@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/markdown-it-container/-/markdown-it-container-3.0.0.tgz#1d19b06040a020f9a827577bb7dbf67aa5de9a5b"
+  integrity sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==
+
+markdown-it-emoji@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz#cd42421c2fda1537d9cc12b9923f5c8aeb9029c8"
+  integrity sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==
+
+markdown-it@^13.0.1:
+  version "13.0.2"
+  resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.2.tgz#1bc22e23379a6952e5d56217fbed881e0c94d536"
+  integrity sha512-FtwnEuuK+2yVU7goGn/MJ0WBZMM9ZPgU9spqlFs7/A/pDIUNSOQZhUgOqYCficIuR2QaFnrt8LHqBWsbTAoI5w==
+  dependencies:
+    argparse "^2.0.1"
+    entities "~3.0.1"
+    linkify-it "^4.0.1"
+    mdurl "^1.0.1"
+    uc.micro "^1.0.5"
+
+marked@^15.0.4:
+  version "15.0.12"
+  resolved "https://registry.yarnpkg.com/marked/-/marked-15.0.12.tgz#30722c7346e12d0a2d0207ab9b0c4f0102d86c4e"
+  integrity sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==
+
+mdurl@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+  integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
+
+medium-zoom@^1.0.8:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-1.1.0.tgz#6efb6bbda861a02064ee71a2617a8dc4381ecc71"
+  integrity sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==
+
+merge-stream@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
+  integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.3.0, merge2@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+  integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@^4.0.5, micromatch@^4.0.8:
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+  integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
+  dependencies:
+    braces "^3.0.3"
+    picomatch "^2.3.1"
+
+mimic-fn@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mimic-fn@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
+  integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
+
+minimatch@^6.1.6:
+  version "6.2.0"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42"
+  integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==
+  dependencies:
+    brace-expansion "^2.0.1"
+
+minimatch@^9.0.4:
+  version "9.0.5"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+  integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+  dependencies:
+    brace-expansion "^2.0.1"
+
+"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
+  version "7.1.2"
+  resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
+  integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+
+mitt@3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.0.tgz#69ef9bd5c80ff6f57473e8d89326d01c414be0bd"
+  integrity sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==
+
+ms@^2.1.3:
+  version "2.1.3"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+  integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+muggle-string@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/muggle-string/-/muggle-string-0.2.2.tgz#786aa53fea1652c61c6a59e1f839292b262bc72a"
+  integrity sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==
+
+nanoid@^3.3.11:
+  version "3.3.11"
+  resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
+  integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
+
+node-addon-api@^7.0.0:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
+  integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
+
+node-releases@^2.0.19:
+  version "2.0.19"
+  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
+  integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+  integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+npm-run-path@^5.1.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f"
+  integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==
+  dependencies:
+    path-key "^4.0.0"
+
+onetime@^5.1.0:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+  dependencies:
+    mimic-fn "^2.1.0"
+
+onetime@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
+  integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
+  dependencies:
+    mimic-fn "^4.0.0"
+
+ora@^6.1.2:
+  version "6.3.1"
+  resolved "https://registry.yarnpkg.com/ora/-/ora-6.3.1.tgz#a4e9e5c2cf5ee73c259e8b410273e706a2ad3ed6"
+  integrity sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==
+  dependencies:
+    chalk "^5.0.0"
+    cli-cursor "^4.0.0"
+    cli-spinners "^2.6.1"
+    is-interactive "^2.0.0"
+    is-unicode-supported "^1.1.0"
+    log-symbols "^5.1.0"
+    stdin-discarder "^0.1.0"
+    strip-ansi "^7.0.1"
+    wcwidth "^1.0.1"
+
+package-json-from-dist@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
+  integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
+
+path-key@^3.1.0:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-key@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
+  integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
+
+path-parse@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-scurry@^1.11.1:
+  version "1.11.1"
+  resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
+  integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
+  dependencies:
+    lru-cache "^10.2.0"
+    minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
+
+path-type@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+  integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+picocolors@^1.0.0, picocolors@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+  integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+postcss-load-config@^4.0.1:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3"
+  integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==
+  dependencies:
+    lilconfig "^3.0.0"
+    yaml "^2.3.4"
+
+postcss-value-parser@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
+  integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@^8.4.14, postcss@^8.4.21, postcss@^8.5.6:
+  version "8.5.6"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
+  integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
+  dependencies:
+    nanoid "^3.3.11"
+    picocolors "^1.1.1"
+    source-map-js "^1.2.1"
+
+"prettier@^1.18.2 || ^2.0.0":
+  version "2.8.8"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
+  integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
+
+prismjs@^1.29.0:
+  version "1.30.0"
+  resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9"
+  integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==
+
+queue-microtask@^1.2.2:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+readable-stream@^3.4.0:
+  version "3.6.2"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+  integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+  dependencies:
+    inherits "^2.0.3"
+    string_decoder "^1.1.1"
+    util-deprecate "^1.0.1"
+
+readdirp@^4.0.1:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d"
+  integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
+
+readdirp@~3.6.0:
+  version "3.6.0"
+  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+  integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+  dependencies:
+    picomatch "^2.2.1"
+
+resolve@^1.22.1:
+  version "1.22.10"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
+  integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
+  dependencies:
+    is-core-module "^2.16.0"
+    path-parse "^1.0.7"
+    supports-preserve-symlinks-flag "^1.0.0"
+
+restore-cursor@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9"
+  integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==
+  dependencies:
+    onetime "^5.1.0"
+    signal-exit "^3.0.2"
+
+reusify@^1.0.4:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f"
+  integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==
+
+rollup@^3.10.0, rollup@^3.17.3, rollup@^3.20.2:
+  version "3.29.5"
+  resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.5.tgz#8a2e477a758b520fb78daf04bca4c522c1da8a54"
+  integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==
+  optionalDependencies:
+    fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+  integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+  dependencies:
+    queue-microtask "^1.2.2"
+
+safe-buffer@~5.2.0:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+sass@^1.58.3:
+  version "1.89.2"
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.89.2.tgz#a771716aeae774e2b529f72c0ff2dfd46c9de10e"
+  integrity sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==
+  dependencies:
+    chokidar "^4.0.0"
+    immutable "^5.0.2"
+    source-map-js ">=0.6.2 <2.0.0"
+  optionalDependencies:
+    "@parcel/watcher" "^2.4.1"
+
+sax@~1.4.1:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f"
+  integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
+
+section-matter@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167"
+  integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==
+  dependencies:
+    extend-shallow "^2.0.1"
+    kind-of "^6.0.0"
+
+shebang-command@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+  integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+  dependencies:
+    shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+  integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+signal-exit@^3.0.2, signal-exit@^3.0.7:
+  version "3.0.7"
+  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+  integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+signal-exit@^4.0.1:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
+  integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
+slash@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
+  integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
+
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
+  integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
+
+source-map@^0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+  version "0.7.4"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
+  integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+sprintf-js@~1.0.2:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+  integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
+stdin-discarder@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz#22b3e400393a8e28ebf53f9958f3880622efde21"
+  integrity sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==
+  dependencies:
+    bl "^5.0.0"
+
+"string-width-cjs@npm:string-width@^4.2.0":
+  version "4.2.3"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+  dependencies:
+    emoji-regex "^8.0.0"
+    is-fullwidth-code-point "^3.0.0"
+    strip-ansi "^6.0.1"
+
+string-width@^4.1.0:
+  version "4.2.3"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
+  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+  dependencies:
+    emoji-regex "^8.0.0"
+    is-fullwidth-code-point "^3.0.0"
+    strip-ansi "^6.0.1"
+
+string-width@^5.0.1, string-width@^5.1.2:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
+  integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
+  dependencies:
+    eastasianwidth "^0.2.0"
+    emoji-regex "^9.2.2"
+    strip-ansi "^7.0.1"
+
+string_decoder@^1.1.1:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+  dependencies:
+    safe-buffer "~5.2.0"
+
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+  dependencies:
+    ansi-regex "^5.0.1"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+  dependencies:
+    ansi-regex "^5.0.1"
+
+strip-ansi@^7.0.1:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
+  integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
+  dependencies:
+    ansi-regex "^6.0.1"
+
+strip-bom-string@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
+  integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==
+
+strip-final-newline@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
+  integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
+
+"stylus@https://github.com/stylus/stylus.git#0.64.0":
+  version "0.64.0"
+  resolved "https://github.com/stylus/stylus.git#1086c6c1fbd7a7fd0ce9ad94f6cf4a62fc79a6e9"
+  dependencies:
+    "@adobe/css-tools" "~4.3.3"
+    debug "^4.3.2"
+    glob "^10.4.5"
+    sax "~1.4.1"
+    source-map "^0.7.3"
+
+supports-preserve-symlinks-flag@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+to-regex-range@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+  dependencies:
+    is-number "^7.0.0"
+
+ts-debounce@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/ts-debounce/-/ts-debounce-4.0.0.tgz#33440ef64fab53793c3d546a8ca6ae539ec15841"
+  integrity sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==
+
+typescript@5.0.2:
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.2.tgz#891e1a90c5189d8506af64b9ef929fca99ba1ee5"
+  integrity sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==
+
+uc.micro@^1.0.1, uc.micro@^1.0.5:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
+  integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+
+undici-types@~7.8.0:
+  version "7.8.0"
+  resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294"
+  integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==
+
+universalify@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
+  integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
+
+upath@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b"
+  integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==
+
+update-browserslist-db@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420"
+  integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
+  dependencies:
+    escalade "^3.2.0"
+    picocolors "^1.1.1"
+
+util-deprecate@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+  integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+vite@4.3.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.0.tgz#1fb9432e1980cf254e1ae1b7b8981fd262c6aa49"
+  integrity sha512-JTGFgDh3dVxeGBpuQX04Up+JZmuG6wu9414Ei36vQzaEruY/M4K0AgwtuB2b4HaBgB7R8l+LHxjB0jcgz4d2qQ==
+  dependencies:
+    esbuild "^0.17.5"
+    postcss "^8.4.21"
+    rollup "^3.20.2"
+  optionalDependencies:
+    fsevents "~2.3.2"
+
+vite@~4.1.4:
+  version "4.1.5"
+  resolved "https://registry.yarnpkg.com/vite/-/vite-4.1.5.tgz#9c93d579f62179ab99c4182fa37acf1b380a374b"
+  integrity sha512-zJ0RiVkf61kpd7O+VtU6r766xgnTaIknP/lR6sJTZq3HtVJ3HGnTo5DaJhTUtYoTyS/CQwZ6yEVdc/lrmQT7dQ==
+  dependencies:
+    esbuild "^0.16.14"
+    postcss "^8.4.21"
+    resolve "^1.22.1"
+    rollup "^3.10.0"
+  optionalDependencies:
+    fsevents "~2.3.2"
+
+vue-demi@*:
+  version "0.14.10"
+  resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
+  integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==
+
+vue-multiselect@3.0.0-beta.2:
+  version "3.0.0-beta.2"
+  resolved "https://registry.yarnpkg.com/vue-multiselect/-/vue-multiselect-3.0.0-beta.2.tgz#dcfc1f8bc5bff78d85d516bfd71339fce49be97a"
+  integrity sha512-TFVHtI/KdWoD3Opzbkso8OIqkZlZEqFF7f2jlYx1ttgC4Jv/48IGlU5zn6cBR4p2bFDFGCHF5SkLCaadLhnBPQ==
+
+vue-router@^4.1.6:
+  version "4.5.1"
+  resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.5.1.tgz#47bffe2d3a5479d2886a9a244547a853aa0abf69"
+  integrity sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==
+  dependencies:
+    "@vue/devtools-api" "^6.6.4"
+
+vue-select@4.0.0-beta.6:
+  version "4.0.0-beta.6"
+  resolved "https://registry.yarnpkg.com/vue-select/-/vue-select-4.0.0-beta.6.tgz#7c250cb7c01280b54a311cb446629801b3c8df98"
+  integrity sha512-K+zrNBSpwMPhAxYLTCl56gaMrWZGgayoWCLqe5rWwkB8aUbAUh7u6sXjIR7v4ckp2WKC7zEEUY27g6h1MRsIHw==
+
+vue-star-rating@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/vue-star-rating/-/vue-star-rating-2.1.0.tgz#303df0231b5d04d271977c44a0967d4768b44e75"
+  integrity sha512-LnhuQPi4hkRg7egKls+iqtL1U0RTN2gQkdLsJN7acyynMsSc9epHLzk8McJS+bR0OzfG98zNFq7mxAyuSb/okQ==
+  dependencies:
+    vue "^3.0.0"
+
+vue-template-compiler@^2.7.14:
+  version "2.7.16"
+  resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz#c81b2d47753264c77ac03b9966a46637482bb03b"
+  integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==
+  dependencies:
+    de-indent "^1.0.2"
+    he "^1.2.0"
+
+vue-tsc@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.2.0.tgz#2b64b960cc96208492541394423ace589a461be6"
+  integrity sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==
+  dependencies:
+    "@volar/vue-language-core" "1.2.0"
+    "@volar/vue-typescript" "1.2.0"
+
+vue@^2.0.0:
+  version "2.7.16"
+  resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.16.tgz#98c60de9def99c0e3da8dae59b304ead43b967c9"
+  integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==
+  dependencies:
+    "@vue/compiler-sfc" "2.7.16"
+    csstype "^3.1.0"
+
+vue@^3.0.0, vue@^3.2.47:
+  version "3.5.18"
+  resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.18.tgz#3d622425ad1391a2b0138323211ec784f4415686"
+  integrity sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==
+  dependencies:
+    "@vue/compiler-dom" "3.5.18"
+    "@vue/compiler-sfc" "3.5.18"
+    "@vue/runtime-dom" "3.5.18"
+    "@vue/server-renderer" "3.5.18"
+    "@vue/shared" "3.5.18"
+
+vuepress-vite@2.0.0-beta.61:
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/vuepress-vite/-/vuepress-vite-2.0.0-beta.61.tgz#04058551e6be014e9f2dee14c5d8043b158e032d"
+  integrity sha512-4mcR8XSY5b36CYkPqF80WvoeGAEjTw6Cr9bMPHrPVSjG4qqyfVpdSdyRtXD+/5aLJB7r/L60J7PI1pKTci1+3w==
+  dependencies:
+    "@vuepress/bundler-vite" "2.0.0-beta.61"
+    "@vuepress/cli" "2.0.0-beta.61"
+    "@vuepress/core" "2.0.0-beta.61"
+    "@vuepress/theme-default" "2.0.0-beta.61"
+
+vuepress@2.0.0-beta.61:
+  version "2.0.0-beta.61"
+  resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-2.0.0-beta.61.tgz#f89741a505b71fbe49dba83d8319b1fd0d45116c"
+  integrity sha512-gpttL0x5ZvI9eTyR/pexBknIAcgrdjAWoiJc7OYd4bIVfwlXAb4GO4A2EwRSX+pIaNOWdcd+sfZA86EMEbrtNg==
+  dependencies:
+    vuepress-vite "2.0.0-beta.61"
+
+wcwidth@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+  integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
+  dependencies:
+    defaults "^1.0.3"
+
+which@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+  dependencies:
+    isexe "^2.0.0"
+
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
+  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+  dependencies:
+    ansi-styles "^4.0.0"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
+
+wrap-ansi@^8.1.0:
+  version "8.1.0"
+  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
+  integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
+  dependencies:
+    ansi-styles "^6.1.0"
+    string-width "^5.0.1"
+    strip-ansi "^7.0.1"
+
+yaml@^2.3.4:
+  version "2.8.0"
+  resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6"
+  integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==
