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:
+ ```
+ 
+ ```
\ 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..8a9fed876 100644
--- a/docs/.vuepress/client.ts
+++ b/docs/.vuepress/client.ts
@@ -1,16 +1,30 @@
-import {provide} from "vue";
-import {defineClientConfig} from "@vuepress/client";
+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";
+import GlobalCopyCode from "./components/GlobalCopyCode.vue";
+
export default defineClientConfig({
+ rootComponents: [
+ Chat,
+ GlobalCopyCode,
+ ],
+ async enhance({ app }) {
+ app.config.globalProperties.$eventBus = mitt();
+ },
layouts: {
Layout,
HomeLayout,
@@ -25,8 +39,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,13 +64,13 @@ 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 +79,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..c4d03621d
--- /dev/null
+++ b/docs/.vuepress/components/Chat.vue
@@ -0,0 +1,476 @@
+
+
+
+
+
+
+
+
+
+
×
+
Need help?
+
I'm a multilingual AI chatbot, trained to answer all your questions!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
\ No newline at end of file
diff --git a/docs/.vuepress/theme/sidebar/Sidebar.vue b/docs/.vuepress/theme/sidebar/Sidebar.vue
index 43f1578c8..481dab8bd 100644
--- a/docs/.vuepress/theme/sidebar/Sidebar.vue
+++ b/docs/.vuepress/theme/sidebar/Sidebar.vue
@@ -69,45 +69,158 @@ const toggleGroup = (index) => {
openGroupIndex.value = index === openGroupIndex.value ? -1 : index
}
-const isInViewport = (element) => {
- const rect = element.getBoundingClientRect();
- return (
- rect.top >= 0 &&
- rect.bottom <= window.innerHeight - 350
- );
+// Track visible headings for Intersection Observer
+const visibleHeadings = ref(new Set())
+let intersectionObserver = null
+let scrollThrottleTimeout = null
+
+// Throttle function for scroll events
+const throttle = (func, delay) => {
+ return (...args) => {
+ if (!scrollThrottleTimeout) {
+ scrollThrottleTimeout = setTimeout(() => {
+ func(...args)
+ scrollThrottleTimeout = null
+ }, delay)
+ }
+ }
}
-watch(() => route, refreshIndex)
-const checkIfScroll = () => {
- const pageAnchors = document.querySelectorAll('.header-anchor')
+// Check if user has scrolled to the bottom of the page
+const isAtBottom = () => {
+ const scrollHeight = document.documentElement.scrollHeight
+ const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
+ const clientHeight = document.documentElement.clientHeight
+ // Consider "at bottom" if within 10% of viewport height from the bottom
+ // This scales better across different screen sizes
+ const threshold = clientHeight * 0.1
+ return scrollHeight - scrollTop - clientHeight < threshold
+}
+
+// Update sidebar active state based on the topmost visible heading
+const updateSidebarActiveState = () => {
const sidebar = document.querySelector('.sidebar')
+ if (!sidebar) return
+
const sidebarAnchors = sidebar.querySelectorAll('a')
const sidebarAnchorsContainer = sidebar.querySelectorAll('.collapsible.sidebar-sub-header')
- const sidebarStringLinks = Array.from(sidebarAnchors).map(a => a.getAttribute('data-anchor'))
-
- pageAnchors.forEach((a)=>{
- if(a.getAttribute('data-anchor')) return
- a.setAttribute('data-anchor', page.value.path+a.hash)
+ const pageAnchors = document.querySelectorAll('.header-anchor')
+
+ // Get all visible headings sorted by their position (topmost first)
+ const sortedVisibleHeadings = Array.from(visibleHeadings.value).sort((a, b) => {
+ const aRect = a.getBoundingClientRect()
+ const bRect = b.getBoundingClientRect()
+ return aRect.top - bRect.top
})
- pageAnchors.forEach(a => {
- if (isInViewport(a)) {
- 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")
- else cl.classList.add("collapsed")
- })
+ let targetHeading = null
+
+ // If at bottom of page, select the last heading that's above the viewport center
+ if (isAtBottom() && pageAnchors.length > 0) {
+ const viewportCenter = window.innerHeight / 2
+ const allAnchorsArray = Array.from(pageAnchors)
+
+ // Find all headings that are above the viewport center
+ const headingsAboveCenter = allAnchorsArray.filter(anchor => {
+ const rect = anchor.getBoundingClientRect()
+ return rect.top < viewportCenter
+ })
+
+ // Select the last one (closest to bottom)
+ if (headingsAboveCenter.length > 0) {
+ targetHeading = headingsAboveCenter[headingsAboveCenter.length - 1]
+ }
+ }
+
+ // If not at bottom or no heading found, use the topmost visible heading
+ if (!targetHeading && sortedVisibleHeadings.length > 0) {
+ targetHeading = sortedVisibleHeadings[0]
+ }
+
+ if (!targetHeading) return
+
+ const currentAnchor = targetHeading.getAttribute('data-anchor')
+
+ // Update active class on sidebar links
+ sidebarAnchors.forEach(a => a.classList.remove('active'))
+ const activeLink = sidebar.querySelector(`a[data-anchor="${currentAnchor}"]`)
+
+ if (activeLink) {
+ activeLink.classList.add('active')
+
+ // Expand/collapse collapsible containers
+ sidebarAnchorsContainer.forEach(container => {
+ container.querySelectorAll('.sidebar-link-container').forEach(cl => {
+ if (container.querySelector(`a[data-anchor="${currentAnchor}"]`)) {
+ 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")
- }
+// Setup Intersection Observer for heading visibility tracking
+const setupIntersectionObserver = () => {
+ const pageAnchors = document.querySelectorAll('.header-anchor')
+ const sidebar = document.querySelector('.sidebar')
+
+ if (!pageAnchors.length || !sidebar) return
+
+ // Set data-anchor attribute on page anchors
+ pageAnchors.forEach((anchor) => {
+ if (!anchor.getAttribute('data-anchor')) {
+ anchor.setAttribute('data-anchor', page.value.path + anchor.hash)
+ }
+ })
+
+ // Disconnect existing observer if any
+ if (intersectionObserver) {
+ intersectionObserver.disconnect()
+ }
+
+ // Create new Intersection Observer
+ // rootMargin: -80px accounts for 4rem (64px) fixed header + 16px buffer
+ // -80% bottom margin triggers when heading enters top 20% of viewport
+ intersectionObserver = new IntersectionObserver(
+ (entries) => {
+ entries.forEach((entry) => {
+ const anchor = entry.target.getAttribute('data-anchor')
+ if (entry.isIntersecting) {
+ visibleHeadings.value.add(entry.target)
+ } else {
+ visibleHeadings.value.delete(entry.target)
+ }
+ })
+ updateSidebarActiveState()
+ },
+ {
+ rootMargin: '-80px 0px -80% 0px',
+ threshold: [0, 0.25, 0.5, 0.75, 1]
}
+ )
+
+ // Observe all page anchors
+ pageAnchors.forEach((anchor) => {
+ intersectionObserver.observe(anchor)
})
}
+// Throttled version for scroll events
+const throttledUpdateSidebar = throttle(() => {
+ updateSidebarActiveState()
+}, 100)
+
+watch(() => route, () => {
+ refreshIndex()
+ if (!props.isMobileWidth) {
+ setTimeout(() => {
+ setupIntersectionObserver()
+ }, 100)
+ }
+})
+
const resolveOpenGroupIndex = (route, items) => {
for (let i = 0; i < items.length; i++) {
const item = items[i]
@@ -118,12 +231,77 @@ const resolveOpenGroupIndex = (route, items) => {
return -1
}
+const handleHashChange = () => {
+ // Get the current hash from the URL
+ const currentHash = window.location.hash;
+
+ if (!currentHash) return;
+
+ const sidebar = document.querySelector('.sidebar');
+ if (!sidebar) return;
+
+ // Find the corresponding anchor link in the sidebar
+ const targetAnchor = sidebar.querySelector(`a[data-anchor="${page.value.path}${currentHash}"]`);
+
+ if (targetAnchor) {
+ const sidebarAnchors = sidebar.querySelectorAll('a');
+
+ // Remove the "active" class from all sidebar links and add it only to the current one
+ sidebarAnchors.forEach((link) => link.classList.remove('active'));
+ targetAnchor.classList.add('active');
+
+ // Expand the parent collapsible sidebar item, if any
+ const parentCollapsible = targetAnchor.closest('.collapsible');
+ if (parentCollapsible) {
+ const linkContainer = parentCollapsible.querySelector('.sidebar-link-container');
+ if (linkContainer) {
+ linkContainer.classList.remove('collapsed');
+ }
+ }
+ }
+
+ // Re-setup observer after hash change to ensure proper tracking
+ setTimeout(() => {
+ setupIntersectionObserver();
+ }, 50);
+};
+
onMounted(() => {
- refreshIndex()
- !props.isMobileWidth ? window.addEventListener("scroll", checkIfScroll) : null
-})
+ refreshIndex();
+
+ if (!props.isMobileWidth) {
+ // Setup Intersection Observer after DOM is fully rendered
+ setTimeout(() => {
+ setupIntersectionObserver()
+ }, 100)
+
+ // Add throttled scroll listener as backup
+ window.addEventListener('scroll', throttledUpdateSidebar)
+ window.addEventListener('resize', throttledUpdateSidebar)
+ }
+
+ // Listen to the "hashchange" event to handle direct anchor link access
+ window.addEventListener('hashchange', handleHashChange);
+});
-onUnmounted(() => window.removeEventListener("scroll", checkIfScroll))
+onUnmounted(() => {
+ // Disconnect Intersection Observer
+ if (intersectionObserver) {
+ intersectionObserver.disconnect()
+ intersectionObserver = null
+ }
+
+ // Clear any pending throttle timeout
+ if (scrollThrottleTimeout) {
+ clearTimeout(scrollThrottleTimeout)
+ scrollThrottleTimeout = null
+ }
+
+ // Remove event listeners
+ window.removeEventListener('scroll', throttledUpdateSidebar);
+ window.removeEventListener('resize', throttledUpdateSidebar);
+ window.removeEventListener('hashchange', handleHashChange);
+});
@@ -153,4 +331,6 @@ onUnmounted(() => window.removeEventListener("scroll", checkIfScroll))
top 3.875rem !important
background #FFFFFF !important
z-index 999
+ overflow-x hidden
+ white-space normal
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?*
-**A**: No, only fresh installation is possible.
-
-**Q**: *Is Centralized Monitoring supported on CloudLinux OS Admin?*
-**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..b272ffb88 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.
-
+
## Personal Information
-
+
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
-
+
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.
-
+
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.
-
+
diff --git a/docs/cln/account_settings/convert.md b/docs/cln/account_settings/convert.md
deleted file mode 100644
index f2eb36119..000000000
--- a/docs/cln/account_settings/convert.md
+++ /dev/null
@@ -1,25 +0,0 @@
-## How to convert your Customer account into Reseller account
-
-:::tip Note
-Conversion is a critical procedure. Please contact the billing team at billing@cloudlinux.com
-:::
-
-Go to Settings | Account details | Personal Information | Convert account
-
-/images/convert_account_zoom70.png)
-
-
-### Conversion Procedure
-
-
-1. Choose Initial Deposit Amount and click _Next_
-
-/images/conversing_step2_zoom70.png)
-
-2. Carefully read the Reseller Agreement and click _Accept_
-
-/images/reseller_agreement_zoom70.png)
-
-3. Configure payment details — choose autopayment type and click _Submit payment and Continue_
-
-/images/payment_details_zoom70.png)
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..2d5f71959 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.
-
+
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.
-
+
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
- 
+ 
* If the selected payment method is not chosen, you’ll see the dialog with the direct link for payment
- 
+ 
* If the selected payment method is chosen, you'll see the dialog for making payment
- 
+ 
* In this dialog, you could select CHANGE PAYMENT METHOD and see the direct link for payment
- 
+ 
3. After choosing the direct payment option you'll be redirected to the PayPal page
- 
+ 
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..795cca390 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.
-
+
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 . 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 . In the opened popup specify backup size and datacenter and click _Create_ to complete the action or Cancel to close the popup.
- 
+ 
-* Manage backup. Click . 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 . 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.
-
-
-
-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.
-
-
-
-
## Autopayments
Navigate to Billing → Payment Methods → Autopayment.
-
+
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.
-
+
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
- *  — open invoice in a popup (you can download it)
- *  — open invoice in a new tab (you can download it)
+ *  — open invoice in a popup (you can download it)
+ *  — open invoice in a new tab (you can download it)
-Click  near invoice id to show detailed bill information:
+Click  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
+
+
+
+4. Press edit
+5. Choose new permissions
+
+
+
+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
+
+
+
+4. Select the activation key that you need
+
+
+
+5. Press edit
+
+
+
+6. Choose new permissions
+7. Save permissions
+
+
+
diff --git a/docs/cln/cln_for_resellers/conversion.md b/docs/cln/cln_for_resellers/conversion.md
deleted file mode 100644
index abdf2f6fe..000000000
--- a/docs/cln/cln_for_resellers/conversion.md
+++ /dev/null
@@ -1,14 +0,0 @@
-The process of reseller registration differs from customer registration. Go to reseller registration page [https://cln.cloudlinux.com/console/register/reseller](https://cln.cloudlinux.com/console/register/reseller) and fill in the required forms.
-
-1. Choose the initial deposit amount and click _Next_.
-
- /images/clnresellerregistrationstep1_zoom90.png)
-
-2. Carefully read and accept reseller agreement.
-3. Configure payment details and click _Submit payment and continue_.
- :::tip Note
- Right after clicking _Submit_ the whole deposit amount will be withdrawn from an account selected as _Current Payment Method_.
- :::
- /images/clnresellerregistrationstep3_zoom90.png)
-
-4. Specify your account login, password, email for billing, and other required information and click _Sign in_. You will find your login and password in your welcome email. After activation, you can log in to the CLN.
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..7dfa99d99 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.
-
+
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.
-
+
Just click _Free Trial_ and proceed with trial activation instructions.
Also, a user is able to activate trial license from the _Purchase_ page.
-
+
### 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.
-
+
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.
-
+
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.
- 
+ 
* **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.
:::
- 
+ 
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).
-
+
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.
- 
+ 
* **[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.
-
+
This page contains the following information:
@@ -177,7 +177,7 @@ The following actions are available:
You cannot delete a default activation key.
:::
-
+
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.
-
+
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.
-
+
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.
-
+
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_.
-
+
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.
-
+
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.
- 
+ 
* **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**
+
+
+
+* 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'.
+
+
+
+You will see this screen:
+
+
+
+* 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'.
+
+
+
+You will see this pop-up:
+
+
+
+* 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**
+
+
+
+* 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'.
+
+
+
+You will see this screen:
+
+
+
+* 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'.
+
+
+
+**IP Licenses**
+
+
+
+You will see this pop-up:
+
+
+
+* 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.
-
+
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.
-
+
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.
:::
-
+
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_
- 
+ 
* Click _Create your first group_ or _Create new group_
- 
+ 
* Type a group name and description if needed
- 
+ 
* 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_
- 
+ 
-* Select a group and click _Bin_ ()
+* Select a group and click _Bin_ ()
* 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  in the _Group_ column.
+* Go to _Servers_ and select a required product. Click  in the _Group_ column.
- 
+ 
* Choose a group from the list or create a new one by typing its name
- 
+ 
* 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
- 
+ 
* Or for group action, select servers in the list and click _Add to server group_.
- 
+ 
#### How to remove a server from a group
* Go to _Servers_ and click _Manage server groups_
- 
+ 
-* Scroll to _Servers_ and click  for a server to be removed from the group
+* Scroll to _Servers_ and click  for a server to be removed from the group
- 
+ 
* 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_
- 
+ 
* Choose a group or create a new one and click _Add to group_
- 
+ 
+
+* 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
+
+
+
+3. Press a key when you want to enable/ disable Premium or CDN
+
+4. Press Edit key
+
+
+
+5. Choose new permissions
+
+
+
+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..dbc5f4024 100644
--- a/docs/cln/introduction/README.md
+++ b/docs/cln/introduction/README.md
@@ -18,7 +18,7 @@ In your CLN account you can only see the licenses purchased directly from CloudL
## Create new account
-If you are a first time user, go to [https://cln.cloudlinux.com/console/register/customer ](https://cln.cloudlinux.com/console/register/customer%20) and fill in the simple registration form to create your account. You will find your login and password in your welcome email. After you confirm your email, you can log in to the CLN.
+If you are a first time user, go to [https://cln.cloudlinux.com/console/register/customer ](https://cln.cloudlinux.com/console/register/customer) and fill in the simple registration form to create your account. You will find your login and password in your welcome email. After you confirm your email, you can log in to the CLN.
## Log in
@@ -31,8 +31,8 @@ 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_.
-
+
:::tip Note
Server License Check does not require signing in to the CLN portal - it is available for everyone.
-:::
\ No newline at end of file
+:::
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..ffcf3329f 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.
-
+
## 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.
:::
-
+
#### 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..8cdd8be46 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.
-
+
## 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).
-
+
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:
-
+
:::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).
-
+
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).
-
+
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).
-
+
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
-
+
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/spacewalk/regular.md b/docs/cln/spacewalk/regular.md
deleted file mode 100644
index a9de5502b..000000000
--- a/docs/cln/spacewalk/regular.md
+++ /dev/null
@@ -1,10 +0,0 @@
-#### CloudLinux Spacewalk
-
-
-Spacewalk is an open-source systems management solution for system provisioning, patching, and configuration.
-
-If a user bought a license directly via CLN UI (not via vendors), he can use Spacewalk to manage his servers when they have been activated with the activation key.
-
-To get to Spacewalk, go to _CloudLinux OS → Activation Keys_. On the left sidebar menu click _Open Servers_ panel, the CloudLinux Spacewalk application opens in a new tab.
-
-/images/clnuispacewalk_zoom70.png)
diff --git a/docs/cln/spacewalk/reseller.md b/docs/cln/spacewalk/reseller.md
deleted file mode 100644
index a4721aded..000000000
--- a/docs/cln/spacewalk/reseller.md
+++ /dev/null
@@ -1,56 +0,0 @@
-## Server Accounts and Spacewalk Account Management
-
-
-To manage accounts using Spacewalk system via CLN UI, click _CloudLinux OS_ at the top menu and then click _Server accounts_ on the left sidebar.
-
-/images/clnserveraccounts_zoom60.png)
-
-The following data is available:
-
-* Total licenses on account — a total number of CloudLinux licenses on this account
-* Unused licenses — number of licenses with no server attached
-* License cost — the cost of licenses per month
-
-The table contains the following information:
-
-* Login — Spacewalk server account login
-* First name — server owner first name
-* Last name — server owner last name
-* Company — server company-owner name
-* Email
-* Limited/used — total/used number of licenses
-* Actions
-
-The following actions are available:
-
-* Add server account. To do so, click _Add account_. The Add server account popup opens.
-
- /images/clnaddserveracc_zoom90.png)
-
- Fill in the form and click _Add Account_ to complete the action or _Cancel_ to close the popup.
-
-* Edit server account. To do so, click /images/clnedit.png). Edit server account popup opens. To save changes, click _Save account_ or click _Cancel_ to close the popup.
-* Remove server account. To do so, click /images/clnremove.png). Remove account popup opens. To confirm removing, click _Remove account_ or click _Cancel_ to close the popup.
-* View server account details. To do so, click server login in the _Login_ column, the server account details page opens.
-
- /images/clnserveraccinfo_zoom60.png)
-
-The following data is available:
-
-* System 0/0 — limit and used
-* Email
-* Name — a name of server owner
-* Company — company-owner name
-
-The table contains the following information:
-
-* Token — a unique identifier for a key
-* Created — the token (key) creation date
-* Usage — number of servers registered on this key
-* Actions
-
-The following actions are available:
-
-* Create key. To do so, click _Create key_ button. A created key will be added to the table automatically without any notification.
-* Remove key. To do so, click /images/clnremove.png). Key removing popup opens. Confirm the action by clicking _Remove_ or click _Cancel_ to close the popup.
-
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..0709a1957
--- /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)
+
+
+
+4. If your hosting requires specific files permissions, change them accordingly in the folder: `/modules/addons/cloudlinux_advantage`
+5. Go to the admin panel page "WHMCS/System Settings/Addon Modules", activate "CloudLinuxAdvantage"
+
+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
+
+
+:::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!
+:::
+
+
+
+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.
+
+
+
+
+### 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.
+
+2. Make sure the product is associated with the Configurable option "AccelerateWP"
+
+3. Allow clients to upgrade Configurable options so they can purchase AccelerateWP for existing subscriptions.
+
+4. Save changes.
+5. Existing customers can upgrade their AccelerateWP Premium settings by changing the order using the "Upgrade/Downgrade options" button.
+
+6. New customers will be able to select AccelerateWP settings during order creation
+
+7. The administrator can manually change the setting of AccelerateWP by editing the purchased service by the customer
+
+
+### CloudLinuxAdvantage addon page
+
+Module page contains information about the state of active features
+
+
+
+In case the configurable options were accidentally removed, you can re-install them on the CloudLinuxAdvantage settings page.
+
+
+
+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. * Last status: previous status * Current status: current service status * 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 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.
+
+
+
+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)
+
+
+
+### 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 (`/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 `accelerate-wp-admin set-suite` 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
+
+
+
+```
+/usr/sbin/plesk bin extension -i /usr/share/cloudlinux/plesk-accelerate-wp-latest.zip
+```
+
+
+
+2. Activate
+
+
+
+```
+/usr/sbin/plesk bin extension --enable accelerate-wp
+```
+
+
+
+### Deinstallation
+
+
+
+```
+/usr/sbin/plesk bin extension -u accelerate-wp
+```
+
+
+
+## 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
+ 
+3. Select the action "Upgrade/Downgrade Options"
+ 
+4. Choose a new configuration and place an order
+ 
+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
+ 
+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)
-
-
-
-4. If your hosting requires specific files permissions, change them accordingly in the folder: `/modules/addons/acceleratewp`
-5. Go to the admin panel page WHMCS/System settings/Addon Modules, activate "AccelerateWP Addon"
-
-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
-
-
-### 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!
-:::
-
-
-
-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.
-
-
-
-### 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.
-
-2. Make sure the product is associated with the Configurable option "AccelerateWP"
-
-3. Allow clients to upgrade Configurable options so they can purchase AccelerateWP for existing subscriptions.
-
-4. Save changes.
-5. Existing customers can upgrade their AccelerateWP Premium settings by changing the order using the "Upgrade/Downgrade options" button.
-
-6. New customers will be able to select AccelerateWP settings during order creation
-
-7. The administrator can manually change the setting of AccelerateWP by editing the purchased service by the customer
-
-
-### AccelerateWP Addon page
-
-In case the configurable options "AccelerateWP" were accidentally removed, you can re-install them on the AccelerateWP addon settings page.
-
-
-
-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. * Last status: previous status * Current status: current service status * 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
-
-
-An example of a request that failed
-
-
-Example of a successful request
-
-
-### 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 `accelerate-wp-admin set-suite` 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
-
-
-
-```
-/usr/sbin/plesk bin extension -i /usr/share/cloudlinux/plesk-accelerate-wp-latest.zip
-```
-
-
-
-2. Activate
-
-
-
-```
-/usr/sbin/plesk bin extension --enable accelerate-wp
-```
-
-
-
-### Deinstallation
-
-
-
-```
-/usr/sbin/plesk bin extension -u accelerate-wp
-```
-
-
-
-## 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
- 
-3. Select the action "Upgrade/Downgrade Options"
- 
-4. Choose a new configuration and place an order
- 
-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.
- 
-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..13b2053b3 100644
--- a/docs/cln/whmcs_plugin/README.md
+++ b/docs/cln/whmcs_plugin/README.md
@@ -1,51 +1,65 @@
# CloudLinux WHMCS Plugin
-## Overview
+The CloudLinux WHMCS Plugin provisions and manages CloudLinux, KernelCare, and Imunify360 licenses through CLN. A license can be sold as a standalone WHMCS product, as an optional product addon, or as a configurable option of another service such as a VPS. Bundle licenses are also supported for reseller accounts that have been explicitly granted access to them in CLN.
-CloudLinux Licenses For WHMCS allows you to automatically provision CloudLinux, Imunify360, and KernelCare licenses along with selected products. You can provision them for free or as a paid add-on to your product. Owing to CloudLinux Licenses add-on, all module commands on your main product are automatically reproduced on the license product.
+The plugin provides:
-**Admin Area Functionality**
+* IP-based and key-based license provisioning, depending on the selected product
+* automatic license creation and termination
+* IP license migration when the service IP changes for standalone products, module-backed addons, and configurable options
+* deferred provisioning for module-backed addons and configurable options when a VPS receives its Dedicated IP after the order is accepted
+* license and relation lists in the WHMCS admin area
+* a global policy that prevents the checkout or operator IP from being used as the server IP
-* Create license
-* Terminate license
-* Suspend/Unsuspend license (only IP-based licenses)
-* Change license IP address
-* View license details
+## Choose a provisioning model
-**Client Area Functionality**
+| Model | Use it when | Where the customer selects the license | IP source | If the IP is not available yet |
+| --- | --- | --- | --- | --- |
+| Standalone product | The license is the product being sold | A product in the WHMCS store | A required custom field or the service Dedicated IP | Module Create returns an error and the service remains `Pending` |
+| Module-backed product addon | The license is an optional extra for a VPS or hosting service | **Available Addons** during checkout | The parent service custom IP field or Dedicated IP | The parent service is not blocked; the addon waits and is retried after the parent receives an IP |
+| Configurable option | The customer chooses a license product or tier from a dropdown | **Configurable Options** during checkout | The parent service custom IP field or Dedicated IP | The parent service is not blocked; license provisioning waits for the IP |
+| Product Relation (legacy workflow) | Every order of a hosting product must include a particular license | The license is included automatically and is not selected separately | A separate child license service | Parent-IP inheritance and deferred retry are not automatic; see [Legacy relation workflows](#legacy-relation-workflows) |
+| Addon Relation (legacy workflow) | An existing non-CloudLinux product addon must trigger a separate license product | The existing product addon during checkout | A separate child license service | Parent-IP inheritance and deferred retry are not automatic; see [Legacy relation workflows](#legacy-relation-workflows) |
-* View license details
-* Change license IP address
-
-**Addon Functionality**
+::: tip Recommended models
+Use a required custom IP field for a standalone IP-based license. Use a module-backed product addon or configurable option for a VPS whose Dedicated IP is assigned by the provisioning system after checkout.
+:::
-* Manage relations between addon and license product
-* Manage relations between server and license product
-* Manage relations between configurable options and license product
-* Automatically add license product to order when relation is triggered
-* View existing license
-* Dependencies between module actions – every action: Create, Terminate, Suspend or Unsuspend called on the server product will result with the same action performed on the licensed products
-* Flexible filtering of existing licenses
+## Supported license products
-**Additionally**
+The following matrix shows which license modes the plugin supports for every value in the **Product** dropdown.
-* Multi-Language Support – only provisioning module
-* Supports CloudLinux, KernelCare and Imunify360 Licenses (_does not support CloudLinux Pro licenses, it should be supported soon in 2023_)
-* Supports WHMCS V6 and later
+| Product | IP-based | Key-based | Additional settings |
+| --- | :---: | :---: | --- |
+| `CloudLinuxLegacy` | Yes | No | — |
+| `CloudLinuxSolo` | Yes | No | — |
+| `CloudLinuxAdmin` | Yes | No | — |
+| `CloudLinuxSharedPro` | Yes | No | Requires the corresponding CloudLinux OS Shared Pro entitlement in CLN |
+| `KernelCare` | Yes | Yes | **Key Limit** is available in key-based mode |
+| `KernelCarePlus` | Yes | No | IP-based only |
+| `Imunify360` | Yes | Yes | Select an Imunify360 license tier; **Key Limit** is available in key-based mode |
+| `Bundle Licenses` | Yes | No | Available only to reseller accounts explicitly entitled to bundles in CLN |
+For Imunify360, the available tiers include Single User, up to 30 users, up to 250 users, Unlimited, and ImunifyAV+. The five-user tier is displayed only when it is enabled in the module installation.
-## Installation and Configuration
+The **Create Key based license** and **Key Limit** fields apply only to `KernelCare` and `Imunify360`. The module hides and ignores these fields for all IP-only products, including `KernelCarePlus` and `Bundle Licenses`.
-In this section we will show you how to set up our products.
+::: warning Bundle license availability
+`Bundle Licenses` is not a general-purpose product type available to every reseller. It can be used only when CloudLinux has enabled one or more bundles for the reseller account in CLN. The rest of this guide uses Imunify360, which is a standard license product, so the examples apply to a wider audience.
+:::
-### Installation and Update
+::: tip CLN entitlements
+The matrix describes module capabilities. The reseller account must also be authorized to create the selected product and tier in CLN.
+:::
+## Install or update the plugin
-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)
-2. Upload archive to your WHMCS root folder and extract it. Files should automatically jump into their places.
-3. Run the following script:
+1. Back up the WHMCS files and database.
+2. Download the module archive:
+ * [Production build](https://repo.cloudlinux.com/plugins/whmcs-cl-plugin-latest.zip)
+ * [Beta build](https://repo.cloudlinux.com/plugins/whmcs-cl-plugin-beta.zip)
+3. Extract the archive into the WHMCS installation directory. Allow it to overwrite the existing module files when updating.
+4. Run the database migration from the WHMCS server:
@@ -55,290 +69,368 @@ php /clDeploy.php --migrate
-::: tip Note
-If your hosting requires specific files permissions, change them accordingly in the folder: `/modules/servers/CloudLinuxLicenses`
-:::
+5. In WHMCS, open **System Settings → Addon Modules**.
+6. Activate **CloudLinux Licenses Addon** if it is not active.
+7. Click **Configure**, grant access to the required administrator roles, and save the settings.
+
+The migration is safe to run after every update. It creates or updates the module tables, including the durable license state used to track the exact registered IP or key. No manual database changes are required.
-### Configuration of Product
-
-1. Log into your WHMCS admin area and go to _Setup → Products/Services → Products/Services_. Click _Create a New Group_
-2. Fill _Product Group Name_ (product group will be visible under that name in your WHMCS system) and click _Save Changes_
-3. Click _Create a New Product_. Choose _Other_ from _Product Type_ drop-down menu and previously created product group from Product Group drop-down menu.
-4. Fill _Product Name_ and click _Continue_.
-5. Set up this product as hidden through marking _Hidden_ checkbox at _Details_ tab. Do not set up pricing for this product, it will be done in another way.
-6. Go to the _Module Settings_ tab and select **_CloudLinux Licenses_** from _Module Name_ drop-down.
-7. Fill _Username_ and _Password_ with your CloudLinux API access details (you can find them on your CLN profile page, username is your login and password is API secret key) and select **_Imunify360_** from _Product_ drop-down, then choose desired _License Type_. If you'd like to use key based licenses, tick _Create Key based license_ checkbox.
-8. Click _Save Changes_ 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
- 
- * main product
- 
-10. Setup desired _Auto-setup_ options.
-
-:::tip Notes
-* You can use the CloudLinux license module as an individual product. By default, for IP license the client’s IP address is used on ordering, after ordering you can change the license IP to a desired one in the service settings (as administrator or user).
-* To create CloudLinux OS Shared PRO licenses you should have an appropriate CLN account and use the same `CloudLinux` in the product module settings.
-* Products with `KernelCare+` can create only IP based licenses.
+::: warning Updating an existing installation
+Do not deactivate the addon as part of a normal update. Copy the new files over the existing installation and run the migration command.
:::
+## CloudLinux Licenses Addon
-### Configuration of Add-on
+The installation contains two cooperating WHMCS modules:
-1. Go to _Setup → Add-on Modules_, find _CloudLinux Licenses Add-on_ and click _Activate_ next to it.
-2. The next step is permitting access to this module. Click _Configure_, select admin roles and confirm by clicking _Save Changes_.
+* `CloudLinuxLicenses` is the server module attached to a product or product addon. It creates, changes, suspends, unsuspends, and terminates an individual CLN license.
+* **CloudLinux Licenses Addon** is the addon module that provides the administration page and registers the WHMCS lifecycle hooks. It manages relations between non-CloudLinux services and license products. For module-backed addons and configurable options, it also reconciles deferred provisioning, follows parent-service IP changes, and cleans up tracked licenses when services are removed.
-
+The addon module must remain active for Product Relations, Addon Relations, Configurable Options Relations, deferred provisioning, and automatic parent/child lifecycle handling to work.
-_Fig 1: Imunify360 License For WHMCS provisioning module configuration._
+::: danger Do not deactivate the addon during an update
+Deactivation removes the relation and runtime-connection tables. Activating it again recreates empty tables, so the configured Addon, Product, and Configurable Options Relations must be restored. For a normal update, overwrite the module files and run `clDeploy.php --migrate` without deactivating the addon.
+:::
-
+### Addon administration tabs
-_Fig 2: Imunify360 License For WHMCS add-on module main page._
+Open **Addons → CloudLinux Licenses Addon**. The page contains five tabs:
-## Management
+| Tab | Purpose |
+| --- | --- |
+| **Licenses List** | Standalone licenses and license products created through Product, Addon, or Configurable Options Relations |
+| **Addon Licenses List** | Licenses stored directly on product addons whose Module Name is `CloudLinuxLicenses` |
+| **Addon Relations** | Legacy workflow that maps an existing non-CloudLinux product addon to a hidden CloudLinux license product |
+| **Product Relations** | Legacy relation workflow that automatically includes a hidden license product with a parent hosting product |
+| **Configurable Options Relations** | Maps individual dropdown, radio, or checkbox values to hidden license products |
+The list tabs support filtering by client, product or addon, IP address, and license key. Relation rows can be added, edited, and deleted from the corresponding relation tab.
-In this section you can find two ways of linking license product with your server product as well as other possibilities of the module.
+### Module-backed and legacy product-addon workflows
+There are two different ways to use a WHMCS product addon:
-### Link Via Add-on – Optional License
+1. **Module-backed addon — recommended for current WHMCS versions.** Set the product addon's **Module Name** directly to `CloudLinuxLicenses` and configure its CLN product. The license belongs to the addon service itself and appears in **Addon Licenses List**. This is the workflow described in [Scenario 2](#scenario-2-optional-product-addon).
+2. **Addon Relation — legacy compatibility workflow.** Keep the existing product addon independent of the CloudLinux module, create a separate hidden `CloudLinuxLicenses` product, and map the two under **Addon Relations**. Activating the addon creates a separate child license service, which appears in **Licenses List**.
+Use an Addon Relation when an existing addon must remain independent or when compatibility with an older configuration is required. Do not configure the same addon as module-backed and also map it through Addon Relations, because these are separate provisioning models.
-In order to allow your client to decide whether he wants to order a server with or without the license, we will use Product Add-on. In this way, when the client orders an add-on, the relation will be triggered and the license product will be ordered along with the module.
+
-The following steps must be performed to prepare such connection:
+## Legacy relation workflows
-1. Go to _Setup → Products/Services → Products Add-ons_ and click _Add New Add-on_.
-2. Fill addon name, set up billing cycle and price. Then tick _Show on Order_ checkbox, assign add-on to the product and click _Save Changes_.
+**Product Relations** and **Addon Relations** are retained for compatibility with installations that use the plugin's older child-service architecture. Both workflows create a separate free child service for the linked license product and record its relationship with the parent service.
-
+::: warning Legacy workflow limitations
+In version 1.3.23, Product Relations and Addon Relations do not provide the same deferred IP provisioning and parent-IP synchronization implemented for module-backed product addons and configurable options.
-
+For an IP-based license:
-_Fig 3: Configuration of product add-on, which will trigger license product adding._
+* enable **Do not use Order IP** on the hidden license product so an automatic provisioning attempt cannot register the checkout or operator IP;
+* a related license may not be provisioned automatically when the parent receives its Dedicated IP later;
+* changing the parent service IP does not automatically move the related license to the new address;
+* before canceling or deleting an order, run the related license service's **Terminate** action and verify in CLN that the license was removed.
+Use a module-backed product addon or configurable option when the server IP can be assigned or changed after checkout.
+:::
-1. Go to _Add-ons → CloudLinux Licenses Add-on → Add-on Relations_ and click _Add Relation_.
-2. Select previously created product add-on and license product as shown below and click _Add Relation_.
+### Addon Relations
-
+Use **Addon Relations** only when an existing regular product addon must remain independent of the `CloudLinuxLicenses` provisioning module:
-_Fig 4: Creating relation between product add-on and provisioning module._
+1. Create and configure a hidden `CloudLinuxLicenses` product for the license.
+2. Open **Addons → CloudLinux Licenses Addon → Addon Relations**.
+3. Click **Add Relation**.
+4. Select the existing regular addon under **Product Addon** and the hidden license product under **Linked License Product**.
+5. Save the relation.
-### Link Products Directly
+Activating the regular addon creates a separate free child service for the linked license product. For current WHMCS versions, prefer a module-backed product addon unless compatibility with an existing relation-based configuration is required.
+### Product Relations
-If you want to offer server along with the license, perform the following steps.
+Use **Product Relations** when every instance of a VPS or hosting product must include a license without asking the customer to select it:
-::: tip Note
-Please do not set up pricing for license provisioning product. In exchange, you can increase a price for server provisioning product.
-:::
+1. Create and configure a hidden `CloudLinuxLicenses` product for the license.
+2. Open **Addons → CloudLinux Licenses Addon → Product Relations**.
+3. Click **Add Relation**.
+4. Select the parent product under **Main product** and the hidden license product under **Linked License Product**.
+5. Save the relation.
-1. Prepare license provisioning product as described in the [Configuration of Product](/cln/whmcs_plugin/#configuration-of-product) section of this documentation.
-2. Go to _Add-ons → CloudLinux Licenses Add-on → Products Relations_ and click _Add Relation_.
-3. Select server provisioning product from the Main product drop-down list and license provisioning product from the _Linked Product With License_ and click _Add Relation_.
+The related license product is created as a free child service. Include its commercial cost in the parent product instead of pricing the hidden license product separately.
-
+For an IP-based related license, enable **Do not use Order IP** on the hidden license product. After WHMCS creates the child license service, enter the correct server IP on that child and run its **Create** module action. If the parent IP changes later, update the related license service separately.
-_Fig 5: Creating relations directly between server and license provisioning modules._
+
+### Administrative and client operations
+For a service using `CloudLinuxLicenses`, the WHMCS administrator can:
-### Link Via Configurable Options
+* create and terminate the license;
+* suspend or unsuspend an IP-based license;
+* view its registered IP or key and product details;
+* change the license IP or replace an existing license key.
+For key-based licenses, suspend and unsuspend do not remove or recreate the key. In the client area, the customer can view the license details and change the registered IP or key for an active service.
-In order to allow your client to decide whether he wants to order server with or without license we can use _Configurable Options_ ( [https://docs.whmcs.com/Addons_and_Configurable_Options](https://docs.whmcs.com/Addons_and_Configurable_Options)).
+Module-backed addon and configurable-option licenses participate in deferred provisioning and follow parent-service IP changes. Their stored License IP is updated after a successful move. Hard-deleting a parent service also cleans up tracked module-backed addon and configurable-option licenses.
-Below we will show what steps to proceed to prepare such connection:
-1. Configure _CloudLinuxLicenses_ product as described [here](/cln/whmcs_plugin/#configuration-of-product).
-2. Go to _Setup → Products/Services → Configurable Options_ and click _Create a New Group_.
-3. Fill group name and add _New Configurable Option_, set up billing cycle, price and option type. Then save changes.
-4. Go to _Add-ons → CloudLinux Licenses Add-on → Configurable Options Relations_ and click _Add Relation_.
-5. Choose appropriate configurable option and license product which it is assigned to and click _Add relation_.
+Product Relation child services receive suspend, unsuspend, and terminate actions when the corresponding module action runs for the parent service. An Addon Relation child is terminated when the mapped regular addon is terminated. These child services do not participate in automatic parent-IP reconciliation. Follow the operational precautions in [Legacy relation workflows](#legacy-relation-workflows) before canceling or deleting an order.
-::: tip Notes
+## Connect a product to CLN
- * Plugin doesn’t support “quantity” type of Configurable Options
- * A related product can’t contain two (or more) products with the same license type
- * If you have changed Dedicated IP 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
-:::
+Open the product or product addon, select the **Module Settings** tab, and set **Module Name** to `CloudLinuxLicenses`.
-
+| Setting | Description |
+| --- | --- |
+| **Username** | The CLN reseller username |
+| **IP registration token** | The API secret key from the CLN Profile page |
+| **Test credentials** | Verifies the saved credentials against CLN |
+| **Product** | The license product from the support matrix |
+| **License Type** | The Imunify360 tier; shown only for Imunify360 |
+| **Create Key based license** | Enables key mode for KernelCare or Imunify360 |
+| **Key Limit** | Maximum number of servers for the key |
+| **Name of the custom IP field** | Exact name of the WHMCS custom field that contains the server IP |
+| **Bundle** | A CLN bundle; shown only for Bundle Licenses |
+| **Do not use Order IP** | Disables the checkout IP fallback for this product |
+| **Debug Mode** | Sends module diagnostics to the WHMCS Module Log |
-_Fig 6: Creating relation directly between server and license provisioning modules._
+The following example configures an IP-based Imunify360 Single User license. The same IP settings apply to all IP-based products.
-### Link Add-ons Directly
+
-_[for WHMCS 7.2.x and newer]_
+## Configure the server IP source
-WHMCS 7.2 introduces the ability to associate Product Add-ons with Provisioning Modules.
+For a new IP-based license, the module resolves the IP in this order:
-In order to allow your client to decide whether he wants to order server with or without license we will use product addon. Below we will show you what steps to proceed to prepare such connection:
+1. The custom field named in **Name of the custom IP field**
+2. The WHMCS service **Dedicated IP**
+3. The order originator IP, but only when the fallback is allowed
-1. Go to _Setup → Products/Services → Products Add-ons_ and click _Add New Add-on_.
-2. Fill add-on name, set up billing cycle and price. Then tick _Show on Order_ checkbox, assign add-on to product.
-3. Go to the _Module Settings_ tab and select _CloudLinux Licenses_ from _Module Name_ drop-down.
-4. Fill _Username_ and _Password_ with your CloudLinux API access (API secret key) details and select desired license type from _License Type_ drop-down. Click _Save Changes_ to confirm.
+If the custom field and Dedicated IP contain different values, the custom field takes precedence. After successful provisioning, the module stores the exact registered IP and uses that value for later changes and cleanup.
-
+### Recommended policy: never use the order IP
-_Fig 7: Configuration of product add-on with Provisioning Modules._
+The order IP is the address from which checkout was submitted. For an order created or accepted by an administrator, it can be the operator IP. It is not a reliable server address.
-### CloudLinux OS Key Licenses
+There are two controls:
-1. To set CloudLinux OS Key license while adding service in Module Settings do the following:
+* **Never use Order IP** in **System Settings → Addon Modules → CloudLinux Licenses Addon → Configure** disables the fallback globally.
+* **Do not use Order IP** in a product's **Module Settings** disables the fallback for that product.
-* choose **_CloudLinux_** in _License Type_ drop-down;
-* mark _Use Key_ (instead of IP address) checkbox;
-* enter IP registration token (API secret key) from Profile page in CLN;
-* in _Key Limit_ field enter the number of servers and click _Save Changes;_
-* the _License Key Custom Field_ will be automatically added.
+The global setting overrides every product setting.
-### KernelCare Key Licenses
+
-1. To set KernelCare Key license while adding service in Module Settings do the following:
+### Legacy order IP fallback
-* choose **_KernelCare_** in _License Type_ drop-down;
-* mark _Use Key_ (instead of IP address) checkbox;
-* enter IP registration token (API secret key) from Profile page in CLN;
-* in _Key Limit_ field enter the number of servers and click _Save Changes;_
-
-| |
-:-------------------------:
-||
-|Fig 8.2: Setup KernelCare License.|
+For compatibility with existing installations, the order IP can still be used when both controls are disabled. This can be useful in legacy workflows where the customer changes the address after activation, but it is not recommended for server licenses.
-* the _License Key Custom Field_ will be automatically added.
+The order IP fallback is never written into the service Dedicated IP merely by reading it. This prevents a browser or operator address from appearing as if it were the customer's server address.
-| |
-:-------------------------:
-||
-|Fig 9.2: License Key Custom Field is displayed while editing service.|
+## Scenario 1: standalone license product
-### Imunify360 Key Licenses
+Use this model when the customer orders the license itself rather than a parent VPS product.
-1. To set Imunify360 Key license while adding service in Module Settings, do the following:
+### Create the product
- * choose **_Imunify360_** in _License Type_ drop-down
- * mark _Use Key_ (instead of IP address) checkbox
- * enter IP registration token (API secret key) from _Profile_ page in CLN
- * in _Max Users_ field enter the number of users per server
- * in _Key Limit_ field enter the number of servers and click _Save Changes_
+1. Open **System Settings → Products/Services → Products/Services**.
+2. Create a product group, or select an existing license group.
+3. Create a product with **Product Type** set to **Other**.
+4. Configure its name, description, pricing, and welcome email.
+5. Open **Module Settings** and select `CloudLinuxLicenses`.
+6. Enter the CLN credentials and click **Test credentials**.
+7. Select the license product. For Imunify360, also select the required **License Type** tier.
+8. For an IP-based license, enter a custom field name such as `IP` in **Name of the custom IP field**.
+9. Enable **Do not use Order IP** unless the legacy fallback is intentional.
+10. Select the required WHMCS automatic setup rule and save the product.
-
+### Require the customer IP at checkout
-_Fig 8.3: Imunify360 Product settings._
+1. Open the product's **Custom Fields** tab.
+2. Add a **Text Box** field with exactly the same name used in **Name of the custom IP field**.
+3. Enable **Required Field**.
+4. Enable **Show on Order Form**.
+5. Save the product.
- * the _License Key Custom Field_ will be automatically added
- * the _License Key Custom Field_ is displayed while editing service
+
-#### Updating a service
+The customer must now enter the server IP while ordering:
- * when _Service Created Successfully_ message appears, you can edit _Service_
- * enter information and settings and click _Save Changes_
+
-
+::: warning Missing IP on a standalone service
+If Order IP is disabled and neither the custom field nor Dedicated IP is set, Module Create returns **Server IP required** and the service remains `Pending`. Enter the real IP on the service and run **Create** again. The WHMCS order acceptance form does not provide a Dedicated IP field, so collecting a required custom field during checkout is the safest automatic workflow.
+:::
-_Fig 9.3: Imunify360 Service settings._
+## Scenario 2: optional product addon
+Use a module-backed product addon when the customer can add a license to a VPS or hosting product. The parent product does not need to use the CloudLinux license module.
-### Order
+### Create and attach the addon
+1. Open **System Settings → Products/Services → Product Addons**.
+2. Create an addon and configure its name, description, billing cycle, and price.
+3. Enable **Show on Order**.
+4. In **Applicable Products**, select the parent VPS or hosting products.
+5. Open **Module Settings** and select `CloudLinuxLicenses`.
+6. Enter the CLN credentials, select `Imunify360`, and choose the required **License Type** tier.
+7. Enable **Do not use Order IP** for a deferred-IP VPS workflow.
+8. Select an automatic setup rule. Do not select **Do not automatically setup this addon** if the addon must activate automatically after the parent receives its IP.
+9. Save the addon.
-All the services registered in the account are displayed in _My Products & Services_ area. When you choose a particular Product/Service and click _View Details_, you can view Product information, change license key, view Add-ons or make changes in Management Actions section.
+
-
+The addon is displayed during checkout for the applicable parent products:
-_Fig 10.1: Client’s products list._
+
-
+### How deferred addon provisioning works
-_Fig 11: Licenses details._
+1. WHMCS accepts and provisions the parent service.
+2. If the parent has no custom IP or Dedicated IP, the license addon stays `Pending`. The parent service is not blocked.
+3. The missing-IP attempt is recorded in the WHMCS Module Queue.
+4. When the order is `Active` and the parent receives a Dedicated IP or custom IP, save the parent service. The module retries the addon.
+5. After CLN creates the license, the addon becomes `Active` and its **License IP** field stores the registered address.
-To order and purchase a new service do the following:
-* choose _Category → Imunify360 Group_ and click _Order Now_ on a particular service
+If the parent IP later changes, the module removes the old registration, creates the license for the new IP, and updates **License IP**. Hard deletion of the parent service also cleans up its module-backed license addons.
-
+## Scenario 3: configurable option
-_Fig 12: Order - Products group._
+Use a configurable option when the customer must select a license product or tier from a dropdown on the parent product.
-* choose _Billing Cycle_ if possible
-* enter information in _Configure Server_ area
-* choose _Available Add-ons_ and click _Continue Shopping_ to proceed or _Checkout_ to view service details
+### Create hidden license products
-
+Create one CloudLinux license product for every selectable value:
-_Fig 13: Order - Configure product._
+1. Create a product with **Product Type** set to **Other**.
+2. Mark the product **Hidden** so it cannot be ordered separately.
+3. Select `CloudLinuxLicenses` in **Module Settings**.
+4. Configure the CLN credentials, product, license tier when applicable, IP field, and Order IP policy.
+5. Repeat for the other license choices.
-* enter _Promotional Code_ in a specific field if you have one
-* choose _Payment Method_ and click _Continue Shopping_
+Pricing for this workflow is normally configured on the configurable option values, not on the hidden license products.
-
+### Create the dropdown
-_Fig 14: Order - review and checkout._
+1. Open **System Settings → Products/Services → Configurable Options**.
+2. Create a group and assign it to the parent VPS product.
+3. Add a configurable option with **Option Type** set to **Dropdown**.
+4. Add one value for no license, followed by the license choices. WHMCS supports an internal value and a customer-facing label separated with `|`, for example:
+```text
+none|No Imunify360 license
+imunify_single|Imunify360 Single User
+imunify_30|Imunify360 up to 30 Users
+```
-### Admin Area
+
+Configure the price and sort order for every value:
-From the admin area it is possible to command such actions as create, terminate, suspend/unsuspend and change IP address. Nonetheless, these actions can be ordered only on the server provisioning module and will be automatically reproduced for the license provisioning product.
+
-Only change IP address functionality have to be ordered manually.
+### Map the values to license products
-You can also view the details of created license.
+1. Open **Addons → CloudLinux Licenses Addon**.
+2. Select **Configurable Options Relations**.
+3. Click **Add Relation**.
+4. Select the hidden license product, configurable option group, and configurable option value.
+5. Add one relation for every value that must create a license. Do not map the **No license** value.
-
+The relation tab shows the license product associated with every selectable value:
-_Fig 15: Imunify360 Licenses For WHMCS admin area._
+
+The customer sees a single license dropdown on the parent product:
-### Client Area
+
+### How deferred configurable-option provisioning works
-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.
+The parent service can become `Active` even when it has no IP. The license selection waits until the order is `Active` and the parent receives its custom IP or Dedicated IP. Saving the parent service or completing its module provisioning reconciles the selection and creates the missing license.
-
+Changing the selected option terminates the old related license and provisions the new one. Removing the selection terminates the related license. Changing the parent IP moves all related IP-based licenses to the new address.
-_Fig 16: Imunify360 Licenses For WHMCS Client Area._
+::: tip Configurable option limitations
+Do not use the **Quantity** option type. Do not map multiple products of the same license type to one selected value.
+:::
-To change IP address, click _Change_ as shown on the screen above. Then specify IP address and click _Save_.
-
+## Configure a Bundle license
-_Fig 17: Changing License IP Address._
+Bundle licenses use the same standalone product, product addon, and configurable-option workflows described above. Use this product type only when bundles have been enabled for the reseller account in CLN.
+1. Open the relevant product or addon **Module Settings**.
+2. Select `CloudLinuxLicenses` as the module.
+3. Select `Bundle Licenses` in **Product**.
+4. Select one of the bundles returned for the reseller account.
+5. Configure the IP field and Order IP policy as for any other IP-based license.
+6. Save the product or addon.
-### Licenses List
+
+If the **Bundle** list is empty or CLN rejects bundle provisioning, verify that the saved credentials belong to the expected reseller and ask CloudLinux to confirm that the bundle is assigned to that account.
-You can view the list of all licenses owned by your client at our add-on → _Licenses List_.
-You can filter the list of licenses by client name, server provisioning products, license provisioning products and license IP address/Key.
+## Provisioning behavior reference
-
+| Event | Standalone product | Module-backed addon or configurable option | Product Relation or Addon Relation |
+| --- | --- | --- | --- |
+| Real IP is available | The license is created during Module Create | The license is created when the option or addon is activated | A child license service is created; verify that it contains the correct server IP before running **Create** |
+| Real IP is missing and Order IP is disabled | Module Create fails clearly; service stays `Pending` | Parent service is not blocked; license waits for the parent IP | No automatic relation-specific retry; provide the IP on the child license service and run **Create** |
+| IP becomes available later | Enter the IP and run **Create** again | Save or finish provisioning the active parent service; the module reconciles automatically | Update the child license service and run **Create** manually |
+| Registered IP changes | The old registration is removed and the new one is created | IP-based licenses follow the parent IP and their stored License IP is updated | Update the related license service separately; parent-IP changes are not reconciled automatically |
+| IP-based service is suspended or unsuspended | The corresponding CLN action is executed | The corresponding module action is executed for the license service | Product Relation actions follow the parent module action; Addon Relations do not add a separate suspend/unsuspend workflow |
+| License service is terminated | The registered IP or key is removed from CLN | The related license is removed when its addon service or configurable selection is terminated | Run **Terminate** on the recorded child through the parent/addon workflow and verify the result in CLN |
+| Parent service is hard-deleted | Not applicable | Tracked addon and configurable-option licenses are cleaned up | The recorded child connection is cleaned up; verify the CLN license after destructive order operations |
-_Fig 18: Licenses List._
+Key-based licenses do not use the IP resolution or deferred-IP workflow.
+## Verify provisioned licenses
-### Add-on Licenses List
+Open **Addons → CloudLinux Licenses Addon** to access:
-_[for WHMCS 7.2.x and newer]_
+* **Licenses List** for standalone and related product licenses
+* **Addon Licenses List** for module-backed product addons
+* relation editors for addons, products, and configurable options
-You can view list of all product add-on with Provisioning Modules licenses owned by your client at our addon → Licenses List.
+The lists can be filtered by client, product or addon, IP address, and license key.
-
+
-_Fig 19: Add-on Licenses List._
+Module-backed product addons are shown separately under **Addon Licenses List**:
-## Common Problems
+
+After provisioning, verify all three locations:
-After activating the server provisioning product, license provisioning product bounded to it is still pending.
+1. The WHMCS service or addon is `Active` and displays the expected **License IP** or key.
+2. The license appears in the appropriate CloudLinux Licenses list.
+3. CLN contains the same IP or key and the correct license product.
-**Reason**: License IP address may be already taken.
-**Solution**: Change server IP address.
+## Troubleshooting
-:::tip Note
-Currently, only key-based licenses are available for Imunify360. Support of IP-based licenses will be added soon.
-:::
+::: warning Delete services before product or addon definitions
+Terminate or delete all associated WHMCS services before deleting their product
+or product-addon definition. The plugin needs the saved module settings and CLN
+credentials from that definition to identify and revoke the license safely.
+If the definition has already been deleted, the WHMCS service record can still
+be hard-deleted, but the plugin cannot automatically clean up the corresponding
+CLN license. It records the pending cleanup in the WHMCS Module Queue and
+Activity Log. Reconcile the license manually in CLN before considering the
+service fully removed.
+:::
+| Symptom | What to check |
+| --- | --- |
+| `Server IP required` | Set the custom IP field or Dedicated IP. Alternatively, intentionally enable the legacy Order IP fallback. |
+| Standalone service is still `Pending` after adding the IP | Save the service and run the module **Create** command again. |
+| License addon remains `Pending` after adding the parent IP | Confirm that the order is `Active`, addon automatic setup is enabled, the parent IP was saved, and the Module Queue contains the retryable missing-IP Create entry. |
+| Parent service is `Active`, but configurable license is absent | Confirm that the selected value has a Configurable Options Relation and that the active parent has a valid custom IP or Dedicated IP. |
+| `You are not authorized to do this request` | Re-enter the CLN username and API secret, click **Test credentials**, and confirm that the reseller account has the required product or bundle entitlement. |
+| `License already exists for IP Address` | The IP is already registered in CLN. Verify ownership before removing or reassigning the existing license. |
+| Bundle dropdown is empty | Save valid CLN credentials, click **Test credentials**, and confirm that bundles are assigned to the reseller account. |
+| Wrong address is used for a license | Enable **Never use Order IP** globally or **Do not use Order IP** for the product, then provide the real server address through a required custom field or Dedicated IP. |
+| Custom IP is ignored | The custom field name must exactly match **Name of the custom IP field**. The field belongs to the standalone service or to the parent service for addon/configurable workflows. |
+
+Enable **Debug Mode** only while diagnosing a problem, then review **Utilities → Logs → Module Log** and the WHMCS Module Queue. Avoid leaving credential-bearing debug logs enabled longer than necessary.
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..53cd9d868 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.
-
+
+
+If you use DirectAdmin control panel, hover over the main menu and choose the AccelerateWP in the Extra Features group.
+
+
Click the application button and get into the AccelerateWP interface.
-
+
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.
-
+
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.
-
+
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.
-
+
And click the "Apply advice" button to activate the AccelerateWP feature.
-
+
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.
-
+
Page caching will be enabled by default. Click the "Settings" link below the plugin name to configure additional
options.
-
+
### 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.
-
+
:::tip Note
If you use an additional layer of Cache (Varnish, NGINX , etc.) make sure it can distinguish between desktop and mobile
@@ -151,6 +162,16 @@ To prevent that, use (. *).CSS wildcards to exclude all files in a specific loca
3rd Party: when excluding external CSS files, use the domain or the full URL path.
+**Aggressive mobile CSS optimization**
+
+Reduces CSS exclusions on mobile, keeping only critical ones (`admin-bar`, `dashicons`, `wp-admin`). This option is a child of "Optimize CSS delivery" and requires "Separate cache files for mobile devices" to be enabled.
+
+
+
+:::tip
+Default: OFF. Aggressive CSS optimization may break styling on some sites. Each site needs individual testing after enabling.
+:::
+
### JavaScript Files
**Minify javascript files**
@@ -179,6 +200,16 @@ So, the `Load JavaScript deferred` option adds to each script tag the `defer` at
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.
+**Apply Delay JS only on mobile devices**
+
+When enabled, Delay JS is applied only for mobile visitors while desktop visitors get standard JavaScript loading. This option is a child of "Delay JavaScript Execution" and requires "Separate cache files for mobile devices" to be enabled.
+
+
+
+:::tip
+Default: OFF. Aggressive optimization may affect JavaScript interactivity on some sites. Each site needs individual testing after enabling.
+:::
+
### Media
**LazyLoad**
@@ -190,9 +221,25 @@ the `