<?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: olivia Millie</title>
    <description>The latest articles on DEV Community by olivia Millie (@eservers).</description>
    <link>https://dev.to/eservers</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3741579%2Fe820c500-bb5a-499c-8a49-a1e0f63f3fea.webp</url>
      <title>DEV Community: olivia Millie</title>
      <link>https://dev.to/eservers</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eservers"/>
    <language>en</language>
    <item>
      <title>Setting Up Wazuh SIEM for Server Log Monitoring on Linux</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Fri, 11 Sep 2026 10:44:22 +0000</pubDate>
      <link>https://dev.to/e_servers/setting-up-wazuh-siem-for-server-log-monitoring-on-linux-7eg</link>
      <guid>https://dev.to/e_servers/setting-up-wazuh-siem-for-server-log-monitoring-on-linux-7eg</guid>
      <description>&lt;p&gt;A firewall stops unwanted traffic from getting in. It tells you nothing about what happens after something gets past it — a compromised WordPress plugin, a leaked SSH key, a cron job that shouldn't be there. That's the gap a SIEM fills.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wazuh&lt;/strong&gt; is the most widely deployed open-source option for self-hosted server monitoring and intrusion detection. Hosting it on a &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Server&lt;/a&gt; gives the OpenSearch indexer the RAM it needs to process logs rapidly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install the Central Components
&lt;/h3&gt;

&lt;p&gt;Wazuh provides an all-in-one installation script that deploys the manager, indexer, and dashboard together:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
curl -sO [https://packages.wazuh.com/4.x/wazuh-install.sh](https://packages.wazuh.com/4.x/wazuh-install.sh)
sudo bash ./wazuh-install.sh -a


Save the auto-generated admin credentials!

Step 2 &amp;amp; 3: Firewall Configuration
Open the required ports: 443 (Dashboard), 55000 (API), and 1514/1515 (Agent communication).

Step 4: Install and Enroll an Agent
On each server you want monitored:

curl -sO [https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.x_amd64.deb](https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.x_amd64.deb)
sudo WAZUH_MANAGER='your-manager-ip' dpkg -i ./wazuh-agent_4.x_amd64.deb
sudo systemctl daemon-reload
sudo systemctl enable --now wazuh-agent

Step 5: Enable File Integrity Monitoring (FIM)
Edit /var/ossec/etc/ossec.conf on the agent to watch specific directories for webshells or unwanted changes:

XML
&amp;lt;syscheck&amp;gt;
  &amp;lt;directories check_all="yes" report_changes="yes"&amp;gt;/etc,/bin,/sbin&amp;lt;/directories&amp;gt;
  &amp;lt;directories check_all="yes"&amp;gt;/var/www/html&amp;lt;/directories&amp;gt;
&amp;lt;/syscheck&amp;gt;
Restart the agent: sudo systemctl restart wazuh-agent.

To see how to deliberately trigger SSH brute-force alerts to test the system and how to reduce dashboard noise, read the full tutorial here: https://www.eservers.uk/tutorials/howto/setup-wazuh-siem-ubuntu-debian/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>security</category>
      <category>linux</category>
      <category>sysadmin</category>
      <category>wazuh</category>
    </item>
    <item>
      <title>Self-Hosted Kubernetes (K3s) on Bare Metal: Skip Proxmox Overhead</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Fri, 11 Sep 2026 10:07:03 +0000</pubDate>
      <link>https://dev.to/e_servers/self-hosted-kubernetes-k3s-on-bare-metal-skip-proxmox-overhead-44lp</link>
      <guid>https://dev.to/e_servers/self-hosted-kubernetes-k3s-on-bare-metal-skip-proxmox-overhead-44lp</guid>
      <description>&lt;p&gt;Proxmox and VMware virtualize hardware into separate machines. Kubernetes orchestrates containers within machines. If what you actually need is to run and scale containerized workloads, installing a hypervisor first and Kubernetes on top of it is often unnecessary overhead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;K3s&lt;/strong&gt;, a lightweight Kubernetes distribution, lets you skip the virtualization layer entirely and run directly on &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Servers&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install K3s on the Control Plane
&lt;/h3&gt;

&lt;p&gt;K3s ships a single install script that handles the setup, including a bundled containerd runtime and Traefik ingress.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
curl -sfL [https://get.k3s.io](https://get.k3s.io) | sh -
sudo systemctl status k3s
sudo k3s kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>linux</category>
      <category>proxmox</category>
    </item>
    <item>
      <title>cPanel vs Plesk vs Webmin: Which Dedicated Server Panel is Best in 2026?</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Fri, 11 Sep 2026 08:18:11 +0000</pubDate>
      <link>https://dev.to/e_servers/cpanel-vs-plesk-vs-webmin-which-dedicated-server-panel-is-best-in-2026-4kgp</link>
      <guid>https://dev.to/e_servers/cpanel-vs-plesk-vs-webmin-which-dedicated-server-panel-is-best-in-2026-4kgp</guid>
      <description>&lt;p&gt;Choosing the right control panel is one of the first real decisions you make after ordering a dedicated server. It decides how fast you can deploy websites, how easy email and DNS management will be, and how much time your team spends on routine admin.&lt;/p&gt;

&lt;h3&gt;
  
  
  cPanel/WHM: The Industry Standard
&lt;/h3&gt;

&lt;p&gt;cPanel remains the best fit for agencies and hosting resellers who need a mature, widely-documented Linux panel. WebHost Manager (WHM) sits above individual cPanel accounts, letting you package hosting plans and allocate resources per account. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Trade-off:&lt;/strong&gt; It is Linux-only, and it is resource-hungry compared to lighter panels.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Plesk: The Cross-Platform Alternative
&lt;/h3&gt;

&lt;p&gt;Plesk is the stronger choice if you run mixed Linux/Windows environments or lean heavily on WordPress management. It was built to solve the problem cPanel can't: managing Windows and Linux servers from the same interface.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Strength:&lt;/strong&gt; It features a built-in WordPress Toolkit for bulk updates, staging, security hardening, and cloning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Webmin: The Free, Technical Route
&lt;/h3&gt;

&lt;p&gt;Webmin (often paired with Virtualmin) is the right call for technical teams who want a free, highly configurable panel and don't mind a steeper learning curve. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Strength:&lt;/strong&gt; It has zero licensing cost and a lightweight footprint, which frees up more RAM and CPU headroom for actual workloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hosting on eServers UK
&lt;/h3&gt;

&lt;p&gt;If you're deploying on &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Servers&lt;/a&gt;, control panel choice matters when paired with local latency. UK data centre placement keeps latency low for UK/EU traffic, which makes panel responsiveness faster.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Read the full side-by-side comparison here: &lt;a href="https://www.eservers.uk/blogs/cpanel-vs-plesk-vs-webmin-dedicated-servers/" rel="noopener noreferrer"&gt;https://www.eservers.uk/blogs/cpanel-vs-plesk-vs-webmin-dedicated-servers/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webhosting</category>
      <category>sysadmin</category>
      <category>cpanel</category>
      <category>plesk</category>
    </item>
    <item>
      <title>Self-Hosted MinIO Object Storage on Bare Metal: An AWS S3 Alternative</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Wed, 09 Sep 2026 11:50:19 +0000</pubDate>
      <link>https://dev.to/e_servers/self-hosted-minio-object-storage-on-bare-metal-an-aws-s3-alternative-2pdp</link>
      <guid>https://dev.to/e_servers/self-hosted-minio-object-storage-on-bare-metal-an-aws-s3-alternative-2pdp</guid>
      <description>&lt;p&gt;Most teams reach for AWS S3 by default because it's the API everyone knows. The problem isn't the API — it's the bill. Object storage on public cloud platforms charges for storage and for every byte that leaves the network. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MinIO&lt;/strong&gt; solves this by giving you the exact same S3 API running on &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Servers&lt;/a&gt;. Point any S3-compatible application at your MinIO endpoint instead of &lt;code&gt;s3.amazonaws.com&lt;/code&gt;, and nothing else needs to change.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Prepare the Storage Disk
&lt;/h3&gt;

&lt;p&gt;Identify the disk you'll dedicate to MinIO and format it using XFS (recommended for large files):&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
lsblk
sudo mkfs.xfs /dev/sdb
sudo mkdir -p /mnt/minio-data
sudo mount /dev/sdb /mnt/minio-data
echo "/dev/sdb /mnt/minio-data xfs defaults 0 2" | sudo tee -a /etc/fstab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>linux</category>
      <category>aws</category>
      <category>storage</category>
      <category>devops</category>
    </item>
    <item>
      <title>WireGuard VPN Setup on a Dedicated Server: Secure Remote Access</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Wed, 09 Sep 2026 11:25:29 +0000</pubDate>
      <link>https://dev.to/e_servers/wireguard-vpn-setup-on-a-dedicated-server-secure-remote-access-104b</link>
      <guid>https://dev.to/e_servers/wireguard-vpn-setup-on-a-dedicated-server-secure-remote-access-104b</guid>
      <description>&lt;p&gt;Exposing SSH, database ports, or admin panels directly to the public internet is one of the most common ways dedicated servers get compromised. A VPN closes that exposure: instead of opening ports to the world, you open them only to devices connected through an encrypted tunnel.&lt;/p&gt;

&lt;p&gt;WireGuard operates at the kernel level on Linux, meaning connection setup and throughput are noticeably faster than userspace VPNs like OpenVPN. Setting this up on a &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Server&lt;/a&gt; gives WireGuard a dedicated network stack with no noisy-neighbour contention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install WireGuard
&lt;/h3&gt;

&lt;p&gt;Ubuntu 24.04 ships WireGuard in the default repositories:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
sudo apt update
sudo apt install wireguard -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>linux</category>
      <category>security</category>
      <category>networking</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Prometheus &amp; Grafana Monitoring Stack on Bare Metal: Complete Setup</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Fri, 04 Sep 2026 09:42:59 +0000</pubDate>
      <link>https://dev.to/eservers/prometheus-grafana-monitoring-stack-on-bare-metal-complete-setup-1nc0</link>
      <guid>https://dev.to/eservers/prometheus-grafana-monitoring-stack-on-bare-metal-complete-setup-1nc0</guid>
      <description>&lt;p&gt;A server can be "up" and still be quietly failing you. Disk filling up over weeks, memory creeping toward a swap death spiral, a backup job that's been silently erroring for days — none of that shows up in a basic uptime check. The only way to catch it is to actually watch the numbers over time.&lt;/p&gt;

&lt;p&gt;This guide sets up a self-hosted observability stack on a &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Server&lt;/a&gt; running Ubuntu 24.04 LTS.&lt;/p&gt;

&lt;h3&gt;
  
  
  How the Pieces Fit Together
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
text
[Node Exporter :9100] ──scraped by──► [Prometheus :9090] ──queried by──► [Grafana :3000]

Node Exporter: Reads hardware statistics straight from the kernel.

Prometheus: Pulls (scrapes) metrics from exporters and stores them as time-series data.

Grafana: The visualization layer that queries Prometheus using PromQL.

Step 1: Create Dedicated System Users

sudo useradd --no-create-home --shell /bin/false prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo chown prometheus:prometheus /etc/prometheus /var/lib/prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>prometheus</category>
      <category>grafana</category>
    </item>
    <item>
      <title>How to Set Up Postfix with DKIM, SPF, and DMARC on Ubuntu 24.04</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Fri, 04 Sep 2026 06:46:31 +0000</pubDate>
      <link>https://dev.to/e_servers/how-to-set-up-postfix-with-dkim-spf-and-dmarc-on-ubuntu-2404-5f7b</link>
      <guid>https://dev.to/e_servers/how-to-set-up-postfix-with-dkim-spf-and-dmarc-on-ubuntu-2404-5f7b</guid>
      <description>&lt;p&gt;If you've ever sent an email from your own server and watched it land in someone's spam folder, the cause is almost always the same: nothing on the receiving end can verify the mail actually came from you. &lt;/p&gt;

&lt;p&gt;On a &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Server&lt;/a&gt;, the reputation of your outbound IP is entirely yours. A new IP sending unauthenticated mail looks exactly like spam. SPF, DKIM, and DMARC are how you build trust deliberately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Ubuntu 24.04 LTS with Postfix installed.&lt;/li&gt;
&lt;li&gt;  A clean reverse DNS (PTR) record pointing your server's IP back to your mail hostname.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Set Up SPF
&lt;/h3&gt;

&lt;p&gt;SPF is a DNS TXT record that authorizes your MX servers. Add a TXT record at your domain's root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yourdomain.com.   IN TXT   "v=spf1 mx ~all"


Step 2 &amp;amp; 3: Install OpenDKIM and Generate Keys
Postfix has no DKIM signing built in; it requires a milter.

Bash
sudo apt update
sudo apt install -y opendkim opendkim-tools
sudo mkdir -p /etc/opendkim/keys/yourdomain.com
sudo opendkim-genkey -b 2048 -d yourdomain.com -D /etc/opendkim/keys/yourdomain.com -s mail -v
sudo chown -R opendkim:opendkim /etc/opendkim/keys
Step 4: Configure OpenDKIM
Edit /etc/opendkim.conf to set the domain, selector (mail), and keyfile. You must also create the socket directory so Postfix's chroot can reach it:

Bash
sudo mkdir -p /var/spool/postfix/opendkim
sudo chown opendkim:postfix /var/spool/postfix/opendkim
sudo chmod 750 /var/spool/postfix/opendkim
sudo usermod -a -G opendkim postfix
Step 5: Connect OpenDKIM to Postfix
Append to /etc/postfix/main.cf:

Ini, TOML
milter_protocol = 6
milter_default_action = accept
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
Restart services:

Bash
sudo systemctl restart opendkim
sudo systemctl restart postfix
Step 7: Publish a DMARC Record
Start with a monitoring policy (p=none):

Plaintext
_dmarc.yourdomain.com.   IN TXT   "v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; pct=100"
For the complete DNS setup and testing commands, read the full tutorial here: https://www.eservers.uk/tutorials/howto/setup-postfix-dkim-spf-dmarc-ubuntu-24-04/


---

### 12. Hashnode (Technical Focus - Commercial Content Removed)

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
markdown&lt;/p&gt;

&lt;h1&gt;
  
  
  Infrastructure Engineering: Authenticating Postfix with SPF, DKIM, and DMARC
&lt;/h1&gt;

&lt;p&gt;When provisioning a new mail server, mailbox providers like Gmail and Outlook do not inherently trust your outbound IP address. Without cryptographic verification, your outbound mail will be flagged as suspicious and routed directly to the spam folder.&lt;/p&gt;

&lt;p&gt;To establish sender reputation and guarantee deliverability, you must implement three distinct DNS and cryptographic checks: SPF, DKIM, and DMARC. This guide details their implementation on a Postfix server running Ubuntu 24.04 LTS.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Authentication Trinity
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;SPF (Sender Policy Framework):&lt;/strong&gt; A DNS record specifying which IP addresses are authorized to send mail on behalf of your domain.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;DKIM (DomainKeys Identified Mail):&lt;/strong&gt; Cryptographically signs each outgoing message utilizing a private key.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;DMARC:&lt;/strong&gt; The policy layer instructing receiving servers how to handle messages that fail SPF or DKIM checks.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prerequisite:&lt;/strong&gt; You must have a valid Reverse DNS (PTR) record configured for your server's IP address pointing to your mail hostname. DKIM and SPF cannot compensate for a missing PTR record.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 1: SPF Implementation
&lt;/h2&gt;

&lt;p&gt;Add a TXT record to your domain's root zone:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
text
yourdomain.com.   IN TXT   "v=spf1 mx ~all"
Note: Use ~all (softfail) during initial testing to monitor failures without dropping legitimate mail. Transition to -all (hardfail) once verified.

Step 2: OpenDKIM Installation and Key Generation
Postfix requires a milter to handle DKIM signing. Install OpenDKIM:

Bash
sudo apt update
sudo apt install -y opendkim opendkim-tools
Generate a 2048-bit key (1024-bit is deprecated):

Bash
sudo mkdir -p /etc/opendkim/keys/yourdomain.com
sudo opendkim-genkey -b 2048 -d yourdomain.com -D /etc/opendkim/keys/yourdomain.com -s mail -v
sudo chown -R opendkim:opendkim /etc/opendkim/keys
Step 3: Milter Configuration
Edit /etc/opendkim.conf to declare your domain and keys:

Ini, TOML
Syslog              yes
Mode                sv
Canonicalization    relaxed/simple
Domain              yourdomain.com
Selector            mail
KeyFile             /etc/opendkim/keys/[yourdomain.com/mail.private](https://yourdomain.com/mail.private)
Socket              local:/var/spool/postfix/opendkim/opendkim.sock
Because Postfix runs in a chroot environment, the socket must be accessible:

Bash
sudo mkdir -p /var/spool/postfix/opendkim
sudo chown opendkim:postfix /var/spool/postfix/opendkim
sudo chmod 750 /var/spool/postfix/opendkim
sudo usermod -a -G opendkim postfix
Step 4: Postfix Integration
Append the milter configuration to /etc/postfix/main.cf:

Ini, TOML
milter_protocol = 6
milter_default_action = accept
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
Restart the services:

Bash
sudo systemctl restart opendkim
sudo systemctl restart postfix
Step 5: Publishing DNS Records
Print your public key (cat /etc/opendkim/keys/yourdomain.com/mail.txt) and add it as a TXT record at mail._domainkey.yourdomain.com.

Finally, publish your DMARC monitoring policy:

Plaintext
_dmarc.yourdomain.com.   IN TXT   "v=DMARC1; p=none; rua=mailto:reports@yourdomain.com; pct=100"
After analyzing the aggregate reports sent to your email, tighten the policy from p=none to p=quarantine, and eventually p=reject.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>linux</category>
      <category>sysadmin</category>
      <category>ubuntu</category>
      <category>security</category>
    </item>
    <item>
      <title>Setting Up a PostgreSQL Cluster with Patroni on Bare Metal</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Fri, 04 Sep 2026 05:21:51 +0000</pubDate>
      <link>https://dev.to/e_servers/setting-up-a-postgresql-cluster-with-patroni-on-bare-metal-1b0h</link>
      <guid>https://dev.to/e_servers/setting-up-a-postgresql-cluster-with-patroni-on-bare-metal-1b0h</guid>
      <description>&lt;p&gt;For enterprise applications, SaaS platforms, and large e-commerce sites, a database outage means catastrophic revenue loss. Relying on a single database server is a single point of failure.&lt;/p&gt;

&lt;p&gt;To ensure true 100% uptime, you need a PostgreSQL High Availability (HA) Cluster. In this architecture, multiple database servers run in sync. If the primary master server crashes, the system automatically detects the failure and promotes a standby server to take over in seconds, with zero manual intervention.&lt;/p&gt;

&lt;p&gt;This tutorial covers setting up a robust PostgreSQL HA cluster on Ubuntu 24.04 bare-metal servers using Patroni (for failover management), etcd (for distributed consensus), and HAProxy (for routing client traffic).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Architecture &amp;amp; Prerequisites
&lt;/h3&gt;

&lt;p&gt;To prevent a "split-brain" scenario where two servers both think they are the primary, a highly available cluster requires an odd number of nodes to maintain a quorum. Therefore, this setup requires three bare-metal servers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Node 1 (db1):&lt;/strong&gt; 10.0.0.11&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Node 2 (db2):&lt;/strong&gt; 10.0.0.12&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Node 3 (db3):&lt;/strong&gt; 10.0.0.13&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Install PostgreSQL &amp;amp; Dependencies
&lt;/h3&gt;

&lt;p&gt;On all three nodes, install PostgreSQL, Python3, and etcd:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
apt install -y postgresql postgresql-contrib python3-pip python3-venv etcd curl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>postgres</category>
      <category>database</category>
      <category>sysadmin</category>
      <category>linux</category>
    </item>
    <item>
      <title>Bulletproof Disaster Recovery: Automating Encrypted Backups Using BorgBackup on Linux</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Thu, 03 Sep 2026 07:02:42 +0000</pubDate>
      <link>https://dev.to/e_servers/bulletproof-disaster-recovery-automating-encrypted-backups-using-borgbackup-on-linux-4ai7</link>
      <guid>https://dev.to/e_servers/bulletproof-disaster-recovery-automating-encrypted-backups-using-borgbackup-on-linux-4ai7</guid>
      <description>&lt;p&gt;A common misconception in server management is that RAID constitutes a backup. It does not. RAID protects against hardware drive failure, but it will seamlessly and instantly replicate accidental file deletions, corrupted database tables, or ransomware encryption across all your mirrored drives.&lt;/p&gt;

&lt;p&gt;For true disaster recovery on your &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Servers&lt;/a&gt;, you need an isolated, versioned, and encrypted backup strategy.&lt;/p&gt;

&lt;p&gt;Enter &lt;strong&gt;BorgBackup (Borg)&lt;/strong&gt;. Borg is an open-source, deduplicating backup program that offers authenticated encryption. It only stores the changes made since your last backup, saving massive amounts of disk space.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install BorgBackup
&lt;/h3&gt;

&lt;p&gt;This guide uses Ubuntu 24.04 LTS. Run as root:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
apt update
apt install -y borgbackup
borg --version
Step 2: Initialize the Encrypted Repository
A "repository" is where Borg stores your archives. We will create a local repository at /backup/borg-repo.

Bash
mkdir -p /backup/borg-repo
borg init --encryption=repokey /backup/borg-repo
You will be prompted to enter a passphrase. Do not lose this passphrase.

Step 3: Running Your First Backup
Let's back up /var/www/html and /etc:

Bash
borg create --stats --progress \
    /backup/borg-repo::"Backup-{now:%Y-%m-%d_%H:%M}" \
    /var/www/html /etc
Step 4: Automating Backups with a Bash Script &amp;amp; Cron
Create a bash script: nano /usr/local/bin/borg-backup.sh

Bash
#!/bin/bash
export BORG_PASSPHRASE="YOUR_SUPER_SECRET_PASSPHRASE"
REPOSITORY="/backup/borg-repo"
LOG="/var/log/borg-backup.log"

echo "Starting backup: $(date)" &amp;gt;&amp;gt; $LOG

borg create --stats \
    $REPOSITORY::"Auto-Backup-{now:%Y-%m-%d_%H:%M}" \
    /var/www/html /etc &amp;gt;&amp;gt; $LOG 2&amp;gt;&amp;amp;1

borg prune --list --keep-daily=7 --keep-weekly=4 $REPOSITORY &amp;gt;&amp;gt;$LOG 2&amp;gt;&amp;amp;1

echo "Backup finished: $(date)" &amp;gt;&amp;gt; $LOG
Make it executable and add to crontab to run at 2:00 AM:

Bash
chmod +x /usr/local/bin/borg-backup.sh
crontab -e
# Add: 0 2 * * * /usr/local/bin/borg-backup.sh
Step 5: How to Restore Your Data
List available archives:

Bash
borg list /backup/borg-repo
Extract the files into a recovery folder:

Bash
mkdir /tmp/recovery &amp;amp;&amp;amp; cd /tmp/recovery
borg extract /backup/borg-repo::"Auto-Backup-2026-06-01_02:00"
Conclusion
To fulfill the 3-2-1 backup strategy, you must move these backups off-site. Pushing your encrypted Borg repositories to a secure London Data Centre ensures true disaster recovery.

Read the original tutorial here: https://www.eservers.uk/tutorials/howto/automate-encrypted-backups-borgbackup-linux/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>linux</category>
      <category>sysadmin</category>
      <category>bash</category>
      <category>security</category>
    </item>
    <item>
      <title>How to Install Pterodactyl Panel on Ubuntu 24.04 LTS</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Thu, 03 Sep 2026 06:19:32 +0000</pubDate>
      <link>https://dev.to/eservers/how-to-install-pterodactyl-panel-on-ubuntu-2404-lts-nal</link>
      <guid>https://dev.to/eservers/how-to-install-pterodactyl-panel-on-ubuntu-2404-lts-nal</guid>
      <description>&lt;p&gt;Pterodactyl is a free, open-source, Docker-based game server management panel. This guide walks you through a complete, production-ready installation on Ubuntu 24.04 LTS — covering PHP 8.3, MariaDB, Redis, Nginx, Let's Encrypt SSL, and the Wings daemon.&lt;/p&gt;

&lt;h3&gt;
  
  
  Requirements
&lt;/h3&gt;

&lt;p&gt;Running Pterodactyl on shared hosting or a low-resource VPS will result in instability under load.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Ubuntu 24.04 LTS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU:&lt;/strong&gt; 4+ cores recommended&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAM:&lt;/strong&gt; 8 GB+ recommended&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; 100 GB+ NVMe SSD recommended&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PHP:&lt;/strong&gt; PHP 8.3 (PHP 8.1 is not supported by Panel 1.11+)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1 — Update the System
&lt;/h3&gt;

&lt;p&gt;Run all commands as root.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
apt update &amp;amp;&amp;amp; apt upgrade -y
apt install -y curl wget git unzip tar software-properties-common apt-transport-https ca-certificates gnupg lsb-release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>linux</category>
      <category>docker</category>
      <category>ubuntu</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Building an eBPF Layer 7 DDoS Firewall with XDP</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Thu, 03 Sep 2026 04:52:58 +0000</pubDate>
      <link>https://dev.to/e_servers/building-an-ebpf-layer-7-ddos-firewall-with-xdp-3j35</link>
      <guid>https://dev.to/e_servers/building-an-ebpf-layer-7-ddos-firewall-with-xdp-3j35</guid>
      <description>&lt;h3&gt;
  
  
  What is Layer 7 DDoS and Why Is It Harder to Stop?
&lt;/h3&gt;

&lt;p&gt;A Layer 7 DDoS attack (also called an application-layer DDoS or HTTP flood) overwhelms a web server by sending enormous volumes of seemingly legitimate HTTP requests rather than raw network packets.&lt;/p&gt;

&lt;p&gt;Unlike Layer 3/4 floods, Layer 7 attacks complete a full TCP three-way handshake — making them indistinguishable from real users at the network level. They bypass standard iptables rate-limiting rules without exhausting CPU resources first. Modern botnets frequently use this technique because traditional firewalls cannot inspect HTTP headers without terminating the TCP connection — an operation that is far too expensive at high traffic volumes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why XDP + eBPF Is the Right Tool
&lt;/h3&gt;

&lt;p&gt;eBPF (Extended Berkeley Packet Filter) allows you to run sandboxed programs inside the Linux kernel without modifying kernel source code. Paired with XDP (eXpress Data Path), these programs execute directly inside the NIC driver — the earliest possible point in the networking stack.&lt;/p&gt;

&lt;p&gt;XDP is the fastest software-based mitigation available on Linux. On a 10Gbps unmetered &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Servers&lt;/a&gt;, an XDP program can process and drop packets faster than the OS can schedule a user-space process to even acknowledge them.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Challenge: Parsing All Four Network Layers in eBPF
&lt;/h3&gt;

&lt;p&gt;XDP operates at the lowest level of the Linux networking stack. To reach Layer 7 (HTTP data), your eBPF program must manually walk the entire packet structure: Ethernet (14 bytes), IPv4 (20 bytes), and TCP (20 bytes). The Linux kernel eBPF verifier performs strict bounds checking on every memory access.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Write the eBPF C Program
&lt;/h3&gt;

&lt;p&gt;This guide is tested on Ubuntu 24.04 LTS. Create a file named &lt;code&gt;l7_firewall.c&lt;/code&gt;. When it detects a malicious HTTP signature, it returns &lt;code&gt;XDP_DROP&lt;/code&gt;, discarding the packet instantly at the NIC level.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
c
#include &amp;lt;linux/bpf.h&amp;gt;
#include &amp;lt;linux/if_ether.h&amp;gt;
#include &amp;lt;linux/ip.h&amp;gt;
#include &amp;lt;linux/tcp.h&amp;gt;
#include &amp;lt;linux/in.h&amp;gt;
#include &amp;lt;bpf/bpf_helpers.h&amp;gt;

SEC("xdp")
int xdp_l7_filter(struct xdp_md *ctx) {
    void *data_end = (void *)(long)ctx-&amp;gt;data_end;
    void *data     = (void *)(long)ctx-&amp;gt;data;

    struct ethhdr *eth = data;
    if ((void *)(eth + 1) &amp;gt; data_end) return XDP_PASS;
    if (eth-&amp;gt;h_proto != __constant_htons(ETH_P_IP)) return XDP_PASS;

    struct iphdr *ip = (void *)(eth + 1);
    if ((void *)(ip + 1) &amp;gt; data_end) return XDP_PASS;
    if (ip-&amp;gt;protocol != IPPROTO_TCP) return XDP_PASS;

    struct tcphdr *tcp = (void *)ip + (ip-&amp;gt;ihl * 4);
    if ((void *)(tcp + 1) &amp;gt; data_end) return XDP_PASS;

    unsigned char *payload = (unsigned char *)tcp + (tcp-&amp;gt;doff * 4);
    if ((void *)(payload + 14) &amp;gt; data_end) return XDP_PASS;

    if (payload[0] == 'G' &amp;amp;&amp;amp; payload[1] == 'E' &amp;amp;&amp;amp; payload[2] == 'T' &amp;amp;&amp;amp;
        payload[3] == ' ' &amp;amp;&amp;amp; payload[4] == '/' &amp;amp;&amp;amp; payload[5] == 'a' &amp;amp;&amp;amp;
        payload[6] == 't' &amp;amp;&amp;amp; payload[7] == 't' &amp;amp;&amp;amp; payload[8] == 'a' &amp;amp;&amp;amp;
        payload[9] == 'c' &amp;amp;&amp;amp; payload[10] == 'k') {
        return XDP_DROP;
    }
    return XDP_PASS;
}
char _license[] SEC("license") = "GPL";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ebpf</category>
      <category>linux</category>
      <category>cybersecurity</category>
      <category>networking</category>
    </item>
    <item>
      <title>Scaling DeepSeek-V3 Across Multi-GPU Nodes: The Bare Metal Blueprint</title>
      <dc:creator>olivia Millie</dc:creator>
      <pubDate>Tue, 01 Sep 2026 05:12:47 +0000</pubDate>
      <link>https://dev.to/eservers/scaling-deepseek-v3-across-multi-gpu-nodes-the-bare-metal-blueprint-1cdj</link>
      <guid>https://dev.to/eservers/scaling-deepseek-v3-across-multi-gpu-nodes-the-bare-metal-blueprint-1cdj</guid>
      <description>&lt;p&gt;The release of DeepSeek-V3 has shifted the enterprise AI landscape. With its 671 billion parameters and highly efficient Mixture-of-Experts (MoE) architecture, it rivals the most expensive proprietary models. However, running a model of this magnitude locally requires immense VRAM and computational power.&lt;/p&gt;

&lt;p&gt;Attempting to run DeepSeek-V3 on public cloud instances will quickly drain your budget due to inflated GPU hourly rates and hidden egress fees. The most cost-effective and performant solution is deploying on &lt;a href="https://www.eservers.uk/bare-metal-servers/" rel="noopener noreferrer"&gt;Bare Metal Servers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this blueprint, we will show you how to configure a multi-GPU environment, set up Tensor Parallelism, and deploy DeepSeek-V3 using vLLM on dedicated hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — The Hardware &amp;amp; Software Prerequisites
&lt;/h3&gt;

&lt;p&gt;For DeepSeek-V3 (FP8 or BF16 precision), utilizing &lt;a href="https://www.eservers.uk/gpu-servers/" rel="noopener noreferrer"&gt;GPU Dedicated Servers&lt;/a&gt; with an 8x NVIDIA GPU configuration (80GB VRAM per card) is highly recommended. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;OS:&lt;/strong&gt; Ubuntu 24.04 LTS&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Storage:&lt;/strong&gt; PCIe Gen 4/5 NVMe SSDs &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Software:&lt;/strong&gt; Docker, NVIDIA Container Toolkit, CUDA 12.x&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2 — Optimizing Inter-GPU Communication (NCCL)
&lt;/h3&gt;

&lt;p&gt;To prevent GPU Starvation, we must ensure NVIDIA NCCL is optimized. Verify your topology by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi topo &lt;span class="nt"&gt;-m&lt;/span&gt;

Look &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="s2"&gt;"NV"&lt;/span&gt; or &lt;span class="s2"&gt;"PIX"&lt;/span&gt; &lt;span class="k"&gt;in &lt;/span&gt;the matrix output. This confirms your GPUs can communicate directly.

Step 3 — Choosing the Inference Engine: Enter vLLM
To serve DeepSeek-V3 efficiently, we will use vLLM, which perfectly handles Tensor Parallelism &lt;span class="o"&gt;(&lt;/span&gt;TP&lt;span class="o"&gt;)&lt;/span&gt; to divide the heavy matrix math across all your GPUs.

Step 3.1: Deploying via Docker Compose
Create a docker-compose.yml file:

YAML
version: &lt;span class="s1"&gt;'3.8'&lt;/span&gt;
services:
  vllm-deepseek:
    image: vllm/vllm-openai:latest
    container_name: deepseek-v3-server
    runtime: nvidia
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: &lt;span class="o"&gt;[&lt;/span&gt;gpu]
    ports:
      - &lt;span class="s2"&gt;"8000:8000"&lt;/span&gt;
    volumes:
      - ~/.cache/huggingface:/root/.cache/huggingface
    &lt;span class="nb"&gt;command&lt;/span&gt;: &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;--model&lt;/span&gt; deepseek-ai/DeepSeek-V3 
      &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 8
      &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 8192
      &lt;span class="nt"&gt;--trust-remote-code&lt;/span&gt;
      &lt;span class="nt"&gt;--enforce-eager&lt;/span&gt;
Step 3.2: Launching the Model
Start your inference server by executing:

Bash
docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
Step 5 — The Bare Metal Advantage
Running enterprise-scale AI models requires uncompromising infrastructure. Hosting your cluster &lt;span class="k"&gt;in &lt;/span&gt;a London Data Centre ensures zero &lt;span class="s2"&gt;"Cloud Tax"&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;no egress fees&lt;span class="o"&gt;)&lt;/span&gt;, 100% unshared single-tenant resources, and maximum PCIe lane bandwidth.

Read the original tutorial here: https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/


&lt;span class="nt"&gt;---&lt;/span&gt;

&lt;span class="c"&gt;### 12. Hashnode (Technical Focus - Commercial Content Removed)&lt;/span&gt;

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
markdown&lt;/p&gt;
&lt;h1&gt;
  
  
  Engineering AI: Scaling DeepSeek-V3 Across Multi-GPU Nodes
&lt;/h1&gt;

&lt;p&gt;The release of DeepSeek-V3 has shifted the open-weights AI landscape. With its 671 billion parameters and highly efficient Mixture-of-Experts (MoE) architecture, running a model of this magnitude requires immense VRAM and computational power. &lt;/p&gt;

&lt;p&gt;In this blueprint, we will explore how to configure a multi-GPU environment, optimize inter-GPU communication, and deploy DeepSeek-V3 using vLLM and Tensor Parallelism.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 1: Hardware &amp;amp; Software Prerequisites
&lt;/h2&gt;

&lt;p&gt;For DeepSeek-V3 (FP8 or BF16 precision), an 8x NVIDIA GPU configuration (with high VRAM, such as 80GB per card) is recommended.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Ubuntu 24.04 LTS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; PCIe Gen 4/5 NVMe SSDs (Crucial for fast model loading)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Software:&lt;/strong&gt; Docker, NVIDIA Container Toolkit, and CUDA 12.x&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 2: Optimizing Inter-GPU Communication (NCCL)
&lt;/h2&gt;

&lt;p&gt;When a model is split across multiple GPUs, the cards must communicate constantly. If this is slow, you encounter GPU Starvation. Ensure NVIDIA NCCL (NVIDIA Collective Communications Library) is optimized by verifying your topology:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvidia-smi topo &lt;span class="nt"&gt;-m&lt;/span&gt;
Look &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="s2"&gt;"NV"&lt;/span&gt; or &lt;span class="s2"&gt;"PIX"&lt;/span&gt; &lt;span class="k"&gt;in &lt;/span&gt;the matrix output. This confirms your GPUs can communicate directly via NVLink or high-speed PCIe bridges, bypassing the CPU.

Step 3: The Inference Engine &lt;span class="o"&gt;(&lt;/span&gt;vLLM&lt;span class="o"&gt;)&lt;/span&gt;
To serve DeepSeek-V3, we will use vLLM. It handles Tensor Parallelism &lt;span class="o"&gt;(&lt;/span&gt;TP&lt;span class="o"&gt;)&lt;/span&gt;, dividing the heavy matrix math across all GPUs simultaneously.

Deploying via Docker Compose
Create a docker-compose.yml file on your server:

YAML
version: &lt;span class="s1"&gt;'3.8'&lt;/span&gt;
services:
  vllm-deepseek:
    image: vllm/vllm-openai:latest
    container_name: deepseek-v3-server
    runtime: nvidia
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: &lt;span class="o"&gt;[&lt;/span&gt;gpu]
    ports:
      - &lt;span class="s2"&gt;"8000:8000"&lt;/span&gt;
    volumes:
      - ~/.cache/huggingface:/root/.cache/huggingface
    &lt;span class="nb"&gt;command&lt;/span&gt;: &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;--model&lt;/span&gt; deepseek-ai/DeepSeek-V3 
      &lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 8
      &lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 8192
      &lt;span class="nt"&gt;--trust-remote-code&lt;/span&gt;
      &lt;span class="nt"&gt;--enforce-eager&lt;/span&gt;
Key Parameters Explained:
&lt;span class="nt"&gt;--tensor-parallel-size&lt;/span&gt; 8: Tells vLLM to &lt;span class="nb"&gt;split &lt;/span&gt;the DeepSeek-V3 model equally across 8 GPUs.

&lt;span class="nt"&gt;--max-model-len&lt;/span&gt; 8192: Defines the maximum context window based on available VRAM.

Launching the Model
Execute the following to pull the weights and start the API server:

Bash
docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
Step 4: Monitoring GPU Health &lt;span class="k"&gt;in &lt;/span&gt;Production
High-throughput inference generates massive heat and power draw. It is strongly recommended to &lt;span class="nb"&gt;set &lt;/span&gt;up a Prometheus and Grafana stack alongside DCGM-Exporter to track VRAM usage, power consumption, and thermal limits across your multi-GPU array continuously.


&lt;span class="nt"&gt;---&lt;/span&gt;

&lt;span class="c"&gt;### 13. bsky.app (Bluesky)&lt;/span&gt;
Want to run DeepSeek-V3 locally but avoid massive cloud egress fees? 🤖💸
Deploying on Multi-GPU Bare Metal is the smartest way to scale. Learn how to &lt;span class="nb"&gt;set &lt;/span&gt;up vLLM, Docker Compose, and Tensor Parallelism across 8 GPUs &lt;span class="k"&gt;in &lt;/span&gt;our new blueprint: &lt;span class="o"&gt;[&lt;/span&gt;https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/]&lt;span class="o"&gt;(&lt;/span&gt;https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;### 14. Reddit (For r/LocalLLaMA, r/MachineLearning, or r/SelfHosted)&lt;/span&gt;
&lt;span class="k"&gt;**&lt;/span&gt;Title: Tutorial: Scaling DeepSeek-V3 on Multi-GPU Bare Metal &lt;span class="o"&gt;(&lt;/span&gt;vLLM &amp;amp; Docker Compose&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="k"&gt;**&lt;/span&gt;
If you&lt;span class="s1"&gt;'re trying to serve DeepSeek-V3 (671B parameters) on public clouds, the egress fees and hourly rates are probably destroying your budget. 
Moving to a dedicated Multi-GPU Bare Metal server is the most cost-effective way to run this in production. We put together a technical blueprint covering:
1. **NCCL Optimization:** Checking your PCIe/NVLink topology (`nvidia-smi topo -m`).
2. **Inference Engine:** Using `vLLM` for high-throughput serving.
3. **Deployment:** The exact `docker-compose.yml` needed to enforce Tensor Parallelism (`--tensor-parallel-size 8`) and manage VRAM.
If you are looking to escape the cloud tax and self-host massive MoE models, check out the full step-by-step code here: [https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/](https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/)

### 15. Mastodon
DeepSeek-V3 is powerful, but serving a 671B parameter model requires serious hardware. 🧠⚙️ 

Instead of paying massive cloud egress fees, deploy it on Multi-GPU Bare Metal. Our latest tutorial covers #vLLM configuration, Tensor Parallelism, and #DockerCompose setups for 8x GPU nodes. 

Read the blueprint: [https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/](https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/)
#AI #MachineLearning #DeepSeek #SelfHosted #DevOps #LLM

### 16. Instagram
*(Image Idea: A glowing multi-GPU server rack or a sleek terminal screen showing Docker loading DeepSeek-V3)*
Stop paying the "Cloud Tax" for your AI models! 🛑💸
DeepSeek-V3 is changing the game, but running a 671B parameter model on public clouds will drain your budget with hidden egress fees. 

The Solution? Multi-GPU Bare Metal Servers. ⚡️
Learn how to:
✅ Optimize GPU Communication (NCCL)
✅ Set up Tensor Parallelism across 8 GPUs
✅ Deploy the model easily using Docker Compose &amp;amp; vLLM

Take control of your AI infrastructure today. 
🔗 **Click the link in our bio for the full technical blueprint!** *(Bio link: [https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/](https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/))*
#DeepSeek #ArtificialIntelligence #MachineLearning #DevOps #NVIDIA #TechTutorial #eServers

### 17. Threads
Serving DeepSeek-V3 on AWS or Azure? The egress fees and hourly GPU rates will burn through your budget fast. 💸 Deploying on Multi-GPU bare metal gives you a flat rate and zero noisy neighbors. We just published a technical blueprint on how to configure vLLM and Tensor Parallelism using Docker Compose to run DeepSeek efficiently. Check out the code here: [https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/](https://www.eservers.uk/tutorials/howto/scaling-deepseek-v3-multi-gpu-nodes/)

### 18. WHTop (Press Release Format - Minimum 1500 chars)

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

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
html&lt;br&gt;
&lt;b&gt;FOR IMMEDIATE RELEASE&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;LONDON, UK&lt;/b&gt; – eServers, a leading provider of high-performance bare metal infrastructure and GPU-accelerated hosting, has released a comprehensive technical blueprint titled "Scaling DeepSeek-V3 Across Multi-GPU Nodes." The newly published guide provides AI agencies, researchers, and enterprise developers with a clear roadmap for deploying massive open-weights models without incurring exorbitant public cloud fees.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;The release of DeepSeek-V3, featuring an astonishing 671 billion parameters and a highly efficient Mixture-of-Experts (MoE) architecture, has disrupted the AI industry. However, serving a model of this magnitude requires immense computational power and VRAM. &lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;"Attempting to run DeepSeek-V3 on hyperscaler cloud instances quickly drains IT budgets due to inflated hourly GPU rates and hidden egress fees," the eServers advisory notes. "The most cost-effective and performant solution for scaling AI endpoints in 2026 is deploying on Multi-GPU Bare Metal Dedicated Servers, effectively eliminating the 'Cloud Tax'."&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Technical Blueprint: vLLM and Tensor Parallelism&lt;/b&gt;&lt;br&gt;&lt;br&gt;
The comprehensive tutorial walks systems administrators through the exact steps required to provision an 8x NVIDIA GPU bare-metal environment. The guide emphasizes the importance of optimizing Inter-GPU communication via NVIDIA's Collective Communications Library (NCCL) to prevent GPU starvation during inference operations.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Furthermore, the blueprint provides the exact &lt;code&gt;docker-compose.yml&lt;/code&gt; configurations necessary to deploy the vLLM inference engine. By utilizing Tensor Parallelism (via the &lt;code&gt;--tensor-parallel-size 8&lt;/code&gt; flag), the heavy matrix mathematics of DeepSeek-V3 are distributed evenly across all physical GPUs, maximizing throughput and reducing latency.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;The Bare Metal Advantage for AI&lt;/b&gt;&lt;br&gt;&lt;br&gt;
eServers highlights that running enterprise-scale AI models requires uncompromising, single-tenant infrastructure. By utilizing UK-based GPU dedicated hardware equipped with 10Gbps unmetered bandwidth, businesses can download massive model weights and process millions of API requests for a predictable, flat monthly rate. Additionally, eServers backs its infrastructure with an industry-leading 15-30 Minute Hardware Response time to ensure mission-critical AI APIs remain online.&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;To view the complete deployment code, Docker configurations, and multi-GPU scaling strategies, IT leaders and developers are encouraged to read the full tutorial on the official eServers website.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>docker</category>
      <category>python</category>
    </item>
  </channel>
</rss>
