<?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: HostnExtra Technologies</title>
    <description>The latest articles on DEV Community by HostnExtra Technologies (@hostnextra).</description>
    <link>https://dev.to/hostnextra</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%2F488814%2Fd35683ec-6a52-4401-a7cc-9478f9c1f493.png</url>
      <title>DEV Community: HostnExtra Technologies</title>
      <link>https://dev.to/hostnextra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hostnextra"/>
    <language>en</language>
    <item>
      <title>Secure SSH on Ubuntu 26.04 with SSH Keys and Fail2ban</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Thu, 04 Jun 2026 07:11:18 +0000</pubDate>
      <link>https://dev.to/hostnextra/secure-ssh-on-ubuntu-2604-with-ssh-keys-and-fail2ban-4056</link>
      <guid>https://dev.to/hostnextra/secure-ssh-on-ubuntu-2604-with-ssh-keys-and-fail2ban-4056</guid>
      <description>&lt;p&gt;If your server is connected to the internet, automated bots are already trying to access it.&lt;/p&gt;

&lt;p&gt;One of the easiest ways to improve server security is to stop relying on passwords and switch to SSH keys. Combined with Fail2ban, this can drastically reduce the risk of brute force attacks.&lt;/p&gt;

&lt;p&gt;In this guide, we'll secure SSH on Ubuntu 26.04 by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using SSH key authentication&lt;/li&gt;
&lt;li&gt;Disabling root login&lt;/li&gt;
&lt;li&gt;Disabling password authentication&lt;/li&gt;
&lt;li&gt;Installing Fail2ban&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Password based SSH logins are a common target for automated attacks.&lt;/p&gt;

&lt;p&gt;Even strong passwords can eventually become a liability, especially when attackers can attempt thousands of logins from different IP addresses.&lt;/p&gt;

&lt;p&gt;SSH keys provide a much stronger authentication method, while Fail2ban automatically blocks repeated login failures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Update the Server
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 2: Generate an SSH Key Pair
&lt;/h3&gt;

&lt;p&gt;On your local computer:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"ubuntu-server"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Accept the default location and optionally set a passphrase.&lt;/p&gt;

&lt;p&gt;This creates:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: Copy the Public Key to the Server
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-copy-id username@server_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-copy-id admin@203.0.113.10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 4: Verify Key Authentication
&lt;/h3&gt;

&lt;p&gt;Open a new terminal window and connect:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh username@server_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If login works without asking for the server password, SSH keys are working correctly.&lt;/p&gt;

&lt;p&gt;Keep your existing SSH session open until testing is complete.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 5: Create a Custom SSH Security Configuration
&lt;/h3&gt;

&lt;p&gt;Ubuntu 26.04 supports configuration snippets through the &lt;code&gt;sshd_config.d&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Create a new file:&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="nb"&gt;sudo &lt;/span&gt;nano /etc/ssh/sshd_config.d/99-security.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Add:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Port 52525
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication &lt;span class="nb"&gt;yes
&lt;/span&gt;ChallengeResponseAuthentication no
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Note: We have set PermitRootLogin no be caution with that. You need to have normal user access. We are changing SSH port number, add it in firewall first.  &lt;/p&gt;
&lt;h3&gt;
  
  
  Step 6: Validate the Configuration
&lt;/h3&gt;

&lt;p&gt;Before restarting SSH:&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="nb"&gt;sudo &lt;/span&gt;sshd &lt;span class="nt"&gt;-t&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If no output appears, the configuration is valid.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 7: Restart SSH
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Verify status:&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="nb"&gt;sudo &lt;/span&gt;systemctl status ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Test SSH access from another terminal:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh username@server_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Password authentication should no longer work.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 8: Install Fail2ban
&lt;/h3&gt;

&lt;p&gt;Install Fail2ban:&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="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;fail2ban &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Enable and start the service:&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="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;fail2ban
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start fail2ban
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Check status:&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="nb"&gt;sudo &lt;/span&gt;systemctl status fail2ban
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 9: Configure Fail2ban
&lt;/h3&gt;

&lt;p&gt;Create a local configuration file:&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="nb"&gt;sudo &lt;/span&gt;nano /etc/fail2ban/jail.local
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Add:&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="o"&gt;[&lt;/span&gt;sshd]
enabled &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;true
&lt;/span&gt;port &lt;span class="o"&gt;=&lt;/span&gt; ssh
backend &lt;span class="o"&gt;=&lt;/span&gt; systemd
maxretry &lt;span class="o"&gt;=&lt;/span&gt; 5
findtime &lt;span class="o"&gt;=&lt;/span&gt; 10m
bantime &lt;span class="o"&gt;=&lt;/span&gt; 1h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Restart Fail2ban:&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="nb"&gt;sudo &lt;/span&gt;systemctl restart fail2ban
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 10: Verify Protection
&lt;/h3&gt;

&lt;p&gt;View active jails:&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="nb"&gt;sudo &lt;/span&gt;fail2ban-client status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;View SSH jail details:&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="nb"&gt;sudo &lt;/span&gt;fail2ban-client status sshd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Monitoring SSH Activity&lt;/p&gt;

&lt;p&gt;View SSH logs:&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="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; ssh &lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;View Fail2ban activity:&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="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; fail2ban &lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Final Checklist
&lt;/h3&gt;

&lt;p&gt;Before considering your SSH setup secure, verify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSH keys are working&lt;/li&gt;
&lt;li&gt;Root login is disabled&lt;/li&gt;
&lt;li&gt;Password authentication is disabled&lt;/li&gt;
&lt;li&gt;SSH configuration validates successfully&lt;/li&gt;
&lt;li&gt;Fail2ban is running&lt;/li&gt;
&lt;li&gt;Updates are installed regularly&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;SSH is one of the most exposed services on a Linux server, making it a frequent target for automated attacks.&lt;/p&gt;

&lt;p&gt;By switching to SSH keys, disabling password authentication, and deploying Fail2ban, you add several layers of protection with very little effort.&lt;/p&gt;

&lt;p&gt;These changes take only a few minutes to implement but can significantly improve the security of any Ubuntu 26.04 server.&lt;/p&gt;

&lt;p&gt;Originally published on HostnExtra.&lt;/p&gt;

&lt;p&gt;We regularly publish practical guides on Linux administration, dedicated servers, networking, infrastructure security, and hosting performance.&lt;/p&gt;

&lt;p&gt;Read the full version here:&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://hostnextra.com/learn/tutorials/secure-ssh-ubuntu-26-04-key-authentication-fail2ban" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fboat.hnxcloud.com%2Fassets%2F4b6dfef3-1712-45bf-a597-625a2df41fe3.png" height="467" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://hostnextra.com/learn/tutorials/secure-ssh-ubuntu-26-04-key-authentication-fail2ban" rel="noopener noreferrer" class="c-link"&gt;
            Secure SSH on Ubuntu 26.04 with Key Authentication and Fail2ban - HostnExtra
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Learn how to secure SSH on Ubuntu 26.04 using SSH key authentication and Fail2ban. Disable password logins, block brute force attacks, and strengthen your server security.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhostnextra.com%2Ficon.svg%3Ficon.0s9fdicw3g4jp.svg" width="137" height="132"&gt;
          hostnextra.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>security</category>
      <category>ubuntu</category>
      <category>fail2ban</category>
      <category>ssh</category>
    </item>
    <item>
      <title>Switzerland Datacenters Explained: Power, Connectivity, and Infrastructure Design</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Thu, 04 Jun 2026 04:53:53 +0000</pubDate>
      <link>https://dev.to/hostnextra/switzerland-datacenters-explained-power-connectivity-and-infrastructure-design-d56</link>
      <guid>https://dev.to/hostnextra/switzerland-datacenters-explained-power-connectivity-and-infrastructure-design-d56</guid>
      <description>&lt;p&gt;Developers often spend significant time optimizing application code while overlooking the infrastructure layer underneath it.&lt;/p&gt;

&lt;p&gt;Yet infrastructure decisions can have a larger impact on performance, availability, and reliability than many software optimizations.&lt;/p&gt;

&lt;p&gt;Datacenter location is one of those decisions.&lt;/p&gt;

&lt;p&gt;Switzerland has become a popular European deployment location for dedicated servers, private cloud environments, virtualization platforms, and business-critical workloads. Understanding why requires looking beyond hardware specifications and examining the underlying infrastructure itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Datacenters Are More Than Server Racks
&lt;/h2&gt;

&lt;p&gt;When evaluating hosting environments, it's easy to focus on CPU models, RAM capacity, and storage performance.&lt;/p&gt;

&lt;p&gt;Those components matter.&lt;/p&gt;

&lt;p&gt;However, production infrastructure depends equally on facility engineering.&lt;/p&gt;

&lt;p&gt;Modern datacenters are built around multiple supporting systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Power distribution&lt;/li&gt;
&lt;li&gt;Cooling infrastructure&lt;/li&gt;
&lt;li&gt;Environmental monitoring&lt;/li&gt;
&lt;li&gt;Physical security&lt;/li&gt;
&lt;li&gt;Fire suppression&lt;/li&gt;
&lt;li&gt;Network connectivity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each subsystem contributes to overall service availability.&lt;/p&gt;

&lt;p&gt;The server itself is only one part of the equation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Power Redundancy
&lt;/h2&gt;

&lt;p&gt;Power infrastructure is one of the most important elements inside any datacenter.&lt;/p&gt;

&lt;p&gt;A typical enterprise facility includes multiple layers of protection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Utility Power
&lt;/h3&gt;

&lt;p&gt;This is the primary electrical feed supplied by the regional power grid.&lt;/p&gt;

&lt;p&gt;Switzerland benefits from a highly developed electrical infrastructure that supports dependable service availability.&lt;/p&gt;

&lt;h3&gt;
  
  
  UPS Systems
&lt;/h3&gt;

&lt;p&gt;Uninterruptible Power Supply systems sit between utility power and customer equipment.&lt;/p&gt;

&lt;p&gt;If utility power fails, UPS batteries immediately continue supplying electricity.&lt;/p&gt;

&lt;p&gt;This transition occurs fast enough that servers remain operational without interruption.&lt;/p&gt;

&lt;h3&gt;
  
  
  Backup Generators
&lt;/h3&gt;

&lt;p&gt;UPS systems are designed to bridge short interruptions.&lt;/p&gt;

&lt;p&gt;For longer events, backup generators take over.&lt;/p&gt;

&lt;p&gt;Once generators reach stable operating conditions, they assume the electrical load while UPS systems continue providing protection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Redundant Power Paths
&lt;/h3&gt;

&lt;p&gt;Many facilities deploy multiple independent power paths.&lt;/p&gt;

&lt;p&gt;If a failure occurs within one distribution path, the alternate path can continue supplying power.&lt;/p&gt;

&lt;p&gt;The goal is eliminating single points of failure wherever possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Network Connectivity Matters More Than Most Buyers Realize
&lt;/h2&gt;

&lt;p&gt;Hardware performance often receives most of the attention during server procurement.&lt;/p&gt;

&lt;p&gt;In reality, network quality frequently has a greater impact on user experience.&lt;/p&gt;

&lt;p&gt;Connectivity affects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application responsiveness&lt;/li&gt;
&lt;li&gt;API performance&lt;/li&gt;
&lt;li&gt;Replication traffic&lt;/li&gt;
&lt;li&gt;Backup operations&lt;/li&gt;
&lt;li&gt;End-user latency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Swiss datacenters benefit from strong connectivity toward major European markets including Germany, France, Italy, Austria, the Netherlands, Belgium, and the United Kingdom.&lt;/p&gt;

&lt;p&gt;This makes Switzerland an attractive location for workloads serving distributed European audiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Carrier-Neutral Facilities And Route Diversity
&lt;/h2&gt;

&lt;p&gt;One important concept many developers encounter only after operating production infrastructure is carrier diversity.&lt;/p&gt;

&lt;p&gt;A carrier-neutral datacenter allows multiple network providers to operate within the same facility.&lt;/p&gt;

&lt;p&gt;This creates several advantages:&lt;/p&gt;

&lt;h3&gt;
  
  
  Redundancy
&lt;/h3&gt;

&lt;p&gt;If one carrier experiences issues, traffic can potentially utilize alternate providers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Routing Flexibility
&lt;/h3&gt;

&lt;p&gt;Infrastructure operators can select carriers based on performance, cost, or geographic reach.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reduced Dependency
&lt;/h3&gt;

&lt;p&gt;Organizations avoid becoming overly reliant on a single upstream network.&lt;/p&gt;

&lt;p&gt;Carrier diversity is often a stronger indicator of infrastructure quality than raw bandwidth numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Latency And Geographic Positioning
&lt;/h2&gt;

&lt;p&gt;Physics still applies to networking.&lt;/p&gt;

&lt;p&gt;Data cannot travel instantly.&lt;/p&gt;

&lt;p&gt;The further traffic must travel, the higher the potential latency.&lt;/p&gt;

&lt;p&gt;Switzerland's central European location helps provide balanced reachability toward several major markets.&lt;/p&gt;

&lt;p&gt;This can be particularly useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SaaS platforms&lt;/li&gt;
&lt;li&gt;API services&lt;/li&gt;
&lt;li&gt;Enterprise applications&lt;/li&gt;
&lt;li&gt;Development infrastructure&lt;/li&gt;
&lt;li&gt;Monitoring systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than optimizing solely for one country, organizations can often achieve broader regional coverage from a centrally positioned deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Dedicated Servers Still Matter
&lt;/h2&gt;

&lt;p&gt;Despite the growth of cloud platforms, dedicated servers continue to solve specific problems effectively.&lt;/p&gt;

&lt;p&gt;Common reasons organizations choose dedicated infrastructure include:&lt;/p&gt;

&lt;h3&gt;
  
  
  Predictable Performance
&lt;/h3&gt;

&lt;p&gt;Resources are not shared with unrelated tenants.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hardware Control
&lt;/h3&gt;

&lt;p&gt;Customers can select storage, CPU, memory, and networking configurations that fit workload requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Virtualization Platforms
&lt;/h3&gt;

&lt;p&gt;Dedicated servers are frequently used as hypervisor hosts for internal infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Large Databases
&lt;/h3&gt;

&lt;p&gt;Database management often benefit from dedicated resources and consistent performance characteristics.&lt;/p&gt;

&lt;p&gt;For many organizations, dedicated servers remain a practical complement to cloud deployments rather than a replacement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluating Infrastructure Beyond Marketing
&lt;/h2&gt;

&lt;p&gt;When selecting a hosting provider, technical teams should look beyond hardware specifications.&lt;/p&gt;

&lt;p&gt;Important questions include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How many carriers are available?&lt;/li&gt;
&lt;li&gt;What power redundancy model exists?&lt;/li&gt;
&lt;li&gt;What monitoring systems are implemented?&lt;/li&gt;
&lt;li&gt;How are incidents handled?&lt;/li&gt;
&lt;li&gt;What operational procedures exist for maintenance and failures?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These factors often determine long-term service quality more than processor generation alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Switzerland's datacenter industry has built its reputation through infrastructure quality rather than marketing noise.&lt;/p&gt;

&lt;p&gt;Strong facility engineering, dependable power systems, extensive connectivity, and disciplined operational practices make it a compelling location for dedicated servers and critical workloads.&lt;/p&gt;

&lt;p&gt;For developers, infrastructure teams, and businesses deploying services across Europe, understanding these fundamentals can lead to better hosting decisions and more reliable applications.&lt;/p&gt;

&lt;p&gt;Because ultimately, users don't care where your servers are located.&lt;/p&gt;

&lt;p&gt;They care whether your application works when they need it.&lt;/p&gt;

&lt;p&gt;Infrastructure determines how often that happens.&lt;/p&gt;

&lt;p&gt;Originally published on HostnExtra.&lt;/p&gt;

&lt;p&gt;HostnExtra focuses on dedicated server infrastructure, networking, and performance-focused hosting across multiple global locations.&lt;/p&gt;

&lt;p&gt;Read the full version:&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://hostnextra.com/learn/blog/switzerland-datacenter-infrastructure" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fboat.hnxcloud.com%2Fassets%2F938d9d2a-a155-468d-b0f0-49489096ebab.png" height="467" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://hostnextra.com/learn/blog/switzerland-datacenter-infrastructure" rel="noopener noreferrer" class="c-link"&gt;
            Switzerland Datacenter Infrastructure: Facilities, Power, and Connectivity - HostnExtra
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Learn how Switzerland's datacenter infrastructure delivers reliable power, strong connectivity, and modern facilities for dedicated servers, cloud platforms, and business-critical applications.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhostnextra.com%2Ficon.svg%3Ficon.0s9fdicw3g4jp.svg" width="137" height="132"&gt;
          hostnextra.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>datacenter</category>
      <category>switzerland</category>
      <category>networking</category>
      <category>devops</category>
    </item>
    <item>
      <title>Why London Remains a Top-Tier Dedicated Server Location for Developers and Infrastructure Teams</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Mon, 01 Jun 2026 15:01:13 +0000</pubDate>
      <link>https://dev.to/hostnextra/why-london-remains-a-top-tier-dedicated-server-location-for-developers-and-infrastructure-teams-4oa0</link>
      <guid>https://dev.to/hostnextra/why-london-remains-a-top-tier-dedicated-server-location-for-developers-and-infrastructure-teams-4oa0</guid>
      <description>&lt;p&gt;When evaluating dedicated server locations, it's easy to get distracted by hardware specifications.&lt;/p&gt;

&lt;p&gt;CPU generation, storage type, RAM capacity, and bandwidth allocations are easy to compare.&lt;/p&gt;

&lt;p&gt;Network topology is harder to see.&lt;/p&gt;

&lt;p&gt;But once applications reach scale, routing quality often becomes just as important as the hardware itself.&lt;/p&gt;

&lt;p&gt;London is a good example.&lt;/p&gt;

&lt;p&gt;The city hosts one of the world's most important interconnection ecosystems through LINX (London Internet Exchange), where more than 950 networks exchange traffic directly. Aggregate traffic has exceeded 12 Tbps during peak periods, making London one of the most connected internet hubs in Europe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does this matter?
&lt;/h2&gt;

&lt;p&gt;Because every unnecessary network hop introduces additional latency and routing complexity.&lt;/p&gt;

&lt;p&gt;Direct peering relationships allow traffic to move between networks more efficiently, which can improve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API response times&lt;/li&gt;
&lt;li&gt;SaaS platform performance&lt;/li&gt;
&lt;li&gt;CDN delivery efficiency&lt;/li&gt;
&lt;li&gt;Multiplayer gaming latency&lt;/li&gt;
&lt;li&gt;Replication between distributed systems&lt;/li&gt;
&lt;li&gt;Hybrid cloud connectivity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;London is also strategically positioned for organizations serving both European and North American users.&lt;/p&gt;

&lt;p&gt;Many transatlantic routes intersect through London's carrier ecosystem, allowing providers to maintain strong connectivity in both directions.&lt;/p&gt;

&lt;p&gt;From an infrastructure perspective, London offers several practical advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dense carrier availability&lt;/li&gt;
&lt;li&gt;Mature data center ecosystems&lt;/li&gt;
&lt;li&gt;Extensive peering opportunities&lt;/li&gt;
&lt;li&gt;Strong cloud connectivity&lt;/li&gt;
&lt;li&gt;Multiple transit options&lt;/li&gt;
&lt;li&gt;Well-established international routing paths&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing worth noting is that good infrastructure isn't only about where a server is physically located.&lt;/p&gt;

&lt;p&gt;It's also about who surrounds that server.&lt;/p&gt;

&lt;p&gt;A server sitting inside a highly connected ecosystem often delivers better real-world performance than similar hardware deployed in a less connected region.&lt;/p&gt;

&lt;p&gt;That's the reason London continues to remain relevant despite the rapid growth of other European markets.&lt;/p&gt;

&lt;p&gt;For developers, sysadmins, SaaS operators, and infrastructure teams, London is still one of the strongest locations available when network quality is a primary consideration.&lt;/p&gt;

&lt;p&gt;Originally published on HostnExtra.&lt;/p&gt;

&lt;p&gt;We regularly write about network architecture, dedicated server deployments, latency, routing, peering, and global hosting infrastructure.&lt;/p&gt;

&lt;p&gt;Read the full article:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hostnextra.com/learn/blog/london-dedicated-server-connectivity" rel="noopener noreferrer"&gt;https://hostnextra.com/learn/blog/london-dedicated-server-connectivity&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dedicatedservers</category>
      <category>linx</category>
      <category>network</category>
      <category>london</category>
    </item>
    <item>
      <title>Running Multiplayer Game Servers in Germany: Real-World Latency Across Europe</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Fri, 29 May 2026 04:46:34 +0000</pubDate>
      <link>https://dev.to/hostnextra/running-multiplayer-game-servers-in-germany-real-world-latency-across-europe-3fbc</link>
      <guid>https://dev.to/hostnextra/running-multiplayer-game-servers-in-germany-real-world-latency-across-europe-3fbc</guid>
      <description>&lt;p&gt;When developers deploy multiplayer infrastructure in Europe, Germany is usually one of the first locations considered.&lt;/p&gt;

&lt;p&gt;There is a practical reason for that beyond simple geography.&lt;/p&gt;

&lt;p&gt;Germany, particularly Frankfurt, sits near a dense concentration of European carrier networks and internet exchange ecosystems. That creates relatively efficient routing paths across large portions of Europe.&lt;/p&gt;

&lt;p&gt;For multiplayer workloads, this often produces balanced latency profiles for mixed regional player bases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Typical European Latency Behavior
&lt;/h2&gt;

&lt;p&gt;Actual latency depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ISP routing&lt;/li&gt;
&lt;li&gt;Transit providers&lt;/li&gt;
&lt;li&gt;Congestion&lt;/li&gt;
&lt;li&gt;Peering quality&lt;/li&gt;
&lt;li&gt;Mitigation systems&lt;/li&gt;
&lt;li&gt;Physical distance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But in general, properly connected German infrastructure often looks roughly like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Region&lt;/strong&gt;                            &lt;strong&gt;Approximate Latency&lt;/strong&gt;&lt;br&gt;
Germany / Netherlands / Belgium   5-20ms&lt;br&gt;
France / UK                   20-35ms&lt;br&gt;
Scandinavia                   25-45ms&lt;br&gt;
Southern Europe                    35-60ms&lt;/p&gt;

&lt;p&gt;These numbers vary significantly depending on the provider.&lt;/p&gt;

&lt;p&gt;People underestimate how much routing quality affects gameplay. Two servers inside Frankfurt can behave completely differently under real traffic conditions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Stable Routing Matters More Than Low Ping Marketing
&lt;/h2&gt;

&lt;p&gt;A lot of hosting advertisements obsess over “ultra-low latency.”&lt;/p&gt;

&lt;p&gt;In practice, multiplayer performance depends more on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jitter consistency&lt;/li&gt;
&lt;li&gt;Packet delivery stability&lt;/li&gt;
&lt;li&gt;Congestion handling&lt;/li&gt;
&lt;li&gt;Upstream quality&lt;/li&gt;
&lt;li&gt;Mitigation behavior under load&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A stable 40ms connection is usually preferable to unstable low-latency routes with spikes and packet loss.&lt;/p&gt;

&lt;p&gt;This becomes very noticeable in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FPS games&lt;/li&gt;
&lt;li&gt;Tickrate-sensitive workloads&lt;/li&gt;
&lt;li&gt;Voice-heavy environments&lt;/li&gt;
&lt;li&gt;Real-time PvP synchronization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Average ping alone does not tell the whole story.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dedicated Servers vs VPS for Game Hosting
&lt;/h2&gt;

&lt;p&gt;Smaller communities often begin on VPS infrastructure, which is fine initially.&lt;/p&gt;

&lt;p&gt;Problems usually appear when workloads become sustained or player counts increase.&lt;/p&gt;

&lt;p&gt;Shared environments can introduce:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU contention&lt;/li&gt;
&lt;li&gt;Disk variability&lt;/li&gt;
&lt;li&gt;Resource throttling&lt;/li&gt;
&lt;li&gt;Scheduling inconsistencies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dedicated servers avoid many of these issues by giving workloads isolated hardware access.&lt;/p&gt;

&lt;p&gt;This becomes especially useful for games like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Minecraft&lt;/li&gt;
&lt;li&gt;Rust&lt;/li&gt;
&lt;li&gt;ARK&lt;/li&gt;
&lt;li&gt;CS2&lt;/li&gt;
&lt;li&gt;FiveM&lt;/li&gt;
&lt;li&gt;Factorio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many of these workloads are heavily sensitive to single-core performance and sustained CPU availability.&lt;/p&gt;

&lt;h2&gt;
  
  
  DDoS Mitigation Is Mandatory
&lt;/h2&gt;

&lt;p&gt;Public game servers eventually attract attack traffic.&lt;/p&gt;

&lt;p&gt;Good mitigation systems should preserve routing stability while filtering malicious packets. Poor mitigation can actually worsen gameplay through excessive filtering overhead or unstable rerouting behavior.&lt;/p&gt;

&lt;p&gt;Important considerations include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always-on filtering&lt;/li&gt;
&lt;li&gt;Upstream mitigation capacity&lt;/li&gt;
&lt;li&gt;Clean packet forwarding&lt;/li&gt;
&lt;li&gt;Low additional latency overhead&lt;/li&gt;
&lt;li&gt;Stable routing during attacks&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Germany remains one of the strongest European deployment locations because it balances reachability across multiple regions reasonably well.&lt;/p&gt;

&lt;p&gt;But location alone does not create good multiplayer performance.&lt;/p&gt;

&lt;p&gt;Infrastructure quality ultimately depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network engineering&lt;/li&gt;
&lt;li&gt;Transit quality&lt;/li&gt;
&lt;li&gt;Hardware consistency&lt;/li&gt;
&lt;li&gt;Routing stability&lt;/li&gt;
&lt;li&gt;Operational discipline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The networking layer is usually where good multiplayer hosting succeeds or fails.&lt;/p&gt;

&lt;p&gt;Originally published on HostnExtra.&lt;/p&gt;

&lt;p&gt;If you're working on latency-sensitive infrastructure, multiplayer hosting, or dedicated server deployments, we publish deeper infrastructure-focused articles here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://hostnextra.com/blog" rel="noopener noreferrer"&gt;https://hostnextra.com/blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>gameservers</category>
      <category>networking</category>
    </item>
    <item>
      <title>Install NetBox on Ubuntu 22.04 - HostnExtra</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Wed, 19 Oct 2022 13:01:08 +0000</pubDate>
      <link>https://dev.to/hostnextra/install-netbox-on-ubuntu-2204-hostnextra-5ekj</link>
      <guid>https://dev.to/hostnextra/install-netbox-on-ubuntu-2204-hostnextra-5ekj</guid>
      <description>&lt;p&gt;In this article, we'll explain how to install NetBox on Ubuntu 22.04. This will guide you with the installation and configuration process.&lt;/p&gt;

&lt;p&gt;NetBox is an infrastructure resource modeling (IRM) application designed to empower network automation. NetBox was developed specifically to address the needs of network and infrastructure engineers. It is intended to function as a domain-specific source of truth for network operations.&lt;/p&gt;

&lt;p&gt;NetBox runs as a web application atop the&amp;nbsp;Django&amp;nbsp;Python framework with a&amp;nbsp;PostgreSQL&amp;nbsp;database.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites:
&lt;/h4&gt;

&lt;p&gt;A Ubuntu 22.04 installed KVM VPS or dedicated server.&lt;br&gt;
A root user access or normal user with administrative privileges&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hostnextra.com/kb/install-netbox-on-ubuntu/" rel="noopener noreferrer"&gt;Install NetBox on Ubuntu 22.04&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  1. Keep the server up to date
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# apt update -y &amp;amp;&amp;amp; apt upgrade -y&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2. Install and Configure PostgreSQL Database
&lt;/h4&gt;

&lt;p&gt;We'll install and configure a local PostgreSQL database.&lt;/p&gt;

&lt;p&gt;Note: NetBox requires PostgreSQL 9.6 or higher. Please note that MySQL and other relational databases are&amp;nbsp;not&amp;nbsp;currently supported.&lt;/p&gt;

&lt;p&gt;Install PostgreSQL database using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt install -y postgresql libpq-dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, we need to create a database for NetBox and assign it a username and password for authentication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# sudo -u postgres psql

postgres=# CREATE DATABASE netbox;

CREATE DATABASE

postgres=# CREATE USER netbox WITH PASSWORD 'r5t6^7$%gyuuyt4';

CREATE ROLE

postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;

GRANT

postgres=# \q
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  3. Install Redis
&lt;/h4&gt;

&lt;p&gt;Redis is an in-memory key-value store which NetBox employs for caching and queuing. Use following command to install Redis:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt install redis-server -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use the&amp;nbsp;redis-cli&amp;nbsp;utility to ensure the Redis service is functional:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# redis-cli ping

PONG
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  4. Install and Configure NetBox
&lt;/h4&gt;

&lt;p&gt;There are two ways to install NetBox.&lt;/p&gt;

&lt;p&gt;Download a Release Archive&lt;br&gt;
Clone the Git Repository&lt;/p&gt;

&lt;p&gt;We'll install NetBox by cloning the Git repository.&lt;/p&gt;

&lt;p&gt;First, install required packages and its dependencies:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Update pip (Python's package management tool) to its latest release:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# pip3 install --upgrade pip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create the base directory /opt/netbox for the NetBox installation.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# mkdir -p /opt/netbox/ &amp;amp;&amp;amp; cd /opt/netbox/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, clone the&amp;nbsp;master&amp;nbsp;branch of the NetBox GitHub repository into the current directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git clone -b master https://github.com/netbox-community/netbox.git .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a system user account named&amp;nbsp;netbox. We'll configure the WSGI and HTTP services to run under this account. We'll also assign this user ownership of the media directory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# adduser --system --group netbox

# chown --recursive netbox /opt/netbox/netbox/media/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Move into the NetBox configuration directory and make a copy of&amp;nbsp;configuration.example.py&amp;nbsp;named&amp;nbsp;configuration.py.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# cd /opt/netbox/netbox/netbox/

# cp configuration_example.py configuration.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a symbolic link of Python binary.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# ln -s /usr/bin/python3 /usr/bin/python&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Generate a random&amp;nbsp;SECRET_KEY&amp;nbsp;of at least 50 alphanumeric characters.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# /opt/netbox/netbox/generate_secret_key.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Above command will create a secret key, store it so that we can use it in the configuration.py.&lt;/p&gt;

&lt;p&gt;Open and edit the configuration file&amp;nbsp;configuration.py.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# nano /opt/netbox/netbox/netbox/configuration.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The final file should have the following configurations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALLOWED_HOSTS = ['*']

DATABASE = {
'NAME': 'netbox', # Database name you created
'USER': 'netbox', # PostgreSQL username you created
'PASSWORD': 'r5t6^7$%gyuuyt4', # PostgreSQL password you set
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
}

SECRET_KEY = 'YOUR SECRET KEY'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can add your domain or server IP in ALLOWED_HOSTS = [''] or you can simple enter "*" for all.&lt;/p&gt;

&lt;p&gt;Once NetBox has been configured, we're ready to proceed with the actual installation.&lt;/p&gt;

&lt;p&gt;We'll run the packaged upgrade script (upgrade.sh) to perform the following actions:&lt;/p&gt;

&lt;p&gt;Create a Python virtual environment&lt;br&gt;
Install all required Python packages&lt;br&gt;
Run database schema migrations&lt;br&gt;
Aggregate static resource files on disk&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# /opt/netbox/upgrade.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Enter the Python virtual environment created by the upgrade script:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# source /opt/netbox/venv/bin/activate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a superuser account using the createsuperuser&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# cd /opt/netbox/netbox

# python3 manage.py createsuperuser

Output:

Email address: admin@example.com

Password:

Password (again):

Superuser created successfully.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Remember the username and password. It will require once we finish the installation process to login.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Configure Gunicorn
&lt;/h4&gt;

&lt;p&gt;NetBox ships with a default configuration file for gunicorn. To use it, copy&amp;nbsp;/opt/netbox/contrib/gunicorn.py&amp;nbsp;to&amp;nbsp;/opt/netbox/gunicorn.py.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Copy contrib/netbox.service and contrib/netbox-rq.service to the /etc/systemd/system/ directory and reload the systemd dameon:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# cp -v /opt/netbox/contrib/*.service /etc/systemd/system/

# systemctl daemon-reload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start and enable the netbox and netbox-rq services:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# systemctl start netbox netbox-rq

# systemctl enable netbox netbox-rq
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  6. Configure Nginx Web Server
&lt;/h4&gt;

&lt;p&gt;Install Nginx web server using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt install -y nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Copy the nginx configuration file provided by NetBox to /etc/nginx/sites-available/netbox.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Edit the netbox configuration file and remove all the content and copy paste below contents:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# nano /etc/nginx/sites-available/netbox&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Remember to change server_name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
listen 80;

# CHANGE THIS TO YOUR SERVER'S NAME
server_name 127.0.0.1;

client_max_body_size 25m;

location /static/ {
alias /opt/netbox/netbox/static/;
}

location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, delete&amp;nbsp;/etc/nginx/sites-enabled/default&amp;nbsp;and create a symlink in the&amp;nbsp;sites-enabled&amp;nbsp;directory to the configuration file you just created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# rm /etc/nginx/sites-enabled/default

# ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Above Nginx code will give you error if you use as it is, because it mentioned SSL configuration too. You need to install SSL after the above commands.&lt;/p&gt;

&lt;p&gt;Please refer our How to Install Let’s Encrypt on Nginx Ubuntu article to install SSL certificate.&lt;/p&gt;

&lt;p&gt;Now test Nginx configuration and restart the Nginx service:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# nginx -t&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# systemctl restart nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That's it we have successfully completed with the installation and configuration process.&lt;/p&gt;

&lt;p&gt;Navigate to your browser and access NetBox with using either server IP or domain name.&lt;/p&gt;

&lt;p&gt;In this article, we've seen how to install NetBox on Ubuntu 22.04.&lt;/p&gt;

</description>
      <category>netbox</category>
      <category>ubuntu</category>
      <category>django</category>
      <category>postgres</category>
    </item>
    <item>
      <title>Install Caddy on Ubuntu 22.04 - HostnExtra</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Tue, 18 Oct 2022 17:26:33 +0000</pubDate>
      <link>https://dev.to/hostnextra/install-caddy-on-ubuntu-2204-hostnextra-50ha</link>
      <guid>https://dev.to/hostnextra/install-caddy-on-ubuntu-2204-hostnextra-50ha</guid>
      <description>&lt;p&gt;In this article, we’ll explain you how to install Caddy on Ubuntu 22.04. This article will guide you with the installation process and host a website.&lt;/p&gt;

&lt;p&gt;The Caddy web server is an open-source web server written in Go. It is designed around simplicity and security that comes with a number of features that are useful for hosting websites. Caddy is both a flexible, efficient static file server and a powerful, scalable reverse proxy.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;A Ubuntu install dedicated server or KVM VPS.&lt;/li&gt;
&lt;li&gt;A root user access or normal user with administrative privileges.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.hostnextra.com/kb/install-caddy-on-ubuntu/" rel="noopener noreferrer"&gt;Install Caddy on Ubuntu 22.04&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Keep the server up to date
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;# apt update -y &amp;amp;&amp;amp; apt upgrade -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;WWWW2. Install Caddy&lt;/p&gt;

&lt;p&gt;Following command will install and automatically starts and runs Caddy for you as a systemd service named caddy using our official caddy.service unit file.&lt;/p&gt;

&lt;h4&gt;
  
  
  Install dependencies:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;First, add GPG key using 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;# curl -1sLf ‘https://dl.cloudsmith.io/public/caddy/stable/gpg.key’ | sudo gpg –dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, add repository and update it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# curl -1sLf ‘https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt’ | sudo tee /etc/apt/sources.list.d/caddy-stable.list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;# apt update&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Finally, install Caddy using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt install caddy&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, navigate to your browser and enter your server IP or domain name:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://Server-IP" rel="noopener noreferrer"&gt;http://Server-IP&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OR&lt;/p&gt;

&lt;p&gt;&lt;a href="http://example.com" rel="noopener noreferrer"&gt;http://example.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install Caddy on Ubuntu&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Configure Domain with Caddy
&lt;/h4&gt;

&lt;p&gt;Before moving following, first set up domain’s A/AAAA  DNS record at your registrar or control panel.&lt;/p&gt;

&lt;p&gt;Note: Replace hostnextra.com with your domain name&lt;/p&gt;

&lt;p&gt;Create a directory for your website files&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# mkdir -p /var/www/html/hostnextra.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, if you are using SELinux than you need to change the file security context for web content. (Optional)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# chcon -t httpd_sys_content_t /var/www/html/hostnextra.com -R
# chcon -t httpd_sys_rw_content_t /var/www/html/hostnextra.com -R
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, open Caddy’s configuration file and add your domain name and change website’s root directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# nano /etc/caddy/Caddyfile&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Change the site root to /var/www/html/hostnextra.com (write your website path) as&lt;/p&gt;

&lt;p&gt;install Caddy HostnExtra&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to use SSL, you need to mention :443 SSL port and also install SSL certificate.&lt;/p&gt;

&lt;p&gt;You can run caddy trust command to install SSL local certificate. We’ve not tested it yet. If we perform it in future, we’ll update the tutorial. You can check the official document about Automatic HTTPS for more information.&lt;/p&gt;

&lt;p&gt;Once you done with the changes reload the caddy.service to reflect the changes.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# systemctl reload caddy&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, create a index.html file in /var/www/html/hostnextra.com using 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;# echo ‘&amp;lt;!doctype html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Hello from Caddy!&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;h1 style=”font-family: sans-serif”&amp;gt;This page is being served via Caddy&amp;lt;/h1&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;’ | sudo tee /var/www/html/hostnextra.com/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, refresh the page in your browser and you will see our newly created index.html.&lt;/p&gt;

&lt;p&gt;In this article, we have seen how to install Caddy on Ubuntu 22.04.&lt;/p&gt;

</description>
      <category>caddy</category>
      <category>webserver</category>
      <category>ubuntu</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Install Snipe-IT on Ubuntu 22.04 - HostnExtra</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Mon, 17 Oct 2022 12:14:14 +0000</pubDate>
      <link>https://dev.to/hostnextra/install-snipe-it-on-ubuntu-2204-hostnextra-n2a</link>
      <guid>https://dev.to/hostnextra/install-snipe-it-on-ubuntu-2204-hostnextra-n2a</guid>
      <description>&lt;p&gt;In this article, we'll explain how to install Snipe-IT on Ubuntu 22.04.&lt;/p&gt;

&lt;p&gt;Snipe-IT was made for IT asset management, to enable IT departments to track who has which laptop, when it was purchased, which software licenses and accessories are available, and so on. Snipe-IT is a open-source IT asset management and it eliminates the need for complex IT asset tracking spreadsheets.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;An Ubuntu 22.04 installed &lt;a href="https://www.hostnextra.com/dedicated-server.html" rel="noopener noreferrer"&gt;dedicated server&lt;/a&gt; or &lt;a href="https://www.hostnextra.com/vps-hosting.html" rel="noopener noreferrer"&gt;KVM VPS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;A root user access or normal user with administrative privileges.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.hostnextra.com/kb/install-snipe-it-on-ubuntu/" rel="noopener noreferrer"&gt;Install Snipe-IT on Ubuntu 22.04&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Update the server and install dependencies:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# sudo apt update -y &amp;amp;&amp;amp; apt upgrade -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Install unzip dependency&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo apt-get install unzip git -y&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Install Apache Webserver
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# sudo apt install apache2 -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In case, you enabled firewall and firewall block requests of the apache web server, open a port in the firewall.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# sudo ufw allow 80/tcp

# sudo ufw allow 443/tcp

# sudo ufw reload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, let's verify the Apache installation. Open browser and test default page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;http://[SERVER IP]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enable Apache's&amp;nbsp;mod_rewrite&amp;nbsp;module. Snipe-IT requires this extension to rewrite URLs more cleanly.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo a2enmod rewrite&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Restart your Apache web server to apply the changes.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo systemctl restart apache2&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Install MariaDB
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# sudo apt install mariadb-server mariadb-client -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The default configuration of the MariaDB will not be secured. Let's secured the installation using the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo mysql_secure_installation&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once the script gets executed, it will ask multiple questions.&lt;/p&gt;

&lt;p&gt;It will ask you to enter the current password for root (enter for none):&lt;/p&gt;

&lt;p&gt;Then enter yes/y to the following security questions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set a root password? [Y/n]: y
Remove anonymous users? : y
Disallow root login remotely? : y
Remove test database and access to it? : y
Reload privilege tables now? : y 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  4. Install PHP and PHP Composer
&lt;/h4&gt;

&lt;p&gt;Here we are installing the default PHP version 8.1 and other modules for web deployments using 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;# sudo apt install php php-common php-bcmath php-bz2 php-intl php-gd php-mbstring php-mysql php-zip php-opcache php-intl php-json php-mysqli php-readline php-tokenizer php-curl php-ldap -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install PHP Composer, which is a PHP dependency management tool to install and update libraries in your Snipe-IT.&lt;/p&gt;

&lt;p&gt;Download the&amp;nbsp;Composer&amp;nbsp;installer.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo curl -sS https://getcomposer.org/installer | php&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Move the&amp;nbsp;composer.phar&amp;nbsp;executable to&amp;nbsp;/usr/local/bin/.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo mv composer.phar /usr/local/bin/composer&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Create a Database
&lt;/h4&gt;

&lt;p&gt;Create a database and database user for Snipe-IT. First login into MySQL/MariaDB as a root user.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo mysql -u root -p&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Run following commands to perform this task:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE DATABASE snipe_it;
CREATE USER 'snipe_it_user'@'localhost' IDENTIFIED BY 'EXAMPLE_PASSWORD';
GRANT ALL PRIVILEGES ON snipe_it.* TO 'snipe_it_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: Replace snipe_it_user to your choice username and replace EXAMPLE_PASSWORD to you choice password.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Install Snipe-IT
&lt;/h4&gt;

&lt;p&gt;Navigate to the root directory of your web server.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# cd /var/www/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use git to clone the latest Snipe-IT repository from the&amp;nbsp;&lt;a href="https://github.com/snipe/snipe-it%C2%A0URL" rel="noopener noreferrer"&gt;https://github.com/snipe/snipe-it&amp;nbsp;URL&lt;/a&gt; and copy the downloaded files to a&amp;nbsp;snipe-it&amp;nbsp;directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo git clone https://github.com/snipe/snipe-it snipe-it&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Switch to the&amp;nbsp;snipe-it&amp;nbsp;directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# cd snipe-it&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Snipe-IT ships with a sample configuration file. Copy it to&amp;nbsp;/var/www/snipe-it/.env.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo cp /var/www/snipe-it/.env.example /var/www/snipe-it/.env&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Edit the configuration file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo nano /var/www/snipe-it/.env&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In the Snipe-IT configuration file, locate these settings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;APP_URL=null
APP_TIMEZONE='UTC'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set&amp;nbsp;APP_URL&amp;nbsp;to your server's Fully Qualified Domain Name, or it's public IP address. If you use a time zone other than UTC, change the timezone to&amp;nbsp;a PHP-supported timezone, and enclose it in single quotes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;APP_URL=example.com
APP_TIMEZONE='America/New_York'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Locate these settings.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DB_DATABASE=null
DB_USERNAME=null
DB_PASSWORD=null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change those values to the database information you set up in Step 3.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DB_DATABASE=snipe_it
DB_USERNAME=snipe_it_user
DB_PASSWORD=EXAMPLE_PASSWORD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and close the file.&lt;/p&gt;

&lt;p&gt;Install the Snipe-IT dependencies with Composer. You'll receive a warning not to run this as root on each command. It's okay to continue as root for the Snipe-IT install, so type&amp;nbsp;yes&amp;nbsp;and hit&amp;nbsp;ENTER.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# composer update --no-plugins --no-scripts&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# composer install --no-dev --prefer-source --no-plugins --no-scripts&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Set the correct ownership and permission for the Snipe-IT data directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo chown -R www-data:www-data /var/www/snipe-it&lt;/code&gt;&lt;br&gt;
&lt;code&gt;# sudo chmod -R 777 storage&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once the&amp;nbsp;Composer&amp;nbsp;finishes running, generate a Laravel&amp;nbsp;APP_Key&amp;nbsp;value in the&amp;nbsp;/var/www/snipe-it/.env&amp;nbsp;configuration file you created earlier. Type&amp;nbsp;yes&amp;nbsp;and hit&amp;nbsp;ENTER&amp;nbsp;when prompted to continue.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo php artisan key:generate&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  7. Create a Virtual Host File
&lt;/h4&gt;

&lt;p&gt;First we'll disable default Apacheconf file and create new vhost conf file.&lt;/p&gt;

&lt;p&gt;Disable the default Apache configuration file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#sudo&amp;nbsp; a2dissite 000-default.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a new Apache configuration file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo nano /etc/apache2/sites-available/snipe-it.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Paste the information below and replace&amp;nbsp;example.com&amp;nbsp;with your server's domain name or public IP address.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;VirtualHost *:80&amp;gt;
ServerName example.com
DocumentRoot /var/www/snipe-it/public
&amp;lt;Directory /var/www/snipe-it/public&amp;gt;
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
&amp;lt;/Directory&amp;gt;
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and exit the file.&lt;/p&gt;

&lt;p&gt;Enable your new configuration file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo a2ensite snipe-it.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Restart your Apache web server to apply the changes.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo systemctl restart apache2&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Run the Setup Wizard
&lt;/h4&gt;

&lt;p&gt;Navigate to your browser and access the setup wizard using your server IP or domain name you have mentioned in vhost conf file.&lt;/p&gt;

&lt;p&gt;Once you complete the setup wizar your will redirect to dashbord&lt;/p&gt;

&lt;p&gt;In this article, we have seen how to install Snipe-IT on Ubuntu 22.04.&lt;/p&gt;

</description>
      <category>caddy</category>
      <category>webserver</category>
      <category>ubuntu</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Install CouchDB on Ubuntu 22.04 - HostnExtra</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Thu, 13 Oct 2022 13:47:32 +0000</pubDate>
      <link>https://dev.to/hostnextra/install-couchdb-on-ubuntu-2204-hostnextra-42fp</link>
      <guid>https://dev.to/hostnextra/install-couchdb-on-ubuntu-2204-hostnextra-42fp</guid>
      <description>&lt;p&gt;In this article, we'll explain how to install CouchDB on Ubuntu 22.04 and configure it with Nginx proxy server and Certbot SSL.&lt;/p&gt;

&lt;p&gt;Apache CouchDB is an open-source document-oriented NoSQL database, implemented in Erlang. Seamless multi-master sync, that scales from Big Data to Mobile, with an Intuitive HTTP/JSON API and designed for Reliability. Store your data safely, on your own servers, or with any leading cloud provider. Your web- and native applications love CouchDB, because it speaks JSON natively and supports binary data for all your data storage needs.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;A Ubuntu 22.04 installed dedicated server or KVM VPS with root or non-root access (for non-root, use "sudo").&lt;/li&gt;
&lt;li&gt;A DNS A record that points your domain to the public IP address of the server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's start with the installation process&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hostnextra.com/kb/install-couchdb-on-ubuntu/" rel="noopener noreferrer"&gt;Install CouchDB on Ubuntu&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Update the server and install dependency
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# sudo apt update &amp;amp;&amp;amp; sudo apt install -y curl apt-transport-https gnupg&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Configure the CouchDB repository and key.
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
# echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" | sudo tee /etc/apt/sources.list.d/couchdb.list &amp;gt;/dev/null
# sudo apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;If you get following error, edit couchdb.list and add jammy before main. It will resolve it.

E: Malformed entry 1 in list file /etc/apt/sources.list.d/couchdb.list (Component)
E: The list of sources could not be read
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  3. Install CouchDB
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# sudo apt install -y couchdb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The installation will ask few question.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. standalone 2. clustered 3. none
General type of CouchDB configuration: 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose according to your choice. We have select 1 for this demonstration purpose.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A CouchDB node has an Erlang magic cookie value set at startup.

This value must match for all nodes in the cluster. If they do not match, attempts to connect the node to the cluster will be rejected.

CouchDB Erlang magic cookie: monkey
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set the&amp;nbsp;Erlang Magic Cookie. This is a unique identifier to authenticate for your cluster, all nodes must have the same cookie. Here we have wrote monkey. You can write anything you want.&lt;/p&gt;

&lt;p&gt;The default is 127.0.0.1 (loopback) for standalone nodes, and 0.0.0.0 (all interfaces) for clustered nodes. In clustered mode, it is not allowed to bind to 127.0.0.1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CouchDB interface bind address: 0.0.0.0

Add bind address as 0.0.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A pre-existing admin user will not be overwritten by this package.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Password for the CouchDB "admin" user:

Repeat password for the CouchDB "admin" user:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here add admin password as per your choice.&lt;/p&gt;

&lt;p&gt;The installation has been completed successfully. Navigate to browser and open http://:5984/_utils/&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Configure Nginx
&lt;/h4&gt;

&lt;p&gt;Now, let's configure Nginx proxy. Install Nginx using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo apt-get install -y nginx apache2-utils&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Remove default Nginx config file, we'll create our own config file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo rm -rf /etc/nginx/sites-enabled/default&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now create a new config file&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# nano /etc/nginx/sites-available/couchdb-site&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
listen 80 default_server;
server_name coachdb.local;

location / {
proxy_pass http://localhost:5984;
proxy_redirect off;

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

}

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For security reason, you can change the default http 80 port to something else like 5000. So to access it you need to mention 5000 port at the end of website name. But it may create conflict with SSL. We've not test different port with SSL.&lt;/p&gt;

&lt;p&gt;Now, create a symbolic link and restart Nginx service using 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;# ln -s /etc/nginx/sites-available/couchdb-site /etc/nginx/sites-enabled/
# nginx -t
# systemctl restart nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  5. Configure Firewall
&lt;/h4&gt;

&lt;p&gt;Enable UFW if its not enabled.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# ufw enable&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add following ports:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# ufw allow 22/tcp

# ufw allow 80/tcp

# ufw allow 443/tcp

# ufw allow 5984/tcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the status:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# ufw status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your SSH port might be different.&lt;br&gt;
If you have custom Nginx web server port, add that port also.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Install certbot's nginx package
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# apt install certbot python3-certbot-nginx -y&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Obtaining a Certificate
&lt;/h4&gt;

&lt;p&gt;Obtain a certificate using certbot command. The Nginx plugin will take care of reconfiguring Nginx and reloading the config.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# certbot --nginx -d yoursite.com -d www.yousite.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;By running certbot first time, you will be prompted to enter an email address and agree to the terms of service.&lt;/p&gt;

&lt;p&gt;That's it, we have successfully install CouchDB on Ubuntu 22.04 and configured it with Nginx proxy server and Certbot SSL.&lt;/p&gt;

</description>
      <category>couchdb</category>
      <category>ubuntu</category>
      <category>database</category>
      <category>nginx</category>
    </item>
    <item>
      <title>Install Grafana on Rocky Linux 9 - HostnExtra</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Tue, 11 Oct 2022 11:57:12 +0000</pubDate>
      <link>https://dev.to/hostnextra/install-grafana-on-rocky-linux-9-hostnextra-1f4f</link>
      <guid>https://dev.to/hostnextra/install-grafana-on-rocky-linux-9-hostnextra-1f4f</guid>
      <description>&lt;p&gt;In this tutorial, we shall show you how to install Grafana on Rocky Linux 9. We shall install Grafana Enterprise&amp;nbsp; and Open Source CLI version 9.1.7-1 with PostgreSQL.&lt;/p&gt;

&lt;p&gt;Grafana&amp;nbsp;is open source visualization and analytics software. It allows you to query, visualize, alert on, and explore your metrics no matter where they are stored. In plain English, it provides you with tools to turn your time-series database (TSDB) data into beautiful graphs and visualizations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;A Rocky Linux 9 dedicated server&amp;nbsp;or&amp;nbsp;KVM VPS.&lt;/p&gt;

&lt;p&gt;Supported databases are SQLite, MySQL, and PostgreSQL.&lt;br&gt;
A root user access or normal user with administrative privileges.&lt;/p&gt;

&lt;p&gt;By default, Grafana installs with and uses SQLite, which is an embedded database stored in the Grafana installation location. In this tutorial we are going to install PostgreSQL and configure it.&lt;/p&gt;

&lt;p&gt;Let’s get started with the installation process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hostnextra.com/kb/how-to-install-grafana-on-rocky-linux/" rel="noopener noreferrer"&gt;Install Grafana on Rocky Linux 9&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 1 - Keep the server up to date
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# dnf update -y&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 2 - Install PostgreSQL database
&lt;/h4&gt;

&lt;p&gt;Install PostgreSQL database using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt install -y postgresql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Start and enable PostgreSQL service:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# systemctl start postgresql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# systemctl enable postgresql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, we need to create a database for Grafana and assign it a username and password for authentication.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo -u postgres psql&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;postgres=# CREATE DATABASE grafana;

CREATE DATABASE

postgres=# CREATE USER grafana WITH PASSWORD 'grafana';

CREATE ROLE

postgres=# GRANT ALL PRIVILEGES ON DATABASE grafana TO grafana;

GRANT

postgres=#\c grafana

You are now connected to database "grafana" as user "postgres".

postgres=#CREATE TABLE session ( key CHAR(16) NOT NULL, data bytea, expiry INT NOT NULL, PRIMARY KEY (key));

CREATE TABLE

postgres=# \q
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note:&lt;/p&gt;

&lt;p&gt;Use your own database name as well as username and set strong password.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3 - Create repository file
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# vi /etc/yum.repos.d/grafana.repo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add following lines:&lt;/p&gt;

&lt;p&gt;For Enterprise releases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[grafana]
name=grafana
baseurl=https://packages.grafana.com/enterprise/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For OSS releases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 4 - Install Grafana
&lt;/h4&gt;

&lt;p&gt;Before you install Grafana, there is a one change we need to make. From RHEL 9 SHA-1 is deprecated and Grafana uses SHA-1 to GPG key. It will fail by default but if we update default crypto policies to SHA-1, it will not fail and get install successfully. Run following command to update it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# update-crypto-policies --set DEFAULT:SHA1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now we can install Grafana.&lt;/p&gt;

&lt;p&gt;For Enterprise:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# dnf install grafana-enterprise -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For Open Source.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# dnf install grafana -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add port 3000 in the firewall.&lt;/p&gt;

&lt;p&gt;If you are using firewalld:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# firewall-cmd --add-port=3000/tcp --permanent&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# firewall-cmd --reload&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you are using IPTables:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# iptables -A INPUT -p tcp --dport 3000 -j ACCEPT&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# iptables-save&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 5: Configure PostgreSQL:
&lt;/h4&gt;

&lt;p&gt;First edit pg_hba.conf file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# vi /var/lib/pgsql/14/data/pg_hba.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add following lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;host all grafana 0.0.0.0/0 trust
local all grafana trust
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and exit.&lt;/p&gt;

&lt;p&gt;Finally, modify default database configuration and set to PostgreSQL database configuration.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# vi /etc/grafana/grafana.ini&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[database]
# You can configure the database connection by specifying type, host, name, user and password
# as separate properties or as on string using the url properties.

# Either "mysql", "postgres" or "sqlite3", it's your choice
type = postgres
host = 127.0.0.1:5432
name = grafana
user = grafana
password = grafana
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note:&lt;/p&gt;

&lt;p&gt;Change the name, user, and password as your configurations.&lt;/p&gt;

&lt;p&gt;Save and exit.&lt;/p&gt;

&lt;p&gt;To start and enable the service and verify that the service has started: grafana-server.service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# systemctl start grafana-server.service
# systemctl enable grafana-server.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Package details&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Default file (environment vars) to /etc/sysconfig/grafana-server&lt;/li&gt;
&lt;li&gt;Configuration file to /etc/grafana/grafana.ini
systemd service (if systemd is available) name&amp;nbsp;grafana-server.service&lt;/li&gt;
&lt;li&gt;The default configuration uses a log file at&amp;nbsp;/var/log/grafana/grafana.log&lt;/li&gt;
&lt;li&gt;The default configuration specifies an sqlite3 database at&amp;nbsp;/var/lib/grafana/grafana.db&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fopldnmlk8lt0pwd06tfs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fopldnmlk8lt0pwd06tfs.png" alt=" " width="800" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The installation is completed successfully.&lt;/p&gt;

&lt;p&gt;In this tutorial, you have learnt how to install Grafana on Rocky Linux 9.&lt;/p&gt;

</description>
      <category>rockylinux</category>
      <category>grafana</category>
      <category>postgres</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How To Install Grafana on AlmaLinux 9 - HostnExtra</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Mon, 10 Oct 2022 13:55:48 +0000</pubDate>
      <link>https://dev.to/hostnextra/how-to-install-grafana-on-almalinux-9-4h26</link>
      <guid>https://dev.to/hostnextra/how-to-install-grafana-on-almalinux-9-4h26</guid>
      <description>&lt;p&gt;In this tutorial, we shall show you how to install Grafana on AlmaLinux 9. We shall install Grafana Enterprise&amp;nbsp; and Open Source CLI version 9.1.7-1 with PostgreSQL.&lt;/p&gt;

&lt;p&gt;Grafana&amp;nbsp;is open source visualization and analytics software. It allows you to query, visualize, alert on, and explore your metrics no matter where they are stored. In plain English, it provides you with tools to turn your time-series database (TSDB) data into beautiful graphs and visualizations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;A AlmaLinux 9 dedicated server&amp;nbsp;or&amp;nbsp;KVM VPS.&lt;/p&gt;

&lt;p&gt;Supported databases are SQLite, MySQL, and PostgreSQL.&lt;br&gt;
A root user access or normal user with administrative privileges.&lt;/p&gt;

&lt;p&gt;By default, Grafana installs with and uses SQLite, which is an embedded database stored in the Grafana installation location. In this tutorial we are going to install PostgreSQL and configure it.&lt;/p&gt;

&lt;p&gt;Let’s get started with the installation process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hostnextra.com/kb/how-to-install-grafana-on-almalinux/" rel="noopener noreferrer"&gt;Install Grafana on AlmaLinux 9&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 1 - Keep the server up to date
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# dnf update -y&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 2 - Install PostgreSQL database
&lt;/h4&gt;

&lt;p&gt;Before you install PostgreSQL, check the current version here and download.&lt;/p&gt;

&lt;p&gt;Install the repository RPM:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Disable the built-in PostgreSQL module:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# dnf -qy module disable postgresql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Install PostgreSQL database using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# dnf install -y postgresql14-server&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Initialize, start, and enable PostgreSQL service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

# systemctl start postgresql-14

# systemctl enable postgresql-14
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we need to create a database for Grafana and assign it a username and password for authentication.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo -u postgres psql&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;postgres=# CREATE DATABASE grafana;

CREATE DATABASE

postgres=# CREATE USER grafana WITH PASSWORD 'grafana';

CREATE ROLE

postgres=# GRANT ALL PRIVILEGES ON DATABASE grafana TO grafana;

GRANT

postgres=#\c grafana

You are now connected to database "grafana" as user "postgres".

postgres=#CREATE TABLE session ( key CHAR(16) NOT NULL, data bytea, expiry INT NOT NULL, PRIMARY KEY (key));

CREATE TABLE

postgres=# \q
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use your own database name as well as username and set strong password.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3 - Create repository file
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# vi /etc/yum.repos.d/grafana.repo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add following lines:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Enterprise releases:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[grafana]
name=grafana
baseurl=https://packages.grafana.com/enterprise/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;For OSS releases:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 4 - Install Grafana
&lt;/h4&gt;

&lt;p&gt;Before you install Grafana, there is a one change we need to make. From RHEL 9 SHA-1 is deprecated and Grafana uses SHA-1 to GPG key. It will fail by default but if we update default crypto policies to SHA-1, it will not fail and get install successfully. Run following command to update it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# update-crypto-policies --set DEFAULT:SHA1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now we can install Grafana.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# dnf install grafana-enterprise -y

or

# dnf install grafana -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add port 3000 in the firewall.&lt;/p&gt;

&lt;p&gt;If you are using firewalld:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# firewall-cmd --add-port=3000/tcp --permanent

# firewall-cmd --reload

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are using IPTables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# iptables -A INPUT -p tcp --dport 3000 -j ACCEPT

# iptables-save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 5: Configure PostgreSQL:
&lt;/h4&gt;

&lt;p&gt;First edit pg_hba.conf file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# vi /var/lib/pgsql/14/data/pg_hba.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add following lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;host all grafana 0.0.0.0/0 trust
local all grafana trust
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and exit.&lt;/p&gt;

&lt;p&gt;Finally, modify default database configuration and set to PostgreSQL database configuration.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# vi /etc/grafana/grafana.ini&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[database]
# You can configure the database connection by specifying type, host, name, user and password
# as separate properties or as on string using the url properties.

# Either "mysql", "postgres" or "sqlite3", it's your choice
type = postgres
host = 127.0.0.1:5432
name = grafana
user = grafana
password = grafana
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Change the name, user, and password as your configurations.&lt;/p&gt;

&lt;p&gt;Save and exit.&lt;/p&gt;

&lt;p&gt;To start and enable the service and verify that the service has started: grafana-server.service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# systemctl start grafana-server.service
# systemctl enable grafana-server.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Package details&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Default file (environment vars) to /etc/sysconfig/grafana-server&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configuration file to /etc/grafana/grafana.ini&lt;br&gt;
systemd service (if systemd is available) name&amp;nbsp;grafana-server.service&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The default configuration uses a log file at&amp;nbsp;/var/log/grafana/grafana.log&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The default configuration specifies an sqlite3 database at&amp;nbsp;/var/lib/grafana/grafana.db&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The installation is completed successfully.&lt;/p&gt;

&lt;p&gt;In this tutorial, you have learnt how to install Grafana on AlmaLinux 9.&lt;/p&gt;

</description>
      <category>almalinux</category>
      <category>grafana</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>A Guide to Install Grafana on Ubuntu 22.04 - HostnExtra</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Wed, 05 Oct 2022 11:01:37 +0000</pubDate>
      <link>https://dev.to/hostnextra/a-guide-to-install-grafana-on-ubuntu-2204-2ch2</link>
      <guid>https://dev.to/hostnextra/a-guide-to-install-grafana-on-ubuntu-2204-2ch2</guid>
      <description>&lt;p&gt;In this tutorial, you will learn how to install Grafana on Ubuntu 22.04 with PostgreSQL DB. We shall install Grafana Enterprise&amp;nbsp; and Open Source CLI version 9.1.6.&lt;/p&gt;

&lt;p&gt;Grafana is open source visualization and analytics software. It allows you to query, visualize, alert on, and explore your metrics no matter where they are stored. In plain English, it provides you with tools to turn your time-series database (TSDB) data into beautiful graphs and visualizations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;A Ubuntu 22.04 dedicated server or KVM VPS.&lt;/p&gt;

&lt;p&gt;Supported databases are SQLite, MySQL, and PostgreSQL.&lt;br&gt;
A root user access or normal user with administrative privileges.&lt;/p&gt;

&lt;p&gt;By default, Grafana installs with and uses SQLite, which is an embedded database stored in the Grafana installation location. Here we're installing PostgreSQL database.&lt;/p&gt;

&lt;p&gt;Let's get started with the installation process.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;a href="https://www.hostnextra.com/kb/a-guide-to-install-grafana-on-ubuntu/" rel="noopener noreferrer"&gt;Install Grafana on Ubuntu 22.04&lt;/a&gt;
&lt;/h4&gt;
&lt;h4&gt;
  
  
  Step 1 - Keep the server up to date
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# apt update -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt upgrade -y&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 2 - Install PostgreSQL database
&lt;/h4&gt;

&lt;p&gt;Install PostgreSQL database using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt install -y postgresql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Start and enable PostgreSQL service:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# systemctl start postgresql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# systemctl enable postgresql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, we need to create a database for Grafana and assign it a username and password for authentication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# sudo -u postgres psql

postgres=# CREATE DATABASE grafana;

CREATE DATABASE

postgres=# CREATE USER grafana WITH PASSWORD 'grafana';

CREATE ROLE

postgres=# GRANT ALL PRIVILEGES ON DATABASE grafana TO grafana;

GRANT

postgres=#\c grafana

You are now connected to database "grafana" as user "postgres".

postgres=#CREATE TABLE session ( key CHAR(16) NOT NULL, data bytea, expiry INT NOT NULL, PRIMARY KEY (key));

CREATE TABLE

postgres=# \q
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note:&lt;/p&gt;

&lt;p&gt;Use your own database name as well as username and set strong password.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2 - Install required package and add GPG key
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;# apt-get install apt-transport-https -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3 - Add this repository for stable releases
&lt;/h4&gt;

&lt;p&gt;Latest Enterprise edition&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# echo "deb https://packages.grafana.com/enterprise/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Latest OSS release&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4 - Install Grafana Enterprise
&lt;/h4&gt;

&lt;p&gt;After you add the repository first update the server and install the Grafana Enterprise.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt-get update -y&lt;/code&gt;&lt;br&gt;
&lt;code&gt;# apt-get install grafana-enterprise -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To install OSS release:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt-get update -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# apt-get install grafana -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Configure PostgreSQL:&lt;/p&gt;

&lt;p&gt;First edit pg_hba.conf file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# nano /etc/postgresql/14/main/pg_hba.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add following lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;host all grafana 0.0.0.0/0 trust
local all grafana trust
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save and exit.&lt;/p&gt;

&lt;p&gt;Finally, modify default database configuration and set to PostgreSQL database configuration.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# nano /etc/grafana/grafana.ini&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[database]
# You can configure the database connection by specifying type, host, name, user and password
# as separate properties or as on string using the url properties.

# Either "mysql", "postgres" or "sqlite3", it's your choice
type = postgres
host = 127.0.0.1:5432
name = grafana
user = grafana
password = grafana
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note:&lt;/p&gt;

&lt;p&gt;Change the name, user, and password as your configurations.&lt;/p&gt;

&lt;p&gt;Save and exit.&lt;/p&gt;

&lt;p&gt;To start and enable the service and verify that the service has started: grafana-server.service.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# systemctl start grafana-server.service&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# systemctl enable grafana-server.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Package details&lt;br&gt;
Default file (environment vars) to /etc/default/grafana-server&lt;br&gt;
Configuration file to /etc/grafana/grafana.ini&lt;br&gt;
systemd service (if systemd is available) name grafana-server.service&lt;br&gt;
The default configuration sets the log file at&amp;nbsp;/var/log/grafana/grafana.log&lt;br&gt;
HTML/JS/CSS and other Grafana files at /usr/share/grafana&lt;br&gt;
Step 5 - Log in into dashboard&lt;/p&gt;

&lt;p&gt;To log in to Grafana for the first time:&lt;/p&gt;

&lt;p&gt;Open your web browser and go to &lt;a href="http://localhost:3000/" rel="noopener noreferrer"&gt;http://localhost:3000/&lt;/a&gt;. The default HTTP port that Grafana listens to is&amp;nbsp;3000&amp;nbsp;unless you have configured a different port.&lt;br&gt;
On the login page, enter&amp;nbsp;admin&amp;nbsp;for username and password.&lt;br&gt;
Click&amp;nbsp;Log In. If login is successful, then you will see a prompt to change the password.&lt;br&gt;
Click&amp;nbsp;OK&amp;nbsp;on the prompt, then change your password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg6ssof8q3ri8iuacaguv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg6ssof8q3ri8iuacaguv.png" alt=" " width="800" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The installation is completed successfully.&lt;/p&gt;

&lt;p&gt;In this tutorial, you have learnt how to install Grafana on Ubuntu 22.04.&lt;/p&gt;

</description>
      <category>grafana</category>
      <category>ubuntu</category>
      <category>postgres</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How To Install Git Server on Ubuntu 22.04 - HostnExtra</title>
      <dc:creator>HostnExtra Technologies</dc:creator>
      <pubDate>Thu, 29 Sep 2022 11:45:48 +0000</pubDate>
      <link>https://dev.to/hostnextra/how-to-install-git-server-on-ubuntu-2204-hostnextra-31g4</link>
      <guid>https://dev.to/hostnextra/how-to-install-git-server-on-ubuntu-2204-hostnextra-31g4</guid>
      <description>&lt;p&gt;In this tutorial, we will see how to install Git server on Ubuntu 22.04. You will learn to install and configure Git server.&lt;/p&gt;

&lt;p&gt;Git is a distributed version-control system for tracking changes in source code during software development. It is designed for coordinating work among programmers, but it can be used to track changes in any set of files. Its goals include speed, data integrity, and support for distributed, non-linear workflows.&lt;/p&gt;

&lt;p&gt;Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.&lt;/p&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;A Ubuntu 22.04 installed dedicated server or KVM VPS.&lt;br&gt;
A root user access or normal user with administrative privileges.&lt;br&gt;
Add DNS A record of your server's hostname. For example we are using hub.hostnextra.com as our server hostname. Or else use your server IP address in the place of hub.hostnextra.com.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;a href="https://www.hostnextra.com/kb/how-to-install-git-server-on-ubuntu/" rel="noopener noreferrer"&gt;Install Git Server on Ubuntu 22.04&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Let's get started with installation. There are two ways to install Git.&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 1 is install Git using APT
&lt;/h4&gt;

&lt;p&gt;Keep the server up-to-date&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo apt update -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Install Git&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo apt install git -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Verify the installation:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git --version&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 2 is install git from source
&lt;/h4&gt;

&lt;p&gt;You can download latest version of Git from release page. It make take longer time and will not be updated and maintained through the yum package manager. But it will allow you to download a newer version than what is available through the CentOS repositories, and will give you some control over the options that you can include.&lt;/p&gt;

&lt;p&gt;First, install dependencies&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo apt install libz-dev libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext cmake gcc -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After the installation complete, go to release page and copy the download link. You can find tar.gz, right click on it and copy the link.&lt;/p&gt;

&lt;p&gt;Now, download it in the server using wget command and rename it:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo wget https://github.com/git/git/archive/refs/heads/master.zip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once the download is complete, we can extract the tar file&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# unzip master.zip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, go to that directory to begin configuring our build.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# cd git-master&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, you can make the package and install it by typing these two commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo&amp;nbsp;make prefix=/usr/local all&lt;/code&gt;&lt;br&gt;
&lt;code&gt;# sudo make prefix=/usr/local install&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, replace the shell process so that the version of Git we just installed will be used:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# exec bash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We have built and installed Git successfully. To verify it check the version using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git --version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Configure Git&lt;/p&gt;

&lt;p&gt;Add user to handle the repositories:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo adduser git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Log in as a git user&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo su - git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Initiate a new empty repository using following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git init --bare ~/hostnextra.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Enable post-update hook by copying the sample file as follows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# cd hostnextra.git/hooks/&lt;/code&gt;&lt;br&gt;
&lt;code&gt;# cp post-update.sample post-update&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That's it for server side.&lt;/p&gt;

&lt;p&gt;Now let's go to client side:&lt;/p&gt;

&lt;p&gt;Install Git&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# sudo apt install git -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once the installation gets completed, start the configuring the Git&lt;/p&gt;

&lt;p&gt;Configure Git&lt;/p&gt;

&lt;p&gt;Submit inflammation about yourself so that commit messages will be generated with correct information attached:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git config --global user.name "git"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;# git config --global user.email "git@hub.hostnextra.com"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a directory where you can keep all your projects&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# mkdir ~/dev&lt;/code&gt;&lt;br&gt;
&lt;code&gt;# cd ~/dev&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, create a clone the hostnextra.git repository that we have created earlier in the server&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git clone git@hub.hostnextra.com:~/hostnextra.git hostnextra.git&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cloning into 'hostnextra.git'...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It will ask to enter git user password:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="mailto:git@hub.hostnextra.com"&gt;git@hub.hostnextra.com&lt;/a&gt;'s password:&lt;br&gt;
warning: You appear to have cloned an empty repository.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Go to respository&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# cd hostnextra.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can see the repository is empty, so lets create some files&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# echo "my test file" &amp;gt; file1.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add these file to our git repository&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git add .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Commit the changes&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git commit -am "My First Commit"&lt;br&gt;
[master (root-commit) b337197] My First Commit&lt;br&gt;
1 file changed, 1 insertion(+)&lt;br&gt;
create mode 100644 file1.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Push these changes to the remote git repository at hub.hostnextra.com&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git push origin master&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;you will be asked for password, enter git user password&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git@hub.hostnextra.com's password:
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 229 bytes | 76.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To hub.hostnextra.com:~/hostnextra.git
* [new branch] master -&amp;gt; master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify the changes, access the git server and run following command to check the logs&lt;/p&gt;

&lt;p&gt;&lt;code&gt;# git log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Output will be similar like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;commit b3371975bd44fb4aca344e365fa635180967f7fe (HEAD -&amp;gt; master)&lt;br&gt;
Author: git &lt;a href="mailto:git@hub.hostnextra.com"&gt;git@hub.hostnextra.com&lt;/a&gt;&lt;br&gt;
Date: Wed Apr 14 10:06:06 2021 +0000&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My First Commit&lt;/p&gt;

&lt;p&gt;We have successfully install Git server on Ubuntu 22.04.&lt;/p&gt;

</description>
      <category>git</category>
      <category>ubuntu</category>
      <category>linux</category>
      <category>hostnextra</category>
    </item>
  </channel>
</rss>
