bookmark_borderInstalling Elasticsearch on Debian 12


In this week’s feature highlight, we look at How to Install Elasticsearch on Debian 12

Elasticsearch is a highly scalable open-source full-text search and analytics engine. It allows you to store, search, and analyze big volumes of data quickly and in near real-time. Elasticsearch is an open-source developed in Java and used by many big organizations around the world.

Install OpenJDK-11

First, update the packages index and install the OpenJDK-11 with the following commands.

apt update

OpenJDK packages are available under native apt repositories. You can simply use apt-cache search command to search the available java version for your Debian system.

apt-cache search openjdk


root@vps:~# apt-cache search openjdk
openjdk-17-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-17-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-17-doc - OpenJDK Development Kit (JDK) documentation
openjdk-17-jdk - OpenJDK Development Kit (JDK)
openjdk-17-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-17-jre - OpenJDK Java runtime, using Hotspot JIT

Now install openjdk latest version,

apt-get install openjdk-17-jre


root@vps:~# apt-get install openjdk-17-jre
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  adwaita-icon-theme alsa-topology-conf alsa-ucm-conf at-spi2-common at-spi2-core ca-certificates-java dconf-gsettings-backend
  dconf-service fontconfig

After installation, check the version of JAVA.

java -version


root@vps:~# java -version
openjdk version "17.0.6" 2023-01-17
OpenJDK Runtime Environment (build 17.0.6+10-Debian-1)
OpenJDK 64-Bit Server VM (build 17.0.6+10-Debian-1, mixed mode, sharing)

Install Elasticsearch

Install GnuPG2 Package by running the following command.

apt-get install gnupg2 -y 

Import GPG key for Elasticsearch packages.

wget -qO - | sudo apt-key add -


root@vps:~# wget -qO - | apt-key add -
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).

Next, add the Elasticsearch repository to the system by the following command.

sh -c 'echo "deb stable main" > /etc/apt/sources.list.d/elastic-7.x.list'

After adding the repository to your system. Update cache and then install Elasticsearch packages on your system.

apt update 

apt install elasticsearch


root@vps:~# apt install elasticsearch
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:

After installing the Elasticsearch package, Start and enable the elasticsearch service with the following command.

systemctl start elasticsearch.service

systemctl enable elasticsearch.service


root@vps:~# systemctl enable elasticsearch.service
Synchronizing state of elasticsearch.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/ → /lib/systemd/system/elasticsearch.service.

Configure Elasticsearch

Once the elasticsearch has been installed on your system, open the elasticsearch.yml configuration file.

nano /etc/elasticsearch/elasticsearch.yml 

Search for the line that contains, uncomment it, and change the value to

Set the network host to to listen on all interfaces and make it available publicly,

In case you want to configure this to be private/local to your machine. You will have to set the to, so the content is not public.

Add discovery.type: single-node under the discovery section,

discovery.type: single-node

Save and exit the file once modified and restart the Elasticsearch service for the changes to take effect.

systemctl restart elasticsearch

Install and enable firewall using below command,

apt install ufw -y

ufw enable 


Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Now, allow the port and reload the firewall using the following command.

ufw allow 9200

ufw reload  


root@vps:~# ufw allow 9200
Rules updated
Rules updated (v6)
root@vps:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Enter it into your browser’s to the server hostname or IP address followed by port #9200



  "name" : "",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Njc30wnCRsOXSECsvnlmdA",
  "version" : {
    "number" : "7.17.10",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "fecd68e3150eda0c307ab9a9d7557f5d5fd71349",
    "build_date" : "2023-04-23T05:33:18.138275597Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  "tagline" : "You Know, for Search"


bookmark_borderInstalling Duf on Debian 12


In this week’s feature highlight, we look at How to Install Duf on Debian 12

Duf also called “Disk Usage Free utility” is a free and open-source tool written in Golang. It is used to display disk usage of the system in a tabular format. It is an alternative to the df command and it can be installed on Linux, BSD, Windows, and macOS. It also displays the disk usage details in the JSON output.

In this post, we will show you how to monitor disk usage with the Duf utility on Debian 12.


  • A system with Debian 12 installed and running.
  • root access to the system.

Check for System Updates

First, we will update the system to the latest with the following commands,

apt update
apt upgrade

Install Duf

At the time of writing this article, version 0.8.1 was the latest. You can check and download the latest version of .deb source file from their official repository.

We will download using wget command as shown below,



Resolving (,,, ...
Connecting to (||:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 917644 (896K) [application/octet-stream]
Saving to: ‘duf_0.8.1_linux_amd64.deb’

duf_0.8.1_linux_amd64.deb         100%[=============================================================>] 896.14K  --.-KB/s    in 0.02s   

2023-06-15 22:28:46 (51.3 MB/s) - ‘duf_0.8.1_linux_amd64.deb’ saved [917644/917644]


Install the downloaded .deb source file using the dpkg command,

apt install dpkg
dpkg -i duf_0.8.1_linux_amd64.deb


root@vps:~# dpkg -i duf_0.8.1_linux_amd64.deb 
Selecting previously unselected package duf.
(Reading database ... 33235 files and directories currently installed.)
Preparing to unpack duf_0.8.1_linux_amd64.deb ...
Unpacking duf (0.8.1) ...
Setting up duf (0.8.1) ...

Using the Duf Command Utility

We will now try using the duf command on the terminal to get disk-related information.



root@vps:~# duf
│ 1 local device                                                                        │
│ MOUNTED ON │  SIZE │ USED │ AVAIL │              USE%             │ TYPE │ FILESYSTEM │
│ /          │ 97.9G │ 1.7G │ 91.2G │ [....................]   1.8% │ ext4 │ /dev/vda2  │
│ 5 special devices                                                                              │
│ MOUNTED ON  │   SIZE │   USED │  AVAIL │              USE%             │ TYPE     │ FILESYSTEM │
│ /dev        │   1.9G │     0B │   1.9G │                               │ devtmpfs │ udev       │
│ /dev/shm    │   1.9G │     0B │   1.9G │                               │ tmpfs    │ tmpfs      │
│ /run        │ 391.5M │ 512.0K │ 391.0M │ [....................]   0.1% │ tmpfs    │ tmpfs      │
│ /run/lock   │   5.0M │     0B │   5.0M │                               │ tmpfs    │ tmpfs      │
│ /run/user/0 │ 391.5M │     0B │ 391.5M │                               │ tmpfs    │ tmpfs      │

Next, Find out more duf usages and available options that you can use to get started,

duf --help

To display the information about Pseudo, inaccessible, and duplicate file systems, run the following command:

duf -all


root@vps:~# duf -all
│ 5 local devices                                                                                        │
│ MOUNTED ON                 │  SIZE │ USED │ AVAIL │              USE%             │ TYPE  │ FILESYSTEM │
│ /                          │ 97.9G │ 1.7G │ 91.2G │ [....................]   1.8% │ ext4  │ /dev/vda2  │
│ /run/credentials/systemd-s │    0B │   0B │    0B │                               │ ramfs │ ramfs      │
│ ysctl.service              │       │      │       │                               │       │            │
│ /run/credentials/systemd-s │    0B │   0B │    0B │                               │ ramfs │ ramfs      │
│ ysusers.service            │       │      │       │                               │       │            │
│ /run/credentials/systemd-t │    0B │   0B │    0B │                               │ ramfs │ ramfs      │
│ mpfiles-setup-dev.service  │       │      │       │                               │       │            │
│ /run/credentials/systemd-t │    0B │   0B │    0B │                               │ ramfs │ ramfs      │
│ mpfiles-setup.service      │       │      │       │                               │       │            │
│ 20 special devices                                                                                              │
│ MOUNTED ON               │   SIZE │   USED │  AVAIL │              USE%             │ TYPE        │ FILESYSTEM  │
│ /dev                     │   1.9G │     0B │   1.9G │                               │ devtmpfs    │ udev        │
│ /dev/hugepages           │     0B │     0B │     0B │                               │ hugetlbfs   │ hugetlbfs   │
│ /dev/mqueue              │     0B │     0B │     0B │                               │ mqueue      │ mqueue      │
│ /dev/pts                 │     0B │     0B │     0B │                               │ devpts      │ devpts      │
│ /dev/shm                 │   1.9G │     0B │   1.9G │                               │ tmpfs       │ tmpfs       │
│ /proc                    │     0B │     0B │     0B │                               │ proc        │ proc        │
│ /proc/sys/fs/binfmt_misc │     0B │     0B │     0B │                               │ binfmt_misc │ binfmt_misc │
│ /proc/sys/fs/binfmt_misc │     0B │     0B │     0B │                               │ autofs      │ systemd-1   │
│ /run                     │ 391.5M │ 512.0K │ 391.0M │ [....................]   0.1% │ tmpfs       │ tmpfs       │
│ /run/lock                │   5.0M │     0B │   5.0M │                               │ tmpfs       │ tmpfs       │
│ /run/user/0              │ 391.5M │     0B │ 391.5M │                               │ tmpfs       │ tmpfs       │
│ /sys                     │     0B │     0B │     0B │                               │ sysfs       │ sysfs       │
│ /sys/fs/bpf              │     0B │     0B │     0B │                               │ bpf         │ bpf         │
│ /sys/fs/cgroup           │     0B │     0B │     0B │                               │ cgroup2     │ cgroup2     │
│ /sys/fs/fuse/connections │     0B │     0B │     0B │                               │ fusectl     │ fusectl     │
│ /sys/fs/pstore           │     0B │     0B │     0B │                               │ pstore      │ pstore      │
│ /sys/kernel/config       │     0B │     0B │     0B │                               │ configfs    │ configfs    │
│ /sys/kernel/debug        │     0B │     0B │     0B │                               │ debugfs     │ debugfs     │
│ /sys/kernel/security     │     0B │     0B │     0B │                               │ securityfs  │ securityfs  │
│ /sys/kernel/tracing      │     0B │     0B │     0B │                               │ tracefs     │ tracefs     │


bookmark_bordercPanel and DirectAdmin HW Upgraded


We’re happy to announce a performance upgrade to our cPanel and DirectAdmin shared and reseller hosting available in Frankfurt, DE,

The cPanel and DirectAdmin services are now powered by SSD-based storage with an AMD Ryzen 9 5950X CPU and faster DDR4 memory. Get ready to supercharge your websites and enjoy lightning-fast performance, unmatched reliability, and exceptional value.

Unleash the Power of AMD Ryzen 9 5950X:

Our new hosting plans in  Germany location are powered by the AMD Ryzen 9 5950X processor, a true powerhouse in the world of CPUs.  Its impressive clock speeds provide snappy response times, offering your visitors an optimal user experience and ensuring your websites run smoothly even during traffic spikes.

Blazing-Fast Shared Hosting:

Our SSD-powered AMD Ryzen 9 5950X shared hosting plans are perfect for individuals and small businesses looking for affordable yet high-performance hosting. Experience faster website loading, smoother navigation, and improved SEO rankings with our shared hosting.

Reseller Hosting with Unmatched Power:

If you’re a web professional or agency, our reseller hosting plans are designed with you in mind. Take advantage of the exceptional power of AMD Ryzen 9 5950X and the speed of SSDs to provide your clients with the best hosting experience. Create your hosting brand and offer high-performance solutions that set you apart.

Why Choose Our Hosting:

  • Unbeatable Performance: Our AMD Ryzen 9 5950X CPUs and SSD storage deliver industry-leading performance, ensuring your websites are always responsive.
  • Reliability: Count on us for rock-solid reliability and 99.9% uptime, backed by our expert support team.
  • Scalability: As your website grows, our hosting plans can scale with you. Start small and expand seamlessly.
  • User-Friendly Control Panel: Manage your websites effortlessly with cPanel and DirectAdmin, the industry-standard control panel loved by web professionals.
  • 24/7 Support: Our support team is available around the clock to assist you with any questions or issues you may encounter.

Upgrade Today, Experience the Difference:

Don’t miss out on the opportunity to elevate your web hosting experience. Whether you’re a blogger, small business owner, or web professional, our SSD-powered AMD Ryzen 9 5950X hosting plans are designed to meet your needs. Join us today and discover hosting that’s faster, more reliable, and more powerful than ever before.

To check out our cPanel AMD Ryzen 9 5950X powered SSD shared and reseller plans visit our website at

– cPanel shared hosting

– cPanel reseller hosting

– DirectAdmin shared hosting

– DirectAdmin reseller hosting

Stay tuned for further updates!

Follow us on CrownCloud BlogTwitter, and Facebook for updates regarding current offers and other updates.

bookmark_borderInstalling Bitwarden on Debian 12


In this week’s feature highlight, we look at How to Install Bitwarden on Debian 12

Bitwarden is a free and open-source password management service that stores sensitive information such as website credentials in an encrypted vault. The Bitwarden platform offers a variety of client applications including a web interface, desktop applications, browser extensions, mobile apps, and a command-line interface.

In this article, we are going to learn how to install Bitwarden on Debian 12. So, let’s get started.

Checkout the Bitwarden Project Here.

Try this wiki on our VPS. Starting at just $5/month with 24×7 In-house customer support.

Update the System

apt update 

apt upgrade 


  • A system with Debian 12 installed and running.
  • Min 2GB of RAM.
  • root access to the system.
  • Docker installed and running, for this, you can refer to one of our guides on installing Docker on the Debian Server.

Once you’re all set, we’ll proceed with Bitwarden installation and configuration.

Create a user for Bitwarden

Create a dedicated directory for its user:

mkdir /opt/bitwarden

Add the user:

adduser bitwarden

Permit created directory access to the added user:

chmod -R 700 /opt/bitwarden

chown -R bitwarden:bitwarden /opt/bitwarden

Finally, add the user created for Bitwarden to the Docker group so that it can run the docker command without having sudo or root user access.

usermod -aG docker bitwarden

Download and Install Bitwarden

Install curl command using below command,

apt install curl -y

For this, we will switch over to the new user account we created moments ago. Use the below command to change the user,

su - bitwarden

Download the Bitwarden install script from their official site and start the installation.

curl -Lso && chmod 700

./ install

The installation process will start now. It may take 5-10 mins to complete.

Complete the Instructions in the Installer

Enter your Bitwarden instance's domain name:

This value is usually the DNS record that has been set up.

Do you want to generate a free SSL certificate with Let's Encrypt? (y/n):

Enter y to use Let’s Encrypt to generate a trusted SSL certificate. Let’s Encrypt will ask you for an email address to send you expiration reminders.

Alternatively, If you have your SSL Certificate, enter n and select the option Do you have an SSL certificate to use? with y.

Fill in the following information about your installation:

For installing Bitwarden on your self-hosted server. You need to generate the installation id & installation key from the bitwarden website.

Enter the following installation ID:

For this, you will need to open their site Bitwarden Host. Enter your email address and you will be provided with an Installation ID and Key.

Enter the following installation key:

Now enter the Installation key that was provided to you.

After this, the Bitwarden installation should complete.

Environment Variables

The script does not configure all of Bitwarden’s functionalities. Edit the global.override.env environment file in ./bwdata/env/global.override.env to customize these values. At the very least, you should change the settings for:


Replace with your email id.

Now run the following commands

./ restart

./ start

./ rebuild 

After that Verify that all containers are running correctly

docker ps

Accessing Bitwarden

Now open the IP address from your browser, this will redirect you to the Bitwarden

Replace the with the actual IP or domain configured on the server.

For accessing the admin panel open the URL from your browser, this will redirect you to the Bitwarden Admin.

This is a passwordless entry. Make sure you have configured SMTP services properly. Replace the with the actual IP or domain configured on the server.

Follow the below steps:

Now you have successfully installed Bitwarden on Debian 12.

bookmark_borderInstalling Joomla on Debian 12


In this week’s feature highlight, we look at How to Install Joomla on Debian 12

Joomla is a free and open-source content management system for publishing web content on websites. Web content applications include discussion forums, photo galleries, e-Commerce, and user communities, and numerous other web-based applications.

Update the System to latest,

apt update

apt upgrade

LAMP Stack Configuration

Joomla like any other CMS application, will require a web server with Database running on the system to support it.

And since Joomla is built on PHP, we will need to install PHP as well.

Install Apache and PHP

We will now install Apache and PHP and other supporting packages by running the below command,

apt install apache2 libapache2-mod-php openssl php-imagick php-gd php-imap php-intl php-json php-ldap php-mbstring php-mysql php-pgsql php-smbclient php-ssh2 php-sqlite3 php-xml php-zip

Verify apache version using below command,

apache2 -version


root@server:~# apache2 -version
Server version: Apache/2.4.57 (Debian)
Server built:   2023-04-13T03:26:51

Now start and enable the Apache Web server,

systemctl start apache2 
systemctl enable apache2

Verify Apache is up and running using below command,

systemctl status apache2


root@server:~# systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; preset: enab>
     Active: active (running) since Sat 2023-06-17 14:18:37 EDT; 19s ago
   Main PID: 1227 (apache2)
      Tasks: 55 (limit: 2306)
     Memory: 21.6M
        CPU: 133ms
     CGroup: /system.slice/apache2.service
             ├─1227 /usr/sbin/apache2 -k start
             ├─1229 /usr/sbin/apache2 -k start
             └─1230 /usr/sbin/apache2 -k start

Jun 17 14:18:37 server systemd[1]: Starting apache2.service - The Apache HTTP S>
Jun 17 14:18:37 server systemd[1]: Started apache2.service - The Apache HTTP Se>

Open server IP address on your browser(http://Server_Ip) to see default Apache page.

Note: Replace Server_Ip with actual IP address of the server.

Verify PHP using below command

php -v  


  root@server:~# php -v
PHP 8.2.7 (cli) (built: Jun  9 2023 19:37:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Install MariaDB

Let us install MariaDB on the server now with the following command,

apt install mariadb-server

MariaDB is not secured by default, As a precaution, we are secure the database engine using below command.


Create a Joomla Database

Login to MariaDB using the command

mysql -u root -p

Let us configure the Database so Joomla can connect to it and store the data.

For this, we will create a Database, create a User and grant certain Privileges to the User. Refer the below commands for the usecase.


CREATE USER 'joomlauser'@'localhost' IDENTIFIED BY 'StrongPassword';



Replace the StrongPassword with a strong and secure password.

Download and Extract Joomla

We will now download the latest version of Joomla from the Official site.

Download Joomla in Debian using below command,


Once the download is complete. We need to unzip this to the /var/www/html/ directory. Make the directory called Joomla.

apt install unzip 

mkdir /var/www/html/joomla

Unzip the zipped Joomla file to ‘Joomla’ directory created above.

unzip -d /var/www/html/joomla

After unzip, Set the directory ownership of the directory to Apache user and change the permissions using below command,

chown -R www-data:www-data /var/www/html/joomla
chmod -R 755 /var/www/html/joomla

Restart Apache Web server using following command,

systemctl restart apache2 

Configuring Apache for Joomla

Configure the Apache webserver to serve Joomla webpages. For this create a virtual host’s file for Joomla and name it joomla.conf,

nano /etc/apache2/sites-available/joomla.conf

Add the following content into the file

<VirtualHost *:80>
 DocumentRoot /var/www/html/joomla/

 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

 <Directory /var/www/html/joomla/>
        Options FollowSymlinks
        AllowOverride All
        Require all granted

Save and exit the file,

Replace with your actual domain name.

Enable the virtual host file,

a2ensite joomla.conf
a2enmod rewrite

After this Restart Apache Webserver using below command,

systemctl restart apache2

Open your browser to load the site,

Install SSL Certificate

Let us install the SSL Certificate from Let’s Encrypt. For this, you will need to install certbot via snapd.

Installing snapd,

apt install snapd

Check the snapd for updates,

snap install core; snap refresh core

Install Certbot

snap install --classic certbot

ln -s /snap/bin/certbot /usr/bin/certbot

Since we’re using Apache web server, run the below command to get the certificate,

certbot --apache

The Certbot will take care of your renewal automatically before they expire, you would have to run the certbot again only if you make changes to your configuration. You can perform a test run with below command,

certbot renew --dry-run

Next, reload the page on the browser and it should then redirect and load the HTTPS site

Joomla Configuration

On the browser, we will configure the remaining aspects of getting our Joomla CMS up and running

Upon loading the domain, you will be prompted with setting up Language and Site Name


Enter the required details such as Username, User Account, Super User Password, and Email Address, and click on Setup Database Connection button


Enter the Database information that was configured earlier,


Enter the username and password which was set earlier,


View of the Dashboard after loggin in,


Done! This concludes the topic of installing latest version of Joomla on Debian 12.

bookmark_borderInstalling Gitlab On Debian 12


In this week’s feature highlight, we look at How to Install Gitlab On Debian 12

GitLab is a web-based DevOps lifecycle tool that provides a Git repository manager providing wiki, issue-tracking, and continuous integration and deployment pipeline features, using an open-source license, developed by GitLab Inc.

Update the system.

apt update

apt upgrade

Install required dependencies,

apt-get install curl ca-certificates apt-transport-https gnupg2 -y

Add Gitlab Repository using below command,

curl -s | bash

At the time of making this guide, the GitLab package is not available for Debian 11. You will need to edit the GitLab source file and replace the Debian 11 (Bullseye) code name with Debian 10 (Buster),

nano /etc/apt/sources.list.d/gitlab_gitlab-ce.list

Find the following lines,

deb booksworm main
deb-src booksworm main

Replaced them with the following lines.

deb bullseye main
deb-src bullseye main

Save and close the file and update the repository using the below command,

apt-get update 

Install GitLab CE

apt-get install gitlab-ce -y


root@server:~# apt-get install gitlab-ce -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,323 MB of archives.
After this operation, 3,164 MB of additional disk space will be used.
Get:1 bullseye/main amd64 gitlab-ce amd64 16.0.4-ce.                                                                                                       0 [1,323 MB]
Fetched 1,323 MB in 43s (30.7 MB/s)
Selecting previously unselected package gitlab-ce.
(Reading database ... 28668 files and directories currently installed.)
Preparing to unpack .../gitlab-ce_16.0.4-ce.0_amd64.deb ...
Unpacking gitlab-ce (16.0.4-ce.0) ...
Setting up gitlab-ce (16.0.4-ce.0) ...
It looks like GitLab has not been configured yet; skipping the upgrade script.

   *.                  *.
  ***                 ***
 *****               *****
.******             *******
********            ********

   _______ __  __          __
  / ____(_) /_/ /   ____ _/ /_
 / / __/ / __/ /   / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /

Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme

Help us improve the installation experience, let us know how we did with a 1 minute survey:

Configure GitLab

Once the installation is complete, we will configure the GitLab to our requirements. Below are the edits that can be done,

nano /etc/gitlab/gitlab.rb

Replace the following line with your domain name,

external_url 'https://Your_Domain_Name'

Replace/Edit the following lines to enable the Let’s Encrypt SSL,

# Enable the Let's encrypt SSL
letsencrypt['enable'] = true

# This is optional to get SSL related alerts
letsencrypt['contact_emails'] = ['']

# This example renews every 1st day at 01:00 AM
letsencrypt['auto_renew_hour'] = "1"
letsencrypt['auto_renew_minute'] = "0"
letsencrypt['auto_renew_day_of_month'] = "*/1"

Save and close the file.

Let us update the repository now with the below command,

gitlab-ctl reconfigure


   Recipe: registry::enable
  * runit_service[registry] action restart (up to date)
Recipe: nginx::enable
  * execute[reload nginx] action run
    - execute gitlab-ctl hup nginx
Recipe: letsencrypt::enable
  * ruby_block[display_le_message] action run
    - execute the ruby block display_le_message
Recipe: monitoring::grafana
  * runit_service[grafana] action restart (up to date)

Running handlers:
Running handlers complete
Chef Infra Client finished, 26/861 resources updated in 02 minutes 08 seconds

Let's Encrypt is enabled, but external_url is using http

gitlab Reconfigured!

Retrieve the GitLab password using following command,

cat /etc/git/initial_root_password


root@server:~# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#          If the password shown here doesn't work, you must reset the admin password following

Password: sfC7QoruHZwNUt/WCQtyDa0uFldUUV+vdGBlitq/Bww=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

Open a browser and type the following address and You will be redirected to the GitLab login page,

Replace Your_Domain_Name with Actual Domain name



bookmark_borderInstalling Rust on Debian 12


In this week’s feature highlight, we look at How to Install Rust on Debian 12

Rust is a multi-paradigm, general-purpose programming language that emphasizes performance, type safety, and concurrency. It enforces memory safety—ensuring that all references point to valid memory—without requiring the use of a garbage collector or reference counting present in other memory-safe languages.

Install Rust

Install the Rust using rustup command line tool,

Run the below command to install curl and then download the rustup command,

apt install curl -y

curl --proto '=https' --tlsv1.3 -sSf | sh


root@vps:~# curl --proto '=https' --tlsv1.3 -sSf | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:


This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory is located at:


This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:


This path will then be added to your PATH environment variable by
modifying the profile files located at:


You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:

   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu

Run the below command to add the Rust toolchain directory to the PATH environment variable,

source "$HOME/.cargo/env"

Verify the Installation

Verify the Rust installation by requesting the version,

rustc --version


root@vps:~# rustc --version
rustc 1.71.1 (eb26296b5 2023-08-03)

Installing a Compiler

First, update the Apt package index using below command,

apt update

apt upgrade 

Once the upgrades are complete, install the build-essential package using the below command,

apt install build-essential

Creating, Compiling, and Running a Test Program, Start by creating some directories to store the test script,

mkdir ~/rustprojects
cd ~/rustprojects
mkdir testdir
cd testdir

Create a file in testdir to store your Rust code,


Note: You need to use the .rs extension for all your Rust programs.

Add the following code into and save the file,

fn main() {
    println!("Congratulations! You have installed your Rust program and it works.");

Compile the code using the rustc command,


Run the resulting executable,



root@vps:~/rustprojects/testdir# ./test
Congratulations! You have installed your Rust program and it works.

Use the below command to update the rustup,

rustup update


root@vps:~/rustprojects/testdir# rustup update

info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: checking for self-update

  stable-x86_64-unknown-linux-gnu unchanged - rustc 1.71.1 (eb26296b5 2023-08-03)

info: cleaning up downloads & tmp directories

Done, you’ve installed and tested out Rust on Debian 12.

bookmark_borderInstalling WordPress with LAMP Stack on Debian 12


In this week’s feature highlight, we look at How to Install WordPress with LAMP Stack on Debian 12

WordPress is one of the most popular website-building tools available out there. It is a simple way to get your online presence and perfect for those who do not know how to code and want a simple and effective way to share and build your story on the internet.


Creating Database

Setup the database so the WordPress can store in all the information. Log in to MariaDB as root user.

In this, we will create a Database, User and provide all kinds of privileges of managing the specific database to the user.

mysql -u root -p


root@vps:~# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15

Now, create your WordPress database. We’re creating it with wp_database as an example, but you can name it related to the website you’re going to host.

CREATE DATABASE wp_database;


MariaDB [(none)]> CREATE DATABASE wp_database;
Query OK, 1 row affected (0.00 sec)    

Create a regular user for WordPress.

CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'StrongPassword';

Replace StrongPassword with an actual strong password.


MariaDB [(none)]> CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

Finally, grant the new user all the privileges for the database wp_database.

GRANT ALL ON `wp_database`.* TO `wpuser`@`localhost`;


MariaDB [(none)]> GRANT ALL ON `wp_database`.* TO `wpuser`@`localhost`;
Query OK, 0 rows affected (0.00 sec)

Flush your privileges and exit.



Query OK, 0 rows affected (0.00 sec)

Download And Unzip WordPress

Visit the official WordPress site to get to know the latest version available for download and also for more information on requirements of the server.

You can also use the below URL link to download the latest version at any given time.

cd /tmp

Unzip the downloaded WordPress file.

tar xpf latest.tar.gz

The resulting folder will be wordpress. It contains the entire WordPress install. How and where you copy it is entirely up to you and depends on your web server configuration

mkdir /var/www/wordpress

cp -R wordpress/* /var/www/wordpress/

Ofcourse, you can create the directory with the name of your choice or the name of the website.

Change the permissions and ownership to improve security and grant your webserver proper access.

chown -R www-data:www-data /var/www/wordpress

find /var/www/wordpress -type d -exec chmod 755 {} \;

find /var/www/wordpress -type f -exec chmod 644 {} \;

Create a Apache vHost

Using your favourite editor, we will create a config file in /etc/apache2/sites-available.

The config file can be the name of the website but it has to end with a .conf file extension.

We’re using nano for adding the configuration :

nano /etc/apache2/sites-available/wordpress.conf

Add in the below contents:

<VirtualHost *:80>
    # ServerAlias
    DocumentRoot /var/www/wordpress

    <Directory /var/www/wordpress>
        Options -Indexes +FollowSymLinks
        AllowOverride All

    ErrorLog ${APACHE_LOG_DIR}/wordpress-error.log
    CustomLog ${APACHE_LOG_DIR}/wordpress-access.log combined

Replace with your actual domain name.

Next, we’ll have to create a symbolic link, so the config file is available in sites-enabled as well.

ln -s /etc/apache2/sites-available/wordpress.conf /etc/apache2/sites-enabled/

Enable the new configuration,

a2ensite wordpress.conf

Test the configuration for any typos and syntax errors,

apachectl configtest

Once you get Syntax OK, restart apache web server for the changes to go live.

systemctl restart apache2

Open up a web browser and navigate to the domain name,


Start a WordPress installation by clicking on the Run the installation button.


Provide the requested information.


Once WordPress has been installed log in with your new user credentials.


This concludes our topic of setting up WordPress with LAMP stack on a Debian 12 system.

bookmark_borderHow to Install Matomo with LAMP Stack on Debian 12


In this week’s feature highlight, we look at How to Install Matomo with LAMP Stack on Debian 12

Matomo, formerly Piwik, is a free and open-source web analytics application developed by a team of international developers, that runs on a PHP/MySQL webserver. It tracks online visits to one or more websites and displays reports on these visits for analysis. In this article, we are going to learn how to install Matomo on Ubuntu 22.04. So, let’s get started.

Checkout the Matomo Project Here.

Try this wiki on our VPS. Starting at just $5/month with 24×7 In-house customer support.

Pre-requisites :

  • A system with Debian 12 installed and running.
  • root access to the system.
  • LAMP Stack installed and running, for this, you can refer to one of our guides on installing the LAMP Stack (Apache, MariaDB, and PHP).

Once you’re all set, we’ll proceed with Matomo installation and configuration.

Create Database

Let us begin with creating a Database and a user. We will then grant the required privileges to the user so it can interact with the Database.

mysql -u root



GRANT ALL PRIVILEGES ON matomo_db.* TO 'matomo_user'@'localhost';



The above commands will give complete access to the user matomo_user. Replace YOUR-PASSWORD-HERE with a safe and secure password.

Install Let’s Encrypt SSL Certificate

Let’s issue an SSL certificate for the domain for this we will need a snap package for Debian operating system.

We will update and install the snap package on the system:

apt update

apt install -y snapd

snap install core && sudo snap refresh core

Next, with the help of snap, we will install the certbot client which is used to create Let’s Encrypt certificates:

snap install --classic certbot

ln -s /snap/bin/certbot /usr/bin/certbot

Install SSL Certificate

Use the certbot command to issue a Let’s Encrypt certificate. The command will auto-detect the domains available or configured in the vHost configuration:

certbot --apache

Download Matomo

Download Matomo from official website : Click here.

Install the unzip package by following command

apt install unzip

cd /var/www/

wget && unzip


cd matomo

mkdir tmp

Setting up File Permissions

Let’s make the folders readable.

chown -R www-data:www-data /var/www/matomo

chmod -R 755 /var/www/matomo

Configuring Apache vHost

Create a new apache configuration file for the domain with the following command:

vi /etc/apache2/sites-available/

Add the following codes:

<VirtualHost *:80>

DocumentRoot /var/www/matomo

ErrorLog ${APACHE_LOG_DIR}/dev.domainhere.info_error.log
CustomLog ${APACHE_LOG_DIR}/dev.domainhere.info_access.log combined

<Directory /var/www/matomo/>
Options FollowSymlinks
AllowOverride All
Require all granted


Change with your actual Domain Name.

Now, press the Esc key, and type :wq! and press the Enter key to save and exit the file.

Edit the PHP config filephp.ini using nano or vi,

nano /etc/php/8.1/apache2/php.ini

Add the following lines at the end of the file,

Save and exit the file.

Disable the defafult configuration and enable the new site configuration using the following command,

a2dissite 000-default.conf


Now Restart the Apache service and check the status,

systemctl restart apache2

systemctl status apache2

Enable Firewall:

ufw allow 80/tcp

ufw allow 443/tcp

Configuring Matomo

Now open the URL from your browser, this will redirect you to configuring the final parts of the Matomo installation.

Replace the with the actual IP or domain configured on the server.

Input the Database details which was configured earlier. Follow the below steps:


Now you have successfully installed Matomo with LAMP Stack on Debian 12.

bookmark_borderHow to Install Docker On Debian 12


In this week’s feature highlight, we look at How to Install Docker On Debian 12

What is docker?

Docker is basically a container engine that uses the Linux Kernel in order to create containers on top of an operating system. Which is used to create, deploy and run the applications.

Install Docker

Install the docker using the apt package manager.

apt install docker-compose

Start and enable the docker

systemctl enable --now docker

Check Docker service

systemctl status docker


root@vps:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; preset: enabl>
     Active: active (running) since Tue 2023-06-13 16:20:51 UTC; 20s ago
TriggeredBy: ● docker.socket
   Main PID: 5345 (dockerd)
      Tasks: 8
     Memory: 28.0M
        CPU: 930ms
     CGroup: /system.slice/docker.service
             └─5345 /usr/sbin/dockerd -H fd:// --containerd=/run/containerd/con>

Create a group called docker,

groupadd docker

To add a user to the docker user group

usermod -aG docker $USER

If you want to add a different user, replace $USER with an existing username.

Check the docker version,

docker --version


root@vps:~# docker --version
Docker version 20.10.24+dfsg1, build 297e128

Test docker using the hello-world container.

docker run hello-world


root@vps:~# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:

For more examples and ideas, visit: