<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Alex Georgiev</title>
    <description>The latest articles on DEV Community by Alex Georgiev (@alexgeorgiev17).</description>
    <link>https://dev.to/alexgeorgiev17</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F374570%2F7cadeb54-a2f5-4d1a-a70f-be3583e3937c.jpg</url>
      <title>DEV Community: Alex Georgiev</title>
      <link>https://dev.to/alexgeorgiev17</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexgeorgiev17"/>
    <language>en</language>
    <item>
      <title>What is your daily routine?</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Mon, 10 May 2021 13:32:47 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/what-is-your-daily-routine-44f2</link>
      <guid>https://dev.to/alexgeorgiev17/what-is-your-daily-routine-44f2</guid>
      <description>&lt;p&gt;I would like to hear what is everyone doing during WFH (Working from Home). Have you established some goals for each day, for example, to exercise or to read a book, take small breaks each hour?&lt;/p&gt;

&lt;p&gt;Do you have a to-do list that you follow each day of the week or you just try to stay productive but do not follow a routine?&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>discuss</category>
      <category>devops</category>
    </item>
    <item>
      <title>What is your daily routine?</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Fri, 07 May 2021 07:52:42 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/what-is-your-daily-routine-3g9i</link>
      <guid>https://dev.to/alexgeorgiev17/what-is-your-daily-routine-3g9i</guid>
      <description>&lt;p&gt;I would like to hear what is everyone doing during WFH (Working from Home). Have you established some goals for each day, for example, to exercise or to read a book, take small breaks each hour.&lt;/p&gt;

&lt;p&gt;Do you have a to-do list that you follow each day of the week or you just try to stay productive but do not follow a routine?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How do you stay productive?</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Fri, 30 Apr 2021 05:25:51 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/how-do-you-stay-productive-40nk</link>
      <guid>https://dev.to/alexgeorgiev17/how-do-you-stay-productive-40nk</guid>
      <description>&lt;p&gt;I'm sure everyone had one of those days when you're just not up for any tasks that and you just want to relax all day and do nothing. This can easily turn into a habit so it's really important to find a way to stay productive especially in the situation of working from home.&lt;/p&gt;

&lt;p&gt;What I try to do in the morning in order to stay productive is to make a coffee, do a little workout (it's more like stretching exercises), create a to-do list with the things I need to complete for the day and last but not least I try to ignore all social media until noon (courtesy to &lt;a class="mentioned-user" href="https://dev.to/bobbyiliev"&gt;@bobbyiliev&lt;/a&gt;
 for this one.)&lt;/p&gt;

&lt;p&gt;I'm curious what else you do in order to stay sharp and focused on your daily tasks. Please feel free to share your tips in the comments!&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>productivity</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Which Linux distro do you use?</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Tue, 20 Apr 2021 10:48:13 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/which-linux-distro-do-you-use-5coi</link>
      <guid>https://dev.to/alexgeorgiev17/which-linux-distro-do-you-use-5coi</guid>
      <description>&lt;p&gt;Hello everyone!&lt;/p&gt;

&lt;p&gt;A few weeks ago I've created a blog post and asked if you use Linux and why. Following this one, I would like to use you which is the Linux distro that you use and why you've chosen it. Also, feel free to share your experience and what other distros you've used along the way before choosing your current distro.&lt;/p&gt;

&lt;p&gt;For me, it was Linux Mint for my work PC. This was my first Linux experience. I've bought a laptop that came with OpenSUSE and I've used it for some time, but then I've upgraded to a dual boot setup with Ubuntu 16.04. Now I'm using Ubuntu 20.04 with KDE and CentOS 7 for my servers.&lt;/p&gt;

&lt;p&gt;I'm curious to hear what you're using and what was your journey as well!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>What are the first things you do on a brand new laptop or PC?</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Mon, 12 Apr 2021 11:07:58 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/what-are-the-first-things-you-do-on-a-brand-new-laptop-or-pc-3c62</link>
      <guid>https://dev.to/alexgeorgiev17/what-are-the-first-things-you-do-on-a-brand-new-laptop-or-pc-3c62</guid>
      <description>&lt;p&gt;Hello all,&lt;/p&gt;

&lt;p&gt;I would like to know what are the first steps you take on a brand new laptop or PC. I personally use Linux, macOS and Windows so the process is always different. I also try to help my family and friends when they buy a new laptop and set it up for them. &lt;/p&gt;

&lt;p&gt;I'm curious to hear what you do on your new laptops or gaming/work PCs and what you'll perform on a friend or family member laptop as well.&lt;/p&gt;

&lt;p&gt;I'll be glad to hear what are the first things you do on your:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work/Productive Laptops / PC / Raspberry PIs / Intel NUC, etc&lt;/li&gt;
&lt;li&gt;Entertainment Setups - This can be a Laptop or Gaming Station&lt;/li&gt;
&lt;li&gt;What you do on a laptop for a family member or a friend to ensure they will have everything they need for a daily use.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>watercooler</category>
      <category>discuss</category>
      <category>productivity</category>
      <category>devops</category>
    </item>
    <item>
      <title>Monitor disk space usage with BASH</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Mon, 05 Apr 2021 09:05:55 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/monitor-disk-space-usage-with-bash-4mbk</link>
      <guid>https://dev.to/alexgeorgiev17/monitor-disk-space-usage-with-bash-4mbk</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you've ever had to deal with a Linux server that was out of disk space at some point you know that it's important not to run into the same situation again. In most cases, the server can run out of disk space due to huge session files or even an error log file growing up to hundreds of Gigabytes. &lt;/p&gt;

&lt;p&gt;However, sometimes you might get the famous "No space left on device" error message without knowing what is taking the disk space. With few simple BASH commands, you can quickly check which folders and files are the most disk space consuming on your system&lt;/p&gt;

&lt;h2&gt;
  
  
  Script summary
&lt;/h2&gt;

&lt;p&gt;The first step you can perform if you experience this issue is the check the disk space usage on your server using &lt;code&gt;df&lt;/code&gt;. The command displays the amount of disk space available on the file system containing each file name argument.&lt;/p&gt;

&lt;p&gt;The get an idea of what the output of the command is here is an example. We will also add the &lt;code&gt;-h&lt;/code&gt; argument or --human-readable to get a more nice output of the command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;df&lt;/span&gt; &lt;span class="nt"&gt;-h&lt;/span&gt;
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        2.0G     0  2.0G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G  209M  1.8G  11% /run
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/xvda        30G   12G   16G  43% /
tmpfs           400M     0  400M   0% /run/user/0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see the disk space usage is totally fine and we're far away from running into issues for the moment. However, this can quickly change if we do a large backup of our application or website or as already mentioned the session folder grows dramatically or if we simply modify our code and this triggers an error which then gets logged and then the &lt;code&gt;error_log&lt;/code&gt; can grow pretty quickly as well.&lt;/p&gt;

&lt;p&gt;With the &lt;code&gt;df&lt;/code&gt; command we can quickly check if the disk space was exceeded on the &lt;code&gt;/&lt;/code&gt; partition or for example if &lt;code&gt;/tmp&lt;/code&gt; or &lt;code&gt;/var&lt;/code&gt; are separate partitions the disk space can be exceeded there if the assigned amount of disk space was not sufficient or if simply some of the bad scenarios we've already mentioned had happened.&lt;/p&gt;

&lt;p&gt;Another useful command we can use to locate file space usage is &lt;code&gt;du&lt;/code&gt;. You can quickly check which are the most disk space consuming directories on your server. An example command will be the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;du -ch --max-depth=2 / 2&amp;gt;/dev/null | sort -rh | head -15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where: &lt;code&gt;-c&lt;/code&gt; will produce a grand total of the disk usage, &lt;code&gt;-h&lt;/code&gt; is again for human-readable output.&lt;/p&gt;

&lt;p&gt;Where: &lt;code&gt;-h&lt;/code&gt; is for human-readable output. &lt;/p&gt;

&lt;p&gt;We also apply the &lt;code&gt;-max-depth&lt;/code&gt; level to specify that we want our command to check the disk usage at certain levels below starting point which in this case will be the &lt;code&gt;/&lt;/code&gt; partition.&lt;/p&gt;

&lt;p&gt;We then specify that we want to perform the check on the &lt;code&gt;/&lt;/code&gt; directory and we also want to filter any errors using &lt;code&gt;2&amp;gt;/dev/null&lt;/code&gt; so that they will not be output to your console.&lt;/p&gt;

&lt;p&gt;The last bit we want to is to sort (&lt;code&gt;-h&lt;/code&gt; is for human-readable output and the &lt;code&gt;-r&lt;/code&gt; argument is to simply reverse the result of comparisons) the output and list the first 15 rows of the output.&lt;/p&gt;

&lt;p&gt;At last, we simply want to display the first 15 rows of the output with the &lt;code&gt;head&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;An example output of the command will be&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;du -ch --max-depth=2 / 2&amp;gt;/dev/null | sort -rh | head -15
14G     total
14G     /
4.7G    /usr
4.3G    /var
2.2G    /usr/local
1.3G    /var/lib
1.3G    /root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In order to find the largest in size files in our system, we will use the &lt;code&gt;find&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find&lt;/code&gt; can be pretty harsh sometimes and can cause issues with exceeding the memory on your server and because of this, we would like to use the &lt;code&gt;nice&lt;/code&gt; command as well in order to make sure everything will go smoothly. In short words, you will use nice in order to run a program with modified scheduling priority. Niceness values range from -20 (most favourable to the process)  to  19  (least favourable to the process).&lt;/p&gt;

&lt;p&gt;We can also use &lt;code&gt;ionice&lt;/code&gt; instead of &lt;code&gt;nice&lt;/code&gt; in order to set a different type of priority. This program sets or gets the I/O scheduling class and priority for a program.&lt;/p&gt;

&lt;p&gt;Then with a simple find command, we search for files that are larger than 100MB and we also estimate the file space usage&lt;/p&gt;

&lt;p&gt;An example commands are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nice -n 19 find / ! -path "/proc/*" -type f -size +100M -exec du -hs {} \; | sort -hr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ionice -n 3 -c 3 2&amp;gt;/dev/null find / ! -path "/proc/*" -type f -size +100M -exec du -hs {} \; | sort -hr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The script
&lt;/h2&gt;

&lt;p&gt;Now we want to combine the commands in a simple bash script instead of running them as standalone one-liners and of course we can modify the whole script in one big one-liner script but I think this is totally up to you if you want to execute the same one-liner again and perhaps save it in your .bashrc and use it with an alias or practise your BASH and put the commands in a simple script.&lt;/p&gt;

&lt;p&gt;We can print the date at the beginning of the script for visibility (you can also make the script run a cron job and also send you an email once a week with the disk space usage or set a trigger if the usage is more than 90%) and also clear the screen in order to get a more nice output however these are not a must. We can also define the path for the scan in a variable just to practice this, although the script becomes larger so you can simply put the path as "/"  and not save it in a variable.&lt;/p&gt;

&lt;p&gt;The final script will look like that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
## Define the path for the scans
DIR_TO_CHECK='/'

clear
date
printf "======================================================\n"
# Get a report for the file system usage
df -h
printf "======================================================\n"
printf "LARGEST DIRECTORIES\n"
printf "\n"
# Get a report for the most disk space consuming directories in the / partition 
du -ch --max-depth=2 ${DIR_TO_CHECK} 2&amp;gt;/dev/null | sort -rh | head -15
printf "======================================================\n"
printf "LARGEST FILES\n"
printf "\n"
# Get a list for all files larger than 100MB in the / partition
ionice -n 3 -c 3 2&amp;gt;/dev/null find ${DIR_TO_CHECK} ! -path "/proc/*" -type f -size +100M -exec du -hs {} \; | sort -hr
printf "=======================================================\n"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With few simple commands, you can create a really useful script to check the largest files and directories on your server. I personally use the two commands in bash aliases and whenever I need to check which files are taking most of the disk space I execute them separately, but you may find it useful to have them in a bash script or in a one-liner script.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;clear ; printf "LARGEST DIRECTORIES\n"; printf "\n"; du -ah --max-depth=2 / 2&amp;gt;/dev/null | sort -rh | head -20 | grep [0-9]G; printf "\n"; printf "LARGEST FILES\n" ; ionice -n 3 -c 3 2&amp;gt;/dev/null find / ! -path "/proc/*" -type f -size +100M -exec du -hs {} \; | sort -hr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also check the man pages for the commands we used in our script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;man df
man du
man find
man sort
man head
man ionice
man grep
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is pretty much how you can quickly find the most disk space consuming directories and files on your server or computer. The script and the commands can be easily modified and people with longer BASH experience can make them look even better, so any thoughts on this are more than welcome.&lt;/p&gt;

&lt;p&gt;Please feel free to share if you also use basic scripts to monitor the disk space usage on your servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If you've enjoyed reading this post or learned something new and would like to support me to publish more content like this one you can support me with buying me a coffee:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/ageorgiev" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fdefault-orange.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>monitoring</category>
      <category>devops</category>
    </item>
    <item>
      <title>Top 10 Git GUI clients</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Mon, 29 Mar 2021 09:28:39 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/top-10-git-gui-client-23ln</link>
      <guid>https://dev.to/alexgeorgiev17/top-10-git-gui-client-23ln</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;A lot of people prefer to use the command line when it comes to Git, but using a GUI can bring up some advantages and perhaps makes your work easier along the way. I personally use both the command line and GUI as I can see that both have some pros. My personal choice for a GUI is simply using Visual Studio Code with &lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens" rel="noopener noreferrer"&gt;GitLens&lt;/a&gt; and &lt;a href="https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph" rel="noopener noreferrer"&gt;Git Graph&lt;/a&gt; where I can have a better view of the changes I've made.&lt;/p&gt;

&lt;p&gt;I've personally used some of the listed GUI clients and the following list is not based on how good these clients are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Most commonly used Git GUI Clients
&lt;/h2&gt;

&lt;p&gt;1 . &lt;strong&gt;Visual Studio Code&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2F71187801-14e60a80-2280-11ea-94c9-e56576f76baf1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2F71187801-14e60a80-2280-11ea-94c9-e56576f76baf1.png" alt="71187801-14e60a80-2280-11ea-94c9-e56576f76baf.png"&gt;&lt;/a&gt;&lt;br&gt;
Visual Studio Code has integrated source control management (SCM) and includes Git support in-the-box. Many other source control providers are available through extensions on the VS Code Marketplace. It also has support for handling multiple Source Control providers simultaneously so you can open all of your projects at the same time and make changes whenever this is needed. I personally find this really handy.&lt;/p&gt;

&lt;p&gt;I've also had a separate blog post on using VS Studio Code for version control which you can check here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/alexgeorgiev17/remote-development-in-visual-studio-code-4i4b"&gt;Version control with Visual Studio Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://code.visualstudio.com" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . &lt;strong&gt;Fork&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Ffork-logo2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Ffork-logo2.png" alt="fork-logo2.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fork is a friendly git client for both Mac and Windows. It can list repository, branches, origins, tags and stashes. The client can help you to resolve your merge-conflicts easily using the merge-conflict helper and built-in merge-conflict resolver. You can manage your repositories without leaving the application and organize the repositories into categories. With the blame view, you can find the last commit which changed a particular file line.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://git-fork.com" rel="noopener noreferrer"&gt;Fork&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . &lt;strong&gt;Sourcetree&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fdownload.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fdownload.png" alt="download.png"&gt;&lt;/a&gt;&lt;br&gt;
Sourcetree is a free Git client for Windows and Mac.&lt;br&gt;
It simplifies how you interact with your Git repositories so you can focus on coding. Visualize and manage your repositories through Sourcetree's simple Git GUI.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://www.sourcetreeapp.com" rel="noopener noreferrer"&gt;Sourcetree&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 . &lt;strong&gt;GitKraken&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fgitkraken-logo-dark-hz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fgitkraken-logo-dark-hz.png" alt="gitkraken-logo-dark-hz.png"&gt;&lt;/a&gt;&lt;br&gt;
GitKraken is a Git GUI client for Windows, Mac &amp;amp; Linux. It's one of the best Git GUI clients and the UI comes with themes support, the built-in code editor and the general interaction with the client is simply amazing.  It comes with Free, Pro and Enterprise versions that have different features enabled. I will definitely recommend you to check it out and give it a try!&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://www.gitkraken.com" rel="noopener noreferrer"&gt;GitKraken&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5 . &lt;strong&gt;SmartGit&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fsmart-git.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fsmart-git.png" alt="smart-git.png"&gt;&lt;/a&gt;&lt;br&gt;
SmartGit is a graphical Git client with support for GitHub, Bitbucket and GitLab. SmartGit runs on Windows, macOS and Linux. SmartGit includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;command-line Git client (Windows, macOS)&lt;/li&gt;
&lt;li&gt;Graphical Merge and Commit History&lt;/li&gt;
&lt;li&gt;Git-Flow&lt;/li&gt;
&lt;li&gt;SSH-client&lt;/li&gt;
&lt;li&gt;File Compare&lt;/li&gt;
&lt;li&gt;File Merge ("Conflict Solver")&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SmartGit is free to download but it also has paid version which gives you premium features. You can check more in their website.&lt;br&gt;
Site: &lt;a href="https://www.syntevo.com/smartgit/download" rel="noopener noreferrer"&gt;SmartGit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6 . &lt;strong&gt;GitHub Desktop&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fgit-desktop.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fgit-desktop.png" alt="git-desktop.png"&gt;&lt;/a&gt;&lt;br&gt;
Whether you're new to Git or a seasoned user, GitHub Desktop simplifies your development workflow. GitHub Desktop supports syntax highlighting when viewing diffs for a variety of different languages. You can easily compare changed images. See the before and after, swipe or fade between the two, or look at just the changed parts. You can also open your favourite editor or shell from the app, or jump back to GitHub Desktop from your shell. GitHub Desktop is your springboard for work.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://desktop.github.com" rel="noopener noreferrer"&gt;GitHub Desktop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7 . &lt;strong&gt;Tortoise Git&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2F1200px-tortoisegit-logosvg1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2F1200px-tortoisegit-logosvg1.png" alt="1200px-TortoiseGit_logo.svg.png"&gt;&lt;/a&gt;&lt;br&gt;
TortoiseGit is a Windows Shell Interface to Git and based on TortoiseSVN. It's open-source and can fully build with freely available software. Since it's not an integration for a specific IDE like Visual Studio or others, you can use it with whatever development tools you like, and with any type of file.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://tortoisegit.org" rel="noopener noreferrer"&gt;Tortoise Git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8 . &lt;strong&gt;Aurees&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Faurees.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Faurees.png" alt="aurees.png"&gt;&lt;/a&gt;&lt;br&gt;
Aurees is a Git client for Windows, Mac and Linux. It is free to download and use, but you will need to log in to your GitHub account to use it. The commit changes are displayed in side by side windows like mot GUI clients, but its interface is really simple and you have a clear view of what changes have been made. You can also view who made a change and you can easily compare other documents and navigate through the repo pretty easily.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://aurees.com/" rel="noopener noreferrer"&gt;Aurees&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;9 . &lt;strong&gt;GitUp&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fgitup-logo_reflective.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fgitup-logo_reflective.png" alt="gitup-logo_reflective.png"&gt;&lt;/a&gt;&lt;br&gt;
GitUp is a Git GUI client for the Mac users. The software is open sorce which you can check in GitHub - &lt;a href="https://github.com/git-up/GitUp" rel="noopener noreferrer"&gt;GitUp&lt;/a&gt; and it's free to download.&lt;br&gt;
With GitUp, you get a truly efficient Git client for Mac:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A live and interactive repo graph (edit, reorder, fixup, merge commits…),&lt;/li&gt;
&lt;li&gt;Unlimited undo / redo of almost all operations (even rebases and merges),&lt;/li&gt;
&lt;li&gt;Time Machine like snapshots for 1-click rollbacks to previous repo states,&lt;/li&gt;
&lt;li&gt;Features that don’t even exist natively in Git like a visual commit splitter or a unified reflog browser,&lt;/li&gt;
&lt;li&gt;Instant search across the entire repo including diff contents,&lt;/li&gt;
&lt;li&gt;A ridiculously fast UI, often faster than the command line.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Site: &lt;a href="https://gitup.co/" rel="noopener noreferrer"&gt;GitUp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;10 . &lt;strong&gt;Git Cola&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fgit-cola.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fgit-cola.png" alt="git-cola.png"&gt;&lt;/a&gt;&lt;br&gt;
Git Cola is a powerful Git GUI with a slick and intuitive user interface. It also has support for Windows, Mac and Linux. It is open source and you can check the project on GitHub here - &lt;a href="https://github.com/git-cola/git-cola" rel="noopener noreferrer"&gt;Git Cola&lt;/a&gt; . The git-dag feature is a powerful Git history visualizer which can help you better review commits and branches.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://git-cola.github.io/index.html" rel="noopener noreferrer"&gt;Git Cola&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;When it comes to collaborative work using Git is a must. However not everyone can be that comfy using the command line and here's why the Git GUI clients come in place to make things easier to review, update and maintain. You can also use the features of certain GUI to structure and model how a commit and a PR should be made to your group project so everyone can contribute in the same way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If you've enjoyed reading this post or learned something new and would like to support me to publish more content like this one you can support me with buying me a coffee:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/ageorgiev" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fdefault-orange.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>github</category>
      <category>discuss</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Git aliases</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Tue, 23 Mar 2021 16:25:44 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/git-aliases-2jol</link>
      <guid>https://dev.to/alexgeorgiev17/git-aliases-2jol</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Everyone wants to work faster, easier and one way to achieve this is to simplify their daily tasks with simple scripts or with creating aliases to run long commands that they often forget or just tired of typing them over and over again.&lt;/p&gt;

&lt;p&gt;If you're not using any GUI for Git or using Visual Studio Code alongside Git you can definitely take advantage of the Git aliases to make things easier for you. If you want to learn how you can use Visual Studio Code with Git check out this article here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devdojo.com/alexg/version-control-with-visual-studio-code-1"&gt;Version control with Visual Studio Code&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create Git Aliases
&lt;/h2&gt;

&lt;p&gt;With Git you can create aliases to speed up your process and this is something really easy to configure.&lt;br&gt;
All you need to do is to put them in your &lt;code&gt;.gitconfig&lt;/code&gt; file and that's it. You can set aliases for the git commands you used the most as this is basically the general idea of using aliases, to speed up your workflow. I'll list the most commonly used commands and how to set aliases for them which you can also try out if you haven't done this yet.&lt;/p&gt;

&lt;p&gt;You can also put the aliases in your &lt;code&gt;~/.bash_profile&lt;/code&gt; or &lt;code&gt;~/.bashrc&lt;/code&gt; but I think it will be better to put them in the &lt;code&gt;.gitconfig&lt;/code&gt; since these are git specific aliases and it will be easier for you to manage them from the &lt;code&gt;.gitconfig&lt;/code&gt; file itself.&lt;/p&gt;

&lt;p&gt;As mentioned we need to edit our &lt;code&gt;.gitconfig&lt;/code&gt; file and enter the aliases there. You can open the file with your favourite text editor and put them in a new code block named &lt;code&gt;[alias]&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;code&gt;vim .gitconfig&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And create the following code block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[alias]
        st = status
        co = commit
        ch = checkout
        be = branch
        pom = push origin master
        plom = pull origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also define the aliases using the &lt;code&gt;git config&lt;/code&gt; command directly. In order to set the aliases we've listed above you can use the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global alias.st status
git config --global alias.co commit
git config --global alias.ch checkout
git config --global alias.br branch
git config --global alias.pom = push origin master
git config --global alias.plom = pull origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This is pretty much how you can set Git aliases via the &lt;code&gt;.gitconfig&lt;/code&gt; file or using the git config command. The process is pretty simple but the same as the BASH aliases it's really useful and you can easily speed up your daily Git tasks.&lt;/p&gt;

&lt;p&gt;I hope that you enjoyed reading this and find it useful as well. Also, feel free to share your Git Aliases or how you speed up your work when working with Git.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If you've enjoyed reading this post or learned something new and would like to support me to publish more content like this one you can support me with buying me a coffee:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/ageorgiev"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zQj764Ae--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>github</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How to install and use Maldet (Linux Malware Detect)</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Fri, 19 Mar 2021 17:47:07 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/how-to-install-and-use-maldet-linux-malware-detect-3km</link>
      <guid>https://dev.to/alexgeorgiev17/how-to-install-and-use-maldet-linux-malware-detect-3km</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;LMD or Linux Malware Detect is most commonly known under another name - Maldet which is a malware scanner for Linux. It is released under the GNU license.&lt;/p&gt;

&lt;p&gt;Maldet is really handy malware scanner because it's a database for malicious files detection is also designed to work in a shared hosting environment and can be easily implemented without the hassle of long and difficult SysAdmin work. It also has other really cool features which I'll try to cover in this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements / Prequisites
&lt;/h2&gt;

&lt;p&gt;Since this is a Linux Malware Detection software you will need to install it on a Linux server. You can run Maldet on basically every flavour or Linux. I've tested the functionality on CentOS and Ubuntu servers and I can confirm that it behaves pretty well on both. For my installation purposes in this article, I will install it on Ubuntu 20.04 server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;The installation is not done via any repositories but you download Maldet via tarball from the Maldet official website. The commands you will need for the installation and download are: &lt;code&gt;wget&lt;/code&gt; or &lt;code&gt;curl&lt;/code&gt; for the download and &lt;code&gt;tar&lt;/code&gt; to extract the downloaded tarball.&lt;/p&gt;

&lt;p&gt;To download the archive you can execute this command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wget http://www.rfxn.com/downloads/maldetect-current.tar.gz&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The output of the command will look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-download.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-download.png" alt="maldet-download.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To extract the tarball you can use the &lt;code&gt;tar&lt;/code&gt; command. The output of the command will look like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tar -xvf maldetect-current.tar.gz&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-extract.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-extract.png" alt="maldet-extract.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The current version is 1.6.4 but in the future, this is likely to change so you might need to access a different directory from the example below:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-location.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-location.png" alt="maldet-location.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we execute the installation script which is located in the maldet directory which we've just extracted from our tar ball:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-install.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-install.png" alt="maldet-install.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One additional step to take will be to install and configure ClamAV as the default scanner engine.&lt;/p&gt;

&lt;p&gt;To install ClamAV on your Ubuntu server you can use this command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; apt-get install clamav clamav-daemon&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then you can open the config file and enable the ClamAV clamscan binary, however this option should be enabled by default. However you can check it by opening the config file &lt;code&gt;/usr/local/maldetect/conf.maldet&lt;/code&gt; using your personal text editor and search for &lt;code&gt;scan_clamscan&lt;/code&gt; . To enable it to set it to 1:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;scan_clamscan="1"&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;p&gt;The location of the Maldet config file is:&lt;br&gt;
&lt;code&gt;/usr/local/maldetect/conf.maldet&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The file contains detailed comments and everything is basically self-explanatory. There is also a README file which I'll recommend you to check out:&lt;br&gt;
&lt;code&gt;/usr/local/maldetect/README&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The options that you can alter are:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;email_alert="0"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;email_addr="you@domain.com"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Where &lt;code&gt;email_alert&lt;/code&gt; can be set to &lt;code&gt;1&lt;/code&gt; for receiving email notifications on scans and also supply the email address that will receive the reports as well&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note: The quarantine options are the ones to take special care of because you can configure maldet to move infected/suspicious files from outside of their current directory to a quarantine directory which can prevent your website or application from working.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;For example, if the &lt;code&gt;index.php&lt;/code&gt; is infected with a &lt;code&gt;base64&lt;/code&gt; malicious script and the quarantine option is enabled, Maldet will move the file from the &lt;code&gt;public_html&lt;/code&gt; as instructed and will basically take down your website.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
[ QUARANTINE OPTIONS ]&lt;br&gt;
The default quarantine action for malware hits&lt;br&gt;
[0 = alert only, 1 = move to quarantine &amp;amp; alert]&lt;br&gt;
quarantine_hits="0"&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
Try to clean string based malware injections&lt;br&gt;
[NOTE: quarantine_hits=1 required]&lt;br&gt;
[0 = disabled, 1 = clean]&lt;br&gt;
quarantine_clean="0"&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
The default suspend action for users with hits&lt;br&gt;
Cpanel suspend or set shell /bin/false on non-Cpanel&lt;br&gt;
[NOTE: quarantine_hits=1 required]&lt;br&gt;
[0 = disabled, 1 = suspend account]&lt;br&gt;
quarantine_suspend_user="0"&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Please change the quarantine options with special care in order to prevent issues. Maldet can be really useful to monitor your system but also can cause issues for the general experience of the users on the server if there is a misconfiguration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;Maldet is really easy to use. I will recommend everyone to check the help page where you can see all the arguments you can use and also all the options and features.&lt;br&gt;
To check the help page you can execute:&lt;br&gt;
&lt;code&gt;maldet --help&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In order to scan a directory on your server you can use the -&lt;code&gt;a&lt;/code&gt; argument and to put the process in the background you can use the &lt;code&gt;b&lt;/code&gt; option since if the directory contains thousands of files the scan will take a while to complete.&lt;/p&gt;

&lt;p&gt;An example is a &lt;code&gt;maldet&lt;/code&gt; scan for a freshly installed WordPress which for version 5.7 containers 2189 files and it took 3 minutes to complete&lt;br&gt;
The scan was initiated using this command and the output is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maldet -b -a /home/site/wordpress/&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-scan.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-scan.png" alt="maldet-scan.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To monitor the scan in real-time you can use &lt;code&gt;tail&lt;/code&gt; to and monitor the &lt;code&gt;event_log&lt;/code&gt; in order to do that you can use this command:&lt;br&gt;
&lt;code&gt;tail -f /usr/local/maldetect/logs/event_log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and the output will look like this:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-log.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-log.png" alt="maldet-log.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the scan is completed you will see the following message at the bottom of the log:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Mar 19 16:32:54 maldet-install-on-ubuntu maldet(1849): {scan} scan of /home/site/wordpress/ (2189 files) in progress...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Mar 19 16:35:46 maldet-install-on-ubuntu maldet(1849): {scan} scan completed on /home/site/wordpress/: files 2189, malware hits 0, cleaned hits 0, time 172s&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Mar 19 16:35:46 maldet-install-on-ubuntu maldet(1849): {scan} scan report saved, to view run: maldet --report 210319-1632.1849&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;As you can see the report is done and you can view it you can run the command provided in the log:&lt;br&gt;
&lt;code&gt;maldet --report $SCANID&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note: Make sure to change $SCANID with the ID of the report provided in the log&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this case we will see the following output for default WordPress 5.7 clean installation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-result.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fmaldet-result.png" alt="maldet-result.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you wish to receive a copy of the scan on your email you can use the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maldet --report $SCANID user@domain.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Keep in mind that you can also navigate to the directory which you want to scan and just execute:&lt;br&gt;
&lt;code&gt;maldet -b -a .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I personally prefer to supply the full path of the directory to scan since it is not uncommon to receive messages like this one &lt;code&gt;maldet(1767): {scan} must use absolute path&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Usefull commands/options
&lt;/h2&gt;

&lt;p&gt;To scan a directory:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;madet -a /full/path/to/directory&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To process the scan in the background:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;madet -b -a /full/path/to/directory&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To receive an email of an existing/completed scan:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maldet --report $SCANID user@domain.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To monitor directory:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maldet --monitor /full/path/to/directory/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To monitor user/s:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maldet --monitor users&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note: Change users with the actual username of the user you want to monitor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To get list of all reports:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maldet -e list&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To update the installed version of Maldet:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maldet -d&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And my personal favourite as it has saved my ass so many times. To restore/move the files that have been quarantined from a scan with the quarantine option enabled.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maldet -s $SCANID&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I will also recommend you to check the README file as it contains useful information on how to use Maldet on your server and take full advantage of its features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I personally have used Maldet for several years now I can confirm that it is really useful under shared hosting and also you can provide detailed results of the scan with the detected files and why they're reported as malicious as well.&lt;/p&gt;

&lt;p&gt;You can tweak the configuration to monitor the users on your servers and take actions if this is needed without the need of manually logging and disabling users or moving/purging malicious files.&lt;/p&gt;

&lt;p&gt;I hope that you find this useful and feel free to share your thoughts and if you use other scanners t monitor your server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If you've enjoyed reading this post or learned something new and would like to support me to publish more content like this one you can support me with buying me a coffee:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/ageorgiev" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fdefault-orange.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>security</category>
      <category>systems</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>CentOS is gone, now what?</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Tue, 09 Mar 2021 10:08:38 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/centos-is-gone-now-what-5606</link>
      <guid>https://dev.to/alexgeorgiev17/centos-is-gone-now-what-5606</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;On December 8th, Red Hat announced that they will discontinue the CentOS project and move forward to CentOS Stream. This was announced on the CentOS blog and Red Hat website:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://blog.centos.org/2020/12/future-is-centos-stream/"&gt;https://blog.centos.org/2020/12/future-is-centos-stream/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.redhat.com/en/blog/centos-stream-building-innovative-future-enterprise-linux"&gt;https://www.redhat.com/en/blog/centos-stream-building-innovative-future-enterprise-linux&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;"The future of the CentOS Project is CentOS Stream, and over the next year we’ll be shifting focus from CentOS Linux, the rebuild of Red Hat Enterprise Linux (RHEL), to CentOS Stream, which tracks just ahead of a current RHEL release"&lt;/p&gt;

&lt;h2&gt;
  
  
  CentOS background
&lt;/h2&gt;

&lt;p&gt;Since CentOS is a Red Hat clone/fork and it's built from RHEL source code and it's also open-source making it publicly available to anyone. Many people chose CentOS since it's basically a free version of the RHEL making it stable enough to run their infrastructure on it, but just without the dedicated support. Approximately 19% of global web infrastructure uses CentOS.&lt;/p&gt;

&lt;p&gt;CentOS was a project initially started by Gregory Kurtzer and then developed with the help of the community. In 2014 RHEL and CentOS joined forces with RHEL funding CentOS. In January 2014, Red Hat announced that it would sponsor the CentOS project, "helping to establish a platform well-suited to the needs of open source developers that integrate technologies in and around the operating system and essentially taking control over on its governing board.&lt;/p&gt;

&lt;p&gt;However, this is not all the bad news. Red Hat also announced that CentOS 8 EOL (end of life) is pushed back from 2029 to the end of 2021. This is one of the most disturbing news since a lot of people have already migrated their servers to CentOS 8 since it was supposed to be around till 2029 and CentOS 7 till 2024.&lt;/p&gt;

&lt;p&gt;On July 9th 2019 IBM and Red Hat announced today that they have closed the transaction under which IBM acquired all of the issued and outstanding common shares of Red Hat for $190.00 per share in cash, representing a total equity value of approximately $34 billion.&lt;/p&gt;

&lt;h2&gt;
  
  
  The game is changing for everyone
&lt;/h2&gt;

&lt;p&gt;We should also mention that cPanel was not notified as well, the news was dropped out without no one expecting this. Almost every hosting provider offers cPanel hosting since it's one of the best known and recognizable control panels in existing. At the moment cPanel can run on CloudLinux, RHEL and CentOS.&lt;br&gt;
With the news dropped, cPanel announces that they are accelerating support on Ubuntu LTS and expect to deliver production-ready in 2021. You can find more information here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.cpanel.com/centos-8-end-of-life-announcement/"&gt;https://blog.cpanel.com/centos-8-end-of-life-announcement/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now I should say that I always wanted to run cPanel on Ubuntu server just so I can have an alternative of running it only on CentOS for free, however, this is for sure forced and it may come with a lot of issues along the road.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should we panic now?
&lt;/h2&gt;

&lt;p&gt;Unfortunately, if you've already migrated your server to CentOS 8 you'll need to migrate your content one more time by the end of this year. Red Hat also put this message along with the news:&lt;/p&gt;

&lt;p&gt;"When CentOS Linux 8 (the rebuild of RHEL8) ends, your best option will be to migrate to CentOS Stream 8, which is a small delta from CentOS Linux 8 and has regular updates like traditional CentOS Linux releases. If you are using CentOS Linux 8 in a production environment, and are concerned that CentOS Stream will not meet your needs, we encourage you to contact Red Hat about options."&lt;/p&gt;

&lt;p&gt;There is a migration script in place that will move your data from CentOS to CentOS Stream or RHEL. You can find more information here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://access.redhat.com/articles/2360841"&gt;https://access.redhat.com/articles/2360841&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, a lot of people will move to either Ubuntu or Debian just because they now simply do not trust Red Hat. I believe that everyone should make their apps/sites and infrastructure in general ready to be switched to another OS in case this is needed. Having a backup plan can make the transition a lot smoother and will reduce the amount of work and the time you'll need to put into when/if this is ever needed.&lt;/p&gt;

&lt;p&gt;There is also an online petition not to shut down the CentOS project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.change.org/p/centos-governing-board-do-not-destroy-centos-by-using-it-as-a-rhel-upstream"&gt;https://www.change.org/p/centos-governing-board-do-not-destroy-centos-by-using-it-as-a-rhel-upstream&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rocky Linux
&lt;/h2&gt;

&lt;p&gt;When the news was dropped perhaps, Gregory Kurtzer was really affected by the news since the CentOS project was initially created by him. He announced that he will work on a new project called Rocky Linux.&lt;/p&gt;

&lt;p&gt;Rocky Linux is a community enterprise operating system designed to be 100% bug-for-bug compatible with America's top enterprise Linux distribution now that its downstream partner has shifted direction. It is under intensive development by the community. Rocky Linux is led by Gregory Kurtzer, founder of the CentOS project. The current ETA for the initial release is March 31. Rocky Linux aims to function as a downstream build as CentOS had done previously, building releases after they have been added by the upstream vendor, not before.&lt;/p&gt;

&lt;p&gt;Everyone is looking forward to seeing the launch of the project and hopefully, it will be a good alternative for everyone that is looking forward to it.&lt;/p&gt;

&lt;p&gt;You can also check the following podcast posted on DEV by: @changelog&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://dev.to/changelog/the-rise-of-rocky-linux"&gt;https://dev.to/changelog/the-rise-of-rocky-linux&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Discussion
&lt;/h1&gt;

&lt;p&gt;I would like to know if you're using CentOS and what are you going to do now? &lt;/p&gt;

&lt;p&gt;Have you already migrated to CentOS 8 and what platform you're planning to migrate to since the EOL is cut back to 2021?&lt;/p&gt;

&lt;p&gt;Are you going to migrate your existing CentOS 7 servers long before the EOL which is 2024, just in case Red Hat decide to cut back the support for it as well?&lt;/p&gt;

&lt;p&gt;What's your opinion on the news itself, is it IBM to blame or you believe that giving the option that CentOS Stream is available we should accept the facts and move forward?&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If you've enjoyed reading this post or learned something new and would like to support me to publish more content like this one you can support me with buying me a coffee:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/ageorgiev"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zQj764Ae--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" width="434" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>centos</category>
      <category>watercooler</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Install and configure a VPN on your Raspberry Pi</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Mon, 08 Mar 2021 10:43:31 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/install-and-configure-a-vpn-on-your-raspberry-pi-4n15</link>
      <guid>https://dev.to/alexgeorgiev17/install-and-configure-a-vpn-on-your-raspberry-pi-4n15</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;These days VPNs are really popular and people are using them for various reasons. You probably are using one every day in order to access your company platforms and infrastructure if you're working from home. However, people use VPNs for many other reasons - to browse through the internet securely, to change their IP and location in order to access sites or applications that are restricted to certain IPs or geo-location or you can use a VPN in order to access your home network and connect to your home devices whenever you're away from home for a vacation and so on.&lt;/p&gt;

&lt;p&gt;If you want to access your home network in order to browse the internet when you're using public networks then this guide is for you!&lt;/p&gt;

&lt;p&gt;I've tried a few VPNs on my Raspberries but I'm really impressed by the PiVPN project because it's simple and fast to install and configure. &lt;/p&gt;

&lt;p&gt;I recently had issues with my SD Card and I needed to re-install the Raspbian OS on a new SD card and configure everything I had from scratch and thanks to the PiVPN I spent less than 15 minutes in order to have my VPN configured.&lt;/p&gt;

&lt;p&gt;I will recommend you to check the About page on the PiVPN website if you want to learn more about the project:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://www.pivpn.io/#about" rel="noopener noreferrer"&gt;https://www.pivpn.io/#about&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Since this is a Raspberry Pi tutorial you should have a Raspberry Pi in order to use it. You can run the PiVPN on Raspberry Pi OS (I currently using it on my RasPi OS Buster) but this should work fine on Ubuntu Desktop or similar OS on your Raspberry Pi.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The installation script uses &lt;code&gt;curl&lt;/code&gt; so you should have it installed as well.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Installing OpenVPN on your Raspberry Pi
&lt;/h2&gt;

&lt;p&gt;The installation is pretty simple. You just run the official install script and then you will be prompted with a dialogue box and will be asked a few questions on setting up the OpenVPN server. I'm using the default settings and everything works just fine, but you're free to choose a different configuration if you wish to do so.&lt;/p&gt;

&lt;p&gt;Note! At the end of the installation process, you will be asked to reboot the Raspberry PI in order to complete the process, so please make sure to save any open files or projects before you start the install script.&lt;/p&gt;

&lt;p&gt;The install script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -L https://install.pivpn.io | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During the process, you can choose whether to use WireGuard or OpenVPN. If you're planning to use it on mobile devices WireGuard is recommended although I'm using the OpenVPN option and still use it on my phone. After selecting any of them you will be asked if you want to customize the default settings. If you want to use the default settings just choose "No"&lt;/p&gt;

&lt;p&gt;You can also modify the default OpenVPN port. If you don't need to use a custom port for it just hit enter and the default port 1194 will be used.&lt;/p&gt;

&lt;p&gt;For the DNS provider, you will be presented with several options. The default selected is to use CloudFlare but if you use a local DNS resolver you can choose PiVPN-is-local-DNS or to use your own select custom.&lt;/p&gt;

&lt;p&gt;For the Unattended upgrades, I will recommend selecting "Yes" so security patches can be applied.&lt;/p&gt;

&lt;p&gt;At the end of the installation process, you will be asked to reboot the Raspberry PI in order to complete the process.&lt;/p&gt;

&lt;p&gt;Once your Rasberry is up and running you can open the terminal and check if OpenVPN is up and running.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo service openvpn status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see a similar output if everything went well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Ffebruary2021%2FScreenshot%25202021-02-28%2520200522.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Ffebruary2021%2FScreenshot%25202021-02-28%2520200522.png" alt="Screenshot 2021-02-28 200522.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Port Forwarding
&lt;/h2&gt;

&lt;p&gt;In order to access this server remotely, you will not set up Port Forwarding. This is needed because the OpenVPN port is not open to connections from external networks. The process will be different on each router model. I will recommend you to check your router model and search on how to port forward on that specific router. The process should be explained on the manufacturer website or you can also use instructions from the manufacturer forum. &lt;/p&gt;

&lt;p&gt;If you're having issues to complete the Port Forwarding step, feel free to DM me and I will try to guide you through the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a profile and add new clients
&lt;/h2&gt;

&lt;p&gt;In order to add a new client open the terminal and run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pivpn add
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to check the available options with the cli you can use -h or --help:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pivpn -h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Ffebruary2021%2F2Screenshot%25202021-02-28%2520201722.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Ffebruary2021%2F2Screenshot%25202021-02-28%2520201722.png" alt="2Screenshot 2021-02-28 201722.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When client profiles are created, they are saved in /home/$USER/ovpns&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting your client
&lt;/h2&gt;

&lt;p&gt;You need to load the .ovpn file on the client device in order to access your server. You can either copy the file to the device or if you're going to use it on your mobile device you can also email the file (not recommended due to security concerns) and open it from the mobile device or store the file to secure file storage!&lt;/p&gt;

&lt;p&gt;OpenVPN Connect is the recommended software to use on all iOS, Android, macOS, Linux and Windows devices. You can download it from &lt;a href="https://openvpn.net/download-open-vpn/" rel="noopener noreferrer"&gt;HERE&lt;/a&gt; and for mobile devices, you can download it from App Store and Play Store.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;If everything went well you know have an OpenVPN server up and running on your Raspberry Pi. You can use it to access a device on your home network (I often use it to control my smart lights) and to securely browse the internet when you're outside your home.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If you've enjoyed reading this post or learned something new and would like to support me to publish more content like this one you can support me with buying me a coffee:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/ageorgiev" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fdefault-orange.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>raspberrypi</category>
      <category>beginners</category>
      <category>openvpn</category>
    </item>
    <item>
      <title>Remote Development in Visual Studio Code</title>
      <dc:creator>Alex Georgiev</dc:creator>
      <pubDate>Mon, 01 Mar 2021 10:52:56 +0000</pubDate>
      <link>https://dev.to/alexgeorgiev17/remote-development-in-visual-studio-code-4i4b</link>
      <guid>https://dev.to/alexgeorgiev17/remote-development-in-visual-studio-code-4i4b</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you run multiple servers and you do not want to edit files and open folders using ssh client and text editors like vim, vi or nano and you want to take advantage of all the features of Visual Studio Code then this tutorial is just for you.&lt;/p&gt;

&lt;p&gt;There are several extensions that will help you to achieve this. I personally use the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack" rel="noopener noreferrer"&gt;Remote Development&lt;/a&gt; extension. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fremote-plugin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fremote-plugin.png" alt="remote-plugin.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I find it really easy to use and it was also quite simple to configure it as well. However, you are free to use other extensions as well. A few examples are the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh" rel="noopener noreferrer"&gt;Remote SSH&lt;/a&gt; , &lt;a href="https://marketplace.visualstudio.com/items?itemName=Kelvin.vscode-sshfs" rel="noopener noreferrer"&gt;SSH FS&lt;/a&gt; , &lt;a href="https://marketplace.visualstudio.com/items?itemName=spadin.remote-x11-ssh" rel="noopener noreferrer"&gt;Remote X11&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites and System requirements
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;On your Local machine&lt;/strong&gt; you need to have a supported &lt;a href="https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-client" rel="noopener noreferrer"&gt;OpenSSH compatible SSH client&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the Remote server&lt;/strong&gt; you need to have an &lt;a href="https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-server" rel="noopener noreferrer"&gt;SSH server&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;x86_64 Debian 8+, Ubuntu 16.04+, CentOS / RHEL 7+.&lt;/li&gt;
&lt;li&gt;ARMv7l (AArch32) Raspbian Stretch/9+ (32-bit).&lt;/li&gt;
&lt;li&gt;ARMv8l (AArch64) Ubuntu 18.04+ (64-bit).&lt;/li&gt;
&lt;li&gt;Windows 10 / Server 2016/2019 (1803+) using the &lt;a href="https://docs.microsoft.com/windows-server/administration/openssh/openssh_install_firstuse" rel="noopener noreferrer"&gt;official OpenSSH server&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;macOS 10.14+ (Mojave) SSH hosts with &lt;a href="https://support.apple.com/guide/mac-help/allow-a-remote-computer-to-access-your-mac-mchlp1066/mac" rel="noopener noreferrer"&gt;Remote Login enabled&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;If you already have an openssh-client and Visual Studio installed you can go ahead and install the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack" rel="noopener noreferrer"&gt;Remote Development&lt;/a&gt; extension package.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect to a remote host
&lt;/h2&gt;

&lt;p&gt;I will recommend you using ssh-keys in order to use secure authentication and to make your general experience a lot better.&lt;/p&gt;

&lt;p&gt;If you haven't created any ssh-keys yet you can check this &lt;a href="https://code.visualstudio.com/docs/remote/troubleshooting#_configuring-key-based-authentication" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, you can verify that you can access the server using an ssh-client and also make sure that your ssh-keys are copied to the remote server as well. Once you can confirm that the connection from the ssh-client is working you can go ahead and open Visual Studio Code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Visual Studio Code open the Palette using F1 (for macOS Ctrl+Shift+P or Command+Shift+P) and select &lt;strong&gt;Remote-SSH: Connect to Host...&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fremote-connect.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fremote-connect.png" alt="remote-connect.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;Add New SSH Host...&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter the details: &lt;br&gt;
&lt;code&gt;ssh&lt;/code&gt;&lt;br&gt;
If you're going to use ssh-keys please use the following:&lt;br&gt;
&lt;code&gt;ssh -i ~/.ssh/id_rsa-remote-ssh user@remote-server&lt;/code&gt; &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fssh-to-remote.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fssh-to-remote.png" alt="ssh-to-remote.png"&gt;&lt;/a&gt;&lt;br&gt;
This will generate the SSH Config on your behalf and you'll be ready to go.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**Note: You need to replace the $USER with your actual username for the server and the remote-server with the server's hostname or the IP address.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can open the SSH configuration file and make sure that the ssh-key is specified and also if you're using a custom SSH port you need to specify it as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To open the configuration file open the palette and select &lt;strong&gt;Remote-SSH Open Configuration File...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fconf-pallette.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fconf-pallette.png" alt="conf-pallette.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then select the SSH config file - &lt;code&gt;path_to_user/.ssh/config&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The file will look like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fssh-config.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fssh-config.png" alt="ssh-config.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note: You need to replace the user, hostname, path to the identity file and specify any custom SSH port, if you're using the default SSH port 22 you do not need to specify the port in the SSH configuration file.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visual Studio will try to connect and if everything is okay you will be connected to the remote server. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're experiencing issues you will see the log for the SSH authentication in the Output console at the bottom of your Visual Studio Code, you can examine the log and locate any problems. The most common will be the pubkey authentication failure - &lt;strong&gt;Permission denied (publickey)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If this is the error you can see in the log then open the SSH configuration file &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fssh-config.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fssh-config.png" alt="ssh-config.png"&gt;&lt;/a&gt;&lt;br&gt;
and make sure that the details you see are correct. The path to the Identity file for users using Windows will be:&lt;br&gt;
&lt;code&gt;C:\Users\User\.ssh\id_rsa1&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fwindows-config.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.devdojo.com%2Fimages%2Fmarch2021%2Fwindows-config.png" alt="windows-config.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This is pretty much how you can connect to a remote server via Visual Studio. I find it really handy because in this way you can take advantage of all VS features and installed extensions for coding faster, better and etc. I hope you find this post helpful and please comment if you use other plugin or use a different method to code on a remote server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Used sources
&lt;/h2&gt;

&lt;p&gt;You can also check the process on &lt;a href="https://code.visualstudio.com/docs/remote/ssh" rel="noopener noreferrer"&gt;Visual Studio&lt;/a&gt;'s website and also explore some additional features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If you've enjoyed reading this post or learned something new and would like to support me to publish more content like this one you can support me with buying me a coffee:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/ageorgiev" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fdefault-orange.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>visualstudio</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
