From ea7ad85ef9c9a255380f4d54621e7c151a33a164 Mon Sep 17 00:00:00 2001 From: Retype GitHub Action Date: Thu, 18 Apr 2024 13:41:41 +0000 Subject: [PATCH] Refreshes Retype-generated documentation. Process triggered by TimTerreur. --- 404.html | 8 ++++---- about_turbostack/pricing/index.html | 8 ++++---- about_turbostack/some_history/index.html | 8 ++++---- best_practices/backup/index.html | 8 ++++---- best_practices/caching/redis/index.html | 8 ++++---- best_practices/caching/varnish/index.html | 8 ++++---- best_practices/database/mongodb/index.html | 8 ++++---- best_practices/database/mysql/index.html | 8 ++++---- best_practices/database/other/index.html | 8 ++++---- best_practices/database/postgresql/index.html | 8 ++++---- best_practices/mail/index.html | 8 ++++---- best_practices/performance/blackfire/index.html | 8 ++++---- best_practices/performance/datadog/index.html | 8 ++++---- best_practices/performance/newrelic/index.html | 8 ++++---- best_practices/security/index.html | 8 ++++---- best_practices/testing/index.html | 8 ++++---- best_practices/webserver/apache/index.html | 8 ++++---- best_practices/webserver/nginx/index.html | 8 ++++---- control_panels/cpanel/index.html | 10 +++++----- control_panels/directadmin/index.html | 8 ++++---- index.html | 8 ++++---- resources/js/config.js | 2 +- resources/js/search.json | 2 +- sitemap.xml.gz | Bin 674 -> 674 bytes support/alerting/index.html | 8 ++++---- support/incident_management/index.html | 8 ++++---- support/monitoring/index.html | 8 ++++---- support/standard_support/index.html | 8 ++++---- turbostack-app/basic_install/index.html | 8 ++++---- turbostack-app/groups/index.html | 8 ++++---- turbostack-app/turbostackcli/index.html | 8 ++++---- .../apache_configation/index.html | 8 ++++---- turbostack_configuration/ci-cd/index.html | 8 ++++---- turbostack_configuration/firewall/index.html | 8 ++++---- .../nginx_configation/index.html | 8 ++++---- .../php_configuration/index.html | 8 ++++---- turbostack_configuration/pipelines/index.html | 8 ++++---- turbostack_configuration/ssh/index.html | 8 ++++---- .../ssl-tls_configuration/index.html | 8 ++++---- .../turbostack_optimization/index.html | 8 ++++---- updating_your_turbostack/index.html | 8 ++++---- 41 files changed, 155 insertions(+), 155 deletions(-) diff --git a/404.html b/404.html index bad60bcd..097123ab 100644 --- a/404.html +++ b/404.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/about_turbostack/pricing/index.html b/about_turbostack/pricing/index.html index dacf6661..a1ecb287 100644 --- a/about_turbostack/pricing/index.html +++ b/about_turbostack/pricing/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/about_turbostack/some_history/index.html b/about_turbostack/some_history/index.html index f7c5acb2..a3fa604d 100644 --- a/about_turbostack/some_history/index.html +++ b/about_turbostack/some_history/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/best_practices/backup/index.html b/best_practices/backup/index.html index 0d1a03c9..e6fcf603 100644 --- a/best_practices/backup/index.html +++ b/best_practices/backup/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/caching/redis/index.html b/best_practices/caching/redis/index.html index 254dde80..11c3fb69 100644 --- a/best_practices/caching/redis/index.html +++ b/best_practices/caching/redis/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/best_practices/caching/varnish/index.html b/best_practices/caching/varnish/index.html index 153bcac4..69cdb353 100644 --- a/best_practices/caching/varnish/index.html +++ b/best_practices/caching/varnish/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/database/mongodb/index.html b/best_practices/database/mongodb/index.html index a9dd0fcd..c63cd57c 100644 --- a/best_practices/database/mongodb/index.html +++ b/best_practices/database/mongodb/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/database/mysql/index.html b/best_practices/database/mysql/index.html index 04392a55..3770b4ad 100644 --- a/best_practices/database/mysql/index.html +++ b/best_practices/database/mysql/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/database/other/index.html b/best_practices/database/other/index.html index 3bc7ee7d..40f51de3 100644 --- a/best_practices/database/other/index.html +++ b/best_practices/database/other/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/database/postgresql/index.html b/best_practices/database/postgresql/index.html index 4ad12985..83ed9c79 100644 --- a/best_practices/database/postgresql/index.html +++ b/best_practices/database/postgresql/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/mail/index.html b/best_practices/mail/index.html index 969d8c77..bf1ddf04 100644 --- a/best_practices/mail/index.html +++ b/best_practices/mail/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/best_practices/performance/blackfire/index.html b/best_practices/performance/blackfire/index.html index 2a984339..31d747ba 100644 --- a/best_practices/performance/blackfire/index.html +++ b/best_practices/performance/blackfire/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/performance/datadog/index.html b/best_practices/performance/datadog/index.html index 2363b8b9..a43a9a58 100644 --- a/best_practices/performance/datadog/index.html +++ b/best_practices/performance/datadog/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/performance/newrelic/index.html b/best_practices/performance/newrelic/index.html index 64e73281..c3c8bce3 100644 --- a/best_practices/performance/newrelic/index.html +++ b/best_practices/performance/newrelic/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/security/index.html b/best_practices/security/index.html index a566a7d5..8c5b2d13 100644 --- a/best_practices/security/index.html +++ b/best_practices/security/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/testing/index.html b/best_practices/testing/index.html index e69e30da..c7e6e4ac 100644 --- a/best_practices/testing/index.html +++ b/best_practices/testing/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/best_practices/webserver/apache/index.html b/best_practices/webserver/apache/index.html index 8032d8d1..7f2cdc54 100644 --- a/best_practices/webserver/apache/index.html +++ b/best_practices/webserver/apache/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/best_practices/webserver/nginx/index.html b/best_practices/webserver/nginx/index.html index 8eadc304..823db388 100644 --- a/best_practices/webserver/nginx/index.html +++ b/best_practices/webserver/nginx/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/control_panels/cpanel/index.html b/control_panels/cpanel/index.html index a94260e6..01afd9a6 100644 --- a/control_panels/cpanel/index.html +++ b/control_panels/cpanel/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
@@ -215,7 +215,7 @@

This is a known problem in cPanel AutoSSL.

-

This now requires each subdomain be verified individually. If this fails, they will automatically stop including them in the attempt and send an alert to your configured mail addresses. This can get very spammy, so you might want to solve the root cause. More context at the official cPanel docs.

+

This now requires each subdomain be verified individually. If this fails, they will automatically stop including them in the attempt and send an alert to your configured mail addresses. This can get very spammy, so you might want to solve the root cause. You can find more context in the official cPanel docs.

To resolve this, we recommend you check the configured domains. As you can see in the screenshot below, this often includes auto-generated cPanel subdomains

AutoSSL issue diff --git a/control_panels/directadmin/index.html b/control_panels/directadmin/index.html index db18ce9f..b43f60de 100644 --- a/control_panels/directadmin/index.html +++ b/control_panels/directadmin/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/index.html b/index.html index de6a9c79..8e170936 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/resources/js/config.js b/resources/js/config.js index 5b1945a3..7a4f518f 100644 --- a/resources/js/config.js +++ b/resources/js/config.js @@ -1 +1 @@ -var __DOCS_CONFIG__ = {"id":"6BFS2DlsbcPYQwxQOkcxbj5Qwjc300ACDH2","key":"CvoTn8VMvSLeUc+pV00iVNwnxix8hQghWYumG1L7oT4.mFAkU9j+NKpfAQ2EZPGdf9eDXN5E7edR+nRwGKOTiefOr0wqroRUFx8hvCtVNVwYDwwd0MFau3oyPtHJ8Lv2aQ.9957","base":"/","host":"docs.turbostack.app","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"3.5.0.766762854011","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"Getting Started ⚡","e":"26A1"},{"n":"turbostack-app","l":"Turbo​Stack App","c":false,"i":[{"n":"groups","l":"Groups","s":""},{"n":"basic_install","l":"Turbo​Stack App Basics","s":""},{"n":"turbostackcli","l":"Turbo​Stack CLI"}],"s":""},{"n":"control_panels","l":"Control Panels","c":false,"i":[{"n":"cpanel","l":"c​Panel"},{"n":"directadmin","l":"Direct​Admin"}],"e":"1F39B-FE0F"},{"n":"turbostack_configuration","l":"Turbo​Stack configuration","c":false,"i":[{"n":"firewall","l":"Firewall"},{"n":"ssl-tls_configuration","l":"SSL/TLS configuration"},{"n":"php_configuration","l":"PHP configuration"},{"n":"nginx_configation","l":"Nginx configuration"},{"n":"apache_configation","l":"Apache configuration"},{"n":"turbostack_optimization","l":"Turbo​Stack Optimization"},{"n":"ci-cd","l":"CI/CD"},{"n":"pipelines","l":"Pipelines"},{"n":"ssh","l":"SSH"}],"e":"2699-FE0F"},{"n":"best_practices","l":"Best practices","c":false,"i":[{"n":"backup","l":"Back-​up"},{"n":"caching","l":"Caching","c":false,"i":[{"n":"varnish","l":"Varnish"},{"n":"redis","l":"Redis"}]},{"n":"webserver","l":"Web server","c":false,"i":[{"n":"apache","l":"Apache"},{"n":"nginx","l":"Nginx"}]},{"n":"mail","l":"Mail"},{"n":"database","l":"Database","c":false,"i":[{"n":"mysql","l":"My​SQL"},{"n":"postgresql","l":"Postgre​SQL"},{"n":"mongodb","l":"Mongo​DB"},{"n":"other","l":"Other"}]},{"n":"performance","l":"Performance","c":false,"i":[{"n":"datadog","l":"Datadog"},{"n":"newrelic","l":"Newrelic"},{"n":"blackfire","l":"Blackfire"}]},{"n":"security","l":"Security"},{"n":"testing","l":"Testing"}],"e":"1F44D"},{"n":"updating_your_turbostack","l":"Updating your Turbo​Stack","e":"1F195"},{"n":"about_turbostack","l":"About Turbo​Stack","c":false,"i":[{"n":"pricing","l":"Pricing"},{"n":"some_history","l":"Some history"}],"e":"1F9ED"},{"n":"support","l":"Support","c":false,"i":[{"n":"monitoring","l":"Monitoring"},{"n":"alerting","l":"Alerting"},{"n":"incident_management","l":"Incident management"},{"n":"standard_support","l":"Standard support"}],"e":"1F481"}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["k"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false},"resources":{"History_Title_Label":"History","History_ClearLink_Label":"Clear","History_NoHistory_Label":"No history items","API_AccessFilter_Label":"Access","API_ParameterSection_Label":"PARAMETERS","API_SignatureSection_Label":"SIGNATURE","API_CopyHint_Label":"Copy","API_CopyNameHint_Label":"Copy name","API_CopyLinkHint_Label":"Copy link","API_CopiedAckHint_Label":"Copied!","API_MoreOverloads_Label":"more","API_MoreDropdownItems_Label":"More","API_OptionalParameter_Label":"optional","API_DefaultParameterValue_Label":"Default value","API_InheritedFilter_Label":"Inherited","Search_Input_Placeholder":"Search","Toc_Contents_Label":"Contents","Toc_RelatedClasses_Label":"Related Classes","History_JustNowTime_Label":"just now","History_AgoTime_Label":"ago","History_YearTime_Label":"y","History_MonthTime_Label":"mo","History_DayTime_Label":"d","History_HourTime_Label":"h","History_MinuteTime_Label":"m","History_SecondTime_Label":"s"}}; +var __DOCS_CONFIG__ = {"id":"eEBV9PiUk0wJxVZtyZOpiYsE3Rmox30014A","key":"7VJYtvgocnxKT5qgqCyDgTTDZyFAlyd9NdyxLdqhOKQ.KoIdFFvq8oD5v25GwjByK0U2oxWTGy1PSH0aMOXf/uLPCs3Jc7wEcRekBz1/ZGbv97G9dASX2y3kPCmaA6JL6A.9886","base":"/","host":"docs.turbostack.app","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"3.5.0.766762898557","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"Getting Started ⚡","e":"26A1"},{"n":"turbostack-app","l":"Turbo​Stack App","c":false,"i":[{"n":"groups","l":"Groups","s":""},{"n":"basic_install","l":"Turbo​Stack App Basics","s":""},{"n":"turbostackcli","l":"Turbo​Stack CLI"}],"s":""},{"n":"control_panels","l":"Control Panels","c":false,"i":[{"n":"cpanel","l":"c​Panel"},{"n":"directadmin","l":"Direct​Admin"}],"e":"1F39B-FE0F"},{"n":"turbostack_configuration","l":"Turbo​Stack configuration","c":false,"i":[{"n":"firewall","l":"Firewall"},{"n":"ssl-tls_configuration","l":"SSL/TLS configuration"},{"n":"php_configuration","l":"PHP configuration"},{"n":"nginx_configation","l":"Nginx configuration"},{"n":"apache_configation","l":"Apache configuration"},{"n":"turbostack_optimization","l":"Turbo​Stack Optimization"},{"n":"ci-cd","l":"CI/CD"},{"n":"pipelines","l":"Pipelines"},{"n":"ssh","l":"SSH"}],"e":"2699-FE0F"},{"n":"best_practices","l":"Best practices","c":false,"i":[{"n":"backup","l":"Back-​up"},{"n":"caching","l":"Caching","c":false,"i":[{"n":"varnish","l":"Varnish"},{"n":"redis","l":"Redis"}]},{"n":"webserver","l":"Web server","c":false,"i":[{"n":"apache","l":"Apache"},{"n":"nginx","l":"Nginx"}]},{"n":"mail","l":"Mail"},{"n":"database","l":"Database","c":false,"i":[{"n":"mysql","l":"My​SQL"},{"n":"postgresql","l":"Postgre​SQL"},{"n":"mongodb","l":"Mongo​DB"},{"n":"other","l":"Other"}]},{"n":"performance","l":"Performance","c":false,"i":[{"n":"datadog","l":"Datadog"},{"n":"newrelic","l":"Newrelic"},{"n":"blackfire","l":"Blackfire"}]},{"n":"security","l":"Security"},{"n":"testing","l":"Testing"}],"e":"1F44D"},{"n":"updating_your_turbostack","l":"Updating your Turbo​Stack","e":"1F195"},{"n":"about_turbostack","l":"About Turbo​Stack","c":false,"i":[{"n":"pricing","l":"Pricing"},{"n":"some_history","l":"Some history"}],"e":"1F9ED"},{"n":"support","l":"Support","c":false,"i":[{"n":"monitoring","l":"Monitoring"},{"n":"alerting","l":"Alerting"},{"n":"incident_management","l":"Incident management"},{"n":"standard_support","l":"Standard support"}],"e":"1F481"}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["k"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false},"resources":{"History_Title_Label":"History","History_ClearLink_Label":"Clear","History_NoHistory_Label":"No history items","API_AccessFilter_Label":"Access","API_ParameterSection_Label":"PARAMETERS","API_SignatureSection_Label":"SIGNATURE","API_CopyHint_Label":"Copy","API_CopyNameHint_Label":"Copy name","API_CopyLinkHint_Label":"Copy link","API_CopiedAckHint_Label":"Copied!","API_MoreOverloads_Label":"more","API_MoreDropdownItems_Label":"More","API_OptionalParameter_Label":"optional","API_DefaultParameterValue_Label":"Default value","API_InheritedFilter_Label":"Inherited","Search_Input_Placeholder":"Search","Toc_Contents_Label":"Contents","Toc_RelatedClasses_Label":"Related Classes","History_JustNowTime_Label":"just now","History_AgoTime_Label":"ago","History_YearTime_Label":"y","History_MonthTime_Label":"mo","History_DayTime_Label":"d","History_HourTime_Label":"h","History_MinuteTime_Label":"m","History_SecondTime_Label":"s"}}; diff --git a/resources/js/search.json b/resources/js/search.json index 69db7bcc..e1680e09 100644 --- a/resources/js/search.json +++ b/resources/js/search.json @@ -1 +1 @@ -[[{"i":"getting-started","l":"Getting Started ⚡"},{"l":"Welcome","p":["You have reached our TurboStack® documentation pages because you're interested in the full blown TurboStack® experience. We have several scalable packages, tailored for the fastest performance. We offer staging & production packages, which can be clustered if needed. Check out our packages here.","If this is the first time you're trying to log in to your PoC-environment or your Production TurboStack, you've come to the right place. This is where you start. So let's get goin'!"]},{"l":"Account Setup"},{"l":"Create a Customer Profile","p":["First things first. You need to set up a new account in our Customer Center, which will give you access to your profile & environments. You can sign-up here. Please fill in the required information and submit."]},{"l":"Login into the Hosted Power Customer Center","p":["You can reach the Customer Center via this link: portal.hosted-power.com","Our customer center enables you to:","Manage contact information","Add billing information","Follow-up on your support tickets","Purchase or transfer domain names","Assign rights to various contacts","Add SSH users, configure SSL certificates","etc..."]},{"l":"Add Relevant Contacts","p":["Once you’ve created an account, proceed to add all relevant contacts to your account. This step is crucial for effective communication and collaboration between Hosted Power & your team. Adding relevant contacts to your account ensures that the right people receive the right information and communication."]},{"i":"partner-integration-optional","l":"Partner Integration (optional)","p":["If you are a direct customer, not working with Hosted Power through a partner, please continue to step 4.","If you're a customer working through a partner, from now on referred to as \"Hosted Partner\" - pun intended-, TurboStack provides a seamless integration process. Request to link your account to the Hosted Partner using our innovative \"teams\" feature. The Hosted Partner can then furnish you with a unique code, enabling you to seamlessly join their account. This integration enhances coordination and ensures a unified workflow, communicating the right information to the right people."]},{"l":"Set Permissions","p":["TurboStack empowers you with granular control over account permissions. Navigate to the settings and check the appropriate permissions for each contact. Specify who can manage servers, access billing information, handle tickets, and more. This level of customization enables you to allocate resources efficiently by determining which employees can work on specific projects.","Congratulations! You have now successfully set up your account, laying the foundation for efficient account management and collaboration within the Hosted Power ecosystem."]},{"i":"your-turbostack-application","l":"Your TurboStack® application","p":["Once you have your customer profile set up, it's time for the real work. Let's check out your TurboStack environment in the TurboStack App"]},{"l":"Getting started with your TurboStack"},{"l":"1. Deployment","p":["Most applications can be easily deployed, as we already have fully optimized TurboStack technology for most commonly used open source solutions. Once deployed, you will receive the necessary info to be able to manage your TurboStack environment."]},{"l":"2. Login via SSH","p":["Get started by creating SSH keys and logging in to your TurboStack via SSH."]},{"l":"3. Configure your TurboStack"},{"i":"31-yaml-configuration","l":"3.1 YAML configuration"},{"i":"32-ts-cli","l":"3.2 TS CLI","p":["More info on our TurboStack Command Line Interface"]},{"l":"4. Clone settings from an existing TurboStack"},{"l":"5. Installing a new application on your TurboStack"},{"i":"in-need-of-support","l":"In need of Support?","p":["Got burning questions or bursting with feedback? Don't hold back – we thrive on it! Shoot us a message at support@hosted-power.com or call us at +32 53 599 000, and our squad of Turbo-trouble solvers will swoop in. Hosted Power's sales and support gurus are at your service on weekdays during office hours. Of course you can count on your SLA should critical incidents happen."]}],[{"l":"Groups","p":["Open the Groups tab to efficiently manage settings without the need to make changes individually for each user or project. Create partner groups, which enables you to provide SSH key access to multiple employees across different end user or partner environments."]},{"l":"Where to set up Groups","p":["In the Customer Center, navigate to Manage contacts. Here you can add your relevant contacts. Click through to the Teams tab. Here you can create your own teams, e.g. Dev, Billing, Agency, etc.","If you have a new partner requiring access to your environment, you have the possibility to invite an existing team. you can also easliy remove teams from your environment.","CreateTeams"]},{"i":"scenario-1-use-groups-for-centralised-user-rights-management-with-ssh-keys","l":"Scenario 1: Use Groups for centralised user rights management with SSH keys","p":["SSHTab","Centralized user rights can streamline access control and simplify administration.","Identify the different levels of access required within your system.","Create user groups based on these access levels. For example, you might have groups like \"admin\", \"developers\", \"sysadmins\", etc.","Add users to appropriate groups based on their roles and responsibilities.","Each user who needs access to the system should generate an SSH key pair if they haven't already.","Have users from different groups attempt to log in using SSH keys to ensure that access is restricted according to the group-based configuration.","Regularly review user access and group memberships to ensure that they align with your current organizational requirements.","Hosted Power monitors system logs for any unauthorized access attempts and take appropriate action if necessary."]},{"i":"scenario-2-use-groups-for-centralised-turbostack-node-management","l":"Scenario 2: Use Groups for centralised TurboStack Node management","p":["HostsTab","Managing TurboStack nodes using groups can help streamline operations and ensure consistency across your infrastructure.","Determine the different roles that your TurboStack nodes will fulfill, such as web node, database node, application node, etc.","Create groups based on the identified server roles.","Assign each TurboStack node to the appropriate group based on its role."]},{"l":"The Security Tab","p":["HostsTab"]}],[{"l":"TurboStack App Basics"},{"l":"Login and locate your managed servers","p":["When going to the TurboStack App, login with credentials for our Customer Center: portal.hosted-power.com.","If you don't have a login to the Customer Center yet, you can find more info here.","TurboStackAppLogin","Once logged in all servers managed by this account will become visible in the \"Hosts\" tab.","TurboStackAppServers"]},{"l":"Main TurboStack App functions","p":["For each server there are main functions available","TurboStackAppHeader","Switch between the GUI layout and the (advanced) YAML layout","Revisions: shows all historic configuration changes made to the server","Fetch the credentials and IPs of the servers all users and databases","Save any changes made to the configuration","Save and Publish: saves and deploys the changes made to the server","under point 5, there the option to save and full publish. this will ensure everything gets deployed"]},{"i":"the-server-tab","l":"The 'server' tab","p":["the server tab defines some basic middleware configuration. Like the type of webserver and some different type of databases that are supported","TurboStackAppServerTab"]},{"i":"the-accounts-tab","l":"The 'accounts' tab"}],[{"l":"TurboStack CLI","p":["The TurboStack Command Line Interface (later referred to as TSCLI) is available on all TurboStack nodes to provide you with an easy to use tool to manage the services on your environment, even ones you would normally need root access for. Below is a short description of the various features."]},{"l":"TSCLI Commands","p":["The TSCLI tool uses levels of arguments to categorize functions. Every command starts with 'tscli' followed by the service you're managing, followed by the parameters for the function you're using as documented below."]},{"l":"NGINX Webserver","p":["- Verifies the NGINX configuration and reloads it if it is valid. If it isn't valid you'll get an error with the issue reported."]},{"l":"BlackFire php Profiler","p":["- Installs the Blackfire Profiler and restarts the PHP-FPM service(s).","- Uninstalls the Blackfire Profiler and restarts the PHP-FPM service(s).","- Restarts the Blackfire Profiler service, to apply changes to the configuration."]},{"l":"Firewall","p":["- Returns info on wether the IP parameter is listed in the iptables. Please make sure to only use valid IP addresses.","- Adds a firewall rule to block a specific IP address as specified in the IP parameter.","- Removes an IP address from the firewall's deny list."]},{"l":"PHP OpCache","p":["- Resets php's OpCache."]},{"l":"Varnish Cache","p":["- Clears everything from Varnish Cache's memory.","- Reloads the Varnisch Cache configuration"]}],[{"l":"cPanel"},{"l":"How to correctly configure a Magento 2 cronjob under cPanel","p":["Login via ssh as the account user (or login via cPanel -> Cronjobs)","(Replace demoshop by your own account name)"]},{"i":"fix---autossl-reduced-ssl-coverage","l":"FIX - AutoSSL reduced SSL coverage","p":["This is a known problem in cPanel AutoSSL.","This now requires each subdomain be verified individually. If this fails, they will automatically stop including them in the attempt and send an alert to your configured mail addresses. This can get very spammy, so you might want to solve the root cause. More context at the official cPanel docs.","To resolve this, we recommend you check the configured domains. As you can see in the screenshot below, this often includes auto-generated cPanel subdomains","AutoSSL issue","As you can see, there's a lot of unprotected subdomains, however, none of these are actually in use. As such, you can safely exclude these from your certificate. To do this, you need to be logged in as the user of the domain for which the certificate is being generated.","Once logged in, you need to find the following option in your main menu: SSL/TLS Status","That page will look like this: AutoSSL issue2","Here you can see what your subdomains might look like. \"AutoSSL Domain Validated\" means it works, so you can ignore those. Then, all subdomains in red need to be checked. If you don't use the subdomain, you should click \"Exclude from AutoSSL\" as seen in the second item in the screenshot. Once you've dealt with all subdomains in error, you can click the \"Run AutoSSL\" button at the top of the page to re-run the validation. This will mean no more errors when running AutoSSL, and no more alert spam!"]}],[{"l":"DirectAdmin"}],[{"l":"Firewall"}],[{"i":"ssltls-configuration","l":"SSL/TLS configuration"}],[{"l":"PHP configuration"}],[{"l":"Nginx configuration"},{"l":"Enable Basic Authentication on your website for NGINX","p":["It's relatively easy to configure Basic Authentication using a .htpasswd file (similar to a basic auth block in Apache .htaccess) in NGINX on TurboStack. This way you can block access to your development version of the website for non-authenticated users. This guide assumes you know what Basic Authentication is."]},{"l":"How-to","p":["First locate your nginx main configuration file from the home directory of your user:","Then, uncomment the following lines to activate Basic Authentication:","OPTIONAL: You can add whitelisting based on IP-addresses for connections that will not need to identify using the Basic Auth service, simply add \"allow \":","Lastly, to enact your changes, reload the NGINX service:"]}],[{"l":"Apache configuration"}],[{"l":"TurboStack Optimization"}],[{"i":"cicd","l":"CI/CD"}],[{"l":"Pipelines"}],[{"l":"SSH"},{"l":"How to use SSH Keys on TurboStack"},{"l":"Windows Users","p":["Don't - haha"]},{"l":"Linux Users"}],[{"l":"Back-up"}],[{"l":"Varnish"}],[{"l":"Redis","p":["By default there are 16 databases available (0-15), this could be increased on request","By default there are always at least 2 Redis instances available:","Can be cleared at all times, shouldn't influence application when cleared","Data = non persistent (volatile)","Data = persistent (non-volatile)","Notes:","Persistent data/information","port 6378 (non default)","port 6379 (default)","redis-persistent","Should/will never be cleared, clearing would influence application","socket file: /var/run/redis-persistent/redis.sock","socket file: /var/run/redis/redis.sock","Suitable for cache","Suitable for sessions","Try to use seperate databases when having multiple websites/applications on the same server (e.g. db 1 , db 2, ...)","Using the socket file is recommended when using local redis instances (less overhead = better performance!)","Volatile data/information"]}],[{"l":"Apache"},{"i":"grant-or-deny-access-to-server-for-specific-ips-while-using-basic-auth","l":"Grant or deny access to server for specific IP's while using basic auth","p":["In this article, we'll tackle the problem how we can decide if a visitor should or should not login on a server with basic auth enabled, based on it's IP-address.","So what is the result we want to achieve? We want to implement an .htpasswd so visitors need to have a valid login, except when the request came from a whitelisted IP adress. In that case, no login is asked and you'll be redirected to the site. Like a VIP that would skip a waiting queue for a club.","This method is used for Apache2"]},{"i":"method-1-server-without-varnish-enabled","l":"Method 1: Server without varnish enabled","p":["There is a difference when a server has or doesn't have Varnish enabled. For now we'll make it simple assuming there is no interruption with any service like Varnish. In that case we'll use the next setup:","For best practice, we put this code at the top of our .htaccess file"]},{"i":"method-2-server-with-varnish-enabled","l":"Method 2: Server with varnish enabled","p":["For a server with varnish enabled, is a different approach needed. All requests that go through varnish will pass the header (X-Forwarded-For), but it may contain some tempered information about the visitors IP. Because of this modification, the request for immediate access will be denied and the visitor will be asked to login. To make sure this won't happen, we'll add a variable for the header that contains the whitelisted IP-adress.","The code below will do the trick:","For best practice will we add the IP's to the required list require ip"]},{"l":"Block infamous bytespider bot","p":["Sometimes a server can go high in load due to the infamous bytespider bot. This one can be excluded by implementing this piece of code inside the .htaccess:"]}],[{"l":"Nginx"}],[{"l":"Mail"},{"l":"Mail delivery best practices","p":["SPF record","Most important, make sure to add both the ipv4 and ipv6 of your server!!","Use -all at the end of your record!","DKIM will enhance delivery, however SPF will give you the most gain in delivery success.","DMARC is an extra record which can improve even more, but it's gain in delivery success is less than SPF and DKIM.","However it's quite important from a security point of view (avoid abuse by external parties).","The most basic DMARC txt record to create, which will enforce SPF: v=DMARC1; p=reject; aspf=s;","In doubt: Always use Mail tester","Make sure that you use the exact same method as the one your experience problems with when sending the mail to mail-tester."]},{"l":"SPF Record Syntax"},{"l":"Mechanisms","p":["Mechanisms can be prefixed with one of four qualifiers:","\"+\" Pass","\"-\" Fail","\"~\" SoftFail","\"?\" Neutral","If a mechanism results in a hit, its qualifier value is used. The default qualifier is \"+\", i.e. \"Pass\". For example:","Mechanisms are evaluated in order. If no mechanism or modifier matches, the default result is \"Neutral\".","If a domain has no SPF record at all, the result is \"None\". If a domain has a temporary error during DNS processing, you get the result \"TempError\" (called \"error\" in earlier drafts). If some kind of syntax or evaluation error occurs (eg. the domain specifies an unrecognized mechanism) the result is \"PermError\" (formerly \"unknown\").","Evaluation of an SPF record can return any of these results:"]},{"i":"the-all-mechanism","l":"The \"all\" mechanism","p":["This mechanism always matches. It usually goes at the end of the SPF record.","Examples:","Allow domain's MXes to send mail for the domain, prohibit all others.","The domain sends no mail at all.","The domain owner thinks that SPF is useless and/or doesn't care."]},{"i":"the-ip4-mechanism","l":"The \"ip4\" mechanism","p":["The argument to the \"ip4:\" mechanism is an IPv4 network range. If no prefix-length is given, /32 is assumed (singling out an individual host address).","Examples:","Allow any IP address between 192.168.0.1 and 192.168.255.255."]},{"i":"the-ip6-mechanism","l":"The \"ip6\" mechanism","p":["The argument to the \"ip6:\" mechanism is an IPv6 network range. If no prefix-length is given, /128 is assumed (singling out an individual host address).","Examples:","Allow any IPv6 address between 1080::8:800:0000:0000 and 1080::8:800:FFFF:FFFF."]},{"i":"the-a-mechanism","l":"The \"a\" mechanism","p":["All the A records for domain are tested. If the client IP is found among them, this mechanism matches. If the connection is made over IPv6, then an AAAA lookup is performed instead.","If domain is not specified, the current-domain is used.","The A records have to match the client IP exactly, unless a prefix-length is provided, in which case each IP address returned by the A lookup will be expanded to its corresponding CIDR prefix, and the client IP will be sought within that subnet.","The current-domain is used.","Equivalent if the current-domain is example.com.","Perhaps example.com has chosen to explicitly list all the outbound mailers in a special A record under mailers.example.com.","If example.com resolves to 192.0.2.1, the entire class C of 192.0.2.0/24 would be searched for the client IP. Similarly for offsite.example.com. If more than one A record were returned, each one would be expanded to a CIDR subnet."]},{"i":"the-mx-mechanism","l":"The \"mx\" mechanism","p":["All the A records for all the MX records for domain are tested in order of MX priority. If the client IP is found among them, this mechanism matches.","If domain is not specified, the current-domain is used.","The A records have to match the client IP exactly, unless a prefix-length is provided, in which case each IP address returned by the A lookup will be expanded to its corresponding CIDR prefix, and the client IP will be sought within that subnet.","Examples:","Perhaps a domain sends mail through its MX servers plus another set of servers whose job is to retry mail for deferring domains.","Perhaps a domain's MX servers receive mail on one IP address, but send mail on a different but nearby IP address."]},{"i":"the-include-mechanism","l":"The \"include\" mechanism","p":["The specified domain is searched for a match. If the lookup does not return a match or an error, processing proceeds to the next directive. Warning: If the domain does not have a valid SPF record, the result is a permanent error. Some mail receivers will reject based on a PermError.","Examples:","In the following example, the client IP is 1.2.3.4 and the current-domain is example.com.","If example.com has no SPF record, the result is PermError. Suppose example.com's SPF record were \"v=spf1 a -all\". Look up the A record for example.com. If it matches 1.2.3.4, return Pass. If there is no match, other than the included domain's \"-all\", the include as a whole fails to match; the eventual result is still Fail from the outer directive set in this example. Trust relationships — The \"include:\" mechanism is meant to cross administrative boundaries. Great care is needed to ensure that \"include:\" mechanisms do not place domains at risk for giving SPF Pass results to messages that result from cross user forgery. Unless technical mechanisms are in place at the specified otherdomain to prevent cross user forgery, \"include:\" mechanisms should give a Neutral rather than Pass result. This is done by adding \"?\" in front of \"include:\". The example above would be:","In hindsight, the name \"include\" was poorly chosen. Only the evaluated result of the referenced SPF record is used, rather than acting as if the referenced SPF record was literally included in the first. For example, evaluating a \"-all\" directive in the referenced record does not terminate the overall processing and does not necessarily result in an overall Fail. (Better names for this mechanism would have been \"if-pass\", \"on-pass\", etc.)"]},{"l":"Common SMTP and E-mail ports","p":["Common SMTP ports:","SMTP – port 25 or 587","Secure SMTP (SSL / TLS) – port 465 or 587","Common Email retrieval ports:","POP3 – port 110","POP3 SSL (POP3S) – port 995","IMAP – port 143","IMAP SSL (IMAPS) – port 993"]},{"i":"spf--dkim-record-for-mailchimp","l":"SPF & DKIM Record For MailChimp","p":["To authenticate your domain, you'll need to complete tasks in Mailchimp and in the zone editor(portal) or control panel. This process requires you to copy and paste information from Mailchimp to your domain provider's site. We recommend that you work with two browser windows or tabs to easily move between your sites.","Here's a brief overview of the process:","In Mailchimp","Verify your domain.","Copy two important pieces of information, your CNAME record for DKIM, and your TXT record for SPF","In Your Domain's Control Panel or Zone Editor","DKIM: Create a CNAME record for k1._ domainkey.yourdomain.com with this value: dkim.mcsv.net.","SPF: Create a TXT record for yourdomain.com with this value: v=spf1 include:servers.mcsv.net -all or add \"include:servers.mcsv.net\" to your SPF record","Note","The URLs above are examples only. Replace \"yourdomain.com\" with the domain you want to authenticate."]}],[{"l":"MySQL"}],[{"l":"PostgreSQL"}],[{"l":"MongoDB"}],[{"l":"Other"}],[{"l":"Datadog"}],[{"l":"Newrelic"}],[{"l":"Blackfire"}],[{"l":"Security"}],[{"l":"Testing"}],[{"l":"Updating your TurboStack"}],[{"l":"Pricing","p":["TurboStack®, the fastest software stack designed to be fully configurable. Take advantage of any technology in the same stack. Easily customize programming language, caching or database. Enormous flexibility and an ultra secure environment that supports any project."]},{"l":"Versatile Stack with Rapid Delivery"},{"i":"put-an-end-to-instability--difficulties-in-heavy-processes","l":"Put an end to instability & difficulties in heavy processes","p":["Each environment is configured to ensure the fastest loading times and stability to handle the most abrupt visitor spikes.","Your project can be delivered at lightning speed. Within half an hour we deploy any desired technology or software.Your project can be delivered at lightning speed. Within half an hour we deploy any desired technology or software."]},{"i":"pricing-1","l":"Pricing","p":["We have several scalable packages, tailored for the fastest performance. We offer staging & production packages, which can be clustered if needed. Check out our packages here."]}],[{"l":"Some history","p":["⚡ * At Hosted Power you will find experts in managed hosting, who are people-oriented and think along with you based on their passion for Cloud technology. * ⚡"]},{"l":"One team of people","p":["Without cooperation there is no team. We want to see our people grow together with Hosted Power. We do this by actively sharing knowledge, striving for transparency, involvement and open communication. We stand behind our each other as one team, our hyper-fast solution and our partners, without losing sight of the fun factor. Freedom and open vision are indispensable. Our people do what they like to do and are given every opportunity to grow.","Happy Colleagues = Happy Partners = Happy Customers!"]},{"l":"Goals","p":["In essence, we exist to serve you as a customer, to improve your situation, to automate, to accelerate it and to unburden you completely with your cloud environment. With our agile, in-house developed custom solution TurboStack®, we will accommodate your needs. We continuously challenge ourselves and follow up the hottest technological trends and see innovation as a challenge."]},{"l":"Our mission","p":["We are creative and businesslike. We aim to be your reliable partner. Our secret is to find the ideal mix between perfecting existing technologies and implementing innovative ideas and technologies. We are therefore 100% committed to a long-term relationship with you as our client. We will always give our honest and clear opinion about what the best solutions is for your specific challenges. Honesty is the most important key in a successful partner relationship. So we don't go for the \"quick fixes\" but for a robust long-term solution with the necessary attention to your needs.","\"If you want to be able to fall back on an external team that actively thinks along, and can offer the best environments, Hosted Power is the right partner for you. Let's meet!\""]}],[{"l":"Monitoring"}],[{"l":"Alerting"}],[{"l":"Incident management"}],[{"l":"Standard support"},{"i":"247-proactive-monitoring","l":"24/7 Proactive Monitoring","p":["Our proactive monitoring was developed internally by Hosted Power and is continuously optimized so that we can guarantee the most accurate monitoring. The monitoring keeps an eye on crucial functionalities of the supported hosting environments and your application at all times. Thanks to the monitoring, adequate and proactive action will be taken, after all, prevention is better than the cure. It is possible to carry out specific checks specifically for your application; so that the correct action can be taken in the event of calamities. The customer has an obligation to inform Hosted Power in the event of expected peak times, the shutdown or interruption by the customer of the server or the services included in the monitoring. This must be communicated to Hosted Power at least 1 working day in advance."]},{"l":"scope"}]] \ No newline at end of file +[[{"i":"getting-started","l":"Getting Started ⚡"},{"l":"Welcome","p":["You have reached our TurboStack® documentation pages because you're interested in the full blown TurboStack® experience. We have several scalable packages, tailored for the fastest performance. We offer staging & production packages, which can be clustered if needed. Check out our packages here.","If this is the first time you're trying to log in to your PoC-environment or your Production TurboStack, you've come to the right place. This is where you start. So let's get goin'!"]},{"l":"Account Setup"},{"l":"Create a Customer Profile","p":["First things first. You need to set up a new account in our Customer Center, which will give you access to your profile & environments. You can sign-up here. Please fill in the required information and submit."]},{"l":"Login into the Hosted Power Customer Center","p":["You can reach the Customer Center via this link: portal.hosted-power.com","Our customer center enables you to:","Manage contact information","Add billing information","Follow-up on your support tickets","Purchase or transfer domain names","Assign rights to various contacts","Add SSH users, configure SSL certificates","etc..."]},{"l":"Add Relevant Contacts","p":["Once you’ve created an account, proceed to add all relevant contacts to your account. This step is crucial for effective communication and collaboration between Hosted Power & your team. Adding relevant contacts to your account ensures that the right people receive the right information and communication."]},{"i":"partner-integration-optional","l":"Partner Integration (optional)","p":["If you are a direct customer, not working with Hosted Power through a partner, please continue to step 4.","If you're a customer working through a partner, from now on referred to as \"Hosted Partner\" - pun intended-, TurboStack provides a seamless integration process. Request to link your account to the Hosted Partner using our innovative \"teams\" feature. The Hosted Partner can then furnish you with a unique code, enabling you to seamlessly join their account. This integration enhances coordination and ensures a unified workflow, communicating the right information to the right people."]},{"l":"Set Permissions","p":["TurboStack empowers you with granular control over account permissions. Navigate to the settings and check the appropriate permissions for each contact. Specify who can manage servers, access billing information, handle tickets, and more. This level of customization enables you to allocate resources efficiently by determining which employees can work on specific projects.","Congratulations! You have now successfully set up your account, laying the foundation for efficient account management and collaboration within the Hosted Power ecosystem."]},{"i":"your-turbostack-application","l":"Your TurboStack® application","p":["Once you have your customer profile set up, it's time for the real work. Let's check out your TurboStack environment in the TurboStack App"]},{"l":"Getting started with your TurboStack"},{"l":"1. Deployment","p":["Most applications can be easily deployed, as we already have fully optimized TurboStack technology for most commonly used open source solutions. Once deployed, you will receive the necessary info to be able to manage your TurboStack environment."]},{"l":"2. Login via SSH","p":["Get started by creating SSH keys and logging in to your TurboStack via SSH."]},{"l":"3. Configure your TurboStack"},{"i":"31-yaml-configuration","l":"3.1 YAML configuration"},{"i":"32-ts-cli","l":"3.2 TS CLI","p":["More info on our TurboStack Command Line Interface"]},{"l":"4. Clone settings from an existing TurboStack"},{"l":"5. Installing a new application on your TurboStack"},{"i":"in-need-of-support","l":"In need of Support?","p":["Got burning questions or bursting with feedback? Don't hold back – we thrive on it! Shoot us a message at support@hosted-power.com or call us at +32 53 599 000, and our squad of Turbo-trouble solvers will swoop in. Hosted Power's sales and support gurus are at your service on weekdays during office hours. Of course you can count on your SLA should critical incidents happen."]}],[{"l":"Groups","p":["Open the Groups tab to efficiently manage settings without the need to make changes individually for each user or project. Create partner groups, which enables you to provide SSH key access to multiple employees across different end user or partner environments."]},{"l":"Where to set up Groups","p":["In the Customer Center, navigate to Manage contacts. Here you can add your relevant contacts. Click through to the Teams tab. Here you can create your own teams, e.g. Dev, Billing, Agency, etc.","If you have a new partner requiring access to your environment, you have the possibility to invite an existing team. you can also easliy remove teams from your environment.","CreateTeams"]},{"i":"scenario-1-use-groups-for-centralised-user-rights-management-with-ssh-keys","l":"Scenario 1: Use Groups for centralised user rights management with SSH keys","p":["SSHTab","Centralized user rights can streamline access control and simplify administration.","Identify the different levels of access required within your system.","Create user groups based on these access levels. For example, you might have groups like \"admin\", \"developers\", \"sysadmins\", etc.","Add users to appropriate groups based on their roles and responsibilities.","Each user who needs access to the system should generate an SSH key pair if they haven't already.","Have users from different groups attempt to log in using SSH keys to ensure that access is restricted according to the group-based configuration.","Regularly review user access and group memberships to ensure that they align with your current organizational requirements.","Hosted Power monitors system logs for any unauthorized access attempts and take appropriate action if necessary."]},{"i":"scenario-2-use-groups-for-centralised-turbostack-node-management","l":"Scenario 2: Use Groups for centralised TurboStack Node management","p":["HostsTab","Managing TurboStack nodes using groups can help streamline operations and ensure consistency across your infrastructure.","Determine the different roles that your TurboStack nodes will fulfill, such as web node, database node, application node, etc.","Create groups based on the identified server roles.","Assign each TurboStack node to the appropriate group based on its role."]},{"l":"The Security Tab","p":["HostsTab"]}],[{"l":"TurboStack App Basics"},{"l":"Login and locate your managed servers","p":["When going to the TurboStack App, login with credentials for our Customer Center: portal.hosted-power.com.","If you don't have a login to the Customer Center yet, you can find more info here.","TurboStackAppLogin","Once logged in all servers managed by this account will become visible in the \"Hosts\" tab.","TurboStackAppServers"]},{"l":"Main TurboStack App functions","p":["For each server there are main functions available","TurboStackAppHeader","Switch between the GUI layout and the (advanced) YAML layout","Revisions: shows all historic configuration changes made to the server","Fetch the credentials and IPs of the servers all users and databases","Save any changes made to the configuration","Save and Publish: saves and deploys the changes made to the server","under point 5, there the option to save and full publish. this will ensure everything gets deployed"]},{"i":"the-server-tab","l":"The 'server' tab","p":["the server tab defines some basic middleware configuration. Like the type of webserver and some different type of databases that are supported","TurboStackAppServerTab"]},{"i":"the-accounts-tab","l":"The 'accounts' tab"}],[{"l":"TurboStack CLI","p":["The TurboStack Command Line Interface (later referred to as TSCLI) is available on all TurboStack nodes to provide you with an easy to use tool to manage the services on your environment, even ones you would normally need root access for. Below is a short description of the various features."]},{"l":"TSCLI Commands","p":["The TSCLI tool uses levels of arguments to categorize functions. Every command starts with 'tscli' followed by the service you're managing, followed by the parameters for the function you're using as documented below."]},{"l":"NGINX Webserver","p":["- Verifies the NGINX configuration and reloads it if it is valid. If it isn't valid you'll get an error with the issue reported."]},{"l":"BlackFire php Profiler","p":["- Installs the Blackfire Profiler and restarts the PHP-FPM service(s).","- Uninstalls the Blackfire Profiler and restarts the PHP-FPM service(s).","- Restarts the Blackfire Profiler service, to apply changes to the configuration."]},{"l":"Firewall","p":["- Returns info on wether the IP parameter is listed in the iptables. Please make sure to only use valid IP addresses.","- Adds a firewall rule to block a specific IP address as specified in the IP parameter.","- Removes an IP address from the firewall's deny list."]},{"l":"PHP OpCache","p":["- Resets php's OpCache."]},{"l":"Varnish Cache","p":["- Clears everything from Varnish Cache's memory.","- Reloads the Varnisch Cache configuration"]}],[{"l":"cPanel"},{"l":"How to correctly configure a Magento 2 cronjob under cPanel","p":["Login via ssh as the account user (or login via cPanel -> Cronjobs)","(Replace demoshop by your own account name)"]},{"i":"fix---autossl-reduced-ssl-coverage","l":"FIX - AutoSSL reduced SSL coverage","p":["This is a known problem in cPanel AutoSSL.","This now requires each subdomain be verified individually. If this fails, they will automatically stop including them in the attempt and send an alert to your configured mail addresses. This can get very spammy, so you might want to solve the root cause. You can find more context in the official cPanel docs.","To resolve this, we recommend you check the configured domains. As you can see in the screenshot below, this often includes auto-generated cPanel subdomains","AutoSSL issue","As you can see, there's a lot of unprotected subdomains, however, none of these are actually in use. As such, you can safely exclude these from your certificate. To do this, you need to be logged in as the user of the domain for which the certificate is being generated.","Once logged in, you need to find the following option in your main menu: SSL/TLS Status","That page will look like this: AutoSSL issue2","Here you can see what your subdomains might look like. \"AutoSSL Domain Validated\" means it works, so you can ignore those. Then, all subdomains in red need to be checked. If you don't use the subdomain, you should click \"Exclude from AutoSSL\" as seen in the second item in the screenshot. Once you've dealt with all subdomains in error, you can click the \"Run AutoSSL\" button at the top of the page to re-run the validation. This will mean no more errors when running AutoSSL, and no more alert spam!"]}],[{"l":"DirectAdmin"}],[{"l":"Firewall"}],[{"i":"ssltls-configuration","l":"SSL/TLS configuration"}],[{"l":"PHP configuration"}],[{"l":"Nginx configuration"},{"l":"Enable Basic Authentication on your website for NGINX","p":["It's relatively easy to configure Basic Authentication using a .htpasswd file (similar to a basic auth block in Apache .htaccess) in NGINX on TurboStack. This way you can block access to your development version of the website for non-authenticated users. This guide assumes you know what Basic Authentication is."]},{"l":"How-to","p":["First locate your nginx main configuration file from the home directory of your user:","Then, uncomment the following lines to activate Basic Authentication:","OPTIONAL: You can add whitelisting based on IP-addresses for connections that will not need to identify using the Basic Auth service, simply add \"allow \":","Lastly, to enact your changes, reload the NGINX service:"]}],[{"l":"Apache configuration"}],[{"l":"TurboStack Optimization"}],[{"i":"cicd","l":"CI/CD"}],[{"l":"Pipelines"}],[{"l":"SSH"},{"l":"How to use SSH Keys on TurboStack"},{"l":"Windows Users","p":["Don't - haha"]},{"l":"Linux Users"}],[{"l":"Back-up"}],[{"l":"Varnish"}],[{"l":"Redis","p":["By default there are 16 databases available (0-15), this could be increased on request","By default there are always at least 2 Redis instances available:","Can be cleared at all times, shouldn't influence application when cleared","Data = non persistent (volatile)","Data = persistent (non-volatile)","Notes:","Persistent data/information","port 6378 (non default)","port 6379 (default)","redis-persistent","Should/will never be cleared, clearing would influence application","socket file: /var/run/redis-persistent/redis.sock","socket file: /var/run/redis/redis.sock","Suitable for cache","Suitable for sessions","Try to use seperate databases when having multiple websites/applications on the same server (e.g. db 1 , db 2, ...)","Using the socket file is recommended when using local redis instances (less overhead = better performance!)","Volatile data/information"]}],[{"l":"Apache"},{"i":"grant-or-deny-access-to-server-for-specific-ips-while-using-basic-auth","l":"Grant or deny access to server for specific IP's while using basic auth","p":["In this article, we'll tackle the problem how we can decide if a visitor should or should not login on a server with basic auth enabled, based on it's IP-address.","So what is the result we want to achieve? We want to implement an .htpasswd so visitors need to have a valid login, except when the request came from a whitelisted IP adress. In that case, no login is asked and you'll be redirected to the site. Like a VIP that would skip a waiting queue for a club.","This method is used for Apache2"]},{"i":"method-1-server-without-varnish-enabled","l":"Method 1: Server without varnish enabled","p":["There is a difference when a server has or doesn't have Varnish enabled. For now we'll make it simple assuming there is no interruption with any service like Varnish. In that case we'll use the next setup:","For best practice, we put this code at the top of our .htaccess file"]},{"i":"method-2-server-with-varnish-enabled","l":"Method 2: Server with varnish enabled","p":["For a server with varnish enabled, is a different approach needed. All requests that go through varnish will pass the header (X-Forwarded-For), but it may contain some tempered information about the visitors IP. Because of this modification, the request for immediate access will be denied and the visitor will be asked to login. To make sure this won't happen, we'll add a variable for the header that contains the whitelisted IP-adress.","The code below will do the trick:","For best practice will we add the IP's to the required list require ip"]},{"l":"Block infamous bytespider bot","p":["Sometimes a server can go high in load due to the infamous bytespider bot. This one can be excluded by implementing this piece of code inside the .htaccess:"]}],[{"l":"Nginx"}],[{"l":"Mail"},{"l":"Mail delivery best practices","p":["SPF record","Most important, make sure to add both the ipv4 and ipv6 of your server!!","Use -all at the end of your record!","DKIM will enhance delivery, however SPF will give you the most gain in delivery success.","DMARC is an extra record which can improve even more, but it's gain in delivery success is less than SPF and DKIM.","However it's quite important from a security point of view (avoid abuse by external parties).","The most basic DMARC txt record to create, which will enforce SPF: v=DMARC1; p=reject; aspf=s;","In doubt: Always use Mail tester","Make sure that you use the exact same method as the one your experience problems with when sending the mail to mail-tester."]},{"l":"SPF Record Syntax"},{"l":"Mechanisms","p":["Mechanisms can be prefixed with one of four qualifiers:","\"+\" Pass","\"-\" Fail","\"~\" SoftFail","\"?\" Neutral","If a mechanism results in a hit, its qualifier value is used. The default qualifier is \"+\", i.e. \"Pass\". For example:","Mechanisms are evaluated in order. If no mechanism or modifier matches, the default result is \"Neutral\".","If a domain has no SPF record at all, the result is \"None\". If a domain has a temporary error during DNS processing, you get the result \"TempError\" (called \"error\" in earlier drafts). If some kind of syntax or evaluation error occurs (eg. the domain specifies an unrecognized mechanism) the result is \"PermError\" (formerly \"unknown\").","Evaluation of an SPF record can return any of these results:"]},{"i":"the-all-mechanism","l":"The \"all\" mechanism","p":["This mechanism always matches. It usually goes at the end of the SPF record.","Examples:","Allow domain's MXes to send mail for the domain, prohibit all others.","The domain sends no mail at all.","The domain owner thinks that SPF is useless and/or doesn't care."]},{"i":"the-ip4-mechanism","l":"The \"ip4\" mechanism","p":["The argument to the \"ip4:\" mechanism is an IPv4 network range. If no prefix-length is given, /32 is assumed (singling out an individual host address).","Examples:","Allow any IP address between 192.168.0.1 and 192.168.255.255."]},{"i":"the-ip6-mechanism","l":"The \"ip6\" mechanism","p":["The argument to the \"ip6:\" mechanism is an IPv6 network range. If no prefix-length is given, /128 is assumed (singling out an individual host address).","Examples:","Allow any IPv6 address between 1080::8:800:0000:0000 and 1080::8:800:FFFF:FFFF."]},{"i":"the-a-mechanism","l":"The \"a\" mechanism","p":["All the A records for domain are tested. If the client IP is found among them, this mechanism matches. If the connection is made over IPv6, then an AAAA lookup is performed instead.","If domain is not specified, the current-domain is used.","The A records have to match the client IP exactly, unless a prefix-length is provided, in which case each IP address returned by the A lookup will be expanded to its corresponding CIDR prefix, and the client IP will be sought within that subnet.","The current-domain is used.","Equivalent if the current-domain is example.com.","Perhaps example.com has chosen to explicitly list all the outbound mailers in a special A record under mailers.example.com.","If example.com resolves to 192.0.2.1, the entire class C of 192.0.2.0/24 would be searched for the client IP. Similarly for offsite.example.com. If more than one A record were returned, each one would be expanded to a CIDR subnet."]},{"i":"the-mx-mechanism","l":"The \"mx\" mechanism","p":["All the A records for all the MX records for domain are tested in order of MX priority. If the client IP is found among them, this mechanism matches.","If domain is not specified, the current-domain is used.","The A records have to match the client IP exactly, unless a prefix-length is provided, in which case each IP address returned by the A lookup will be expanded to its corresponding CIDR prefix, and the client IP will be sought within that subnet.","Examples:","Perhaps a domain sends mail through its MX servers plus another set of servers whose job is to retry mail for deferring domains.","Perhaps a domain's MX servers receive mail on one IP address, but send mail on a different but nearby IP address."]},{"i":"the-include-mechanism","l":"The \"include\" mechanism","p":["The specified domain is searched for a match. If the lookup does not return a match or an error, processing proceeds to the next directive. Warning: If the domain does not have a valid SPF record, the result is a permanent error. Some mail receivers will reject based on a PermError.","Examples:","In the following example, the client IP is 1.2.3.4 and the current-domain is example.com.","If example.com has no SPF record, the result is PermError. Suppose example.com's SPF record were \"v=spf1 a -all\". Look up the A record for example.com. If it matches 1.2.3.4, return Pass. If there is no match, other than the included domain's \"-all\", the include as a whole fails to match; the eventual result is still Fail from the outer directive set in this example. Trust relationships — The \"include:\" mechanism is meant to cross administrative boundaries. Great care is needed to ensure that \"include:\" mechanisms do not place domains at risk for giving SPF Pass results to messages that result from cross user forgery. Unless technical mechanisms are in place at the specified otherdomain to prevent cross user forgery, \"include:\" mechanisms should give a Neutral rather than Pass result. This is done by adding \"?\" in front of \"include:\". The example above would be:","In hindsight, the name \"include\" was poorly chosen. Only the evaluated result of the referenced SPF record is used, rather than acting as if the referenced SPF record was literally included in the first. For example, evaluating a \"-all\" directive in the referenced record does not terminate the overall processing and does not necessarily result in an overall Fail. (Better names for this mechanism would have been \"if-pass\", \"on-pass\", etc.)"]},{"l":"Common SMTP and E-mail ports","p":["Common SMTP ports:","SMTP – port 25 or 587","Secure SMTP (SSL / TLS) – port 465 or 587","Common Email retrieval ports:","POP3 – port 110","POP3 SSL (POP3S) – port 995","IMAP – port 143","IMAP SSL (IMAPS) – port 993"]},{"i":"spf--dkim-record-for-mailchimp","l":"SPF & DKIM Record For MailChimp","p":["To authenticate your domain, you'll need to complete tasks in Mailchimp and in the zone editor(portal) or control panel. This process requires you to copy and paste information from Mailchimp to your domain provider's site. We recommend that you work with two browser windows or tabs to easily move between your sites.","Here's a brief overview of the process:","In Mailchimp","Verify your domain.","Copy two important pieces of information, your CNAME record for DKIM, and your TXT record for SPF","In Your Domain's Control Panel or Zone Editor","DKIM: Create a CNAME record for k1._ domainkey.yourdomain.com with this value: dkim.mcsv.net.","SPF: Create a TXT record for yourdomain.com with this value: v=spf1 include:servers.mcsv.net -all or add \"include:servers.mcsv.net\" to your SPF record","Note","The URLs above are examples only. Replace \"yourdomain.com\" with the domain you want to authenticate."]}],[{"l":"MySQL"}],[{"l":"PostgreSQL"}],[{"l":"MongoDB"}],[{"l":"Other"}],[{"l":"Datadog"}],[{"l":"Newrelic"}],[{"l":"Blackfire"}],[{"l":"Security"}],[{"l":"Testing"}],[{"l":"Updating your TurboStack"}],[{"l":"Pricing","p":["TurboStack®, the fastest software stack designed to be fully configurable. Take advantage of any technology in the same stack. Easily customize programming language, caching or database. Enormous flexibility and an ultra secure environment that supports any project."]},{"l":"Versatile Stack with Rapid Delivery"},{"i":"put-an-end-to-instability--difficulties-in-heavy-processes","l":"Put an end to instability & difficulties in heavy processes","p":["Each environment is configured to ensure the fastest loading times and stability to handle the most abrupt visitor spikes.","Your project can be delivered at lightning speed. Within half an hour we deploy any desired technology or software.Your project can be delivered at lightning speed. Within half an hour we deploy any desired technology or software."]},{"i":"pricing-1","l":"Pricing","p":["We have several scalable packages, tailored for the fastest performance. We offer staging & production packages, which can be clustered if needed. Check out our packages here."]}],[{"l":"Some history","p":["⚡ * At Hosted Power you will find experts in managed hosting, who are people-oriented and think along with you based on their passion for Cloud technology. * ⚡"]},{"l":"One team of people","p":["Without cooperation there is no team. We want to see our people grow together with Hosted Power. We do this by actively sharing knowledge, striving for transparency, involvement and open communication. We stand behind our each other as one team, our hyper-fast solution and our partners, without losing sight of the fun factor. Freedom and open vision are indispensable. Our people do what they like to do and are given every opportunity to grow.","Happy Colleagues = Happy Partners = Happy Customers!"]},{"l":"Goals","p":["In essence, we exist to serve you as a customer, to improve your situation, to automate, to accelerate it and to unburden you completely with your cloud environment. With our agile, in-house developed custom solution TurboStack®, we will accommodate your needs. We continuously challenge ourselves and follow up the hottest technological trends and see innovation as a challenge."]},{"l":"Our mission","p":["We are creative and businesslike. We aim to be your reliable partner. Our secret is to find the ideal mix between perfecting existing technologies and implementing innovative ideas and technologies. We are therefore 100% committed to a long-term relationship with you as our client. We will always give our honest and clear opinion about what the best solutions is for your specific challenges. Honesty is the most important key in a successful partner relationship. So we don't go for the \"quick fixes\" but for a robust long-term solution with the necessary attention to your needs.","\"If you want to be able to fall back on an external team that actively thinks along, and can offer the best environments, Hosted Power is the right partner for you. Let's meet!\""]}],[{"l":"Monitoring"}],[{"l":"Alerting"}],[{"l":"Incident management"}],[{"l":"Standard support"},{"i":"247-proactive-monitoring","l":"24/7 Proactive Monitoring","p":["Our proactive monitoring was developed internally by Hosted Power and is continuously optimized so that we can guarantee the most accurate monitoring. The monitoring keeps an eye on crucial functionalities of the supported hosting environments and your application at all times. Thanks to the monitoring, adequate and proactive action will be taken, after all, prevention is better than the cure. It is possible to carry out specific checks specifically for your application; so that the correct action can be taken in the event of calamities. The customer has an obligation to inform Hosted Power in the event of expected peak times, the shutdown or interruption by the customer of the server or the services included in the monitoring. This must be communicated to Hosted Power at least 1 working day in advance."]},{"l":"scope"}]] \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 522624a3b167fe4cc1b61dae5fbfdf11d2c78153..35e20b277b7105f6bd2f1ef2edaf06cbeb81e5a0 100644 GIT binary patch delta 586 zcmV-Q0=5031)>FiABzY80000000Y#ROLN;G5PF z?V8zgxfI*kY;!T0j601ZJz1|dqdn3B?G+ZOkG01n)z3nPAl72E*x5=&tl;qSN_qEx08JldB8LmamW6T7evVD_eLxPlE7k+dKZ?o%3*+_I8OgILdRqnQj76cg z>eQhPM<6bbNbDMLPdnXt5X&H` zGM^Rly9pl>bnu&xdvQc=1-a6vLfHpRRIaI>eIKiTx5-oCJDe0C7z@tuGyn|UNo_Dy zAxf1%5min4o}mLJxEVWKCxN9{T{1LIduV7>KfaCyk0Jf+;Uy9&Tv+HB!b8@+Pw&H) zUZ}YE7=q#xANtNzEnxDI$Hfeg*oWX_5}kKITwKS;AGV5W^hoz8qXV9M8AIQ805Td4 zEXkQD0rAzt(wfK?zI<5V6lmj8)k!BC)6wIJ5bpVQFg2R^XyUG4FiABzY80000000Y#R&2ri>5P7^HsEGhO* zWl7b_nDptpCZtJ7Idrnjz)9ZK%KFfKa!!^+`m zyJj|@&&75&TU|^h<4)s9Pu8o|Xpgi&dxb^nW9>0X^|O#6h@}`UcD52z=k@AxdRgYv zGN0W&&aM{abWvXaAiLe{i*1PDBc$gQ{o1AYD~+3r-R}QE@h0Y@SW5&|fg_EzUq_r4 zw|AV3mGbU?37S62L=G2-Eeqo%`#Cnz_W?QJZdea6|0pU8ER45bXC%+2=xr6GGZux~ zjwcGIAsUsW?!d7S-W)MTo``i|3g(;ZqXx6hlf^ylsZ)nG9D%qzBC%`0ZFaizAeKQ= zWj-t9cN0D&=-@XW_tg=(734~v3S}QOQMsmi_I<2>-X>3l?{HFpU@SPp(*Q7ZC$+&; zg(y`5MN~EEdxj2_;AZS_odlL*b8xrU}`jRZQ`z9 - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/support/incident_management/index.html b/support/incident_management/index.html index c0a38100..c0dd4774 100644 --- a/support/incident_management/index.html +++ b/support/incident_management/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/support/monitoring/index.html b/support/monitoring/index.html index 3794622d..e1ba7d27 100644 --- a/support/monitoring/index.html +++ b/support/monitoring/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/support/standard_support/index.html b/support/standard_support/index.html index f0d83b25..955fe52f 100644 --- a/support/standard_support/index.html +++ b/support/standard_support/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/turbostack-app/basic_install/index.html b/turbostack-app/basic_install/index.html index 261159c6..45b083d2 100644 --- a/turbostack-app/basic_install/index.html +++ b/turbostack-app/basic_install/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
diff --git a/turbostack-app/groups/index.html b/turbostack-app/groups/index.html index b162af4a..9682abda 100644 --- a/turbostack-app/groups/index.html +++ b/turbostack-app/groups/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
diff --git a/turbostack-app/turbostackcli/index.html b/turbostack-app/turbostackcli/index.html index be6309fe..ae872448 100644 --- a/turbostack-app/turbostackcli/index.html +++ b/turbostack-app/turbostackcli/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/turbostack_configuration/apache_configation/index.html b/turbostack_configuration/apache_configation/index.html index 657412cc..988abbcb 100644 --- a/turbostack_configuration/apache_configation/index.html +++ b/turbostack_configuration/apache_configation/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/turbostack_configuration/ci-cd/index.html b/turbostack_configuration/ci-cd/index.html index a4a9b3bd..83af1db0 100644 --- a/turbostack_configuration/ci-cd/index.html +++ b/turbostack_configuration/ci-cd/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/turbostack_configuration/firewall/index.html b/turbostack_configuration/firewall/index.html index cc522a2a..f600699c 100644 --- a/turbostack_configuration/firewall/index.html +++ b/turbostack_configuration/firewall/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/turbostack_configuration/nginx_configation/index.html b/turbostack_configuration/nginx_configation/index.html index 60027e31..e8fee593 100644 --- a/turbostack_configuration/nginx_configation/index.html +++ b/turbostack_configuration/nginx_configation/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/turbostack_configuration/php_configuration/index.html b/turbostack_configuration/php_configuration/index.html index e56ce63b..6d67487a 100644 --- a/turbostack_configuration/php_configuration/index.html +++ b/turbostack_configuration/php_configuration/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/turbostack_configuration/pipelines/index.html b/turbostack_configuration/pipelines/index.html index c1a3e6db..cf20647c 100644 --- a/turbostack_configuration/pipelines/index.html +++ b/turbostack_configuration/pipelines/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/turbostack_configuration/ssh/index.html b/turbostack_configuration/ssh/index.html index 67a3d2d8..fec578d4 100644 --- a/turbostack_configuration/ssh/index.html +++ b/turbostack_configuration/ssh/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
diff --git a/turbostack_configuration/ssl-tls_configuration/index.html b/turbostack_configuration/ssl-tls_configuration/index.html index 6ee088de..c808644d 100644 --- a/turbostack_configuration/ssl-tls_configuration/index.html +++ b/turbostack_configuration/ssl-tls_configuration/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/turbostack_configuration/turbostack_optimization/index.html b/turbostack_configuration/turbostack_optimization/index.html index 6eebadbf..61dafd45 100644 --- a/turbostack_configuration/turbostack_optimization/index.html +++ b/turbostack_configuration/turbostack_optimization/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/updating_your_turbostack/index.html b/updating_your_turbostack/index.html index fd338331..ad766ccb 100644 --- a/updating_your_turbostack/index.html +++ b/updating_your_turbostack/index.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +