Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php on line 6131

Deprecated: Creation of dynamic property ACF::$fields is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields.php on line 138

Deprecated: Creation of dynamic property acf_loop::$loops is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/loop.php on line 28

Deprecated: Creation of dynamic property ACF::$loop is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/loop.php on line 269

Deprecated: Creation of dynamic property ACF::$revisions is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/revisions.php on line 397

Deprecated: Creation of dynamic property acf_validation::$errors is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/validation.php on line 28

Deprecated: Creation of dynamic property ACF::$validation is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/validation.php on line 214

Deprecated: Creation of dynamic property acf_form_customizer::$preview_values is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 28

Deprecated: Creation of dynamic property acf_form_customizer::$preview_fields is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 29

Deprecated: Creation of dynamic property acf_form_customizer::$preview_errors is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-customizer.php on line 30

Deprecated: Creation of dynamic property ACF::$form_front is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-front.php on line 598

Deprecated: Creation of dynamic property acf_form_widget::$preview_values is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 34

Deprecated: Creation of dynamic property acf_form_widget::$preview_reference is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 35

Deprecated: Creation of dynamic property acf_form_widget::$preview_errors is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/forms/form-widget.php on line 36

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-wp-migration domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php on line 6131

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/wp_plugin/wp_plugin.php on line 23

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 54

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 1539

Deprecated: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 828

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the rocket domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php on line 6131

Deprecated: Creation of dynamic property acf_field_oembed::$width is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-oembed.php on line 31

Deprecated: Creation of dynamic property acf_field_oembed::$height is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-oembed.php on line 32

Deprecated: Creation of dynamic property acf_field_google_map::$default_values is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-google-map.php on line 33

Deprecated: Creation of dynamic property acf_field__group::$have_rows is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/includes/fields/class-acf-field-group.php on line 31

Deprecated: Creation of dynamic property acf_field_clone::$cloning is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/pro/fields/class-acf-field-clone.php on line 34

Deprecated: Creation of dynamic property acf_field_clone::$have_rows is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-pro/pro/fields/class-acf-field-clone.php on line 35

Deprecated: Creation of dynamic property jh_acf_field_table::$settings is deprecated in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-content/plugins/advanced-custom-fields-table-field/class-jh-acf-field-table.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/rest-api/class-wp-rest-server.php on line 1902

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/functions.php:6131) in /var/www/vhosts/studiogo.tech/httpdocs/upcloudold/wp-includes/rest-api/class-wp-rest-server.php on line 1902
{"id":24888,"date":"2020-05-25T07:44:51","date_gmt":"2020-05-25T04:44:51","guid":{"rendered":"https:\/\/upcloud.com\/community\/tutorials\/install-webmin-debian-10"},"modified":"2020-05-25T07:44:51","modified_gmt":"2020-05-25T04:44:51","slug":"install-webmin-debian-10","status":"publish","type":"tutorial","link":"https:\/\/studiogo.tech\/upcloudold\/tutorial\/install-webmin-debian-10\/","title":{"rendered":"How to install Webmin on Debian 10"},"content":{"rendered":"\n

Webmin<\/a> is a web-based system configuration and management tool for Unix-based systems. Meaning that with it you can do the management on all your Linux servers. It\u2019s robust, powerful and has a lot of features. It has become a good open-source alternative for cPanel as not only can it do user administration, package management, network configuration and performance monitoring, but it can also manage web servers. Thanks to the rich feature set, it can be a powerful tool for system administrators and webmasters.<\/p>\n\n\n\n

This post will cover the procedure on how to install Webmin on Debian 10. The same methods can also be applied to earlier versions, Debian 9 and 8, and to other Debian-based distros such as Ubuntu with possible small differences.<\/p>\n\n\n\n

\n
Test hosting on UpCloud!<\/a><\/div>\n<\/div>\n\n\n\n

Some Webmin use case scenarios<\/h2>\n\n\n\n

If you plan to set up a cloud server on which you intend to host multiple websites, then Webmin could be a good solution for you. You can also do the same on your local network.<\/p>\n\n\n\n

Another great Webmin feature is the ability to register multiple servers on Webmin and manage all of them from a single Webmin dashboard. This can work with multiple different machines, physical and virtual, as long as they are all on the same network.<\/p>\n\n\n\n

Webmin installation methods<\/h2>\n\n\n\n

There are two ways to install Webmin on your server.<\/p>\n\n\n\n

    \n
  1. The first option is to install the Webmin software from the .deb package<\/strong> which you can download from their website.<\/li>\n\n\n\n
  2. The second option is to add a Webmin source and install it via the apt package manager<\/strong>.<\/li>\n<\/ol>\n\n\n\n

    We are going to cover both of these methods to provide the best option for you.<\/p>\n\n\n\n

    Option 1. Installing Webmin from the .deb package<\/h2>\n\n\n\n

    First what we need to do is install all necessary packages that Webmin uses, otherwise, Webmin won\u2019t install. Below you can see an error that will show up if the packages are not installed.<\/p>\n\n\n\n

    \"debian<\/figure>\n\n\n\n
    \"\"<\/figure>\n\n\n\n

    Use the following command to install the necessary packages.<\/p>\n\n\n\n

    sudo apt update\nsudo apt install perl libnet-ssleay-perl openssl \nlibauthen-pam-perl libpam-runtime libio-pty-perl \napt-show-versions python unzip shared-mime-info wget<\/pre>\n\n\n\n

    Next, you need to download the .deb package. Check the Webmin<\/a> website for the latest version number. In the package name, they write the version number of Webmin and they post the latest stable release to download.<\/p>\n\n\n\n

    Download the .deb package using the command below. Replace the version number with the latest if a newer release is available.<\/p>\n\n\n\n

    wget http:\/\/prdownloads.sourceforge.net\/webadmin\/webmin_1.941_all.deb -P ~\/<\/pre>\n\n\n\n

    Once the package has been downloaded, install Webmin with the following command.<\/p>\n\n\n\n

    sudo dpkg --install ~\/webmin_1.941_all.deb<\/pre>\n\n\n\n
    Setting up webmin (1.941) ...\nWebmin install complete. You can now login to https:\/\/webmin.example.com:10000\/\nas root with your root password, or as any user who can use sudo\nto run commands as root.\nProcessing triggers for systemd (241-7~deb10u4) ...<\/pre>\n\n\n\n

    If the installation was successful, you\u2019ll see an output like the example above. You can then access the Webmin dashboard by going to the IP address or domain of your Webmin server on your web browser.<\/p>\n\n\n\n

    Option 2. Installing Webmin from the APT repo<\/h2>\n\n\n\n

    Installing Webmin from the APT repository via the package manager is perhaps a more maintainable option allowing easier updates and reinstall if necessary.<\/p>\n\n\n\n

    To do this, first, we need to install the prerequisites.<\/p>\n\n\n\n

    sudo apt-get install apt-transport-https gnupg2 curl<\/pre>\n\n\n\n

    Next, add the Webmin repository to its own sources list.<\/p>\n\n\n\n

    sudo echo \"deb https:\/\/download.webmin.com\/download\/repository sarge contrib\" \n> \/etc\/apt\/sources.list.d\/webmin.list<\/pre>\n\n\n\n

    Then add the GPG key which you need to download and save with the command below.<\/p>\n\n\n\n

    curl https:\/\/download.webmin.com\/jcameron-key.asc | sudo apt-key add -<\/pre>\n\n\n\n

    Update the repository lists which now include the Webmin source and finally install Webmin itself.<\/p>\n\n\n\n

    sudo apt-get update\nsudo apt-get install webmin<\/pre>\n\n\n\n
    Setting up webmin (1.941) ...\nWebmin install complete. You can now login to https:\/\/webmin.example.com:10000\/\nas root with your root password, or as any user who can use sudo\nto run commands as root.\nProcessing triggers for libc-bin (2.28-10) ...\nProcessing triggers for systemd (241-7~deb10u4) ...\nProcessing triggers for man-db (2.8.5-2) ...\nProcessing triggers for mime-support (3.62) ...\n<\/pre>\n\n\n\n

    If the installation was successful, you\u2019ll see an output like the example above. You can then access the Webmin dashboard by going to the IP address or domain of your Webmin server on your web browser.<\/p>\n\n\n\n

    Firewall settings for Webmin<\/h2>\n\n\n\n

    Webmin is configured by default to listen on port 10000. If you have a firewall running, you must allow HTTP and HTTPS access as well as traffic to port 10000. In this section, we\u2019ll cover the steps for the ufw<\/tt> and iptables<\/tt> firewalls on your server. Also, for the cloud server, you need to configure a firewall rule to allow traffic on the same port if you are using a firewall service by your cloud provider.<\/p>\n\n\n\n

    Depending on which firewall you are using, you need to configure it to open port 10000 and allow HTTP and HTTPS traffic on it.<\/p>\n\n\n\n

    iptables config:<\/h4>\n\n\n\n

    Run the following commands:<\/p>\n\n\n\n

    sudo iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT\nsudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT \nsudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT<\/pre>\n\n\n\n

    ufw config:<\/h4>\n\n\n\n

    Run the following commands:<\/p>\n\n\n\n

    sudo ufw allow http\nsudo ufw allow https\nsudo ufw allow 10000<\/pre>\n\n\n\n

    Access the Webmin dashboard<\/h2>\n\n\n\n

    Once you\u2019ve finished installing Webmin, the message on completion shown in the terminal output tells you how to access the Webmin dashboard. However, that only works if you\u2019ve configured a domain name on your cloud server as Webmin generated the URL from the hostname of your server.<\/p>\n\n\n\n

    To access the Webmin dashboard on a cloud server without a domain name, you\u2019ll need to use a public IP address. Your cloud provider would have assigned this to your server. Also, remember to include the port number 10000 used by Webmin.<\/p>\n\n\n\n

    If you installed Webmin on the local network, the process is the same. Use the IP address assigned to your server.<\/p>\n\n\n\n

    The first time you access the dashboard, you\u2019ll get a potential security risk prompt on your web browser. This is because Webmin uses a self-signed SSL certificate when you install it for the first time. These SSL certificates can be replaced later on.<\/p>\n\n\n\n

    For now, go ahead and add the security exception to continue.
    \"\"
    Once you pass the security warning, you\u2019ll see the Webmin login page such as the example shown below.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Log in using your server\u2019s root account and password or any other user account you have which has sudo privileges.<\/p>\n\n\n\n

    Afterwards, you\u2019ll be greeted by the Webmin dashboard.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Congratulations! You\u2019ve successfully installed Webmin on your server. Continue below with a few additional steps to improve the security of your Webmin server.<\/p>\n\n\n\n

    Enabling two-factor authentication<\/h2>\n\n\n\n

    It\u2019s worth mentioning that if you installed Webmin on a cloud server, access to the Webmin dashboard must be protected with strict measures. When you open port 10000 on the firewall and allow traffic, you\u2019re exposing Webmin to the internet and probably to malicious attacks and potential threats.<\/p>\n\n\n\n

    To help protect your Webmin server, two-factor authentication, also known as 2FA, is a must. I highly recommend enabling it.<\/p>\n\n\n\n

    Start by installing the required packages with the command below.<\/p>\n\n\n\n

    sudo apt-get -y -f install libauthen-oath-perl<\/pre>\n\n\n\n

    Then go to the following menu on your Webmin dashboard.<\/p>\n\n\n\n

    Webmin -> Webmin Configuration -> Two-factor authentication<\/em><\/p>\n\n\n\n

    Select the two-factor authentication provider you prefer, e.g. Google authenticator<\/em> is compatible with most 2FA apps. Then click Save<\/em> to apply the changes.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Your browser will reconnect shortly as the server restarts.<\/p>\n\n\n\n

    Once the module has been enabled, follow the link to the Webmin Users<\/em> module.<\/p>\n\n\n\n

    On the Two-factor Authentication page, check that the Personal secret key<\/em> option Generate randomly<\/em> is selected and click the Enroll For Two-Factor Authentication<\/em> button.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    You will then be presented with your secret 2FA code for pairing your authenticator app on your smartphone, for example by using the Google Authenticator.<\/p>\n\n\n\n

    After you\u2019ve scanned the QR code or manually entered the secret code to your authenticator app, you should see a 6-digit code on the authenticator app which changes once every 30 seconds. Confirm that 2FA was enabled by logging out and logging in now using the 2FA provided by the authenticator app.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Another thing you should consider as Webmin by default allows access using the root account and all accounts with sudo privileges. The reason for that is it needs to run as root or have sudo privileges in order to be able to run all tasks. Same as you run sudo in the terminal.<\/p>\n\n\n\n

    Webmin -> Webmin Users<\/em><\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Because of the default access control, another recommended step is to either disable root login on Webmin or remove it entirely and use an existing account with sudo privileges or create a new account for Webmin alone.<\/p>\n\n\n\n

    Running server updates<\/h2>\n\n\n\n

    Webmin makes the maintenance of your cloud server easy by enabling completing of system tasks directly via the dashboard without the need to worry about the command line. Test it out by updating your server software and enabling scheduled updates by following the steps below.<\/p>\n\n\n\n

    Start by going to the Software Package Updates<\/em> page where you can check for any currently available updates and run upgrades.<\/p>\n\n\n\n

    System -> Software Package Updates -> Package Updates<\/em><\/p>\n\n\n\n

    Run the upgrades manually by checking that the available updates are selected and then click the Update Selected Packages<\/em> button.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Double-check the list of packages selected for update and confirm by clicking the Install Now<\/em> button.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    Once the install has finished, click the Return to package list<\/em> button.<\/p>\n\n\n\n

    Next, enable scheduled updates by going to the Scheduled Upgrades<\/em> tab on the Software Package Updates page.<\/p>\n\n\n\n

    System -> Software Package Updates -> Scheduled Upgrades<\/em><\/p>\n\n\n\n

    Select Yes, every<\/em> option and pick the interval you prefer, e.g. once a day.<\/p>\n\n\n\n

    Choose the type of updates to install automatically, either any updates<\/em>, security updates<\/em>, or just notify<\/em>.<\/p>\n\n\n\n

    Then click the Save<\/em> button to apply the schedule.<\/p>\n\n\n\n

    \"\"<\/figure>\n\n\n\n

    You should get a confirmation that the schedule has been enabled. Webmin will then keep your server up to date automatically.<\/p>\n\n\n\n

    Replace the self-signed certificate<\/h2>\n\n\n\n

    As mentioned before, you had to accept a security exception to access your Webmin dashboard due to the used self-signed SSL certificates. While the default certificates allow a secure connection, you should obtain a valid certificate from a trusted Certificate Authority such as Let\u2019s Encrypt which offers free SSL certificates.<\/p>\n\n\n\n

    NOTE<\/h4>\n\n\n\n

    This step requires you to have a valid domain name and to configure an A record<\/a> pointing to your Webmin server.<\/p>\n\n\n\n

    Start by installing the Certbot client developed by Let\u2019s Encrypt.<\/p>\n\n\n\n

    sudo apt install certbot<\/pre>\n\n\n\n

    Once installed, obtain a certificate with the command below. Replace the example domain name with your domain or subdomain.<\/p>\n\n\n\n

    sudo certbot certonly --standalone -d webmin.example.com<\/span><\/pre>\n\n\n\n

    The command starts an interactive configuration script that asks a couple of questions to help with managing certificates.<\/p>\n\n\n\n

      \n
    1. On the first installation on any specific host, you\u2019ll need to enter a contact email.<\/li>\n\n\n\n
    2. Then go through the Let\u2019s Encrypt Terms of Service and select Agree if you accept the terms and wish to use the service.<\/li>\n\n\n\n
    3. Choose whether you wish to share your email address with the Electronic Frontier Foundation (EFF) for updates on their work.<\/li>\n<\/ol>\n\n\n\n

      If the client was successful at obtaining a certificate you can find a confirmation and certificate expiration date at the end of the client output.<\/p>\n\n\n\n

      In case you are having problems with the client, make sure you are trying to register a domain or subdomain that currently resolves to your server as DNS configurations might take a moment to propagate. Also, check that you are running the command with sudo privileges.<\/p>\n\n\n\n

      With the valid certificates now available, we need to tell Webmin to use them instead of the default self-signed certificates.<\/p>\n\n\n\n

      Go to the Webmin dashboard and navigate to the following menu.<\/p>\n\n\n\n

      Webmin -> Webmin Configuration -> SSL Encryption -> SSL Settings<\/em><\/p>\n\n\n\n

      Change the Private key file<\/em> to use the certificate you obtained using Certbot. Replace webmin.example.com<\/span> with your domain.<\/p>\n\n\n\n

      \/etc\/letsencrypt\/live\/webmin.example.com<\/span>\/privkey.pem<\/tt><\/p>\n\n\n\n

      Select Separate file<\/em> for the certificate and enter the path to the certificate. Again, replace the webmin.example.com<\/span> with your domain.<\/p>\n\n\n\n

      \/etc\/letsencrypt\/live\/webmin.example.com<\/span>\/cert.pem<\/tt><\/p>\n\n\n\n

      \"\"<\/figure>\n\n\n\n

      Once done, click the Save<\/em> button.<\/p>\n\n\n\n

      Wait for the site to reconnect<\/p>\n\n\n\n

      \"\"<\/figure>\n\n\n\n

      Clear the site data on your browser to delete the cached self-signed certificate.<\/p>\n\n\n\n

      Reload the login page https:\/\/webmin.example.com:10000<\/a> and you should now see a closed padlock next to the URL to indicate a secure connection.<\/p>\n\n\n\n

      Summary<\/h2>\n\n\n\n

      Congratulations! You should now have a fully working and secure Webmin server ready for all web hosting and admin tasks. This guide explained the steps on how to install Webmin on Debian. We covered both methods to install Webmin on Debian with a .deb package and also via the APT repository. We also went over the procedure with the firewall configuration and how to access the Webmin dashboard as well as additional security and maintenance options.<\/p>\n\n\n\n

      Thank you for your time and happy hosting!<\/p>\n","protected":false},"featured_media":15022,"comment_status":"open","ping_status":"closed","template":"","community-category":[113,116],"class_list":["post-24888","tutorial","type-tutorial","status-publish","has-post-thumbnail","hentry","community-category-integrations","community-category-web-hosting"],"acf":[],"_links":{"self":[{"href":"https:\/\/studiogo.tech\/upcloudold\/wp-json\/wp\/v2\/tutorial\/24888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/studiogo.tech\/upcloudold\/wp-json\/wp\/v2\/tutorial"}],"about":[{"href":"https:\/\/studiogo.tech\/upcloudold\/wp-json\/wp\/v2\/types\/tutorial"}],"replies":[{"embeddable":true,"href":"https:\/\/studiogo.tech\/upcloudold\/wp-json\/wp\/v2\/comments?post=24888"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/studiogo.tech\/upcloudold\/wp-json\/wp\/v2\/media\/15022"}],"wp:attachment":[{"href":"https:\/\/studiogo.tech\/upcloudold\/wp-json\/wp\/v2\/media?parent=24888"}],"wp:term":[{"taxonomy":"community-category","embeddable":true,"href":"https:\/\/studiogo.tech\/upcloudold\/wp-json\/wp\/v2\/community-category?post=24888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}